From c10a4d7e64099f7ed3198e772c1df3b07163a961 Mon Sep 17 00:00:00 2001 From: Janis Date: Tue, 28 Apr 2026 00:59:32 +0200 Subject: [PATCH] feat(bot): implement bot architecture with difficulty levels and game context handling --- .codesight/CODESIGHT.md | 14 +- .codesight/graph.md | 6 +- .codesight/libs.md | 6 + .idea/copilotDiffState.xml | 18 + .idea/gradle.xml | 3 +- .idea/scala_compiler.xml | 2 +- docs/board-api-spec.yaml | 771 ------------------ .../src/main/resources/application.yml | 4 + .../account/client/BotPlatformClient.scala | 20 + .../config/NativeReflectionConfig.scala | 1 - .../nowchess/account/domain/UserAccount.scala | 3 - .../scala/de/nowchess/account/dto/Dtos.scala | 3 +- .../repository/AccountRepository.scala | 8 - .../account/resource/AccountResource.scala | 21 +- .../resource/OfficialChallengeResource.scala | 94 +++ .../account/service/AccountService.scala | 17 - .../account/service/ChallengeService.scala | 19 + .../main/scala/de/nowchess/api/bot/Bot.scala | 11 - .../de/nowchess/api/game/Participant.scala | 8 - modules/bot-platform/build.gradle.kts | 115 +++ .../src/main/resources/application.yml | 22 + .../botplatform/config/JacksonConfig.scala | 17 + .../botplatform/config/RedisConfig.scala | 18 + .../botplatform/config/RedissonProducer.scala | 35 + .../botplatform/registry/BotGameInfo.scala | 8 + .../botplatform/registry/BotRegistry.scala | 30 + .../resource/BotEventResource.scala | 67 ++ .../botplatform/service/GameBotMonitor.scala | 56 ++ modules/bot/build.gradle.kts | 79 -- .../de/nowchess/bot/bots/ClassicalBot.scala | 29 - .../de/nowchess/bot/bots/HybridBot.scala | 43 - modules/core/build.gradle.kts | 2 +- .../de/nowchess/chess/engine/GameEngine.scala | 56 -- .../chess/resource/GameResource.scala | 6 + .../chess/engine/GameEngineWithBotTest.scala | 266 ------ .../GameResourceIntegrationTest.scala | 6 + modules/official-bots/build.gradle.kts | 118 +++ modules/{bot => official-bots}/codekiddy.bin | Bin .../{bot => official-bots}/python/.gitignore | 0 .../{bot => official-bots}/python/DATASETS.md | 0 .../{bot => official-bots}/python/README.md | 0 modules/{bot => official-bots}/python/nnue.py | 0 .../python/requirements.txt | 0 .../python/run_pipeline.bat | 0 .../python/run_pipeline.sh | 0 .../python/src/dataset.py | 0 .../python/src/export.py | 0 .../python/src/generate.py | 0 .../python/src/label.py | 0 .../python/src/lichess_importer.py | 0 .../src/tactical_positions_extractor.py | 0 .../python/src/train.py | 0 .../{bot => official-bots}/python/start.ps1 | 0 .../{bot => official-bots}/python/start.sh | 0 .../weights/nnue_weights_best_snapshot.pt | Bin .../python/weights/nnue_weights_checkpoint.pt | Bin .../python/weights/nnue_weights_v1.pt | Bin .../python/weights/nnue_weights_v10.pt | Bin .../weights/nnue_weights_v10_metadata.json | 0 .../weights/nnue_weights_v1_metadata.json | 0 .../python/weights/nnue_weights_v2.pt | Bin .../weights/nnue_weights_v2_metadata.json | 0 .../python/weights/nnue_weights_v3.pt | Bin .../weights/nnue_weights_v3_metadata.json | 0 .../python/weights/nnue_weights_v4.pt | Bin .../weights/nnue_weights_v4_metadata.json | 0 .../python/weights/nnue_weights_v5.pt | Bin .../weights/nnue_weights_v5_metadata.json | 0 .../python/weights/nnue_weights_v6.pt | Bin .../weights/nnue_weights_v6_metadata.json | 0 .../python/weights/nnue_weights_v7.pt | Bin .../weights/nnue_weights_v7_metadata.json | 0 .../python/weights/nnue_weights_v8.pt | Bin .../weights/nnue_weights_v8_metadata.json | 0 .../python/weights/nnue_weights_v9.pt | Bin .../weights/nnue_weights_v9_metadata.json | 0 .../reachability-metadata.json | 0 .../src/main/resources/application.yml | 22 + .../src/main/resources/nnue_weights.nbai | Bin .../src/main/scala/de/nowchess/bot/Bot.scala | 6 + .../scala/de/nowchess/bot/BotController.scala | 15 +- .../scala/de/nowchess/bot/BotDifficulty.scala | 0 .../de/nowchess/bot/BotMoveRepetition.scala | 0 .../main/scala/de/nowchess/bot/Config.scala | 0 .../scala/de/nowchess/bot/ai/Evaluation.scala | 0 .../de/nowchess/bot/bots/ClassicalBot.scala | 25 + .../de/nowchess/bot/bots/HybridBot.scala | 39 + .../scala/de/nowchess/bot/bots/NNUEBot.scala | 47 +- .../bot/bots/classic/EvaluationClassic.scala | 0 .../bot/bots/nnue/EvaluationNNUE.scala | 0 .../de/nowchess/bot/bots/nnue/NNUE.scala | 0 .../nowchess/bot/bots/nnue/NbaiLoader.scala | 0 .../nowchess/bot/bots/nnue/NbaiMigrator.scala | 0 .../de/nowchess/bot/bots/nnue/NbaiModel.scala | 0 .../nowchess/bot/bots/nnue/NbaiWriter.scala | 0 .../nowchess/bot/config/JacksonConfig.scala | 17 + .../de/nowchess/bot/config/RedisConfig.scala | 18 + .../bot/config/RedissonProducer.scala | 35 + .../nowchess/bot/logic/AlphaBetaSearch.scala | 0 .../de/nowchess/bot/logic/MoveOrdering.scala | 0 .../bot/logic/TranspositionTable.scala | 0 .../OfficialBotChallengeResource.scala | 31 + .../bot/service/DifficultyMapper.scala | 12 + .../bot/service/MoveRequestParser.scala | 26 + .../bot/service/OfficialBotService.scala | 70 ++ .../de/nowchess/bot/util/PolyglotBook.scala | 0 .../de/nowchess/bot/util/PolyglotHash.scala | 0 .../de/nowchess/bot/util/ZobristHash.scala | 0 .../de/nowchess/bot/AlphaBetaSearchTest.scala | 0 .../de/nowchess/bot/BotControllerTest.scala | 0 .../de/nowchess/bot/BotDifficultyTest.scala | 0 .../nowchess/bot/BotMoveRepetitionTest.scala | 0 .../de/nowchess/bot/ClassicalBotTest.scala | 0 .../de/nowchess/bot/EvaluationTest.scala | 0 .../scala/de/nowchess/bot/HybridBotTest.scala | 0 .../de/nowchess/bot/MoveOrderingTest.scala | 0 .../de/nowchess/bot/PolyglotBookTest.scala | 0 .../de/nowchess/bot/PolyglotHashTest.scala | 0 .../nowchess/bot/TranspositionTableTest.scala | 0 .../de/nowchess/bot/ZobristHashTest.scala | 0 settings.gradle.kts | 3 +- 121 files changed, 1010 insertions(+), 1358 deletions(-) create mode 100644 .idea/copilotDiffState.xml delete mode 100644 docs/board-api-spec.yaml create mode 100644 modules/account/src/main/scala/de/nowchess/account/client/BotPlatformClient.scala create mode 100644 modules/account/src/main/scala/de/nowchess/account/resource/OfficialChallengeResource.scala delete mode 100644 modules/api/src/main/scala/de/nowchess/api/bot/Bot.scala delete mode 100644 modules/api/src/main/scala/de/nowchess/api/game/Participant.scala create mode 100644 modules/bot-platform/build.gradle.kts create mode 100644 modules/bot-platform/src/main/resources/application.yml create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/config/JacksonConfig.scala create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/config/RedisConfig.scala create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/config/RedissonProducer.scala create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/registry/BotGameInfo.scala create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/registry/BotRegistry.scala create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/resource/BotEventResource.scala create mode 100644 modules/bot-platform/src/main/scala/de/nowchess/botplatform/service/GameBotMonitor.scala delete mode 100644 modules/bot/build.gradle.kts delete mode 100644 modules/bot/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala delete mode 100644 modules/bot/src/main/scala/de/nowchess/bot/bots/HybridBot.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala create mode 100644 modules/official-bots/build.gradle.kts rename modules/{bot => official-bots}/codekiddy.bin (100%) rename modules/{bot => official-bots}/python/.gitignore (100%) rename modules/{bot => official-bots}/python/DATASETS.md (100%) rename modules/{bot => official-bots}/python/README.md (100%) rename modules/{bot => official-bots}/python/nnue.py (100%) rename modules/{bot => official-bots}/python/requirements.txt (100%) rename modules/{bot => official-bots}/python/run_pipeline.bat (100%) rename modules/{bot => official-bots}/python/run_pipeline.sh (100%) rename modules/{bot => official-bots}/python/src/dataset.py (100%) rename modules/{bot => official-bots}/python/src/export.py (100%) rename modules/{bot => official-bots}/python/src/generate.py (100%) rename modules/{bot => official-bots}/python/src/label.py (100%) rename modules/{bot => official-bots}/python/src/lichess_importer.py (100%) rename modules/{bot => official-bots}/python/src/tactical_positions_extractor.py (100%) rename modules/{bot => official-bots}/python/src/train.py (100%) rename modules/{bot => official-bots}/python/start.ps1 (100%) rename modules/{bot => official-bots}/python/start.sh (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_best_snapshot.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_checkpoint.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v1.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v10.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v10_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v1_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v2.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v2_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v3.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v3_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v4.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v4_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v5.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v5_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v6.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v6_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v7.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v7_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v8.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v8_metadata.json (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v9.pt (100%) rename modules/{bot => official-bots}/python/weights/nnue_weights_v9_metadata.json (100%) rename modules/{bot => official-bots}/src/main/resources/META-INF.native-image.de.nowchess.bot/reachability-metadata.json (100%) create mode 100644 modules/official-bots/src/main/resources/application.yml rename modules/{bot => official-bots}/src/main/resources/nnue_weights.nbai (100%) create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/Bot.scala rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/BotController.scala (55%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/BotDifficulty.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/Config.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/ai/Evaluation.scala (100%) create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/bots/ClassicalBot.scala create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/bots/HybridBot.scala rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala (52%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/classic/EvaluationClassic.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/nnue/NbaiLoader.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/nnue/NbaiMigrator.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/nnue/NbaiModel.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/bots/nnue/NbaiWriter.scala (100%) create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/config/JacksonConfig.scala create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/config/RedisConfig.scala create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/config/RedissonProducer.scala rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/logic/AlphaBetaSearch.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/logic/MoveOrdering.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala (100%) create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/resource/OfficialBotChallengeResource.scala create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/service/DifficultyMapper.scala create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/service/MoveRequestParser.scala create mode 100644 modules/official-bots/src/main/scala/de/nowchess/bot/service/OfficialBotService.scala rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/util/PolyglotBook.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala (100%) rename modules/{bot => official-bots}/src/main/scala/de/nowchess/bot/util/ZobristHash.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/AlphaBetaSearchTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/BotControllerTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/BotDifficultyTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/BotMoveRepetitionTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/ClassicalBotTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/EvaluationTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/HybridBotTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/TranspositionTableTest.scala (100%) rename modules/{bot => official-bots}/src/test/scala/de/nowchess/bot/ZobristHashTest.scala (100%) diff --git a/.codesight/CODESIGHT.md b/.codesight/CODESIGHT.md index acfeafa..1b80df2 100644 --- a/.codesight/CODESIGHT.md +++ b/.codesight/CODESIGHT.md @@ -2,7 +2,7 @@ > **Stack:** raw-http | none | unknown | scala -> 0 routes + 40 rpc | 0 models | 0 components | 140 lib files | 1 env vars | 1 middleware +> 0 routes + 40 rpc | 0 models | 0 components | 146 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.** --- @@ -318,6 +318,8 @@ - function rebalanceMinInterval - function heartbeatTtl - _...11 more_ +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/NativeReflectionConfig.scala` — class NativeReflectionConfig - `modules/coordinator/src/main/scala/de/nowchess/coordinator/grpc/CoordinatorGrpcServer.scala` — class CoordinatorGrpcServer - `modules/coordinator/src/main/scala/de/nowchess/coordinator/grpc/CoreGrpcClient.scala` - class CoreGrpcClient @@ -574,6 +576,8 @@ - function isCheckmate - _...6 more_ - `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — class DefaultRules, function positionOf +- `modules/store/src/main/scala/de/nowchess/store/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/store/src/main/scala/de/nowchess/store/config/NativeReflectionConfig.scala` — class NativeReflectionConfig - `modules/store/src/main/scala/de/nowchess/store/config/RedisConfig.scala` — class RedisConfig - `modules/store/src/main/scala/de/nowchess/store/config/RedissonProducer.scala` - class RedissonProducer @@ -591,6 +595,8 @@ - function merge - `modules/store/src/main/scala/de/nowchess/store/resource/StoreGameResource.scala` — class StoreGameResource, function getGame - `modules/store/src/main/scala/de/nowchess/store/service/GameWritebackService.scala` — class GameWritebackService, function writeBack +- `modules/ws/src/main/scala/de/nowchess/ws/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/ws/src/main/scala/de/nowchess/ws/config/NativeReflectionConfig.scala` — class NativeReflectionConfig - `modules/ws/src/main/scala/de/nowchess/ws/config/RedisConfig.scala` — class RedisConfig - `modules/ws/src/main/scala/de/nowchess/ws/config/RedissonProducer.scala` - class RedissonProducer @@ -627,7 +633,7 @@ - `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **76** files - `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **57** files - `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **55** files -- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **46** files +- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **47** files - `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **28** files - `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` — imported by **20** files - `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — imported by **20** files @@ -642,15 +648,15 @@ - `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` — imported by **9** files - `modules/api/src/main/scala/de/nowchess/api/io/GameContextImport.scala` — imported by **8** files - `modules/core/src/main/scala/de/nowchess/chess/grpc/IoGrpcClientWrapper.scala` — imported by **7** files +- `modules/api/src/main/scala/de/nowchess/api/game/GameMode.scala` — imported by **6** 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 ## 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/api/src/main/scala/de/nowchess/api/io/GameContextExport.scala`, `modules/api/src/main/scala/de/nowchess/api/io/GameContextImport.scala`, `modules/api/src/main/scala/de/nowchess/api/rules/RuleSet.scala`, `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala` +71 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/main/scala/de/nowchess/api/rules/RuleSet.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/api/src/test/scala/de/nowchess/api/move/MoveTest.scala` +52 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/main/scala/de/nowchess/api/rules/RuleSet.scala`, `modules/api/src/test/scala/de/nowchess/api/board/BoardTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala` +50 more -- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/ClockState.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/ClockStateTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala` +41 more +- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/ClockState.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/ClockStateTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala` +42 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` +23 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` +15 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` +15 more diff --git a/.codesight/graph.md b/.codesight/graph.md index 0c644f6..e6975ab 100644 --- a/.codesight/graph.md +++ b/.codesight/graph.md @@ -5,7 +5,7 @@ - `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **76** files - `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **57** files - `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **55** files -- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **46** files +- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **47** files - `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **28** files - `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` — imported by **20** files - `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — imported by **20** files @@ -20,15 +20,15 @@ - `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` — imported by **9** files - `modules/api/src/main/scala/de/nowchess/api/io/GameContextImport.scala` — imported by **8** files - `modules/core/src/main/scala/de/nowchess/chess/grpc/IoGrpcClientWrapper.scala` — imported by **7** files +- `modules/api/src/main/scala/de/nowchess/api/game/GameMode.scala` — imported by **6** 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 ## 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/api/src/main/scala/de/nowchess/api/io/GameContextExport.scala`, `modules/api/src/main/scala/de/nowchess/api/io/GameContextImport.scala`, `modules/api/src/main/scala/de/nowchess/api/rules/RuleSet.scala`, `modules/bot/src/main/scala/de/nowchess/bot/BotMoveRepetition.scala` +71 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/main/scala/de/nowchess/api/rules/RuleSet.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/api/src/test/scala/de/nowchess/api/move/MoveTest.scala` +52 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/main/scala/de/nowchess/api/rules/RuleSet.scala`, `modules/api/src/test/scala/de/nowchess/api/board/BoardTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala` +50 more -- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/ClockState.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/ClockStateTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala` +41 more +- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` ← `modules/api/src/main/scala/de/nowchess/api/game/ClockState.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/ClockStateTest.scala`, `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala` +42 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` +23 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` +15 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` +15 more diff --git a/.codesight/libs.md b/.codesight/libs.md index 4ad2ab4..f8a9e41 100644 --- a/.codesight/libs.md +++ b/.codesight/libs.md @@ -262,6 +262,8 @@ - function rebalanceMinInterval - function heartbeatTtl - _...11 more_ +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/NativeReflectionConfig.scala` — class NativeReflectionConfig - `modules/coordinator/src/main/scala/de/nowchess/coordinator/grpc/CoordinatorGrpcServer.scala` — class CoordinatorGrpcServer - `modules/coordinator/src/main/scala/de/nowchess/coordinator/grpc/CoreGrpcClient.scala` - class CoreGrpcClient @@ -518,6 +520,8 @@ - function isCheckmate - _...6 more_ - `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — class DefaultRules, function positionOf +- `modules/store/src/main/scala/de/nowchess/store/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/store/src/main/scala/de/nowchess/store/config/NativeReflectionConfig.scala` — class NativeReflectionConfig - `modules/store/src/main/scala/de/nowchess/store/config/RedisConfig.scala` — class RedisConfig - `modules/store/src/main/scala/de/nowchess/store/config/RedissonProducer.scala` - class RedissonProducer @@ -535,6 +539,8 @@ - function merge - `modules/store/src/main/scala/de/nowchess/store/resource/StoreGameResource.scala` — class StoreGameResource, function getGame - `modules/store/src/main/scala/de/nowchess/store/service/GameWritebackService.scala` — class GameWritebackService, function writeBack +- `modules/ws/src/main/scala/de/nowchess/ws/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/ws/src/main/scala/de/nowchess/ws/config/NativeReflectionConfig.scala` — class NativeReflectionConfig - `modules/ws/src/main/scala/de/nowchess/ws/config/RedisConfig.scala` — class RedisConfig - `modules/ws/src/main/scala/de/nowchess/ws/config/RedissonProducer.scala` - class RedissonProducer diff --git a/.idea/copilotDiffState.xml b/.idea/copilotDiffState.xml new file mode 100644 index 0000000..89a8a93 --- /dev/null +++ b/.idea/copilotDiffState.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 49efe00..0171fb6 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -12,11 +12,12 @@