diff --git a/.codesight/CODESIGHT.md b/.codesight/CODESIGHT.md index e84c141..1b80df2 100644 --- a/.codesight/CODESIGHT.md +++ b/.codesight/CODESIGHT.md @@ -2,11 +2,58 @@ > **Stack:** raw-http | none | unknown | scala -> 0 routes | 0 models | 0 components | 63 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.** --- +# Routes + +## gRPC + +- `/CoordinatorService/BatchResubscribeGames` (BatchResubscribeRequest) → BatchResubscribeResponse +- `/CoordinatorService/UnsubscribeGames` (UnsubscribeGamesRequest) → UnsubscribeGamesResponse +- `/CoordinatorService/EvictGames` (EvictGamesRequest) → EvictGamesResponse +- `/CoordinatorService/DrainInstance` (DrainInstanceRequest) → DrainInstanceResponse +- `/CoordinatorService/BatchResubscribeGames` (BatchResubscribeRequest) → BatchResubscribeResponse +- `/CoordinatorService/UnsubscribeGames` (UnsubscribeGamesRequest) → UnsubscribeGamesResponse +- `/CoordinatorService/EvictGames` (EvictGamesRequest) → EvictGamesResponse +- `/CoordinatorService/DrainInstance` (DrainInstanceRequest) → DrainInstanceResponse +- `/IoService/ImportFen` (ProtoImportFenRequest) → ProtoGameContext +- `/IoService/ImportPgn` (ProtoImportPgnRequest) → ProtoGameContext +- `/IoService/ExportCombined` (ProtoGameContext) → ProtoCombinedExport +- `/IoService/ExportFen` (ProtoGameContext) → ProtoStringResult +- `/IoService/ExportPgn` (ProtoGameContext) → ProtoStringResult +- `/RuleService/CandidateMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/LegalMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/AllLegalMoves` (ProtoGameContext) → ProtoMoveList +- `/RuleService/IsCheck` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsCheckmate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsStalemate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsInsufficientMaterial` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsFiftyMoveRule` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsThreefoldRepetition` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/ApplyMove` (ProtoMoveRequest) → ProtoGameContext +- `/RuleService/PostMoveStatus` (ProtoGameContext) → ProtoPostMoveStatus +- `/IoService/ImportFen` (ProtoImportFenRequest) → ProtoGameContext +- `/IoService/ImportPgn` (ProtoImportPgnRequest) → ProtoGameContext +- `/IoService/ExportCombined` (ProtoGameContext) → ProtoCombinedExport +- `/IoService/ExportFen` (ProtoGameContext) → ProtoStringResult +- `/IoService/ExportPgn` (ProtoGameContext) → ProtoStringResult +- `/RuleService/CandidateMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/LegalMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/AllLegalMoves` (ProtoGameContext) → ProtoMoveList +- `/RuleService/IsCheck` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsCheckmate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsStalemate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsInsufficientMaterial` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsFiftyMoveRule` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsThreefoldRepetition` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/ApplyMove` (ProtoMoveRequest) → ProtoGameContext +- `/RuleService/PostMoveStatus` (ProtoGameContext) → ProtoPostMoveStatus + +--- + # Libraries - `jacoco-reporter/scoverage_coverage_gaps.py` @@ -25,6 +72,74 @@ - function main: () -> None - class TestCase - _...2 more_ +- `modules/account/src/main/scala/de/nowchess/account/client/CoreGameClient.scala` — class CoreGameClient, function createGame +- `modules/account/src/main/scala/de/nowchess/account/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/account/src/main/scala/de/nowchess/account/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/account/src/main/scala/de/nowchess/account/domain/Challenge.scala` + - class Challenge + - function gameIdOpt + - function declineReasonOpt + - function timeControlLimitOpt + - function timeControlIncrementOpt +- `modules/account/src/main/scala/de/nowchess/account/domain/ChallengeColorConverter.scala` — class ChallengeColorConverter +- `modules/account/src/main/scala/de/nowchess/account/domain/ChallengeStatusConverter.scala` — class ChallengeStatusConverter +- `modules/account/src/main/scala/de/nowchess/account/domain/DeclineReasonConverter.scala` — class DeclineReasonConverter +- `modules/account/src/main/scala/de/nowchess/account/domain/TimeControl.scala` — class TimeControl +- `modules/account/src/main/scala/de/nowchess/account/domain/UserAccount.scala` + - class UserAccount + - function getBotAccounts + - class BotAccount + - class OfficialBotAccount +- `modules/account/src/main/scala/de/nowchess/account/error/AccountError.scala` — function message +- `modules/account/src/main/scala/de/nowchess/account/error/ChallengeError.scala` — function message +- `modules/account/src/main/scala/de/nowchess/account/filter/AlreadyLoggedInFilter.scala` — class AlreadyLoggedInFilter +- `modules/account/src/main/scala/de/nowchess/account/repository/AccountRepository.scala` + - class UserAccountRepository + - function findByUsername + - function findById + - function persist + - function findByEmail + - function findAll + - _...12 more_ +- `modules/account/src/main/scala/de/nowchess/account/repository/ChallengeRepository.scala` + - class ChallengeRepository + - function findActiveByChallengerId + - function findActiveByDestUserId + - function findDuplicateChallenge + - function findById + - function persist + - _...1 more_ +- `modules/account/src/main/scala/de/nowchess/account/resource/AccountResource.scala` + - class AccountResource + - function register + - function login + - function me + - function publicProfile + - function banUser + - _...10 more_ +- `modules/account/src/main/scala/de/nowchess/account/resource/ChallengeResource.scala` + - class ChallengeResource + - function create + - function list + - function accept + - function decline + - function cancel +- `modules/account/src/main/scala/de/nowchess/account/service/AccountService.scala` + - class AccountService + - function register + - function login + - function findByUsername + - function findById + - function createBotAccount + - _...11 more_ +- `modules/account/src/main/scala/de/nowchess/account/service/ChallengeService.scala` + - class ChallengeService + - function create + - function accept + - function decline + - function cancel + - function listForUser + - _...1 more_ - `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` - class Board - function apply @@ -54,6 +169,15 @@ - `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/error/GameError.scala` — function message +- `modules/api/src/main/scala/de/nowchess/api/game/ClockState.scala` + - function activeColor + - function afterMove + - function remainingMs + - function remainingMs + - function afterMove + - function remainingMs + - _...3 more_ - `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` - function kingSquare - function withBoard @@ -62,11 +186,21 @@ - function withEnPassantSquare - function withHalfMoveClock - _...4 more_ +- `modules/api/src/main/scala/de/nowchess/api/io/GameContextExport.scala` — class GameContextExport, function exportGameContext +- `modules/api/src/main/scala/de/nowchess/api/io/GameContextImport.scala` — class GameContextImport, function importGameContext - `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/api/src/main/scala/de/nowchess/api/rules/RuleSet.scala` + - class RuleSet + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...6 more_ - `modules/bot/python/nnue.py` - function get_weights_dir: () - function get_data_dir: () @@ -171,30 +305,136 @@ - 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/coordinator/src/main/scala/de/nowchess/coordinator/CoordinatorApp.scala` — class CoordinatorApp +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/BeansProducer.scala` + - class BeansProducer + - function redissonClient + - function kubernetesClient +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/CoordinatorConfig.scala` + - class CoordinatorConfig + - function maxGamesPerCore + - function maxDeviationPercent + - function rebalanceInterval + - 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 + - function shutdown + - function batchResubscribeGames + - function unsubscribeGames + - function evictGames +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/resource/CoordinatorResource.scala` + - class CoordinatorResource + - function listInstances + - function getMetrics + - function triggerRebalance + - function triggerFailover + - function triggerScaleUp + - _...1 more_ +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala` + - class AutoScaler + - function checkAndScale + - function scaleUp + - function scaleDown +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/CacheEvictionManager.scala` + - class CacheEvictionManager + - function setRedisPrefix + - function evictStaleGames +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/FailoverService.scala` + - class FailoverService + - function setRedisPrefix + - function onInstanceStreamDropped +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/HealthMonitor.scala` + - class HealthMonitor + - function setRedisPrefix + - function checkInstanceHealth + - function watchK8sPods +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/InstanceRegistry.scala` + - class InstanceRegistry + - function setRedisPrefix + - function getInstance + - function getAllInstances + - function updateInstanceFromRedis + - function markInstanceDead + - _...1 more_ +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/LoadBalancer.scala` + - class LoadBalancer + - function setRedisPrefix + - function shouldRebalance + - function rebalance +- `modules/core/src/main/scala/de/nowchess/chess/adapter/RuleSetRestAdapter.scala` + - class RuleSetRestAdapter + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...5 more_ +- `modules/core/src/main/scala/de/nowchess/chess/client/IoServiceClient.scala` + - class IoServiceClient + - function importFen + - function importPgn + - function exportFen + - function exportPgn + - function exportCombined +- `modules/core/src/main/scala/de/nowchess/chess/client/RuleServiceClient.scala` + - class RuleServiceClient + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...6 more_ +- `modules/core/src/main/scala/de/nowchess/chess/client/StoreServiceClient.scala` — class StoreServiceClient, function getGame - `modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/core/src/main/scala/de/nowchess/chess/config/RedisConfig.scala` — class RedisConfig +- `modules/core/src/main/scala/de/nowchess/chess/config/RedissonProducer.scala` + - class RedissonProducer + - function produceRedissonClient + - function shutdown - `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_ + - function pendingDrawOfferBy + - function currentClockState + - _...22 more_ +- `modules/core/src/main/scala/de/nowchess/chess/exception/ApiException.scala` + - class ApiException + - class GameNotFoundException + - class BadRequestException +- `modules/core/src/main/scala/de/nowchess/chess/exception/ApiExceptionMapper.scala` — class ApiExceptionMapper, function toResponse +- `modules/core/src/main/scala/de/nowchess/chess/grpc/CoordinatorServiceHandler.scala` — class CoordinatorServiceHandler +- `modules/core/src/main/scala/de/nowchess/chess/grpc/CoreProtoMapper.scala` + - class CoreProtoMapper + - function toProtoColor + - function fromProtoColor + - function toProtoPieceType + - function fromProtoPieceType + - function toProtoMoveKind + - _...9 more_ +- `modules/core/src/main/scala/de/nowchess/chess/grpc/IoGrpcClientWrapper.scala` + - class IoGrpcClientWrapper + - function exportCombined + - function importFen + - function importPgn + - function exportFen + - function exportPgn +- `modules/core/src/main/scala/de/nowchess/chess/grpc/RuleSetGrpcAdapter.scala` + - class RuleSetGrpcAdapter + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...5 more_ - `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` - function context - class Observer @@ -203,28 +443,52 @@ - function subscribe - function unsubscribe - _...1 more_ +- `modules/core/src/main/scala/de/nowchess/chess/redis/C2sMessage.scala` — class C2sMessage +- `modules/core/src/main/scala/de/nowchess/chess/redis/GameRedisPublisher.scala` — class GameRedisPublisher, function onGameEvent +- `modules/core/src/main/scala/de/nowchess/chess/redis/GameRedisSubscriberManager.scala` + - class GameRedisSubscriberManager + - function subscribeGame + - function onMessage + - function unsubscribeGame + - function batchResubscribeGames + - function unsubscribeGames + - _...3 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 +- `modules/core/src/main/scala/de/nowchess/chess/registry/RedisGameRegistry.scala` + - class RedisGameRegistry + - function generateId - function store - function get - function update - - function generateId +- `modules/core/src/main/scala/de/nowchess/chess/resource/GameDtoMapper.scala` + - class GameDtoMapper + - function statusOf + - function moveToUci + - function toPlayerDto + - function toClockDto + - function toGameStateDto + - _...1 more_ - `modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala` + - class GameResource - function onGameEvent - function createGame - function getGame - - function streamGame - - function onGameEvent - function resignGame + - function makeMove - _...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/core/src/main/scala/de/nowchess/chess/service/InstanceHeartbeatService.scala` + - class InstanceHeartbeatService + - function onStart + - function onShutdown + - function setRedisPrefix + - function setSubscriptionCount + - function setLocalCacheSize + - _...2 more_ - `modules/io/src/main/scala/de/nowchess/io/GameFileService.scala` - class GameFileService - function saveGameToFile @@ -253,6 +517,15 @@ - 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/grpc/IoGrpcService.scala` — class IoGrpcService +- `modules/io/src/main/scala/de/nowchess/io/grpc/IoProtoMapper.scala` + - class IoProtoMapper + - function toProtoColor + - function fromProtoColor + - function toProtoPieceType + - function fromProtoPieceType + - function toProtoMoveKind + - _...9 more_ - `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` @@ -265,20 +538,76 @@ - function importGameContext - function parsePgn - function parseAlgebraicMove -- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` - - class RuleSet +- `modules/io/src/main/scala/de/nowchess/io/service/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/io/src/main/scala/de/nowchess/io/service/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/io/src/main/scala/de/nowchess/io/service/resource/IoResource.scala` + - class IoResource + - function importFen + - function importPgn + - function exportFen + - function exportPgn + - function exportCombined +- `modules/json/src/main/scala/de/nowchess/json/ChessJacksonModule.scala` — class ChessJacksonModule +- `modules/json/src/main/scala/de/nowchess/json/GameResultDeserializer.scala` — class GameResultDeserializer +- `modules/json/src/main/scala/de/nowchess/json/GameResultSerializer.scala` — class GameResultSerializer +- `modules/json/src/main/scala/de/nowchess/json/MoveTypeDeserializer.scala` — class MoveTypeDeserializer +- `modules/json/src/main/scala/de/nowchess/json/MoveTypeSerializer.scala` — class MoveTypeSerializer +- `modules/json/src/main/scala/de/nowchess/json/SquareDeserializer.scala` — class SquareDeserializer +- `modules/json/src/main/scala/de/nowchess/json/SquareKeyDeserializer.scala` — class SquareKeyDeserializer +- `modules/json/src/main/scala/de/nowchess/json/SquareKeySerializer.scala` — class SquareKeySerializer +- `modules/json/src/main/scala/de/nowchess/json/SquareSerializer.scala` — class SquareSerializer +- `modules/rule/src/main/scala/de/nowchess/rules/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/rule/src/main/scala/de/nowchess/rules/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/rule/src/main/scala/de/nowchess/rules/grpc/ProtoMapper.scala` + - class ProtoMapper + - function toProtoColor + - function fromProtoColor + - function toProtoPieceType + - function fromProtoPieceType + - function toProtoMoveKind + - _...9 more_ +- `modules/rule/src/main/scala/de/nowchess/rules/grpc/RuleGrpcService.scala` — class RuleGrpcService +- `modules/rule/src/main/scala/de/nowchess/rules/resource/RuleSetResource.scala` + - class RuleSetResource - 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 + - _...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 + - function redissonClient + - function close +- `modules/store/src/main/scala/de/nowchess/store/domain/GameRecord.scala` — class GameRecord +- `modules/store/src/main/scala/de/nowchess/store/redis/GameWritebackStreamListener.scala` + - class GameWritebackStreamListener + - function startListening + - function onMessage +- `modules/store/src/main/scala/de/nowchess/store/repository/GameRecordRepository.scala` + - class GameRecordRepository + - function findByGameId + - function persist + - 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 + - function produceRedissonClient + - function shutdown +- `modules/ws/src/main/scala/de/nowchess/ws/resource/GameWebSocketResource.scala` + - class GameWebSocketResource + - function onOpen + - function onMessage + - function onTextMessage + - function onClose --- @@ -301,39 +630,39 @@ ## 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/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 **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 +- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **20** files +- `modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala` — imported by **18** files +- `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala` — imported by **18** files +- `modules/api/src/main/scala/de/nowchess/api/rules/RuleSet.scala` — imported by **14** files +- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala` — imported by **13** files +- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` — imported by **11** files +- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — imported by **9** files +- `modules/api/src/main/scala/de/nowchess/api/error/GameError.scala` — imported by **9** files +- `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 -- `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 +- `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` +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 +- `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` +15 more +- `modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala` ← `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/grpc/CoreProtoMapper.scala`, `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` +13 more +- `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala` ← `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/grpc/CoreProtoMapper.scala`, `modules/core/src/main/scala/de/nowchess/chess/resource/GameDtoMapper.scala` +13 more --- diff --git a/.codesight/graph.md b/.codesight/graph.md index 57ba7eb..e6975ab 100644 --- a/.codesight/graph.md +++ b/.codesight/graph.md @@ -2,36 +2,36 @@ ## 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/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 **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 +- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **20** files +- `modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala` — imported by **18** files +- `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala` — imported by **18** files +- `modules/api/src/main/scala/de/nowchess/api/rules/RuleSet.scala` — imported by **14** files +- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala` — imported by **13** files +- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` — imported by **11** files +- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — imported by **9** files +- `modules/api/src/main/scala/de/nowchess/api/error/GameError.scala` — imported by **9** files +- `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 -- `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 +- `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` +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 +- `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` +15 more +- `modules/api/src/main/scala/de/nowchess/api/game/DrawReason.scala` ← `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/grpc/CoreProtoMapper.scala`, `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` +13 more +- `modules/api/src/main/scala/de/nowchess/api/game/GameResult.scala` ← `modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/grpc/CoreProtoMapper.scala`, `modules/core/src/main/scala/de/nowchess/chess/resource/GameDtoMapper.scala` +13 more diff --git a/.codesight/libs.md b/.codesight/libs.md index c7da5a2..f8a9e41 100644 --- a/.codesight/libs.md +++ b/.codesight/libs.md @@ -16,6 +16,74 @@ - function main: () -> None - class TestCase - _...2 more_ +- `modules/account/src/main/scala/de/nowchess/account/client/CoreGameClient.scala` — class CoreGameClient, function createGame +- `modules/account/src/main/scala/de/nowchess/account/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/account/src/main/scala/de/nowchess/account/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/account/src/main/scala/de/nowchess/account/domain/Challenge.scala` + - class Challenge + - function gameIdOpt + - function declineReasonOpt + - function timeControlLimitOpt + - function timeControlIncrementOpt +- `modules/account/src/main/scala/de/nowchess/account/domain/ChallengeColorConverter.scala` — class ChallengeColorConverter +- `modules/account/src/main/scala/de/nowchess/account/domain/ChallengeStatusConverter.scala` — class ChallengeStatusConverter +- `modules/account/src/main/scala/de/nowchess/account/domain/DeclineReasonConverter.scala` — class DeclineReasonConverter +- `modules/account/src/main/scala/de/nowchess/account/domain/TimeControl.scala` — class TimeControl +- `modules/account/src/main/scala/de/nowchess/account/domain/UserAccount.scala` + - class UserAccount + - function getBotAccounts + - class BotAccount + - class OfficialBotAccount +- `modules/account/src/main/scala/de/nowchess/account/error/AccountError.scala` — function message +- `modules/account/src/main/scala/de/nowchess/account/error/ChallengeError.scala` — function message +- `modules/account/src/main/scala/de/nowchess/account/filter/AlreadyLoggedInFilter.scala` — class AlreadyLoggedInFilter +- `modules/account/src/main/scala/de/nowchess/account/repository/AccountRepository.scala` + - class UserAccountRepository + - function findByUsername + - function findById + - function persist + - function findByEmail + - function findAll + - _...12 more_ +- `modules/account/src/main/scala/de/nowchess/account/repository/ChallengeRepository.scala` + - class ChallengeRepository + - function findActiveByChallengerId + - function findActiveByDestUserId + - function findDuplicateChallenge + - function findById + - function persist + - _...1 more_ +- `modules/account/src/main/scala/de/nowchess/account/resource/AccountResource.scala` + - class AccountResource + - function register + - function login + - function me + - function publicProfile + - function banUser + - _...10 more_ +- `modules/account/src/main/scala/de/nowchess/account/resource/ChallengeResource.scala` + - class ChallengeResource + - function create + - function list + - function accept + - function decline + - function cancel +- `modules/account/src/main/scala/de/nowchess/account/service/AccountService.scala` + - class AccountService + - function register + - function login + - function findByUsername + - function findById + - function createBotAccount + - _...11 more_ +- `modules/account/src/main/scala/de/nowchess/account/service/ChallengeService.scala` + - class ChallengeService + - function create + - function accept + - function decline + - function cancel + - function listForUser + - _...1 more_ - `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` - class Board - function apply @@ -45,6 +113,15 @@ - `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/error/GameError.scala` — function message +- `modules/api/src/main/scala/de/nowchess/api/game/ClockState.scala` + - function activeColor + - function afterMove + - function remainingMs + - function remainingMs + - function afterMove + - function remainingMs + - _...3 more_ - `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` - function kingSquare - function withBoard @@ -53,11 +130,21 @@ - function withEnPassantSquare - function withHalfMoveClock - _...4 more_ +- `modules/api/src/main/scala/de/nowchess/api/io/GameContextExport.scala` — class GameContextExport, function exportGameContext +- `modules/api/src/main/scala/de/nowchess/api/io/GameContextImport.scala` — class GameContextImport, function importGameContext - `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/api/src/main/scala/de/nowchess/api/rules/RuleSet.scala` + - class RuleSet + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...6 more_ - `modules/bot/python/nnue.py` - function get_weights_dir: () - function get_data_dir: () @@ -162,30 +249,136 @@ - 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/coordinator/src/main/scala/de/nowchess/coordinator/CoordinatorApp.scala` — class CoordinatorApp +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/BeansProducer.scala` + - class BeansProducer + - function redissonClient + - function kubernetesClient +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/config/CoordinatorConfig.scala` + - class CoordinatorConfig + - function maxGamesPerCore + - function maxDeviationPercent + - function rebalanceInterval + - 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 + - function shutdown + - function batchResubscribeGames + - function unsubscribeGames + - function evictGames +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/resource/CoordinatorResource.scala` + - class CoordinatorResource + - function listInstances + - function getMetrics + - function triggerRebalance + - function triggerFailover + - function triggerScaleUp + - _...1 more_ +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/AutoScaler.scala` + - class AutoScaler + - function checkAndScale + - function scaleUp + - function scaleDown +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/CacheEvictionManager.scala` + - class CacheEvictionManager + - function setRedisPrefix + - function evictStaleGames +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/FailoverService.scala` + - class FailoverService + - function setRedisPrefix + - function onInstanceStreamDropped +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/HealthMonitor.scala` + - class HealthMonitor + - function setRedisPrefix + - function checkInstanceHealth + - function watchK8sPods +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/InstanceRegistry.scala` + - class InstanceRegistry + - function setRedisPrefix + - function getInstance + - function getAllInstances + - function updateInstanceFromRedis + - function markInstanceDead + - _...1 more_ +- `modules/coordinator/src/main/scala/de/nowchess/coordinator/service/LoadBalancer.scala` + - class LoadBalancer + - function setRedisPrefix + - function shouldRebalance + - function rebalance +- `modules/core/src/main/scala/de/nowchess/chess/adapter/RuleSetRestAdapter.scala` + - class RuleSetRestAdapter + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...5 more_ +- `modules/core/src/main/scala/de/nowchess/chess/client/IoServiceClient.scala` + - class IoServiceClient + - function importFen + - function importPgn + - function exportFen + - function exportPgn + - function exportCombined +- `modules/core/src/main/scala/de/nowchess/chess/client/RuleServiceClient.scala` + - class RuleServiceClient + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...6 more_ +- `modules/core/src/main/scala/de/nowchess/chess/client/StoreServiceClient.scala` — class StoreServiceClient, function getGame - `modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/core/src/main/scala/de/nowchess/chess/config/RedisConfig.scala` — class RedisConfig +- `modules/core/src/main/scala/de/nowchess/chess/config/RedissonProducer.scala` + - class RedissonProducer + - function produceRedissonClient + - function shutdown - `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_ + - function pendingDrawOfferBy + - function currentClockState + - _...22 more_ +- `modules/core/src/main/scala/de/nowchess/chess/exception/ApiException.scala` + - class ApiException + - class GameNotFoundException + - class BadRequestException +- `modules/core/src/main/scala/de/nowchess/chess/exception/ApiExceptionMapper.scala` — class ApiExceptionMapper, function toResponse +- `modules/core/src/main/scala/de/nowchess/chess/grpc/CoordinatorServiceHandler.scala` — class CoordinatorServiceHandler +- `modules/core/src/main/scala/de/nowchess/chess/grpc/CoreProtoMapper.scala` + - class CoreProtoMapper + - function toProtoColor + - function fromProtoColor + - function toProtoPieceType + - function fromProtoPieceType + - function toProtoMoveKind + - _...9 more_ +- `modules/core/src/main/scala/de/nowchess/chess/grpc/IoGrpcClientWrapper.scala` + - class IoGrpcClientWrapper + - function exportCombined + - function importFen + - function importPgn + - function exportFen + - function exportPgn +- `modules/core/src/main/scala/de/nowchess/chess/grpc/RuleSetGrpcAdapter.scala` + - class RuleSetGrpcAdapter + - function candidateMoves + - function legalMoves + - function allLegalMoves + - function isCheck + - function isCheckmate + - _...5 more_ - `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` - function context - class Observer @@ -194,28 +387,52 @@ - function subscribe - function unsubscribe - _...1 more_ +- `modules/core/src/main/scala/de/nowchess/chess/redis/C2sMessage.scala` — class C2sMessage +- `modules/core/src/main/scala/de/nowchess/chess/redis/GameRedisPublisher.scala` — class GameRedisPublisher, function onGameEvent +- `modules/core/src/main/scala/de/nowchess/chess/redis/GameRedisSubscriberManager.scala` + - class GameRedisSubscriberManager + - function subscribeGame + - function onMessage + - function unsubscribeGame + - function batchResubscribeGames + - function unsubscribeGames + - _...3 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 +- `modules/core/src/main/scala/de/nowchess/chess/registry/RedisGameRegistry.scala` + - class RedisGameRegistry + - function generateId - function store - function get - function update - - function generateId +- `modules/core/src/main/scala/de/nowchess/chess/resource/GameDtoMapper.scala` + - class GameDtoMapper + - function statusOf + - function moveToUci + - function toPlayerDto + - function toClockDto + - function toGameStateDto + - _...1 more_ - `modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala` + - class GameResource - function onGameEvent - function createGame - function getGame - - function streamGame - - function onGameEvent - function resignGame + - function makeMove - _...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/core/src/main/scala/de/nowchess/chess/service/InstanceHeartbeatService.scala` + - class InstanceHeartbeatService + - function onStart + - function onShutdown + - function setRedisPrefix + - function setSubscriptionCount + - function setLocalCacheSize + - _...2 more_ - `modules/io/src/main/scala/de/nowchess/io/GameFileService.scala` - class GameFileService - function saveGameToFile @@ -244,6 +461,15 @@ - 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/grpc/IoGrpcService.scala` — class IoGrpcService +- `modules/io/src/main/scala/de/nowchess/io/grpc/IoProtoMapper.scala` + - class IoProtoMapper + - function toProtoColor + - function fromProtoColor + - function toProtoPieceType + - function fromProtoPieceType + - function toProtoMoveKind + - _...9 more_ - `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` @@ -256,17 +482,73 @@ - function importGameContext - function parsePgn - function parseAlgebraicMove -- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` - - class RuleSet +- `modules/io/src/main/scala/de/nowchess/io/service/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/io/src/main/scala/de/nowchess/io/service/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/io/src/main/scala/de/nowchess/io/service/resource/IoResource.scala` + - class IoResource + - function importFen + - function importPgn + - function exportFen + - function exportPgn + - function exportCombined +- `modules/json/src/main/scala/de/nowchess/json/ChessJacksonModule.scala` — class ChessJacksonModule +- `modules/json/src/main/scala/de/nowchess/json/GameResultDeserializer.scala` — class GameResultDeserializer +- `modules/json/src/main/scala/de/nowchess/json/GameResultSerializer.scala` — class GameResultSerializer +- `modules/json/src/main/scala/de/nowchess/json/MoveTypeDeserializer.scala` — class MoveTypeDeserializer +- `modules/json/src/main/scala/de/nowchess/json/MoveTypeSerializer.scala` — class MoveTypeSerializer +- `modules/json/src/main/scala/de/nowchess/json/SquareDeserializer.scala` — class SquareDeserializer +- `modules/json/src/main/scala/de/nowchess/json/SquareKeyDeserializer.scala` — class SquareKeyDeserializer +- `modules/json/src/main/scala/de/nowchess/json/SquareKeySerializer.scala` — class SquareKeySerializer +- `modules/json/src/main/scala/de/nowchess/json/SquareSerializer.scala` — class SquareSerializer +- `modules/rule/src/main/scala/de/nowchess/rules/config/JacksonConfig.scala` — class JacksonConfig, function customize +- `modules/rule/src/main/scala/de/nowchess/rules/config/NativeReflectionConfig.scala` — class NativeReflectionConfig +- `modules/rule/src/main/scala/de/nowchess/rules/grpc/ProtoMapper.scala` + - class ProtoMapper + - function toProtoColor + - function fromProtoColor + - function toProtoPieceType + - function fromProtoPieceType + - function toProtoMoveKind + - _...9 more_ +- `modules/rule/src/main/scala/de/nowchess/rules/grpc/RuleGrpcService.scala` — class RuleGrpcService +- `modules/rule/src/main/scala/de/nowchess/rules/resource/RuleSetResource.scala` + - class RuleSetResource - 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 + - _...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 + - function redissonClient + - function close +- `modules/store/src/main/scala/de/nowchess/store/domain/GameRecord.scala` — class GameRecord +- `modules/store/src/main/scala/de/nowchess/store/redis/GameWritebackStreamListener.scala` + - class GameWritebackStreamListener + - function startListening + - function onMessage +- `modules/store/src/main/scala/de/nowchess/store/repository/GameRecordRepository.scala` + - class GameRecordRepository + - function findByGameId + - function persist + - 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 + - function produceRedissonClient + - function shutdown +- `modules/ws/src/main/scala/de/nowchess/ws/resource/GameWebSocketResource.scala` + - class GameWebSocketResource + - function onOpen + - function onMessage + - function onTextMessage + - function onClose diff --git a/.codesight/routes.md b/.codesight/routes.md new file mode 100644 index 0000000..cd5f7e4 --- /dev/null +++ b/.codesight/routes.md @@ -0,0 +1,44 @@ +# Routes + +## gRPC + +- `/CoordinatorService/BatchResubscribeGames` (BatchResubscribeRequest) → BatchResubscribeResponse +- `/CoordinatorService/UnsubscribeGames` (UnsubscribeGamesRequest) → UnsubscribeGamesResponse +- `/CoordinatorService/EvictGames` (EvictGamesRequest) → EvictGamesResponse +- `/CoordinatorService/DrainInstance` (DrainInstanceRequest) → DrainInstanceResponse +- `/CoordinatorService/BatchResubscribeGames` (BatchResubscribeRequest) → BatchResubscribeResponse +- `/CoordinatorService/UnsubscribeGames` (UnsubscribeGamesRequest) → UnsubscribeGamesResponse +- `/CoordinatorService/EvictGames` (EvictGamesRequest) → EvictGamesResponse +- `/CoordinatorService/DrainInstance` (DrainInstanceRequest) → DrainInstanceResponse +- `/IoService/ImportFen` (ProtoImportFenRequest) → ProtoGameContext +- `/IoService/ImportPgn` (ProtoImportPgnRequest) → ProtoGameContext +- `/IoService/ExportCombined` (ProtoGameContext) → ProtoCombinedExport +- `/IoService/ExportFen` (ProtoGameContext) → ProtoStringResult +- `/IoService/ExportPgn` (ProtoGameContext) → ProtoStringResult +- `/RuleService/CandidateMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/LegalMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/AllLegalMoves` (ProtoGameContext) → ProtoMoveList +- `/RuleService/IsCheck` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsCheckmate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsStalemate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsInsufficientMaterial` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsFiftyMoveRule` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsThreefoldRepetition` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/ApplyMove` (ProtoMoveRequest) → ProtoGameContext +- `/RuleService/PostMoveStatus` (ProtoGameContext) → ProtoPostMoveStatus +- `/IoService/ImportFen` (ProtoImportFenRequest) → ProtoGameContext +- `/IoService/ImportPgn` (ProtoImportPgnRequest) → ProtoGameContext +- `/IoService/ExportCombined` (ProtoGameContext) → ProtoCombinedExport +- `/IoService/ExportFen` (ProtoGameContext) → ProtoStringResult +- `/IoService/ExportPgn` (ProtoGameContext) → ProtoStringResult +- `/RuleService/CandidateMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/LegalMoves` (ProtoSquareRequest) → ProtoMoveList +- `/RuleService/AllLegalMoves` (ProtoGameContext) → ProtoMoveList +- `/RuleService/IsCheck` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsCheckmate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsStalemate` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsInsufficientMaterial` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsFiftyMoveRule` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/IsThreefoldRepetition` (ProtoGameContext) → ProtoBoolResult +- `/RuleService/ApplyMove` (ProtoMoveRequest) → ProtoGameContext +- `/RuleService/PostMoveStatus` (ProtoGameContext) → ProtoPostMoveStatus diff --git a/.codesight/wiki/index.md b/.codesight/wiki/index.md index 22ba8d0..afb5e0d 100644 --- a/.codesight/wiki/index.md +++ b/.codesight/wiki/index.md @@ -1,6 +1,6 @@ # NowChessSystems — Wiki -_Generated 2026-04-12 — re-run `npx codesight --wiki` if the codebase has changed._ +_Generated 2026-04-23 — re-run `npx codesight --wiki` if the codebase has changed._ Structural map compiled from source code via AST. No LLM — deterministic, 200ms. @@ -15,7 +15,7 @@ Structural map compiled from source code via AST. No LLM — deterministic, 200m - Routes: **0** - Models: **0** - Components: **0** -- Env vars: **0** required, **0** with defaults +- Env vars: **1** required, **0** with defaults ## How to Use @@ -41,4 +41,4 @@ These exist in your codebase but are **not** reflected in wiki articles: 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)_ \ No newline at end of file +_Last compiled: 2026-04-23 · 2 articles · [codesight](https://github.com/Houseofmvps/codesight)_ \ No newline at end of file diff --git a/.codesight/wiki/log.md b/.codesight/wiki/log.md index 6c83809..d94578e 100644 --- a/.codesight/wiki/log.md +++ b/.codesight/wiki/log.md @@ -3,3 +3,5 @@ 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 + +## [2026-04-23 11:41:43] scan | 0 routes, 0 models, 0 components → 2 articles diff --git a/.codesight/wiki/overview.md b/.codesight/wiki/overview.md index 770cf96..190a96a 100644 --- a/.codesight/wiki/overview.md +++ b/.codesight/wiki/overview.md @@ -4,16 +4,24 @@ **NowChessSystems** is a scala project built with raw-http. +## Scale + +1 middleware layers · 1 environment variables + ## 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 +- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **74** files +- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **66** files +- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **52** files +- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **42** files +- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **27** files +- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **21** files + +## Required Environment Variables + +- `STOCKFISH_PATH` — `modules/bot/python/nnue.py` --- -_Back to [index.md](./index.md) · Generated 2026-04-12_ \ No newline at end of file +_Back to [index.md](./index.md) · Generated 2026-04-23_ \ No newline at end of file diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..8065503 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,12 @@ +FROM mcr.microsoft.com/devcontainers/java:21-bookworm + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + postgresql-client \ + redis-tools \ + stockfish \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p /home/vscode/.gradle/wrapper/dists \ + && chown -R vscode:vscode /home/vscode/.gradle + diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 0000000..60f7a5c --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,18 @@ +# Devcontainer + +Dieses Setup startet den NowChess-Workspace zusammen mit Redis und PostgreSQL. + +## Enthaltene Services +- `workspace` – Scala/Gradle-Entwicklungscontainer +- `redis` – Redis 7.4 +- `postgres` – PostgreSQL 16 + +## Wichtige Ports +- App-Services: `8080`, `8081`, `8082`, `8083`, `8084`, `8085`, `8086`, `9086` +- Redis auf dem Host: `16379` +- PostgreSQL auf dem Host: `15432` + +## Einstieg +- VS Code: Ordner in einem Dev Container öffnen +- IntelliJ: Dev Container / Docker-Compose-Workspace öffnen und den `workspace`-Dienst nutzen + diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..1de19ea --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,39 @@ +{ + "name": "NowChessSystems", + "dockerComposeFile": ["docker-compose.yml"], + "service": "workspace", + "workspaceFolder": "/workspaces/NowChessSystems", + "shutdownAction": "stopCompose", + "overrideCommand": false, + "remoteUser": "vscode", + "forwardPorts": [8080, 8081, 8082, 8083, 8084, 8085, 8086, 9086], + "portsAttributes": { + "8080": {"label": "NowChess Core", "onAutoForward": "notify"}, + "8081": {"label": "NowChess Io", "onAutoForward": "notify"}, + "8082": {"label": "NowChess Rule", "onAutoForward": "notify"}, + "8083": {"label": "NowChess Account", "onAutoForward": "notify"}, + "8084": {"label": "NowChess WebSocket", "onAutoForward": "notify"}, + "8085": {"label": "NowChess Store", "onAutoForward": "notify"}, + "8086": {"label": "NowChess Coordinator HTTP", "onAutoForward": "notify"}, + "9086": {"label": "NowChess Coordinator gRPC", "onAutoForward": "notify"} + }, + "customizations": { + "vscode": { + "settings": { + "java.configuration.updateBuildConfiguration": "automatic", + "java.import.gradle.wrapper.enabled": true, + "files.watcherExclude": { + "**/build/**": true, + "**/.gradle/**": true + } + }, + "extensions": [ + "scala-lang.scala", + "redhat.java", + "vscjava.vscode-java-pack" + ] + } + }, + "postCreateCommand": "bash -lc './gradlew --no-daemon help >/dev/null'" +} + diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000..3cad48f --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,65 @@ +services: + workspace: + build: + context: .. + dockerfile: .devcontainer/Dockerfile + command: sleep infinity + init: true + volumes: + - gradle-cache:/home/vscode/.gradle + environment: + REDIS_HOST: redis + REDIS_PORT: 6379 + REDIS_PREFIX: nowchess + DB_URL: jdbc:postgresql://postgres:5432/nowchess + DB_USER: nowchess + DB_PASSWORD: nowchess + CORE_SERVICE_URL: http://localhost:8080 + INTERNAL_SECRET: dev-internal-secret + STOCKFISH_PATH: /usr/games/stockfish + NOWCHESS_COORDINATOR_ENABLED: "true" + dns: + - 8.8.8.8 + - 1.1.1.1 + depends_on: + redis: + condition: service_healthy + postgres: + condition: service_healthy + + redis: + image: docker.io/redis:7.4-alpine + command: ["redis-server", "--appendonly", "yes", "--save", "60", "1"] + ports: + - "16379:6379" + volumes: + - redis-data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 3s + retries: 20 + start_period: 5s + + postgres: + image: docker.io/postgres:16-alpine + environment: + POSTGRES_DB: nowchess + POSTGRES_USER: nowchess + POSTGRES_PASSWORD: nowchess + ports: + - "15432:5432" + volumes: + - postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] + interval: 5s + timeout: 3s + retries: 20 + start_period: 10s + +volumes: + gradle-cache: + redis-data: + postgres-data: + diff --git a/.github/workflows/native-image.yml b/.github/workflows/native-image.yml index 9ace760..8c77b50 100644 --- a/.github/workflows/native-image.yml +++ b/.github/workflows/native-image.yml @@ -31,8 +31,15 @@ jobs: strategy: matrix: module: + - account + - bot-platform + - coordinator - core - io + - official-bots + - rule + - store + - ws steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 50e5622..8113cf5 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,9 @@ bin/ graphify-out/ .graphify_*.json +### Keys ### +**/keys/private.pem + ### Mac OS ### .DS_Store /jacoco-reporter/.venv/ 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 08b68c3..475e81c 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,16 +5,23 @@