Compare commits
60 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b5a2966ada | |||
| 74a4fce0ca | |||
| 8fc97bde02 | |||
| 2d75b2e80e | |||
| f088c4e9ff | |||
| 8a1cf909d4 | |||
| 33e785d22a | |||
| d16cec176b | |||
| 8744bee2dd | |||
| 5f4d33f3ca | |||
| 767d3051a7 | |||
| b2e62dc60c | |||
| b0399a4e48 | |||
| ec2ab2f365 | |||
| fd4e67d4f7 | |||
| 3cb3160731 | |||
| dbcafd2869 | |||
| 3ecb2c9d66 | |||
| 9ad11fb97a | |||
| e158b0a7f0 | |||
| f1c9df16b6 | |||
| 9d11d25b99 | |||
| 7a045d31d7 | |||
| b518c704fa | |||
| fe8e3c0539 | |||
| 1b16adcc72 | |||
| b4bc72f7e4 | |||
| 8959c3a849 | |||
| 47032378e2 | |||
| 217f14f899 | |||
| 638139602c | |||
| 8f56a82104 | |||
| 51ffd7aac9 | |||
| 1b9eb471de | |||
| 45013c87a9 | |||
| 80518719d5 | |||
| 2d6ead7e47 | |||
| 3ff80318b4 | |||
| 9fb743d135 | |||
| 412ed986a9 | |||
| 8bbeead702 | |||
| e5e20c566e | |||
| 13bfc16cfe | |||
| 85cbf95c18 | |||
| 1361dfc895 | |||
| 707c4826a4 | |||
| 919beb3b4b | |||
| ee79dc5b98 | |||
| f28e69dc18 | |||
| 5f485fed9b | |||
| f4c18d22d7 | |||
| 4d800e88eb | |||
| 2df2fdeeb9 | |||
| 9190d1e5a0 | |||
| d675966436 | |||
| b4116e9a82 | |||
| 11efb1a42d | |||
| 00d326c1ba | |||
| d0289e16f4 | |||
| 7b1f8b1176 |
@@ -1,120 +0,0 @@
|
|||||||
# Claude Code – Working Agreement
|
|
||||||
|
|
||||||
## Workflow: Plan → Write Tests → Implement → Verify
|
|
||||||
|
|
||||||
### 1. Plan First
|
|
||||||
Before writing any code, produce an explicit plan:
|
|
||||||
- Restate the requirement in your own words to confirm understanding.
|
|
||||||
- List every file you intend to create or modify.
|
|
||||||
- Identify risks or unknowns upfront.
|
|
||||||
- Wait for confirmation **only** when the plan reveals an ambiguity that cannot be resolved from context. Otherwise proceed immediately.
|
|
||||||
|
|
||||||
### 2. Write Tests
|
|
||||||
Before implementing, write tests that should cover the new behaviour.
|
|
||||||
Only write tests for the new behaviour.
|
|
||||||
|
|
||||||
### 3. Implement
|
|
||||||
Follow the plan. Do not add scope beyond what was agreed.
|
|
||||||
|
|
||||||
### 4. Verify Every Requirement
|
|
||||||
After implementation, go through each requirement one-by-one and confirm it is satisfied:
|
|
||||||
- Run the relevant tests (unit, integration, or build check) for every changed module.
|
|
||||||
- If a requirement **cannot** be fulfilled, do **not** silently skip it — document it immediately (see *Unresolved Requirements* below).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## No Code Without Verification (Testing)
|
|
||||||
|
|
||||||
- Every new behaviour must be covered by at least one automated test before the task is considered done.
|
|
||||||
- Every bug fix must be accompanied by a regression test that fails before the fix and passes after.
|
|
||||||
- Run `./gradlew :modules:<module>:test` (or the appropriate Gradle task) and confirm a green build before marking work complete.
|
|
||||||
- If a test cannot be written for a legitimate reason, document it in `docs/unresolved.md` with an explanation.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Automatic Bug Fixing
|
|
||||||
|
|
||||||
- When a test or build step fails, attempt to fix the root cause immediately — do **not** ask for permission.
|
|
||||||
- Apply the fix, re-run the verification, and continue until green.
|
|
||||||
- If the same failure persists after **three** fix attempts, stop, log the issue in `docs/unresolved.md`, and surface a concise summary.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Unresolved Requirements → `docs/unresolved.md`
|
|
||||||
|
|
||||||
When a requirement or bug cannot be resolved, append an entry to `docs/unresolved.md`:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## [YYYY-MM-DD] <Short title>
|
|
||||||
|
|
||||||
**Requirement / Bug:**
|
|
||||||
<What was requested or what failed>
|
|
||||||
|
|
||||||
**Root Cause (if known):**
|
|
||||||
<Why it cannot be resolved right now>
|
|
||||||
|
|
||||||
**Attempted Fixes:**
|
|
||||||
1. <What was tried>
|
|
||||||
2. …
|
|
||||||
|
|
||||||
**Suggested Next Step:**
|
|
||||||
<What a human engineer should investigate>
|
|
||||||
```
|
|
||||||
|
|
||||||
Create the file if it does not exist. Never delete existing entries.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Project Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
. ← Repository root (multi-project Gradle setup)
|
|
||||||
├── build.gradle.kts ← Root build file (shared plugins, dependency versions)
|
|
||||||
├── settings.gradle.kts ← Gradle settings (declares all subprojects)
|
|
||||||
├── modules/ ← One subdirectory per microservice
|
|
||||||
│ └── <service>/
|
|
||||||
│ ├── build.gradle.kts
|
|
||||||
│ └── src/
|
|
||||||
└── docs/ ← Architecture Decision Records, API docs, unresolved issues
|
|
||||||
└── unresolved.md
|
|
||||||
```
|
|
||||||
|
|
||||||
### Conventions
|
|
||||||
- All microservices live under `modules/{service-name}`. Never place service code in the root.
|
|
||||||
- Shared configuration (dependency versions, plugin setup) belongs in the **root** `build.gradle.kts` or in `buildSrc` / a version catalog.
|
|
||||||
- `settings.gradle.kts` must include every module via `include(":modules:<service>")`.
|
|
||||||
- Architecture decisions go in `docs/adr/` as numbered Markdown files (`ADR-001-<title>.md`).
|
|
||||||
- API contracts live in `/docs/api/`.
|
|
||||||
- Unit tests extend `AnyFunSuite with Matchers with JUnitSuiteLike` — no `@Test` annotations, no `: Unit` requirement
|
|
||||||
- Integration tests use `@QuarkusTest` with JUnit 5 — `@Test` methods must be explicitly typed `: Unit`
|
|
||||||
- Always exclude scala-library from Quarkus deps to avoid Scala 2 conflicts
|
|
||||||
|
|
||||||
## Coverage Conventions
|
|
||||||
- Branch coverage must be at least 90% - unless there is a good reason not to.
|
|
||||||
- Line coverage must be at least 95% - unless there is a good reason not to.
|
|
||||||
- Method coverage must be at least 90% - unless there is a good reason not to.
|
|
||||||
- To check coverage use jacoco-reporter/scoverage_coverage_gaps.py modules/{service}/build/reports/scoverageTest/scoverage.xml
|
|
||||||
- IMPORTANT: modules/{service}/build/reports/scoverage/scoverage.xml is not used for coverage TEST calculation. Do not use it.
|
|
||||||
|
|
||||||
## Agent Routing Rules
|
|
||||||
|
|
||||||
### Use agents in PARALLEL when:
|
|
||||||
- Tasks touch different, independent microservices
|
|
||||||
- No shared files or state between tasks
|
|
||||||
- Example: "implement service-user AND service-orders simultaneously"
|
|
||||||
|
|
||||||
### Use agents SEQUENTIALLY when:
|
|
||||||
- Tasks have dependencies (architect → implementer → test-writer)
|
|
||||||
- Shared API contracts are involved
|
|
||||||
- Example: design API first, then implement, then test
|
|
||||||
|
|
||||||
## Quick-Reference Checklist
|
|
||||||
|
|
||||||
Before considering any task done, confirm:
|
|
||||||
|
|
||||||
- [ ] Plan was written and requirements restated
|
|
||||||
- [ ] All planned files were created / modified
|
|
||||||
- [ ] Automated tests cover the new behaviour
|
|
||||||
- [ ] `./gradlew build` (or scoped task) is green
|
|
||||||
- [ ] Each requirement has been explicitly verified
|
|
||||||
- [ ] Any unresolved items are logged in `docs/unresolved.md`
|
|
||||||
@@ -23,7 +23,7 @@ report findings to team-leader, who re-invokes scala-implementer for fixes.
|
|||||||
- `@QuarkusTest` methods (JUnit 5) must be explicitly typed `: Unit`
|
- `@QuarkusTest` methods (JUnit 5) must be explicitly typed `: Unit`
|
||||||
|
|
||||||
### Tests
|
### Tests
|
||||||
- Unit tests must extend `AnyFunSuite with Matchers with JUnitSuiteLike`, not plain JUnit 5
|
- Unit tests must extend `AnyFunSuite with Matchers`
|
||||||
- Integration tests use `@QuarkusTest` with JUnit 5 `@Test` methods
|
- Integration tests use `@QuarkusTest` with JUnit 5 `@Test` methods
|
||||||
- No raw `@Test` annotations on plain unit test classes
|
- No raw `@Test` annotations on plain unit test classes
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
name: scala-implementer
|
name: scala-implementer
|
||||||
description: "Implements Scala 3 + Quarkus REST services, domain logic, and persistence"
|
description: "Implements Scala 3 + Quarkus REST services, domain logic, and persistence"
|
||||||
tools: Read, Write, Edit, Bash, Glob
|
tools: Read, Write, Edit, Bash, Glob
|
||||||
model: sonnet
|
model: inherit
|
||||||
color: pink
|
color: pink
|
||||||
---
|
---
|
||||||
|
|
||||||
You do not have permissions to write tests, just source code.
|
You do not have permissions to write tests, just source code.
|
||||||
You are a Scala 3 expert specialising in Quarkus microservices.
|
You are a Scala 3 expert specialising in Quarkus microservices.
|
||||||
Always read the relevant /docs/api/ file before implementing.
|
Always read the relevant /docs/api/ file before implementing.
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
name: test-writer
|
name: test-writer
|
||||||
description: "Writes QuarkusTest unit and integration tests for a service. Invoke after scala-implementer has finished."
|
description: "Writes QuarkusTest unit and integration tests for a service. Invoke after scala-implementer has finished."
|
||||||
tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, NotebookEdit
|
tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, NotebookEdit
|
||||||
model: sonnet
|
model: haiku
|
||||||
color: purple
|
color: purple
|
||||||
---
|
---
|
||||||
|
|
||||||
You do not have permissions to modify the source code, just write tests.
|
You do not have permissions to modify the source code, just write tests.
|
||||||
You write tests for Scala 3 + Quarkus services.
|
You write tests for Scala 3 + Quarkus services.
|
||||||
|
|
||||||
@@ -12,12 +13,11 @@ You write tests for Scala 3 + Quarkus services.
|
|||||||
- Unit tests: `extends AnyFunSuite with Matchers` — use `test("description") { ... }` DSL, no `@Test` annotation, no `: Unit` return type needed.
|
- Unit tests: `extends AnyFunSuite with Matchers` — use `test("description") { ... }` DSL, no `@Test` annotation, no `: Unit` return type needed.
|
||||||
- Integration tests: `@QuarkusTest` with JUnit 5 — `@Test` methods MUST be explicitly typed `: Unit`.
|
- Integration tests: `@QuarkusTest` with JUnit 5 — `@Test` methods MUST be explicitly typed `: Unit`.
|
||||||
|
|
||||||
Target 95%+ conditional coverage.
|
Target 100% conditional coverage if possible.
|
||||||
|
|
||||||
When invoked BEFORE scala-implementer (no implementation exists yet):
|
When invoked BEFORE scala-implementer (no implementation exists yet):
|
||||||
Use the contract-first-test-writing skill — write failing tests from docs/api/{service}.yaml.
|
Use the contract-first-test-writing skill — write failing tests from docs/api/{service}.yaml.
|
||||||
|
|
||||||
When invoked AFTER scala-implementer (implementation exists):
|
When invoked AFTER scala-implementer (implementation exists):
|
||||||
Run python3 jacoco-reporter/jacoco_coverage_gaps.py modules/{service-name}/build/reports/jacoco/test/jacocoTestReport.xml --output agent
|
Run python3 jacoco-reporter/jacoco_coverage_gaps.py modules/{service-name}/build/reports/jacoco/test/jacocoTestReport.xml --output agent
|
||||||
Use the jacoco-coverage-gaps skill — close coverage gaps revealed by the report.
|
|
||||||
To regenerate the report run the tests first.
|
To regenerate the report run the tests first.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"enabledPlugins": {
|
"enabledPlugins": {
|
||||||
"superpowers@claude-plugins-official": true,
|
"superpowers@claude-plugins-official": false,
|
||||||
"ui-ux-pro-max@ui-ux-pro-max-skill": true
|
"ui-ux-pro-max@ui-ux-pro-max-skill": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,340 @@
|
|||||||
|
# NowChessSystems — AI Context Map
|
||||||
|
|
||||||
|
> **Stack:** raw-http | none | unknown | scala
|
||||||
|
|
||||||
|
> 0 routes | 0 models | 0 components | 63 lib files | 1 env vars | 1 middleware
|
||||||
|
> **Token savings:** this file is ~0 tokens. Without it, AI exploration would cost ~0 tokens. **Saves ~0 tokens per conversation.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
|
||||||
|
- `jacoco-reporter/scoverage_coverage_gaps.py`
|
||||||
|
- function parse_scoverage_xml: (xml_path) -> tuple[dict, list[ClassGap]]
|
||||||
|
- function format_agent: (project_stats, classes) -> str
|
||||||
|
- function format_json: (project_stats, classes) -> str
|
||||||
|
- function format_markdown: (project_stats, classes) -> str
|
||||||
|
- function format_module_gaps: (module_name, classes, stmt_pct) -> str
|
||||||
|
- function run_scan_modules: (modules_dir, package_filter, min_coverage) -> None
|
||||||
|
- _...4 more_
|
||||||
|
- `jacoco-reporter/test_gaps.py`
|
||||||
|
- function parse_suite_xml: (xml_path) -> SuiteResult
|
||||||
|
- function load_module: (module_dir, results_subdir) -> Optional[ModuleResult]
|
||||||
|
- function format_module: (mod) -> str
|
||||||
|
- function run: (modules_dir, results_subdir, module_filter) -> None
|
||||||
|
- function main: () -> None
|
||||||
|
- class TestCase
|
||||||
|
- _...2 more_
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala`
|
||||||
|
- class Board
|
||||||
|
- function apply
|
||||||
|
- function pieceAt
|
||||||
|
- function updated
|
||||||
|
- function removed
|
||||||
|
- function withMove
|
||||||
|
- _...2 more_
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala`
|
||||||
|
- function hasAnyRights
|
||||||
|
- function hasRights
|
||||||
|
- function revokeColor
|
||||||
|
- function revokeKingSide
|
||||||
|
- function revokeQueenSide
|
||||||
|
- class CastlingRights
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — function opposite, function label
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — class Piece
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — function label
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala`
|
||||||
|
- class Square
|
||||||
|
- function fromAlgebraic
|
||||||
|
- function offset
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala`
|
||||||
|
- class Bot
|
||||||
|
- function name
|
||||||
|
- function nextMove
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/dto/ErrorEventDto.scala` — class ErrorEventDto, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/dto/GameFullEventDto.scala` — class GameFullEventDto, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/dto/GameStateEventDto.scala` — class GameStateEventDto, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`
|
||||||
|
- function kingSquare
|
||||||
|
- function withBoard
|
||||||
|
- function withTurn
|
||||||
|
- function withCastlingRights
|
||||||
|
- function withEnPassantSquare
|
||||||
|
- function withHalfMoveClock
|
||||||
|
- _...4 more_
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — class PlayerId, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala`
|
||||||
|
- class ApiResponse
|
||||||
|
- function error
|
||||||
|
- function totalPages
|
||||||
|
- `modules/bot/python/nnue.py`
|
||||||
|
- function get_weights_dir: ()
|
||||||
|
- function get_data_dir: ()
|
||||||
|
- function list_checkpoints: ()
|
||||||
|
- function migrate_legacy_data: ()
|
||||||
|
- function show_header: ()
|
||||||
|
- function show_checkpoints_table: ()
|
||||||
|
- _...10 more_
|
||||||
|
- `modules/bot/python/src/dataset.py`
|
||||||
|
- function get_datasets_dir: () -> Path
|
||||||
|
- function next_dataset_version: () -> int
|
||||||
|
- function list_datasets: () -> List[Tuple[int, Dict]]
|
||||||
|
- function load_dataset_metadata: (version) -> Optional[Dict]
|
||||||
|
- function save_dataset_metadata: (version, metadata) -> None
|
||||||
|
- function create_dataset: (version, labeled_jsonl_path, sources, stockfish_depth) -> Path
|
||||||
|
- _...4 more_
|
||||||
|
- `modules/bot/python/src/export.py` — function export_to_nbai: (weights_file, output_file, trained_by, train_loss)
|
||||||
|
- `modules/bot/python/src/generate.py` — function play_random_game_and_collect_positions: (output_file, total_positions, samples_per_game, min_move, max_move, num_workers)
|
||||||
|
- `modules/bot/python/src/label.py` — function normalize_evaluation: (cp_value, method, scale), function label_positions_with_stockfish: (positions_file, output_file, stockfish_path, batch_size, depth, verbose, normalize, num_workers)
|
||||||
|
- `modules/bot/python/src/lichess_importer.py` — function import_lichess_evals: (input_path, output_file, max_positions, min_depth, verbose) -> int
|
||||||
|
- `modules/bot/python/src/tactical_positions_extractor.py`
|
||||||
|
- function download_and_extract_puzzle_db: (url, output_dir)
|
||||||
|
- function extract_puzzle_positions: (puzzle_csv, max_puzzles) -> Set[str]
|
||||||
|
- function load_positions_from_file: (file_path) -> Set[str]
|
||||||
|
- function merge_positions: (tactical, other, output_file)
|
||||||
|
- function extract_tactical_only: (puzzle_csv, output_file, max_puzzles) -> int
|
||||||
|
- function interactive_merge_positions: (puzzle_csv, output_file, max_puzzles)
|
||||||
|
- `modules/bot/python/src/train.py`
|
||||||
|
- function fen_to_features: (fen)
|
||||||
|
- function find_next_version: (base_name)
|
||||||
|
- function save_metadata: (weights_file, metadata)
|
||||||
|
- function train_nnue: (data_file, output_file, epochs, batch_size, lr, checkpoint, stockfish_depth, use_versioning, early_stopping_patience, weight_decay, subsample_ratio, hidden_sizes)
|
||||||
|
- function burst_train: (data_file, output_file, duration_minutes, epochs_per_season, early_stopping_patience, batch_size, lr, initial_checkpoint, stockfish_depth, use_versioning, weight_decay, subsample_ratio, hidden_sizes)
|
||||||
|
- class NNUEDataset
|
||||||
|
- _...1 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/BotController.scala`
|
||||||
|
- class BotController
|
||||||
|
- function getBot
|
||||||
|
- function listBots
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala`
|
||||||
|
- class BotMoveRepetition
|
||||||
|
- function blockedMoves
|
||||||
|
- function repeatedMove
|
||||||
|
- function filterAllowed
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/Config.scala` — class Config
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/ai/Evaluation.scala`
|
||||||
|
- class Evaluation
|
||||||
|
- class CHECKMATE_SCORE
|
||||||
|
- class DRAW_SCORE
|
||||||
|
- function evaluate
|
||||||
|
- function initAccumulator
|
||||||
|
- function copyAccumulator
|
||||||
|
- _...2 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala`
|
||||||
|
- class EvaluationClassic
|
||||||
|
- function evaluate
|
||||||
|
- function countRay
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala` — class EvaluationNNUE, function evaluate
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`
|
||||||
|
- class NNUE
|
||||||
|
- function initAccumulator
|
||||||
|
- function pushAccumulator
|
||||||
|
- function copyAccumulator
|
||||||
|
- function recomputeAccumulator
|
||||||
|
- function validateAccumulator
|
||||||
|
- _...4 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiLoader.scala`
|
||||||
|
- class NbaiLoader
|
||||||
|
- function load
|
||||||
|
- function loadDefault
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiMigrator.scala` — class NbaiMigrator, function migrateFromBin
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiModel.scala`
|
||||||
|
- function toJson
|
||||||
|
- class NbaiMetadata
|
||||||
|
- function fromJson
|
||||||
|
- function str
|
||||||
|
- function num
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiWriter.scala` — class NbaiWriter, function write
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`
|
||||||
|
- function bestMove
|
||||||
|
- function bestMove
|
||||||
|
- function bestMoveWithTime
|
||||||
|
- function bestMoveWithTime
|
||||||
|
- function loop
|
||||||
|
- function loop
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala`
|
||||||
|
- class MoveOrdering
|
||||||
|
- class OrderingContext
|
||||||
|
- function addKillerMove
|
||||||
|
- function getKillerMoves
|
||||||
|
- function addHistory
|
||||||
|
- function getHistory
|
||||||
|
- _...3 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala`
|
||||||
|
- function advance
|
||||||
|
- function probe
|
||||||
|
- function store
|
||||||
|
- function clear
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotBook.scala` — function probe, function select
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala` — class PolyglotHash, function hash
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/ZobristHash.scala`
|
||||||
|
- class ZobristHash
|
||||||
|
- function hash
|
||||||
|
- function nextHash
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`
|
||||||
|
- class Command
|
||||||
|
- function execute
|
||||||
|
- function undo
|
||||||
|
- function description
|
||||||
|
- class MoveResult
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala`
|
||||||
|
- class CommandInvoker
|
||||||
|
- function execute
|
||||||
|
- function undo
|
||||||
|
- function redo
|
||||||
|
- function history
|
||||||
|
- function getCurrentIndex
|
||||||
|
- _...3 more_
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala` — class JacksonConfig, function customize
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala` — class Parser, function parseMove
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`
|
||||||
|
- class GameEngine
|
||||||
|
- function board
|
||||||
|
- function turn
|
||||||
|
- function context
|
||||||
|
- function canUndo
|
||||||
|
- function canRedo
|
||||||
|
- _...11 more_
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`
|
||||||
|
- function context
|
||||||
|
- class Observer
|
||||||
|
- function onGameEvent
|
||||||
|
- class Observable
|
||||||
|
- function subscribe
|
||||||
|
- function unsubscribe
|
||||||
|
- _...1 more_
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistry.scala`
|
||||||
|
- class GameRegistry
|
||||||
|
- function store
|
||||||
|
- function get
|
||||||
|
- function update
|
||||||
|
- function generateId
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistryImpl.scala`
|
||||||
|
- class GameRegistryImpl
|
||||||
|
- function store
|
||||||
|
- function get
|
||||||
|
- function update
|
||||||
|
- function generateId
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala`
|
||||||
|
- function onGameEvent
|
||||||
|
- function createGame
|
||||||
|
- function getGame
|
||||||
|
- function streamGame
|
||||||
|
- function onGameEvent
|
||||||
|
- function resignGame
|
||||||
|
- _...9 more_
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala` — class GameContextExport, function exportGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — class GameContextImport, function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameFileService.scala`
|
||||||
|
- class GameFileService
|
||||||
|
- function saveGameToFile
|
||||||
|
- function loadGameFromFile
|
||||||
|
- class FileSystemGameService
|
||||||
|
- function saveGameToFile
|
||||||
|
- function loadGameFromFile
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenExporter.scala`
|
||||||
|
- class FenExporter
|
||||||
|
- function boardToFen
|
||||||
|
- function gameContextToFen
|
||||||
|
- function exportGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala`
|
||||||
|
- class FenParser
|
||||||
|
- function parseFen
|
||||||
|
- function importGameContext
|
||||||
|
- function parseBoard
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserCombinators.scala`
|
||||||
|
- class FenParserCombinators
|
||||||
|
- function parseFen
|
||||||
|
- function parseBoard
|
||||||
|
- function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserFastParse.scala`
|
||||||
|
- class FenParserFastParse
|
||||||
|
- function parseFen
|
||||||
|
- function parseBoard
|
||||||
|
- function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserSupport.scala` — function buildSquares
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/json/JsonExporter.scala` — class JsonExporter, function exportGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/json/JsonParser.scala` — class JsonParser, function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala`
|
||||||
|
- class PgnExporter
|
||||||
|
- function exportGameContext
|
||||||
|
- function exportGame
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala`
|
||||||
|
- class PgnParser
|
||||||
|
- function validatePgn
|
||||||
|
- function importGameContext
|
||||||
|
- function parsePgn
|
||||||
|
- function parseAlgebraicMove
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala`
|
||||||
|
- class RuleSet
|
||||||
|
- function candidateMoves
|
||||||
|
- function legalMoves
|
||||||
|
- function allLegalMoves
|
||||||
|
- function isCheck
|
||||||
|
- function isCheckmate
|
||||||
|
- _...5 more_
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala`
|
||||||
|
- class DefaultRules
|
||||||
|
- function positionOf
|
||||||
|
- function loop
|
||||||
|
- function toMoves
|
||||||
|
- function loop
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Config
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
- `STOCKFISH_PATH` **required** — modules/bot/python/nnue.py
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Middleware
|
||||||
|
|
||||||
|
## custom
|
||||||
|
- generate — `modules/bot/python/src/generate.py`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Dependency Graph
|
||||||
|
|
||||||
|
## Most Imported Files (change these carefully)
|
||||||
|
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **64** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **44** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **40** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **35** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` — imported by **19** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **18** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — imported by **17** files
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **17** files
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` — imported by **11** files
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` — imported by **10** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala` — imported by **9** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala` — imported by **7** files
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — imported by **7** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala` — imported by **6** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/ai/Evaluation.scala` — imported by **6** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — imported by **5** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotBook.scala` — imported by **5** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala` — imported by **4** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala` — imported by **4** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala` — imported by **4** files
|
||||||
|
|
||||||
|
## Import Map (who imports what)
|
||||||
|
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` ← `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala`, `modules/bot/src/main/scala/de/nowchess/bot/ai/Evaluation.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala` +59 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` ← `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala`, `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/test/scala/de/nowchess/api/board/BoardTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala` +39 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/main/scala/de/nowchess/api/move/Move.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/api/src/test/scala/de/nowchess/api/move/MoveTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala` +35 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala` +30 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +14 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` ← `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala`, `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala`, `modules/bot/src/main/scala/de/nowchess/bot/util/ZobristHash.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +13 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala` +12 more
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` ← `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +12 more
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` ← `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +6 more
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` ← `modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala` +5 more
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
_Generated by [codesight](https://github.com/Houseofmvps/codesight) — see your codebase clearly_
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Config
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
- `STOCKFISH_PATH` **required** — modules/bot/python/nnue.py
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Dependency Graph
|
||||||
|
|
||||||
|
## Most Imported Files (change these carefully)
|
||||||
|
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **64** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **44** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **40** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **35** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` — imported by **19** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **18** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — imported by **17** files
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **17** files
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` — imported by **11** files
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` — imported by **10** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala` — imported by **9** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala` — imported by **7** files
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — imported by **7** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala` — imported by **6** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/ai/Evaluation.scala` — imported by **6** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — imported by **5** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotBook.scala` — imported by **5** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala` — imported by **4** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala` — imported by **4** files
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala` — imported by **4** files
|
||||||
|
|
||||||
|
## Import Map (who imports what)
|
||||||
|
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` ← `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala`, `modules/bot/src/main/scala/de/nowchess/bot/ai/Evaluation.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala` +59 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` ← `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala`, `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/test/scala/de/nowchess/api/board/BoardTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala` +39 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/main/scala/de/nowchess/api/move/Move.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/api/src/test/scala/de/nowchess/api/move/MoveTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala` +35 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala` +30 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +14 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` ← `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala`, `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala`, `modules/bot/src/main/scala/de/nowchess/bot/util/ZobristHash.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +13 more
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala` +12 more
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` ← `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +12 more
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` ← `modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala`, `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`, `modules/bot/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala` +6 more
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` ← `modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala` +5 more
|
||||||
@@ -0,0 +1,272 @@
|
|||||||
|
# Libraries
|
||||||
|
|
||||||
|
- `jacoco-reporter/scoverage_coverage_gaps.py`
|
||||||
|
- function parse_scoverage_xml: (xml_path) -> tuple[dict, list[ClassGap]]
|
||||||
|
- function format_agent: (project_stats, classes) -> str
|
||||||
|
- function format_json: (project_stats, classes) -> str
|
||||||
|
- function format_markdown: (project_stats, classes) -> str
|
||||||
|
- function format_module_gaps: (module_name, classes, stmt_pct) -> str
|
||||||
|
- function run_scan_modules: (modules_dir, package_filter, min_coverage) -> None
|
||||||
|
- _...4 more_
|
||||||
|
- `jacoco-reporter/test_gaps.py`
|
||||||
|
- function parse_suite_xml: (xml_path) -> SuiteResult
|
||||||
|
- function load_module: (module_dir, results_subdir) -> Optional[ModuleResult]
|
||||||
|
- function format_module: (mod) -> str
|
||||||
|
- function run: (modules_dir, results_subdir, module_filter) -> None
|
||||||
|
- function main: () -> None
|
||||||
|
- class TestCase
|
||||||
|
- _...2 more_
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala`
|
||||||
|
- class Board
|
||||||
|
- function apply
|
||||||
|
- function pieceAt
|
||||||
|
- function updated
|
||||||
|
- function removed
|
||||||
|
- function withMove
|
||||||
|
- _...2 more_
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala`
|
||||||
|
- function hasAnyRights
|
||||||
|
- function hasRights
|
||||||
|
- function revokeColor
|
||||||
|
- function revokeKingSide
|
||||||
|
- function revokeQueenSide
|
||||||
|
- class CastlingRights
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — function opposite, function label
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — class Piece
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — function label
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala`
|
||||||
|
- class Square
|
||||||
|
- function fromAlgebraic
|
||||||
|
- function offset
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala`
|
||||||
|
- class Bot
|
||||||
|
- function name
|
||||||
|
- function nextMove
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/dto/ErrorEventDto.scala` — class ErrorEventDto, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/dto/GameFullEventDto.scala` — class GameFullEventDto, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/dto/GameStateEventDto.scala` — class GameStateEventDto, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`
|
||||||
|
- function kingSquare
|
||||||
|
- function withBoard
|
||||||
|
- function withTurn
|
||||||
|
- function withCastlingRights
|
||||||
|
- function withEnPassantSquare
|
||||||
|
- function withHalfMoveClock
|
||||||
|
- _...4 more_
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — class PlayerId, function apply
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala`
|
||||||
|
- class ApiResponse
|
||||||
|
- function error
|
||||||
|
- function totalPages
|
||||||
|
- `modules/bot/python/nnue.py`
|
||||||
|
- function get_weights_dir: ()
|
||||||
|
- function get_data_dir: ()
|
||||||
|
- function list_checkpoints: ()
|
||||||
|
- function migrate_legacy_data: ()
|
||||||
|
- function show_header: ()
|
||||||
|
- function show_checkpoints_table: ()
|
||||||
|
- _...10 more_
|
||||||
|
- `modules/bot/python/src/dataset.py`
|
||||||
|
- function get_datasets_dir: () -> Path
|
||||||
|
- function next_dataset_version: () -> int
|
||||||
|
- function list_datasets: () -> List[Tuple[int, Dict]]
|
||||||
|
- function load_dataset_metadata: (version) -> Optional[Dict]
|
||||||
|
- function save_dataset_metadata: (version, metadata) -> None
|
||||||
|
- function create_dataset: (version, labeled_jsonl_path, sources, stockfish_depth) -> Path
|
||||||
|
- _...4 more_
|
||||||
|
- `modules/bot/python/src/export.py` — function export_to_nbai: (weights_file, output_file, trained_by, train_loss)
|
||||||
|
- `modules/bot/python/src/generate.py` — function play_random_game_and_collect_positions: (output_file, total_positions, samples_per_game, min_move, max_move, num_workers)
|
||||||
|
- `modules/bot/python/src/label.py` — function normalize_evaluation: (cp_value, method, scale), function label_positions_with_stockfish: (positions_file, output_file, stockfish_path, batch_size, depth, verbose, normalize, num_workers)
|
||||||
|
- `modules/bot/python/src/lichess_importer.py` — function import_lichess_evals: (input_path, output_file, max_positions, min_depth, verbose) -> int
|
||||||
|
- `modules/bot/python/src/tactical_positions_extractor.py`
|
||||||
|
- function download_and_extract_puzzle_db: (url, output_dir)
|
||||||
|
- function extract_puzzle_positions: (puzzle_csv, max_puzzles) -> Set[str]
|
||||||
|
- function load_positions_from_file: (file_path) -> Set[str]
|
||||||
|
- function merge_positions: (tactical, other, output_file)
|
||||||
|
- function extract_tactical_only: (puzzle_csv, output_file, max_puzzles) -> int
|
||||||
|
- function interactive_merge_positions: (puzzle_csv, output_file, max_puzzles)
|
||||||
|
- `modules/bot/python/src/train.py`
|
||||||
|
- function fen_to_features: (fen)
|
||||||
|
- function find_next_version: (base_name)
|
||||||
|
- function save_metadata: (weights_file, metadata)
|
||||||
|
- function train_nnue: (data_file, output_file, epochs, batch_size, lr, checkpoint, stockfish_depth, use_versioning, early_stopping_patience, weight_decay, subsample_ratio, hidden_sizes)
|
||||||
|
- function burst_train: (data_file, output_file, duration_minutes, epochs_per_season, early_stopping_patience, batch_size, lr, initial_checkpoint, stockfish_depth, use_versioning, weight_decay, subsample_ratio, hidden_sizes)
|
||||||
|
- class NNUEDataset
|
||||||
|
- _...1 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/BotController.scala`
|
||||||
|
- class BotController
|
||||||
|
- function getBot
|
||||||
|
- function listBots
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala`
|
||||||
|
- class BotMoveRepetition
|
||||||
|
- function blockedMoves
|
||||||
|
- function repeatedMove
|
||||||
|
- function filterAllowed
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/Config.scala` — class Config
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/ai/Evaluation.scala`
|
||||||
|
- class Evaluation
|
||||||
|
- class CHECKMATE_SCORE
|
||||||
|
- class DRAW_SCORE
|
||||||
|
- function evaluate
|
||||||
|
- function initAccumulator
|
||||||
|
- function copyAccumulator
|
||||||
|
- _...2 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala`
|
||||||
|
- class EvaluationClassic
|
||||||
|
- function evaluate
|
||||||
|
- function countRay
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala` — class EvaluationNNUE, function evaluate
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala`
|
||||||
|
- class NNUE
|
||||||
|
- function initAccumulator
|
||||||
|
- function pushAccumulator
|
||||||
|
- function copyAccumulator
|
||||||
|
- function recomputeAccumulator
|
||||||
|
- function validateAccumulator
|
||||||
|
- _...4 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiLoader.scala`
|
||||||
|
- class NbaiLoader
|
||||||
|
- function load
|
||||||
|
- function loadDefault
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiMigrator.scala` — class NbaiMigrator, function migrateFromBin
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiModel.scala`
|
||||||
|
- function toJson
|
||||||
|
- class NbaiMetadata
|
||||||
|
- function fromJson
|
||||||
|
- function str
|
||||||
|
- function num
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NbaiWriter.scala` — class NbaiWriter, function write
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala`
|
||||||
|
- function bestMove
|
||||||
|
- function bestMove
|
||||||
|
- function bestMoveWithTime
|
||||||
|
- function bestMoveWithTime
|
||||||
|
- function loop
|
||||||
|
- function loop
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala`
|
||||||
|
- class MoveOrdering
|
||||||
|
- class OrderingContext
|
||||||
|
- function addKillerMove
|
||||||
|
- function getKillerMoves
|
||||||
|
- function addHistory
|
||||||
|
- function getHistory
|
||||||
|
- _...3 more_
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala`
|
||||||
|
- function advance
|
||||||
|
- function probe
|
||||||
|
- function store
|
||||||
|
- function clear
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotBook.scala` — function probe, function select
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala` — class PolyglotHash, function hash
|
||||||
|
- `modules/bot/src/main/scala/de/nowchess/bot/util/ZobristHash.scala`
|
||||||
|
- class ZobristHash
|
||||||
|
- function hash
|
||||||
|
- function nextHash
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`
|
||||||
|
- class Command
|
||||||
|
- function execute
|
||||||
|
- function undo
|
||||||
|
- function description
|
||||||
|
- class MoveResult
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala`
|
||||||
|
- class CommandInvoker
|
||||||
|
- function execute
|
||||||
|
- function undo
|
||||||
|
- function redo
|
||||||
|
- function history
|
||||||
|
- function getCurrentIndex
|
||||||
|
- _...3 more_
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala` — class JacksonConfig, function customize
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala` — class Parser, function parseMove
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`
|
||||||
|
- class GameEngine
|
||||||
|
- function board
|
||||||
|
- function turn
|
||||||
|
- function context
|
||||||
|
- function canUndo
|
||||||
|
- function canRedo
|
||||||
|
- _...11 more_
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`
|
||||||
|
- function context
|
||||||
|
- class Observer
|
||||||
|
- function onGameEvent
|
||||||
|
- class Observable
|
||||||
|
- function subscribe
|
||||||
|
- function unsubscribe
|
||||||
|
- _...1 more_
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistry.scala`
|
||||||
|
- class GameRegistry
|
||||||
|
- function store
|
||||||
|
- function get
|
||||||
|
- function update
|
||||||
|
- function generateId
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistryImpl.scala`
|
||||||
|
- class GameRegistryImpl
|
||||||
|
- function store
|
||||||
|
- function get
|
||||||
|
- function update
|
||||||
|
- function generateId
|
||||||
|
- `modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala`
|
||||||
|
- function onGameEvent
|
||||||
|
- function createGame
|
||||||
|
- function getGame
|
||||||
|
- function streamGame
|
||||||
|
- function onGameEvent
|
||||||
|
- function resignGame
|
||||||
|
- _...9 more_
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala` — class GameContextExport, function exportGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — class GameContextImport, function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/GameFileService.scala`
|
||||||
|
- class GameFileService
|
||||||
|
- function saveGameToFile
|
||||||
|
- function loadGameFromFile
|
||||||
|
- class FileSystemGameService
|
||||||
|
- function saveGameToFile
|
||||||
|
- function loadGameFromFile
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenExporter.scala`
|
||||||
|
- class FenExporter
|
||||||
|
- function boardToFen
|
||||||
|
- function gameContextToFen
|
||||||
|
- function exportGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala`
|
||||||
|
- class FenParser
|
||||||
|
- function parseFen
|
||||||
|
- function importGameContext
|
||||||
|
- function parseBoard
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserCombinators.scala`
|
||||||
|
- class FenParserCombinators
|
||||||
|
- function parseFen
|
||||||
|
- function parseBoard
|
||||||
|
- function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserFastParse.scala`
|
||||||
|
- class FenParserFastParse
|
||||||
|
- function parseFen
|
||||||
|
- function parseBoard
|
||||||
|
- function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserSupport.scala` — function buildSquares
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/json/JsonExporter.scala` — class JsonExporter, function exportGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/json/JsonParser.scala` — class JsonParser, function importGameContext
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala`
|
||||||
|
- class PgnExporter
|
||||||
|
- function exportGameContext
|
||||||
|
- function exportGame
|
||||||
|
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala`
|
||||||
|
- class PgnParser
|
||||||
|
- function validatePgn
|
||||||
|
- function importGameContext
|
||||||
|
- function parsePgn
|
||||||
|
- function parseAlgebraicMove
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala`
|
||||||
|
- class RuleSet
|
||||||
|
- function candidateMoves
|
||||||
|
- function legalMoves
|
||||||
|
- function allLegalMoves
|
||||||
|
- function isCheck
|
||||||
|
- function isCheckmate
|
||||||
|
- _...5 more_
|
||||||
|
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala`
|
||||||
|
- class DefaultRules
|
||||||
|
- function positionOf
|
||||||
|
- function loop
|
||||||
|
- function toMoves
|
||||||
|
- function loop
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Middleware
|
||||||
|
|
||||||
|
## custom
|
||||||
|
- generate — `modules/bot/python/src/generate.py`
|
||||||
@@ -0,0 +1,198 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>NowChessSystems — codesight report</title>
|
||||||
|
<style>
|
||||||
|
*{margin:0;padding:0;box-sizing:border-box}
|
||||||
|
:root{--bg:#0a0a0f;--card:#12121a;--border:#1e1e2e;--text:#e0e0e8;--muted:#6b6b80;--accent:#6366f1;--accent2:#22d3ee;--green:#22c55e;--orange:#f59e0b;--red:#ef4444;--pink:#ec4899}
|
||||||
|
body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;padding:2rem;max-width:1400px;margin:0 auto;line-height:1.6}
|
||||||
|
h1{font-size:2.5rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.25rem}
|
||||||
|
.subtitle{color:var(--muted);font-size:1rem;margin-bottom:2rem}
|
||||||
|
.stack-badge{display:inline-block;background:var(--card);border:1px solid var(--border);border-radius:6px;padding:2px 10px;font-size:.85rem;color:var(--accent2);margin:0 4px 4px 0}
|
||||||
|
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin:2rem 0}
|
||||||
|
.stat{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1.25rem;text-align:center}
|
||||||
|
.stat-value{font-size:2rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
|
||||||
|
.stat-label{color:var(--muted);font-size:.85rem;margin-top:.25rem}
|
||||||
|
.token-hero{background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid var(--accent);border-radius:16px;padding:2rem;margin:2rem 0;text-align:center}
|
||||||
|
.token-saved{font-size:3rem;font-weight:900;color:var(--green)}
|
||||||
|
.token-detail{color:var(--muted);font-size:.9rem;margin-top:.5rem}
|
||||||
|
.section{margin:2.5rem 0}
|
||||||
|
.section h2{font-size:1.4rem;font-weight:700;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}
|
||||||
|
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}
|
||||||
|
.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem;transition:border-color .2s}
|
||||||
|
.card:hover{border-color:var(--accent)}
|
||||||
|
.card-title{font-weight:700;font-size:1rem;margin-bottom:.5rem}
|
||||||
|
.card-meta{color:var(--muted);font-size:.8rem}
|
||||||
|
.tag{display:inline-block;background:rgba(99,102,241,.15);color:var(--accent);border-radius:4px;padding:1px 6px;font-size:.75rem;margin:1px}
|
||||||
|
.tag-auth{background:rgba(239,68,68,.15);color:var(--red)}
|
||||||
|
.tag-db{background:rgba(34,211,238,.15);color:var(--accent2)}
|
||||||
|
.tag-ai{background:rgba(236,72,153,.15);color:var(--pink)}
|
||||||
|
.tag-payment{background:rgba(245,158,11,.15);color:var(--orange)}
|
||||||
|
.tag-email{background:rgba(34,197,94,.15);color:var(--green)}
|
||||||
|
.tag-queue{background:rgba(168,85,247,.15);color:#a855f7}
|
||||||
|
.tag-cache{background:rgba(245,158,11,.15);color:var(--orange)}
|
||||||
|
.method{font-weight:700;font-size:.8rem;padding:2px 6px;border-radius:4px;margin-right:6px}
|
||||||
|
.method-GET{background:rgba(34,197,94,.2);color:var(--green)}
|
||||||
|
.method-POST{background:rgba(99,102,241,.2);color:var(--accent)}
|
||||||
|
.method-PUT{background:rgba(245,158,11,.2);color:var(--orange)}
|
||||||
|
.method-PATCH{background:rgba(245,158,11,.2);color:var(--orange)}
|
||||||
|
.method-DELETE{background:rgba(239,68,68,.2);color:var(--red)}
|
||||||
|
.method-ALL{background:rgba(107,107,128,.2);color:var(--muted)}
|
||||||
|
.route-path{font-family:'Fira Code',monospace;font-size:.9rem}
|
||||||
|
.route-contract{color:var(--muted);font-size:.8rem;font-style:italic;margin-left:.5rem}
|
||||||
|
.field{display:flex;gap:.5rem;padding:3px 0;font-size:.9rem}
|
||||||
|
.field-name{font-family:monospace;color:var(--accent2)}
|
||||||
|
.field-type{color:var(--muted);font-family:monospace}
|
||||||
|
.field-flags{display:flex;gap:3px}
|
||||||
|
.flag{font-size:.7rem;padding:0 4px;border-radius:3px;background:rgba(99,102,241,.1);color:var(--accent)}
|
||||||
|
.flag-pk{background:rgba(245,158,11,.2);color:var(--orange)}
|
||||||
|
.flag-fk{background:rgba(34,211,238,.2);color:var(--accent2)}
|
||||||
|
.flag-unique{background:rgba(236,72,153,.2);color:var(--pink)}
|
||||||
|
.hot-bar{height:8px;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:4px;margin-top:4px}
|
||||||
|
.component-props{color:var(--muted);font-size:.85rem}
|
||||||
|
.badge-client{background:rgba(34,197,94,.15);color:var(--green);font-size:.75rem;padding:1px 6px;border-radius:4px}
|
||||||
|
.badge-server{background:rgba(99,102,241,.15);color:var(--accent);font-size:.75rem;padding:1px 6px;border-radius:4px}
|
||||||
|
.env-required{color:var(--red);font-weight:600;font-size:.8rem}
|
||||||
|
.env-default{color:var(--green);font-size:.8rem}
|
||||||
|
.footer{text-align:center;color:var(--muted);margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);font-size:.85rem}
|
||||||
|
.footer a{color:var(--accent);text-decoration:none}
|
||||||
|
table{width:100%;border-collapse:collapse}
|
||||||
|
table td,table th{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border);font-size:.9rem}
|
||||||
|
table th{color:var(--muted);font-size:.8rem;font-weight:600;text-transform:uppercase}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>NowChessSystems</h1>
|
||||||
|
<div class="subtitle">AI Context Map — generated by codesight</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<span class="stack-badge">raw-http</span>
|
||||||
|
|
||||||
|
<span class="stack-badge">unknown</span>
|
||||||
|
<span class="stack-badge">scala</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="token-hero">
|
||||||
|
<div class="token-saved">~20,573 tokens saved</div>
|
||||||
|
<div class="token-detail">
|
||||||
|
Output: 5,297 tokens — Exploration cost without codesight: ~25,870 tokens — 149 files scanned
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stats">
|
||||||
|
<div class="stat"><div class="stat-value">0</div><div class="stat-label">Routes</div></div>
|
||||||
|
<div class="stat"><div class="stat-value">0</div><div class="stat-label">Models</div></div>
|
||||||
|
<div class="stat"><div class="stat-value">0</div><div class="stat-label">Components</div></div>
|
||||||
|
<div class="stat"><div class="stat-value">63</div><div class="stat-label">Libraries</div></div>
|
||||||
|
<div class="stat"><div class="stat-value">1</div><div class="stat-label">Env Vars</div></div>
|
||||||
|
<div class="stat"><div class="stat-value">1</div><div class="stat-label">Middleware</div></div>
|
||||||
|
<div class="stat"><div class="stat-value">383</div><div class="stat-label">Import Links</div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Dependency Hot Files</h2>
|
||||||
|
<div class="grid">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala</div>
|
||||||
|
<div class="card-meta">imported by 64 files</div>
|
||||||
|
<div class="hot-bar" style="width:100%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/move/Move.scala</div>
|
||||||
|
<div class="card-meta">imported by 44 files</div>
|
||||||
|
<div class="hot-bar" style="width:69%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/board/Square.scala</div>
|
||||||
|
<div class="card-meta">imported by 40 files</div>
|
||||||
|
<div class="hot-bar" style="width:63%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/board/Color.scala</div>
|
||||||
|
<div class="card-meta">imported by 35 files</div>
|
||||||
|
<div class="hot-bar" style="width:55%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/board/Board.scala</div>
|
||||||
|
<div class="card-meta">imported by 19 files</div>
|
||||||
|
<div class="hot-bar" style="width:30%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/board/Piece.scala</div>
|
||||||
|
<div class="card-meta">imported by 18 files</div>
|
||||||
|
<div class="hot-bar" style="width:28%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala</div>
|
||||||
|
<div class="card-meta">imported by 17 files</div>
|
||||||
|
<div class="hot-bar" style="width:27%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala</div>
|
||||||
|
<div class="card-meta">imported by 17 files</div>
|
||||||
|
<div class="hot-bar" style="width:27%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala</div>
|
||||||
|
<div class="card-meta">imported by 11 files</div>
|
||||||
|
<div class="hot-bar" style="width:17%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala</div>
|
||||||
|
<div class="card-meta">imported by 10 files</div>
|
||||||
|
<div class="hot-bar" style="width:16%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala</div>
|
||||||
|
<div class="card-meta">imported by 9 files</div>
|
||||||
|
<div class="hot-bar" style="width:14%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title" style="font-size:.9rem">modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala</div>
|
||||||
|
<div class="card-meta">imported by 7 files</div>
|
||||||
|
<div class="hot-bar" style="width:11%"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Environment Variables</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>Variable</th><th>Status</th><th>Source</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td><code>STOCKFISH_PATH</code></td>
|
||||||
|
<td><span class="env-required">required</span></td>
|
||||||
|
<td class="card-meta">modules/bot/python/nnue.py</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<h2>Middleware</h2>
|
||||||
|
<div class="grid">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-title">generate <span class="tag tag-custom">custom</span></div>
|
||||||
|
<div class="card-meta">modules/bot/python/src/generate.py</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
Generated by <a href="https://github.com/Houseofmvps/codesight">codesight</a> — see your codebase clearly
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# NowChessSystems — Wiki
|
||||||
|
|
||||||
|
_Generated 2026-04-12 — re-run `npx codesight --wiki` if the codebase has changed._
|
||||||
|
|
||||||
|
Structural map compiled from source code via AST. No LLM — deterministic, 200ms.
|
||||||
|
|
||||||
|
> **How to use safely:** These articles tell you WHERE things live and WHAT exists. They do not show full implementation logic. Always read the actual source files before implementing new features or making changes. Never infer how a function works from the wiki alone.
|
||||||
|
|
||||||
|
## Articles
|
||||||
|
|
||||||
|
- [Overview](./overview.md)
|
||||||
|
|
||||||
|
## Quick Stats
|
||||||
|
|
||||||
|
- Routes: **0**
|
||||||
|
- Models: **0**
|
||||||
|
- Components: **0**
|
||||||
|
- Env vars: **0** required, **0** with defaults
|
||||||
|
|
||||||
|
## How to Use
|
||||||
|
|
||||||
|
- **New session:** read `index.md` (this file) for orientation — WHERE things are
|
||||||
|
- **Architecture question:** read `overview.md` (~500 tokens)
|
||||||
|
- **Domain question:** read the relevant article, then **read those source files**
|
||||||
|
- **Database question:** read `database.md`, then read the actual schema files
|
||||||
|
- **Before implementing anything:** read the source files listed in the article
|
||||||
|
- **Full source context:** read `.codesight/CODESIGHT.md`
|
||||||
|
|
||||||
|
## What the Wiki Does Not Cover
|
||||||
|
|
||||||
|
These exist in your codebase but are **not** reflected in wiki articles:
|
||||||
|
- Routes registered dynamically at runtime (loops, plugin factories, `app.use(dynamicRouter)`)
|
||||||
|
- Internal routes from npm packages (e.g. Better Auth's built-in `/api/auth/*` endpoints)
|
||||||
|
- WebSocket and SSE handlers
|
||||||
|
- Raw SQL tables not declared through an ORM
|
||||||
|
- Computed or virtual fields absent from schema declarations
|
||||||
|
- TypeScript types that are not actual database columns
|
||||||
|
- Routes marked `[inferred]` were detected via regex and may have lower precision
|
||||||
|
- gRPC, tRPC, and GraphQL resolvers may be partially captured
|
||||||
|
|
||||||
|
When in doubt, search the source. The wiki is a starting point, not a complete inventory.
|
||||||
|
|
||||||
|
---
|
||||||
|
_Last compiled: 2026-04-12 · 2 articles · [codesight](https://github.com/Houseofmvps/codesight)_
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Wiki Log
|
||||||
|
|
||||||
|
History of `npx codesight --wiki` runs. Capped at 20 entries.
|
||||||
|
|
||||||
|
## [2026-04-12 14:34:19] scan | 0 routes, 0 models, 0 components → 2 articles
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# NowChessSystems — Overview
|
||||||
|
|
||||||
|
> **Navigation aid.** This article shows WHERE things live (routes, models, files). Read actual source files before implementing new features or making changes.
|
||||||
|
|
||||||
|
**NowChessSystems** is a scala project built with raw-http.
|
||||||
|
|
||||||
|
## High-Impact Files
|
||||||
|
|
||||||
|
Changes to these files have the widest blast radius across the codebase:
|
||||||
|
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **28** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **21** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **19** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **14** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` — imported by **13** files
|
||||||
|
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **10** files
|
||||||
|
|
||||||
|
---
|
||||||
|
_Back to [index.md](./index.md) · Generated 2026-04-12_
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# Normalize text files in the repo
|
||||||
|
* text=auto eol=lf
|
||||||
|
|
||||||
|
# Keep Windows command scripts in CRLF
|
||||||
|
*.bat text eol=crlf
|
||||||
|
*.cmd text eol=crlf
|
||||||
|
|
||||||
|
# Keep Unix shell scripts in LF
|
||||||
|
*.sh text eol=lf
|
||||||
|
|
||||||
|
# Binary assets (no EOL normalization / textual diff)
|
||||||
|
*.png binary
|
||||||
|
*.jpg binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.gif binary
|
||||||
|
*.webp binary
|
||||||
|
*.bmp binary
|
||||||
|
*.ico binary
|
||||||
|
|
||||||
|
# ML / model / numeric artifacts
|
||||||
|
*.bin binary
|
||||||
|
*.pt binary
|
||||||
|
*.pth binary
|
||||||
|
*.onnx binary
|
||||||
|
*.h5 binary
|
||||||
|
*.hdf5 binary
|
||||||
|
*.pb binary
|
||||||
|
*.tflite binary
|
||||||
|
*.npy binary
|
||||||
|
*.npz binary
|
||||||
|
*.safetensors binary
|
||||||
|
|
||||||
|
# Firmware / hex-like artifacts
|
||||||
|
*.hex binary
|
||||||
|
|
||||||
|
# Packaged binaries
|
||||||
|
*.jar binary
|
||||||
|
*.zip binary
|
||||||
|
*.7z binary
|
||||||
|
*.gz binary
|
||||||
|
|
||||||
@@ -38,6 +38,8 @@ bin/
|
|||||||
|
|
||||||
### VS Code ###
|
### VS Code ###
|
||||||
.vscode/
|
.vscode/
|
||||||
|
graphify-out/
|
||||||
|
.graphify_*.json
|
||||||
|
|
||||||
### Mac OS ###
|
### Mac OS ###
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
@@ -8,3 +8,5 @@
|
|||||||
/dataSources.local.xml
|
/dataSources.local.xml
|
||||||
# Editor-based HTTP Client requests
|
# Editor-based HTTP Client requests
|
||||||
/httpRequests/
|
/httpRequests/
|
||||||
|
|
||||||
|
sonarlint.xml
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AndroidProjectSystem">
|
||||||
|
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<AndroidXmlCodeStyleSettings>
|
||||||
|
<option name="USE_CUSTOM_SETTINGS" value="true" />
|
||||||
|
</AndroidXmlCodeStyleSettings>
|
||||||
|
<JetCodeStyleSettings>
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</JetCodeStyleSettings>
|
||||||
|
<ScalaCodeStyleSettings>
|
||||||
|
<option name="FORMATTER" value="1" />
|
||||||
|
</ScalaCodeStyleSettings>
|
||||||
|
<XML>
|
||||||
|
<option name="XML_KEEP_LINE_BREAKS" value="false" />
|
||||||
|
<option name="XML_ALIGN_ATTRIBUTES" value="false" />
|
||||||
|
<option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
||||||
|
</XML>
|
||||||
|
<codeStyleSettings language="XML">
|
||||||
|
<option name="FORCE_REARRANGE_MODE" value="1" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
</indentOptions>
|
||||||
|
<arrangement>
|
||||||
|
<rules>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:android</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:id</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>name</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>style</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE />
|
||||||
|
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
</rules>
|
||||||
|
</arrangement>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="kotlin">
|
||||||
|
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<component name="ProjectCodeStyleConfiguration">
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
<state>
|
<state>
|
||||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||||
</state>
|
</state>
|
||||||
</component>
|
</component>
|
||||||
@@ -11,7 +11,10 @@
|
|||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/modules" />
|
<option value="$PROJECT_DIR$/modules" />
|
||||||
<option value="$PROJECT_DIR$/modules/api" />
|
<option value="$PROJECT_DIR$/modules/api" />
|
||||||
|
<option value="$PROJECT_DIR$/modules/bot" />
|
||||||
<option value="$PROJECT_DIR$/modules/core" />
|
<option value="$PROJECT_DIR$/modules/core" />
|
||||||
|
<option value="$PROJECT_DIR$/modules/io" />
|
||||||
|
<option value="$PROJECT_DIR$/modules/rule" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="FrameworkDetectionExcludesConfiguration">
|
<component name="FrameworkDetectionExcludesConfiguration">
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="NowChessSystems.modules.core.main" type="QuarkusRunConfigurationType" factoryName="Quarkus" nameIsGenerated="true">
|
||||||
|
<module name="NowChessSystems.modules.core.main" />
|
||||||
|
<QsGradleRunConfiguration>
|
||||||
|
<ExternalSystemSettings>
|
||||||
|
<option name="executionName" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$/modules/core" />
|
||||||
|
<option name="externalSystemIdString" value="GRADLE" />
|
||||||
|
<option name="scriptParameters" />
|
||||||
|
<option name="taskDescriptions">
|
||||||
|
<list />
|
||||||
|
</option>
|
||||||
|
<option name="taskNames">
|
||||||
|
<list>
|
||||||
|
<option value="quarkusDev" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="vmOptions" />
|
||||||
|
</ExternalSystemSettings>
|
||||||
|
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||||
|
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||||
|
<ExternalSystemDebugDisabled>false</ExternalSystemDebugDisabled>
|
||||||
|
<DebugAllEnabled>false</DebugAllEnabled>
|
||||||
|
<RunAsTest>false</RunAsTest>
|
||||||
|
<GradleProfilingDisabled>false</GradleProfilingDisabled>
|
||||||
|
<GradleCoverageDisabled>false</GradleCoverageDisabled>
|
||||||
|
<profile>dev</profile>
|
||||||
|
</QsGradleRunConfiguration>
|
||||||
|
<method v="2">
|
||||||
|
<option name="Make" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<option name="deprecationWarnings" value="true" />
|
<option name="deprecationWarnings" value="true" />
|
||||||
<option name="uncheckedWarnings" value="true" />
|
<option name="uncheckedWarnings" value="true" />
|
||||||
</profile>
|
</profile>
|
||||||
<profile name="Gradle 2" modules="NowChessSystems.modules.core.main,NowChessSystems.modules.core.scoverage,NowChessSystems.modules.core.test">
|
<profile name="Gradle 2" modules="NowChessSystems.modules.bot.main,NowChessSystems.modules.bot.scoverage,NowChessSystems.modules.bot.test,NowChessSystems.modules.core.integrationTest,NowChessSystems.modules.core.main,NowChessSystems.modules.core.native-test,NowChessSystems.modules.core.quarkus-generated-sources,NowChessSystems.modules.core.quarkus-test-generated-sources,NowChessSystems.modules.core.scoverage,NowChessSystems.modules.core.test,NowChessSystems.modules.io.integrationTest,NowChessSystems.modules.io.main,NowChessSystems.modules.io.native-test,NowChessSystems.modules.io.quarkus-generated-sources,NowChessSystems.modules.io.quarkus-test-generated-sources,NowChessSystems.modules.io.scoverage,NowChessSystems.modules.io.test,NowChessSystems.modules.rule.main,NowChessSystems.modules.rule.scoverage,NowChessSystems.modules.rule.test,NowChessSystems.modules.ui.main,NowChessSystems.modules.ui.scoverage,NowChessSystems.modules.ui.test">
|
||||||
<option name="deprecationWarnings" value="true" />
|
<option name="deprecationWarnings" value="true" />
|
||||||
<option name="uncheckedWarnings" value="true" />
|
<option name="uncheckedWarnings" value="true" />
|
||||||
<parameters>
|
<parameters>
|
||||||
|
|||||||
@@ -6,7 +6,17 @@
|
|||||||
<inspection_tool class="CommitNamingConvention" enabled="true" level="WARNING" enabled_by_default="true" />
|
<inspection_tool class="CommitNamingConvention" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
</profile>
|
</profile>
|
||||||
</component>
|
</component>
|
||||||
|
<component name="IssueNavigationConfiguration">
|
||||||
|
<option name="links">
|
||||||
|
<list>
|
||||||
|
<IssueNavigationLink>
|
||||||
|
<option name="issueRegexp" value="(?x)\b(CORE|NCWF|BAC|FRO|K8S|ORG|NCI|NCS)-\d+\b#YouTrack" />
|
||||||
|
<option name="linkRegexp" value="https://knockoutwhist.youtrack.cloud/issue/$0" />
|
||||||
|
</IssueNavigationLink>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
<mapping directory="" vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
rules = [
|
||||||
|
DisableSyntax,
|
||||||
|
LeakingImplicitClassVal,
|
||||||
|
NoValInForComprehension,
|
||||||
|
ProcedureSyntax,
|
||||||
|
]
|
||||||
|
|
||||||
|
DisableSyntax.noVars = true
|
||||||
|
DisableSyntax.noThrows = true
|
||||||
|
DisableSyntax.noNulls = true
|
||||||
|
DisableSyntax.noReturns = true
|
||||||
|
DisableSyntax.noAsInstanceOf = true
|
||||||
|
DisableSyntax.noIsInstanceOf = true
|
||||||
|
DisableSyntax.noXml = true
|
||||||
|
DisableSyntax.noFinalize = true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
version = 3.8.1
|
||||||
|
runner.dialect = scala3
|
||||||
|
maxColumn = 120
|
||||||
|
indent.main = 2
|
||||||
|
align.preset = more
|
||||||
|
trailingCommas = always
|
||||||
|
rewrite.rules = [SortImports, RedundantBraces]
|
||||||
|
rewrite.scala3.convertToNewSyntax = true
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Project Context
|
||||||
|
|
||||||
|
This is a scala project using raw-http.
|
||||||
|
|
||||||
|
Middleware includes: custom.
|
||||||
|
|
||||||
|
High-impact files (most imported, changes here affect many other files):
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala (imported by 50 files)
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/board/Square.scala (imported by 33 files)
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/board/Color.scala (imported by 30 files)
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/move/Move.scala (imported by 29 files)
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/board/Board.scala (imported by 19 files)
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala (imported by 18 files)
|
||||||
|
- modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala (imported by 17 files)
|
||||||
|
- modules/api/src/main/scala/de/nowchess/api/board/Piece.scala (imported by 15 files)
|
||||||
|
|
||||||
|
Required environment variables (no defaults):
|
||||||
|
- STOCKFISH_PATH (modules/bot/python/nnue.py)
|
||||||
|
|
||||||
|
Read .codesight/wiki/index.md for orientation (WHERE things live). Then read actual source files before implementing. Wiki articles are navigation aids, not implementation guides.
|
||||||
|
Read .codesight/CODESIGHT.md for the complete AI context map including all routes, schema, components, libraries, config, middleware, and dependency graph.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
YOU CAN:
|
||||||
|
- Edit and use the asset in any commercial or non commercial project
|
||||||
|
- Use the asset in any commercial or non commercial project
|
||||||
|
|
||||||
|
YOU CAN'T:
|
||||||
|
- Resell or distribute the asset to others
|
||||||
|
- Edit and resell the asset to others - - Credits required using This link: https://fatman200.itch.io/
|
||||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 907 B |
|
After Width: | Height: | Size: 919 B |
|
After Width: | Height: | Size: 818 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 161 B |
|
After Width: | Height: | Size: 188 B |
|
After Width: | Height: | Size: 188 B |
|
After Width: | Height: | Size: 237 B |
|
After Width: | Height: | Size: 243 B |
|
After Width: | Height: | Size: 264 B |
|
After Width: | Height: | Size: 244 B |
|
After Width: | Height: | Size: 240 B |
|
After Width: | Height: | Size: 232 B |
|
After Width: | Height: | Size: 287 B |
|
After Width: | Height: | Size: 211 B |
|
After Width: | Height: | Size: 238 B |
|
After Width: | Height: | Size: 227 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 300 B |
|
After Width: | Height: | Size: 218 B |
|
After Width: | Height: | Size: 244 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 229 B |
|
After Width: | Height: | Size: 286 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 266 B |
|
After Width: | Height: | Size: 297 B |
|
After Width: | Height: | Size: 258 B |
|
After Width: | Height: | Size: 263 B |
|
After Width: | Height: | Size: 313 B |
|
After Width: | Height: | Size: 251 B |
|
After Width: | Height: | Size: 275 B |
|
After Width: | Height: | Size: 305 B |
|
After Width: | Height: | Size: 281 B |
|
After Width: | Height: | Size: 280 B |
@@ -1,58 +1,97 @@
|
|||||||
# CLAUDE.md
|
# Now-Chess
|
||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
Scala 3.5.1 · Gradle 9
|
||||||
|
|
||||||
## Build & Test Commands
|
## Commands
|
||||||
|
|
||||||
```bash
|
|
||||||
# Build everything
|
|
||||||
./gradlew build
|
|
||||||
|
|
||||||
# Build a single module
|
|
||||||
./gradlew :modules:<service>:build
|
|
||||||
|
|
||||||
# Run tests for a single module
|
|
||||||
./gradlew :modules:<service>:test
|
|
||||||
|
|
||||||
# Run a specific test class
|
|
||||||
./gradlew :modules:<service>:test --tests "de.nowchess.<service>.<ClassName>"
|
|
||||||
```
|
```
|
||||||
|
./clean # Clear build dirs — only when necessary
|
||||||
|
./compile # Compile all modules — always run
|
||||||
|
./test # Run all tests
|
||||||
|
./coverage # Check coverage
|
||||||
|
./lint # Run linters
|
||||||
|
```
|
||||||
|
Use consistently.
|
||||||
|
|
||||||
The only current module is `core` (`modules/core`).
|
## Modules
|
||||||
|
|
||||||
## Architecture
|
| Module | Role | Depends on |
|
||||||
|
|--------|------|-----------|
|
||||||
|
| `api` | Model / shared types | (none) |
|
||||||
|
| `core` | Primary business logic | api, rule |
|
||||||
|
| `rule` | Game rules | api |
|
||||||
|
| `bot` | Bots and AI | api,rule,io |
|
||||||
|
| `io` | Export formats | api, core |
|
||||||
|
| `ui` | Entrypoint & UI | core, io |
|
||||||
|
|
||||||
**NowChessSystems** is a chess platform built as a Scala 3 + Quarkus microservice system.
|
## Style
|
||||||
|
|
||||||
- Multi-module Gradle project; every service lives under `modules/{service-name}`.
|
- Immutable data, pure functions.
|
||||||
- Shared dependency versions live in the root `build.gradle.kts` under `extra["VERSIONS"]`.
|
- Functions under 30 lines. Need "and"? Split it.
|
||||||
- Each module reads versions via `rootProject.extra["VERSIONS"] as Map<String, String>`.
|
- Cyclomatic complexity under 15.
|
||||||
- `settings.gradle.kts` must `include(":modules:<service>")` for every module.
|
- No comments. Names carry intent. Comment non-obvious algorithms only.
|
||||||
|
- Scan duplicated logic. Extract.
|
||||||
|
- Follow default Sonar style for Scala.
|
||||||
|
- `Option`/`Either` for fallible ops. Skip exceptions for control flow.
|
||||||
|
- Naming: types PascalCase, functions/values camelCase.
|
||||||
|
|
||||||
### Stack (ADR-001)
|
## Code Quality
|
||||||
| Layer | Technology |
|
|
||||||
|---|---|
|
|
||||||
| Language | Scala 3.5.x |
|
|
||||||
| Backend framework | Quarkus + `quarkus-scala3` extension |
|
|
||||||
| Persistence | Hibernate / Jakarta Persistence |
|
|
||||||
| Frontend (TBD) | Vite; React/Angular/Vue under evaluation |
|
|
||||||
| TUI | Lanterna |
|
|
||||||
| Container orchestration | Kubernetes + ArgoCD + Kargo |
|
|
||||||
|
|
||||||
### Key Scala 3 / Quarkus Rules
|
- **Coverage:** 100% condition coverage required in `api`, `core`, `rule`, `io` (mandatory); `ui` exempt.
|
||||||
- Use `given`/`using`, not `implicit` (no Scala 2 idioms).
|
|
||||||
- Use `Option`/`Either`/`Try`, never `null` or `.get`.
|
|
||||||
- Jakarta annotations only (`jakarta.*`), never `javax.*`.
|
|
||||||
- Use reactive types (`Uni`, `Multi`) for I/O; no blocking calls on the event loop.
|
|
||||||
- **Always exclude `org.scala-lang:scala-library` from Quarkus BOM** to avoid Scala 2 conflicts.
|
|
||||||
- **Unit tests use `extends AnyFunSuite with Matchers with JUnitSuiteLike`** — ScalaTest DSL, no `@Test` annotations needed.
|
|
||||||
- **Integration tests use `@QuarkusTest` with JUnit 5** — explicit `: Unit` return type still required on `@Test` methods.
|
|
||||||
|
|
||||||
### Agent Workflow (for new services)
|
### Linters
|
||||||
1. **architect** → writes OpenAPI contract to `docs/api/{service}.yaml` and ADR to `docs/adr/`.
|
|
||||||
2. **scala-implementer** → reads contract, implements service under `modules/{service}/`.
|
|
||||||
3. **test-writer** → writes `@QuarkusTest` integration tests and `AnyFunSuite with Matchers with JUnitSuiteLike` unit tests.
|
|
||||||
4. **gradle-builder** → resolves any build/dependency issues.
|
|
||||||
5. **code-reviewer** → reviews; reports findings back without self-fixing.
|
|
||||||
|
|
||||||
Detailed working agreement (plan/verify/unresolved workflow) is in `.claude/CLAUDE.MD`.
|
- **scalafmt** — Enforces formatting. Check: `./gradlew spotlessScalaCheck`. Refactor: `./gradlew spotlessScalaApply`.
|
||||||
|
- **scalafix** — Enforces style, detects unused imports/code. Run: `./gradlew scalafix`.
|
||||||
|
|
||||||
|
## Architecture Decisions
|
||||||
|
|
||||||
|
- **Immutable state as primary model:** GameContext (api) holds board, history, player state—immutable throughout. Each move → new GameContext. Enables undo/redo without side effects.
|
||||||
|
- **Observer pattern for UI decoupling:** GameEngine publishes move/state events; CommandInvoker queues moves; UI listens (no polling). GameEngine never imports UI.
|
||||||
|
- **RuleSet trait encapsulates rules:** Move generation, check, castling, en passant all in RuleSet impl. GameEngine calls rules as black box; rules don't know rest of core.
|
||||||
|
- **Polyglot hash must follow spec index layout:** Piece keys use interleaved mapping `(pieceType * 2 + colorBit)` (black=0, white=1). Castling keys: `768..771`. En-passant file keys: `772..779`, XORed only if side-to-move has capturable en passant. Side-to-move key: `780` (white).
|
||||||
|
- **Alpha-beta uses sequential PV search by default:** Parallel split disabled (fixed-window futures removed pruning effectiveness). Sequential PV default. Correctness + pruning quality > speculative parallelism.
|
||||||
|
- **Search hash is updated incrementally per move:** Bot search updates Zobrist keys from parent hash with move deltas, not recomputing piece scans per node.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- **Tests are the spec.** Don't modify to pass. Fix requirements/code. Update only if requirements change.
|
||||||
|
- Never read build folders. Ask permission if needed.
|
||||||
|
- Keep file current with decisions + conventions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Instructions for Claude Code
|
||||||
|
|
||||||
|
### Two-Step Rule (mandatory)
|
||||||
|
**Step 1 — Orient:** Use wiki articles to find WHERE things live.
|
||||||
|
**Step 2 — Verify:** Read source files from wiki BEFORE coding.
|
||||||
|
|
||||||
|
Wiki = structural summaries (routes, models, file locations). No function logic, middleware internals, runtime behavior. Don't code from wiki alone—read sources.
|
||||||
|
|
||||||
|
Read in order at session start:
|
||||||
|
1. `.codesight/wiki/index.md` — orientation map (~200 tokens)
|
||||||
|
2. `.codesight/wiki/overview.md` — architecture overview (~500 tokens)
|
||||||
|
3. Domain article (e.g. `.codesight/wiki/auth.md`) → check "Source Files" section → read those files
|
||||||
|
4. `.codesight/CODESIGHT.md` — full context map for deep exploration
|
||||||
|
|
||||||
|
`[inferred]` routes = regex-detected. Verify sources. ⚠ in wiki? Re-run `codesight --wiki`.
|
||||||
|
|
||||||
|
Or use the codesight MCP server for on-demand queries:
|
||||||
|
- `codesight_get_wiki_article` — read a specific wiki article by name
|
||||||
|
- `codesight_get_wiki_index` — get the wiki index
|
||||||
|
- `codesight_get_summary` — quick project overview
|
||||||
|
- `codesight_get_routes --prefix /api/users` — filtered routes
|
||||||
|
- `codesight_get_blast_radius --file src/lib/db.ts` — impact analysis before changes
|
||||||
|
- `codesight_get_schema --model users` — specific model details
|
||||||
|
|
||||||
|
Consult codesight context first. Saves ~16.893 tokens/conversation.
|
||||||
|
|
||||||
|
## graphify
|
||||||
|
|
||||||
|
graphify knowledge graph at graphify-out/.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
- Architecture/codebase questions? Read graphify-out/GRAPH_REPORT.md (god nodes, communities).
|
||||||
|
- graphify-out/wiki/index.md exists? Use it (not raw files).
|
||||||
|
- Code modified? Run `python3 -c "from graphify.watch import _rebuild_code; from pathlib import Path; _rebuild_code(Path('.'))"` to sync graph.
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
# Now-Chess
|
||||||
|
|
||||||
|
Scala 3.5.1 · Gradle 9
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```
|
||||||
|
./clean # Clear build dirs — only when necessary
|
||||||
|
./compile # Compile all modules — always run
|
||||||
|
./test # Run all tests
|
||||||
|
./coverage # Check coverage
|
||||||
|
./lint # Run linters
|
||||||
|
```
|
||||||
|
Try to stick to these commands for consistency.
|
||||||
|
|
||||||
|
## Modules
|
||||||
|
|
||||||
|
| Module | Role | Depends on |
|
||||||
|
|--------|------|-----------|
|
||||||
|
| `api` | Model / shared types | (none) |
|
||||||
|
| `core` | Primary business logic | api, rule |
|
||||||
|
| `rule` | Game rules | api |
|
||||||
|
| `bot` | Bots and AI | api,rule,io |
|
||||||
|
| `io` | Export formats | api, core |
|
||||||
|
| `ui` | Entrypoint & UI | core, io |
|
||||||
|
|
||||||
|
## Style
|
||||||
|
|
||||||
|
- Use immutable data and pure functions.
|
||||||
|
- Keep functions under 30 lines. If you need "and" to describe it, split it.
|
||||||
|
- Keep cyclomatic complexity under 15.
|
||||||
|
- Avoid comments. Let names carry intent; comment only non-obvious algorithms.
|
||||||
|
- Scan for duplicated logic before finishing. Extract it.
|
||||||
|
- Follow default Sonar style for Scala.
|
||||||
|
- Use `Option` or `Either` for fallible operations; avoid exceptions for control flow.
|
||||||
|
- Naming: types are PascalCase, functions/values are camelCase.
|
||||||
|
|
||||||
|
## Code Quality
|
||||||
|
|
||||||
|
- **Coverage:** 100% condition coverage required in `api`, `core`, `rule`, `io` (mandatory); `ui` exempt.
|
||||||
|
|
||||||
|
### Linters
|
||||||
|
|
||||||
|
- **scalafmt** — enforces formatting; run `./gradlew spotlessScalaCheck` to check and `./gradlew spotlessScalaApply` to refactor.
|
||||||
|
- **scalafix** — enforces style and detects unused imports/code; run `./gradlew scalafix` to apply rules.
|
||||||
|
|
||||||
|
## Architecture Decisions
|
||||||
|
|
||||||
|
- **Immutable state as primary model:** GameContext (api) holds board, history, player state — immutable, passed through the system. Each move creates a new GameContext, enabling undo/redo without side effects.
|
||||||
|
- **Observer pattern for UI decoupling:** GameEngine publishes move/state events; CommandInvoker queues moves; UI listens to events, not polling. GameEngine never imports UI code.
|
||||||
|
- **RuleSet trait encapsulates rules:** Move generation, check, castling, en passant all in RuleSet impl. GameEngine calls rules as a black box; rules don't know about the rest of core.
|
||||||
|
- **Polyglot hash must follow spec index layout:** piece keys use interleaved mapping `(pieceType * 2 + colorBit)` with black=0/white=1, castling keys are `768..771`, en-passant file keys are `772..779` and are XORed only if side-to-move has a pawn that can capture en passant, side-to-move key is `780` for white.
|
||||||
|
- **Alpha-beta uses sequential PV search by default:** parallel split was disabled because fixed-window futures removed pruning effectiveness; correctness and pruning quality take priority over speculative parallelism.
|
||||||
|
- **Search hash is updated incrementally per move:** bot search now updates Zobrist keys from parent hash with move deltas instead of recomputing piece scans at every node.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- **Tests are the spec.** Never modify tests to pass; modify requirements or code. Update tests only if requirements change.
|
||||||
|
- Never read build folders. Ask permission if needed.
|
||||||
|
- Keep this file up to date with any important decisions or conventions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Instructions for Claude Code
|
||||||
|
|
||||||
|
### Two-Step Rule (mandatory)
|
||||||
|
**Step 1 — Orient:** Use wiki articles to find WHERE things live.
|
||||||
|
**Step 2 — Verify:** Read the actual source files listed in the wiki article BEFORE writing any code.
|
||||||
|
|
||||||
|
Wiki articles are structural summaries extracted by AST. They show routes, models, and file locations.
|
||||||
|
They do NOT show full function logic, middleware internals, or dynamic runtime behavior.
|
||||||
|
**Never write or modify code based solely on wiki content — always read source files first.**
|
||||||
|
|
||||||
|
Read in order at session start:
|
||||||
|
1. `.codesight/wiki/index.md` — orientation map (~200 tokens)
|
||||||
|
2. `.codesight/wiki/overview.md` — architecture overview (~500 tokens)
|
||||||
|
3. Domain article (e.g. `.codesight/wiki/auth.md`) → check "Source Files" section → read those files
|
||||||
|
4. `.codesight/CODESIGHT.md` — full context map for deep exploration
|
||||||
|
|
||||||
|
Routes marked `[inferred]` in wiki articles were detected via regex — verify against source before trusting.
|
||||||
|
If any source file shows ⚠ in the wiki, re-run `codesight --wiki` before proceeding.
|
||||||
|
|
||||||
|
Or use the codesight MCP server for on-demand queries:
|
||||||
|
- `codesight_get_wiki_article` — read a specific wiki article by name
|
||||||
|
- `codesight_get_wiki_index` — get the wiki index
|
||||||
|
- `codesight_get_summary` — quick project overview
|
||||||
|
- `codesight_get_routes --prefix /api/users` — filtered routes
|
||||||
|
- `codesight_get_blast_radius --file src/lib/db.ts` — impact analysis before changes
|
||||||
|
- `codesight_get_schema --model users` — specific model details
|
||||||
|
|
||||||
|
Only open specific files after consulting codesight context. This saves ~16.893 tokens per conversation.
|
||||||
|
|
||||||
|
## graphify
|
||||||
|
|
||||||
|
This project has a graphify knowledge graph at graphify-out/.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
- Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
|
||||||
|
- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
|
||||||
|
- After modifying code files in this session, run `python3 -c "from graphify.watch import _rebuild_code; from pathlib import Path; _rebuild_code(Path('.'))"` to keep the graph current
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Offer Draw
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/draw/offer
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Accept Draw
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/draw/accept
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Decline Draw
|
||||||
|
type: http
|
||||||
|
seq: 3
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/draw/decline
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Claim Draw
|
||||||
|
type: http
|
||||||
|
seq: 4
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/draw/claim
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
meta {
|
||||||
|
name: draw
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Export FEN
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: GET
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/export/fen
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Export PGN
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: GET
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/export/pgn
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
meta {
|
||||||
|
name: export
|
||||||
|
seq: 6
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
meta {
|
||||||
|
name: Create Game
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"white": {"id": "p1", "displayName": "Alice"},
|
||||||
|
"black": {"id": "p2", "displayName": "Bob"}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Get Game
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: GET
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
meta {
|
||||||
|
name: Stream Game
|
||||||
|
type: http
|
||||||
|
seq: 3
|
||||||
|
}
|
||||||
|
|
||||||
|
get {
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/stream
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Accept: application/x-ndjson
|
||||||
|
}
|
||||||
|
|
||||||
|
vars:pre-request {
|
||||||
|
gameId: tjOgyEcS
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Resign
|
||||||
|
type: http
|
||||||
|
seq: 4
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/resign
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
meta {
|
||||||
|
name: game
|
||||||
|
seq: 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
meta {
|
||||||
|
name: Import FEN
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/import/fen
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"fen": "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1",
|
||||||
|
"white": {"id": "p1", "displayName": "Alice"},
|
||||||
|
"black": {"id": "p2", "displayName": "Bob"}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
meta {
|
||||||
|
name: Import PGN
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/import/pgn
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"pgn": "1. e4 e5 2. Nf3 Nc6 *"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
meta {
|
||||||
|
name: import
|
||||||
|
seq: 5
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
meta {
|
||||||
|
name: Make Move
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/move/b1c3
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
vars:pre-request {
|
||||||
|
gameId: tjOgyEcS
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
meta {
|
||||||
|
name: Get Legal Moves
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
get {
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/moves
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
params:query {
|
||||||
|
square: e2
|
||||||
|
}
|
||||||
|
|
||||||
|
vars:pre-request {
|
||||||
|
gameId: tjOgyEcS
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Undo Move
|
||||||
|
type: http
|
||||||
|
seq: 3
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/undo
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
meta {
|
||||||
|
name: Redo Move
|
||||||
|
type: http
|
||||||
|
seq: 4
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{baseUrl}}/api/board/game/{{gameId}}/redo
|
||||||
|
body: none
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
meta {
|
||||||
|
name: move
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"version": "1",
|
||||||
|
"name": "NowChess API",
|
||||||
|
"type": "collection",
|
||||||
|
"ignore": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
vars {
|
||||||
|
baseUrl: http://localhost:8080
|
||||||
|
ioBaseUrl: http://localhost:8081
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
meta {
|
||||||
|
name: Export FEN
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{ioBaseUrl}}/io/export/fen
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"a1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"b1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"c1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"d1": {"color": "White", "pieceType": "Queen"},
|
||||||
|
"e1": {"color": "White", "pieceType": "King"},
|
||||||
|
"f1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"g1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"h1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"a2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"b2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"c2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"d2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"e2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"f2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"g2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"h2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"a7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"b7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"c7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"d7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"e7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"f7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"g7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"h7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"a8": {"color": "Black", "pieceType": "Rook"},
|
||||||
|
"b8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"c8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"d8": {"color": "Black", "pieceType": "Queen"},
|
||||||
|
"e8": {"color": "Black", "pieceType": "King"},
|
||||||
|
"f8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"g8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"h8": {"color": "Black", "pieceType": "Rook"}
|
||||||
|
},
|
||||||
|
"turn": "White",
|
||||||
|
"castlingRights": {
|
||||||
|
"whiteKingSide": true,
|
||||||
|
"whiteQueenSide": true,
|
||||||
|
"blackKingSide": true,
|
||||||
|
"blackQueenSide": true
|
||||||
|
},
|
||||||
|
"enPassantSquare": null,
|
||||||
|
"halfMoveClock": 0,
|
||||||
|
"moves": [],
|
||||||
|
"result": null,
|
||||||
|
"initialBoard": {
|
||||||
|
"a1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"b1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"c1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"d1": {"color": "White", "pieceType": "Queen"},
|
||||||
|
"e1": {"color": "White", "pieceType": "King"},
|
||||||
|
"f1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"g1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"h1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"a2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"b2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"c2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"d2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"e2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"f2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"g2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"h2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"a7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"b7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"c7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"d7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"e7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"f7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"g7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"h7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"a8": {"color": "Black", "pieceType": "Rook"},
|
||||||
|
"b8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"c8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"d8": {"color": "Black", "pieceType": "Queen"},
|
||||||
|
"e8": {"color": "Black", "pieceType": "King"},
|
||||||
|
"f8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"g8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"h8": {"color": "Black", "pieceType": "Rook"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
meta {
|
||||||
|
name: Export PGN
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{ioBaseUrl}}/io/export/pgn
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"a1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"b1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"c1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"d1": {"color": "White", "pieceType": "Queen"},
|
||||||
|
"e1": {"color": "White", "pieceType": "King"},
|
||||||
|
"f1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"g1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"h1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"a2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"b2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"c2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"d2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"e2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"f2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"g2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"h2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"a7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"b7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"c7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"d7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"e7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"f7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"g7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"h7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"a8": {"color": "Black", "pieceType": "Rook"},
|
||||||
|
"b8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"c8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"d8": {"color": "Black", "pieceType": "Queen"},
|
||||||
|
"e8": {"color": "Black", "pieceType": "King"},
|
||||||
|
"f8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"g8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"h8": {"color": "Black", "pieceType": "Rook"}
|
||||||
|
},
|
||||||
|
"turn": "White",
|
||||||
|
"castlingRights": {
|
||||||
|
"whiteKingSide": true,
|
||||||
|
"whiteQueenSide": true,
|
||||||
|
"blackKingSide": true,
|
||||||
|
"blackQueenSide": true
|
||||||
|
},
|
||||||
|
"enPassantSquare": null,
|
||||||
|
"halfMoveClock": 0,
|
||||||
|
"moves": [],
|
||||||
|
"result": null,
|
||||||
|
"initialBoard": {
|
||||||
|
"a1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"b1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"c1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"d1": {"color": "White", "pieceType": "Queen"},
|
||||||
|
"e1": {"color": "White", "pieceType": "King"},
|
||||||
|
"f1": {"color": "White", "pieceType": "Bishop"},
|
||||||
|
"g1": {"color": "White", "pieceType": "Knight"},
|
||||||
|
"h1": {"color": "White", "pieceType": "Rook"},
|
||||||
|
"a2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"b2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"c2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"d2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"e2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"f2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"g2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"h2": {"color": "White", "pieceType": "Pawn"},
|
||||||
|
"a7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"b7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"c7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"d7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"e7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"f7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"g7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"h7": {"color": "Black", "pieceType": "Pawn"},
|
||||||
|
"a8": {"color": "Black", "pieceType": "Rook"},
|
||||||
|
"b8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"c8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"d8": {"color": "Black", "pieceType": "Queen"},
|
||||||
|
"e8": {"color": "Black", "pieceType": "King"},
|
||||||
|
"f8": {"color": "Black", "pieceType": "Bishop"},
|
||||||
|
"g8": {"color": "Black", "pieceType": "Knight"},
|
||||||
|
"h8": {"color": "Black", "pieceType": "Rook"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
meta {
|
||||||
|
name: export
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
meta {
|
||||||
|
name: Import FEN
|
||||||
|
type: http
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{ioBaseUrl}}/io/import/fen
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"fen": "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
meta {
|
||||||
|
name: Import PGN
|
||||||
|
type: http
|
||||||
|
seq: 2
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
method: POST
|
||||||
|
url: {{ioBaseUrl}}/io/import/pgn
|
||||||
|
body: json
|
||||||
|
auth: none
|
||||||
|
}
|
||||||
|
|
||||||
|
headers {
|
||||||
|
Content-Type: application/json
|
||||||
|
}
|
||||||
|
|
||||||
|
body:json {
|
||||||
|
{
|
||||||
|
"pgn": "1. e4 e5 2. Nf3 Nc6 *"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
meta {
|
||||||
|
name: import
|
||||||
|
seq: 1
|
||||||
|
}
|
||||||