Compare commits

..

4 Commits

Author SHA1 Message Date
lq64 9ad11fb97a docs: NCS-36 Added an API spec for Now Chess (#25)
Build & Test (NowChessSystems) TeamCity build finished
## Summary
  - Adds `docs/api-spec.yaml` — a full OpenAPI 3.0.3 specification for the NowChess REST API
  - Endpoint paths follow the lichess `board/bot` split convention (`/api/board/game/...`)
    to leave room for a future bot API under `/api/bot/game/...`
  - Covers game lifecycle, move-making, draw handling, undo/redo,
    legal move introspection, and FEN/PGN import/export

  ## Endpoints
  - Game: POST /api/board/game, GET /{gameId}, GET /{gameId}/stream, POST /{gameId}/resign
  - Move: POST /{gameId}/move/{uci}, GET /{gameId}/moves, POST /{gameId}/undo, POST /{gameId}/redo
  - Draw: POST /{gameId}/draw/{action}
  - Import: POST /import/fen, POST /import/pgn
  - Export: GET /{gameId}/export/fen, GET /{gameId}/export/pgn

  ## Test plan
  - [ ] Open docs/api-spec.yaml in Swagger Editor (https://editor.swagger.io) — zero validation errors expected
  - [ ] Verify every endpoint maps to an existing GameEngine or RuleSet method

Co-authored-by: LQ63 <lkhermann@web.de>
Reviewed-on: #25
Reviewed-by: Janis <janis-e@gmx.de>
Co-authored-by: Leon Hermann <lq@blackhole.local>
Co-committed-by: Leon Hermann <lq@blackhole.local>
2026-04-12 17:15:11 +02:00
TeamCity e158b0a7f0 ci: bump version with Build-36 2026-04-12 14:45:56 +00:00
Janis f1c9df16b6 feat: add initial project structure and documentation files (#24)
Build & Test (NowChessSystems) TeamCity build finished
Reviewed-on: #24
2026-04-12 16:39:17 +02:00
TeamCity 9d11d25b99 ci: bump version with Build-35 2026-04-08 07:37:40 +00:00
144 changed files with 13161 additions and 3 deletions
+203
View File
@@ -0,0 +1,203 @@
# NowChessSystems — AI Context Map
> **Stack:** raw-http | none | unknown | scala
> 0 routes | 0 models | 0 components | 35 lib files | 0 env vars | 0 middleware
> **Token savings:** this file is ~3.700 tokens. Without it, AI exploration would cost ~18.200 tokens. **Saves ~14.500 tokens per conversation.**
---
# Libraries
- `jacoco-reporter/scoverage_coverage_gaps.py`
- function parse_scoverage_xml: (xml_path) -> tuple[dict, list[ClassGap]]
- function format_agent: (project_stats, classes) -> str
- function format_json: (project_stats, classes) -> str
- function format_markdown: (project_stats, classes) -> str
- function format_module_gaps: (module_name, classes, stmt_pct) -> str
- function run_scan_modules: (modules_dir, package_filter, min_coverage) -> None
- _...4 more_
- `jacoco-reporter/test_gaps.py`
- function parse_suite_xml: (xml_path) -> SuiteResult
- function load_module: (module_dir, results_subdir) -> Optional[ModuleResult]
- function format_module: (mod) -> str
- function run: (modules_dir, results_subdir, module_filter) -> None
- function main: () -> None
- class TestCase
- _...2 more_
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala`
- class Board
- function apply
- function pieceAt
- function updated
- function removed
- function withMove
- _...2 more_
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala`
- function hasAnyRights
- function hasRights
- function revokeColor
- function revokeKingSide
- function revokeQueenSide
- class CastlingRights
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — function opposite, function label
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — class Piece
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — function label
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala`
- class Square
- function fromAlgebraic
- function offset
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`
- function withBoard
- function withTurn
- function withCastlingRights
- function withEnPassantSquare
- function withHalfMoveClock
- function withMove
- _...2 more_
- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — class PlayerId, function apply
- `modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala`
- class ApiResponse
- function error
- function totalPages
- `modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`
- class Command
- function execute
- function undo
- function description
- class MoveResult
- `modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala`
- class CommandInvoker
- function execute
- function undo
- function redo
- function history
- function getCurrentIndex
- _...3 more_
- `modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala` — class Parser, function parseMove
- `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`
- class GameEngine
- function isPendingPromotion
- function board
- function turn
- function context
- function canUndo
- _...10 more_
- `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`
- function context
- class Observer
- function onGameEvent
- class Observable
- function subscribe
- function unsubscribe
- _...1 more_
- `modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala` — class GameContextExport, function exportGameContext
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — class GameContextImport, function importGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenExporter.scala`
- class FenExporter
- function boardToFen
- function gameContextToFen
- function exportGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala`
- class FenParser
- function parseFen
- function importGameContext
- function parseBoard
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserCombinators.scala`
- class FenParserCombinators
- function parseFen
- function parseBoard
- function importGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserFastParse.scala`
- class FenParserFastParse
- function parseFen
- function parseBoard
- function importGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserSupport.scala` — function buildSquares
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala`
- class PgnExporter
- function exportGameContext
- function exportGame
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala`
- class PgnParser
- function validatePgn
- function importGameContext
- function parsePgn
- function parseAlgebraicMove
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala`
- class RuleSet
- function candidateMoves
- function legalMoves
- function allLegalMoves
- function isCheck
- function isCheckmate
- _...4 more_
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala`
- class DefaultRules
- function loop
- function toMoves
- function loop
- `modules/ui/src/main/scala/de/nowchess/ui/Main.scala` — class Main, function main
- `modules/ui/src/main/scala/de/nowchess/ui/gui/ChessBoardView.scala`
- class ChessBoardView
- function updateBoard
- function updateUndoRedoButtons
- function showMessage
- function showPromotionDialog
- `modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala`
- class ChessGUIApp
- class ChessGUILauncher
- function getEngine
- function launch
- `modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala` — class GUIObserver
- `modules/ui/src/main/scala/de/nowchess/ui/gui/PieceSprites.scala`
- class PieceSprites
- function loadPieceImage
- class SquareColors
- `modules/ui/src/main/scala/de/nowchess/ui/terminal/TerminalUI.scala` — class TerminalUI, function start
- `modules/ui/src/main/scala/de/nowchess/ui/utils/PieceUnicode.scala` — function unicode
- `modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala` — class Renderer, function render
---
# Dependency Graph
## Most Imported Files (change these carefully)
- `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/board/PieceType.scala` — imported by **9** files
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` — imported by **9** files
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **8** files
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — imported by **7** files
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala` — imported by **4** files
- `modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala` — imported by **4** files
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` — imported by **4** files
- `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` — imported by **4** files
- `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala` — imported by **4** files
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala` — imported by **2** files
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala` — imported by **2** files
- `modules/io/src/main/scala/de/nowchess/io/fen/FenExporter.scala` — imported by **2** files
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserSupport.scala` — imported by **2** files
- `modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala` — imported by **1** files
## Import Map (who imports what)
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala``modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`, `modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerBranchTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala` +23 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/core/src/main/scala/de/nowchess/chess/command/Command.scala` +16 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/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala` +14 more
- `modules/api/src/main/scala/de/nowchess/api/move/Move.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/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala` +9 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/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineGameEndingTest.scala` +8 more
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala``modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala`, `modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala` +5 more
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala``modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala`, `modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala` +4 more
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.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`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala` +4 more
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala``modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala` +3 more
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala``modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala`, `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala`, `modules/io/src/main/scala/de/nowchess/io/fen/FenParserCombinators.scala`, `modules/io/src/main/scala/de/nowchess/io/fen/FenParserFastParse.scala` +2 more
---
_Generated by [codesight](https://github.com/Houseofmvps/codesight) — see your codebase clearly_
+37
View File
@@ -0,0 +1,37 @@
# Dependency Graph
## Most Imported Files (change these carefully)
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **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/board/PieceType.scala` — imported by **9** files
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala` — imported by **9** files
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala` — imported by **8** files
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — imported by **7** files
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala` — imported by **4** files
- `modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala` — imported by **4** files
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala` — imported by **4** files
- `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala` — imported by **4** files
- `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala` — imported by **4** files
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala` — imported by **2** files
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala` — imported by **2** files
- `modules/io/src/main/scala/de/nowchess/io/fen/FenExporter.scala` — imported by **2** files
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserSupport.scala` — imported by **2** files
- `modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala` — imported by **1** files
## Import Map (who imports what)
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala``modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`, `modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerBranchTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala` +23 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/core/src/main/scala/de/nowchess/chess/command/Command.scala` +16 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/test/scala/de/nowchess/api/game/GameContextTest.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala` +14 more
- `modules/api/src/main/scala/de/nowchess/api/move/Move.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/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala` +9 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/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineGameEndingTest.scala` +8 more
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala``modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`, `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala`, `modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala` +5 more
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala``modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala`, `modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala` +4 more
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.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`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala` +4 more
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala``modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEnginePromotionTest.scala`, `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala` +3 more
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala``modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`, `modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala`, `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala`, `modules/io/src/main/scala/de/nowchess/io/fen/FenParserCombinators.scala`, `modules/io/src/main/scala/de/nowchess/io/fen/FenParserFastParse.scala` +2 more
+150
View File
@@ -0,0 +1,150 @@
# Libraries
- `jacoco-reporter/scoverage_coverage_gaps.py`
- function parse_scoverage_xml: (xml_path) -> tuple[dict, list[ClassGap]]
- function format_agent: (project_stats, classes) -> str
- function format_json: (project_stats, classes) -> str
- function format_markdown: (project_stats, classes) -> str
- function format_module_gaps: (module_name, classes, stmt_pct) -> str
- function run_scan_modules: (modules_dir, package_filter, min_coverage) -> None
- _...4 more_
- `jacoco-reporter/test_gaps.py`
- function parse_suite_xml: (xml_path) -> SuiteResult
- function load_module: (module_dir, results_subdir) -> Optional[ModuleResult]
- function format_module: (mod) -> str
- function run: (modules_dir, results_subdir, module_filter) -> None
- function main: () -> None
- class TestCase
- _...2 more_
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala`
- class Board
- function apply
- function pieceAt
- function updated
- function removed
- function withMove
- _...2 more_
- `modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala`
- function hasAnyRights
- function hasRights
- function revokeColor
- function revokeKingSide
- function revokeQueenSide
- class CastlingRights
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — function opposite, function label
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — class Piece
- `modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala` — function label
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala`
- class Square
- function fromAlgebraic
- function offset
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala`
- function withBoard
- function withTurn
- function withCastlingRights
- function withEnPassantSquare
- function withHalfMoveClock
- function withMove
- _...2 more_
- `modules/api/src/main/scala/de/nowchess/api/player/PlayerInfo.scala` — class PlayerId, function apply
- `modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala`
- class ApiResponse
- function error
- function totalPages
- `modules/core/src/main/scala/de/nowchess/chess/command/Command.scala`
- class Command
- function execute
- function undo
- function description
- class MoveResult
- `modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala`
- class CommandInvoker
- function execute
- function undo
- function redo
- function history
- function getCurrentIndex
- _...3 more_
- `modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala` — class Parser, function parseMove
- `modules/core/src/main/scala/de/nowchess/chess/engine/GameEngine.scala`
- class GameEngine
- function isPendingPromotion
- function board
- function turn
- function context
- function canUndo
- _...10 more_
- `modules/core/src/main/scala/de/nowchess/chess/observer/Observer.scala`
- function context
- class Observer
- function onGameEvent
- class Observable
- function subscribe
- function unsubscribe
- _...1 more_
- `modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala` — class GameContextExport, function exportGameContext
- `modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala` — class GameContextImport, function importGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenExporter.scala`
- class FenExporter
- function boardToFen
- function gameContextToFen
- function exportGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParser.scala`
- class FenParser
- function parseFen
- function importGameContext
- function parseBoard
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserCombinators.scala`
- class FenParserCombinators
- function parseFen
- function parseBoard
- function importGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserFastParse.scala`
- class FenParserFastParse
- function parseFen
- function parseBoard
- function importGameContext
- `modules/io/src/main/scala/de/nowchess/io/fen/FenParserSupport.scala` — function buildSquares
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala`
- class PgnExporter
- function exportGameContext
- function exportGame
- `modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala`
- class PgnParser
- function validatePgn
- function importGameContext
- function parsePgn
- function parseAlgebraicMove
- `modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala`
- class RuleSet
- function candidateMoves
- function legalMoves
- function allLegalMoves
- function isCheck
- function isCheckmate
- _...4 more_
- `modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala`
- class DefaultRules
- function loop
- function toMoves
- function loop
- `modules/ui/src/main/scala/de/nowchess/ui/Main.scala` — class Main, function main
- `modules/ui/src/main/scala/de/nowchess/ui/gui/ChessBoardView.scala`
- class ChessBoardView
- function updateBoard
- function updateUndoRedoButtons
- function showMessage
- function showPromotionDialog
- `modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala`
- class ChessGUIApp
- class ChessGUILauncher
- function getEngine
- function launch
- `modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala` — class GUIObserver
- `modules/ui/src/main/scala/de/nowchess/ui/gui/PieceSprites.scala`
- class PieceSprites
- function loadPieceImage
- class SquareColors
- `modules/ui/src/main/scala/de/nowchess/ui/terminal/TerminalUI.scala` — class TerminalUI, function start
- `modules/ui/src/main/scala/de/nowchess/ui/utils/PieceUnicode.scala` — function unicode
- `modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala` — class Renderer, function render
+44
View File
@@ -0,0 +1,44 @@
# NowChessSystems — Wiki
_Generated 2026-04-12 — re-run `npx codesight --wiki` if the codebase has changed._
Structural map compiled from source code via AST. No LLM — deterministic, 200ms.
> **How to use safely:** These articles tell you WHERE things live and WHAT exists. They do not show full implementation logic. Always read the actual source files before implementing new features or making changes. Never infer how a function works from the wiki alone.
## Articles
- [Overview](./overview.md)
## Quick Stats
- Routes: **0**
- Models: **0**
- Components: **0**
- Env vars: **0** required, **0** with defaults
## How to Use
- **New session:** read `index.md` (this file) for orientation — WHERE things are
- **Architecture question:** read `overview.md` (~500 tokens)
- **Domain question:** read the relevant article, then **read those source files**
- **Database question:** read `database.md`, then read the actual schema files
- **Before implementing anything:** read the source files listed in the article
- **Full source context:** read `.codesight/CODESIGHT.md`
## What the Wiki Does Not Cover
These exist in your codebase but are **not** reflected in wiki articles:
- Routes registered dynamically at runtime (loops, plugin factories, `app.use(dynamicRouter)`)
- Internal routes from npm packages (e.g. Better Auth's built-in `/api/auth/*` endpoints)
- WebSocket and SSE handlers
- Raw SQL tables not declared through an ORM
- Computed or virtual fields absent from schema declarations
- TypeScript types that are not actual database columns
- Routes marked `[inferred]` were detected via regex and may have lower precision
- gRPC, tRPC, and GraphQL resolvers may be partially captured
When in doubt, search the source. The wiki is a starting point, not a complete inventory.
---
_Last compiled: 2026-04-12 · 2 articles · [codesight](https://github.com/Houseofmvps/codesight)_
+5
View File
@@ -0,0 +1,5 @@
# Wiki Log
History of `npx codesight --wiki` runs. Capped at 20 entries.
## [2026-04-12 14:34:19] scan | 0 routes, 0 models, 0 components → 2 articles
+19
View File
@@ -0,0 +1,19 @@
# NowChessSystems — Overview
> **Navigation aid.** This article shows WHERE things live (routes, models, files). Read actual source files before implementing new features or making changes.
**NowChessSystems** is a scala project built with raw-http.
## High-Impact Files
Changes to these files have the widest blast radius across the codebase:
- `modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala` — imported by **28** files
- `modules/api/src/main/scala/de/nowchess/api/board/Square.scala` — imported by **21** files
- `modules/api/src/main/scala/de/nowchess/api/board/Color.scala` — imported by **19** files
- `modules/api/src/main/scala/de/nowchess/api/move/Move.scala` — imported by **14** files
- `modules/api/src/main/scala/de/nowchess/api/board/Board.scala` — imported by **13** files
- `modules/api/src/main/scala/de/nowchess/api/board/Piece.scala` — imported by **10** files
---
_Back to [index.md](./index.md) · Generated 2026-04-12_
+21
View File
@@ -0,0 +1,21 @@
# Project Context
This is a scala project using raw-http.
Middleware includes: custom.
High-impact files (most imported, changes here affect many other files):
- modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala (imported by 50 files)
- modules/api/src/main/scala/de/nowchess/api/board/Square.scala (imported by 33 files)
- modules/api/src/main/scala/de/nowchess/api/board/Color.scala (imported by 30 files)
- modules/api/src/main/scala/de/nowchess/api/move/Move.scala (imported by 29 files)
- modules/api/src/main/scala/de/nowchess/api/board/Board.scala (imported by 19 files)
- modules/api/src/main/scala/de/nowchess/api/board/PieceType.scala (imported by 18 files)
- modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala (imported by 17 files)
- modules/api/src/main/scala/de/nowchess/api/board/Piece.scala (imported by 15 files)
Required environment variables (no defaults):
- STOCKFISH_PATH (modules/bot/python/nnue.py)
Read .codesight/wiki/index.md for orientation (WHERE things live). Then read actual source files before implementing. Wiki articles are navigation aids, not implementation guides.
Read .codesight/CODESIGHT.md for the complete AI context map including all routes, schema, components, libraries, config, middleware, and dependency graph.
+41 -1
View File
@@ -47,4 +47,44 @@ Try to stick to these commands for consistency.
- **Tests are the spec.** Never modify tests to pass; modify requirements or code. Update tests only if requirements change.
- Never read build folders. Ask permission if needed.
- Keep this file up to date with any important decisions or conventions.
- Keep this file up to date with any important decisions or conventions.
---
## Instructions for Claude Code
### Two-Step Rule (mandatory)
**Step 1 — Orient:** Use wiki articles to find WHERE things live.
**Step 2 — Verify:** Read the actual source files listed in the wiki article BEFORE writing any code.
Wiki articles are structural summaries extracted by AST. They show routes, models, and file locations.
They do NOT show full function logic, middleware internals, or dynamic runtime behavior.
**Never write or modify code based solely on wiki content — always read source files first.**
Read in order at session start:
1. `.codesight/wiki/index.md` — orientation map (~200 tokens)
2. `.codesight/wiki/overview.md` — architecture overview (~500 tokens)
3. Domain article (e.g. `.codesight/wiki/auth.md`) → check "Source Files" section → read those files
4. `.codesight/CODESIGHT.md` — full context map for deep exploration
Routes marked `[inferred]` in wiki articles were detected via regex — verify against source before trusting.
If any source file shows ⚠ in the wiki, re-run `codesight --wiki` before proceeding.
Or use the codesight MCP server for on-demand queries:
- `codesight_get_wiki_article` — read a specific wiki article by name
- `codesight_get_wiki_index` — get the wiki index
- `codesight_get_summary` — quick project overview
- `codesight_get_routes --prefix /api/users` — filtered routes
- `codesight_get_blast_radius --file src/lib/db.ts` — impact analysis before changes
- `codesight_get_schema --model users` — specific model details
Only open specific files after consulting codesight context. This saves ~16.893 tokens per conversation.
## graphify
This project has a graphify knowledge graph at graphify-out/.
Rules:
- Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
- After modifying code files in this session, run `python3 -c "from graphify.watch import _rebuild_code; from pathlib import Path; _rebuild_code(Path('.'))"` to keep the graph current
+776
View File
@@ -0,0 +1,776 @@
openapi: 3.0.3
info:
title: NowChess API
description: |
REST API for the NowChess application. Designed to feel familiar to users
of the [lichess API](https://lichess.org/api).
## Authentication
Most endpoints require a Bearer token:
```
Authorization: Bearer <token>
```
Authentication is reserved for future implementation — endpoints are currently
open unless noted otherwise.
## Move notation
Moves are expressed in **UCI notation**: `{from}{to}[promotion]`
- Normal move: `e2e4`
- Capture: `d5e6`
- Promotion: `e7e8q` (q=queen, r=rook, b=bishop, n=knight)
- Castling: `e1g1` (kingside white), `e1c1` (queenside white)
## Streaming
Endpoints that support streaming return **NDJSON** (newline-delimited JSON).
Request them with:
```
Accept: application/x-ndjson
```
Each line of the response is a complete JSON object. Empty lines are
keep-alive heartbeats.
## Rate limiting
Requests that exceed the rate limit receive `429 Too Many Requests`.
Honour the `Retry-After` response header and wait before retrying.
version: 1.0.0
contact:
name: NowChess
license:
name: MIT
servers:
- url: http://localhost:8080
description: Local development server
tags:
- name: game
description: Create and manage chess games
- name: move
description: Make moves and navigate game history
- name: draw
description: Draw offers and claims
- name: import
description: Load a game from FEN or PGN
- name: export
description: Export a game as FEN or PGN
paths:
# ---------------------------------------------------------------------------
# Game lifecycle
# ---------------------------------------------------------------------------
/api/board/game:
post:
operationId: createGame
tags: [game]
summary: Create a new game
description: |
Creates a new chess game starting from the initial position.
Returns the full game state including the generated `gameId`.
security:
- bearerAuth: []
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGameRequest'
responses:
'201':
description: Game created
content:
application/json:
schema:
$ref: '#/components/schemas/GameFull'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}:
get:
operationId: getGame
tags: [game]
summary: Get game state
description: Returns the full current state of a game.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: Current game state
content:
application/json:
schema:
$ref: '#/components/schemas/GameFull'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}/stream:
get:
operationId: streamGame
tags: [game]
summary: Stream game events
description: |
Opens a persistent NDJSON stream for a game. The first object sent is
a `gameFull` event containing the complete game state. Subsequent
objects are `gameState` events sent whenever the game changes (move
made, draw offered, game over, etc.).
Empty lines are heartbeats to keep the connection alive.
Connect with:
```
Accept: application/x-ndjson
```
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: NDJSON event stream
content:
application/x-ndjson:
schema:
oneOf:
- $ref: '#/components/schemas/GameFullEvent'
- $ref: '#/components/schemas/GameStateEvent'
- $ref: '#/components/schemas/ErrorEvent'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}/resign:
post:
operationId: resignGame
tags: [game]
summary: Resign the game
description: The active player resigns. The game ends immediately.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: Resignation accepted
content:
application/json:
schema:
$ref: '#/components/schemas/OkResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
# ---------------------------------------------------------------------------
# Move-making
# ---------------------------------------------------------------------------
/api/board/game/{gameId}/move/{uci}:
post:
operationId: makeMove
tags: [move]
summary: Make a move
description: |
Submit a move in UCI notation. The move must be legal for the side
currently to move.
For promotion moves include the target piece as the fifth character:
`e7e8q`, `a2a1r`, etc.
If the move results in a pawn reaching the back rank and no promotion
character is supplied, the game enters `promotionPending` status and
the move is not yet applied — resubmit with the promotion character.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
- name: uci
in: path
required: true
description: Move in UCI notation (e.g. `e2e4`, `e7e8q`)
schema:
type: string
pattern: '^[a-h][1-8][a-h][1-8][qrbn]?$'
example: e2e4
responses:
'200':
description: Move applied — returns updated game state
content:
application/json:
schema:
$ref: '#/components/schemas/GameState'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}/moves:
get:
operationId: getLegalMoves
tags: [move]
summary: Get legal moves
description: |
Returns all legal moves for the side currently to move.
Optionally filter to moves originating from a single square.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
- name: square
in: query
required: false
description: Filter to moves from this square (e.g. `e2`)
schema:
type: string
pattern: '^[a-h][1-8]$'
example: e2
responses:
'200':
description: List of legal moves
content:
application/json:
schema:
$ref: '#/components/schemas/LegalMovesResponse'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}/undo:
post:
operationId: undoMove
tags: [move]
summary: Undo the last move
description: Reverts the most recent move. Returns the updated game state.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: Move undone
content:
application/json:
schema:
$ref: '#/components/schemas/GameState'
'400':
description: No moves to undo
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}/redo:
post:
operationId: redoMove
tags: [move]
summary: Redo a previously undone move
description: Re-applies the next move in the undo stack. Returns the updated game state.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: Move redone
content:
application/json:
schema:
$ref: '#/components/schemas/GameState'
'400':
description: No moves to redo
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
# ---------------------------------------------------------------------------
# Draw handling
# ---------------------------------------------------------------------------
/api/board/game/{gameId}/draw/{action}:
post:
operationId: drawAction
tags: [draw]
summary: Offer, accept, decline, or claim a draw
description: |
Perform a draw-related action:
| Action | Description |
|-----------|-------------|
| `offer` | Offer a draw to the opponent |
| `accept` | Accept the opponent's draw offer |
| `decline` | Decline the opponent's draw offer |
| `claim` | Claim a draw under the fifty-move rule (only valid when `status` is `fiftyMoveAvailable`) |
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
- name: action
in: path
required: true
schema:
type: string
enum: [offer, accept, decline, claim]
responses:
'200':
description: Action accepted
content:
application/json:
schema:
$ref: '#/components/schemas/OkResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
# ---------------------------------------------------------------------------
# Import
# ---------------------------------------------------------------------------
/api/board/game/import/fen:
post:
operationId: importFen
tags: [import]
summary: Load a position from FEN
description: |
Creates a new game from a FEN string. The game starts at the position
described by the FEN; move history prior to that position is not
available.
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportFenRequest'
responses:
'201':
description: Game created from FEN
content:
application/json:
schema:
$ref: '#/components/schemas/GameFull'
'400':
$ref: '#/components/responses/BadRequest'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/import/pgn:
post:
operationId: importPgn
tags: [import]
summary: Load a game from PGN
description: |
Creates a new game by replaying all moves in a PGN string. The game
starts at the position after the final move in the PGN; undo is
available for every replayed move.
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportPgnRequest'
responses:
'201':
description: Game created from PGN
content:
application/json:
schema:
$ref: '#/components/schemas/GameFull'
'400':
$ref: '#/components/responses/BadRequest'
'429':
$ref: '#/components/responses/TooManyRequests'
# ---------------------------------------------------------------------------
# Export
# ---------------------------------------------------------------------------
/api/board/game/{gameId}/export/fen:
get:
operationId: exportFen
tags: [export]
summary: Export current position as FEN
description: Returns the FEN string representing the current board position.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: FEN string
content:
text/plain:
schema:
type: string
example: rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/api/board/game/{gameId}/export/pgn:
get:
operationId: exportPgn
tags: [export]
summary: Export game as PGN
description: Returns the full PGN for the game including headers and move text.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/gameId'
responses:
'200':
description: PGN text
content:
application/x-chess-pgn:
schema:
type: string
example: |
[Event "NowChess game"]
[White "Player1"]
[Black "Player2"]
[Result "*"]
1. e4 e5 2. Nf3 *
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
# =============================================================================
# Components
# =============================================================================
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Personal access token — `Authorization: Bearer <token>`'
parameters:
gameId:
name: gameId
in: path
required: true
description: 8-character alphanumeric game ID (e.g. `Qa7FJNk2`)
schema:
type: string
pattern: '^[A-Za-z0-9]{8}$'
example: Qa7FJNk2
responses:
BadRequest:
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
Unauthorized:
description: Missing or invalid authentication token
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
NotFound:
description: Game not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
TooManyRequests:
description: Rate limit exceeded — see `Retry-After` header
headers:
Retry-After:
description: Seconds to wait before retrying
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
schemas:
# -------------------------------------------------------------------------
# Requests
# -------------------------------------------------------------------------
CreateGameRequest:
type: object
description: Parameters for creating a new game. All fields are optional.
properties:
white:
$ref: '#/components/schemas/PlayerInfo'
black:
$ref: '#/components/schemas/PlayerInfo'
ImportFenRequest:
type: object
required: [fen]
properties:
fen:
type: string
description: Complete FEN string (6 fields)
example: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
white:
$ref: '#/components/schemas/PlayerInfo'
black:
$ref: '#/components/schemas/PlayerInfo'
ImportPgnRequest:
type: object
required: [pgn]
properties:
pgn:
type: string
description: PGN text (headers and move list)
example: "1. e4 e5 2. Nf3 Nc6 *"
# -------------------------------------------------------------------------
# Game state
# -------------------------------------------------------------------------
GameFull:
type: object
description: Complete game information including players and current state.
required: [gameId, white, black, state]
properties:
gameId:
type: string
description: Unique 8-character game identifier
example: Qa7FJNk2
white:
$ref: '#/components/schemas/PlayerInfo'
black:
$ref: '#/components/schemas/PlayerInfo'
state:
$ref: '#/components/schemas/GameState'
GameState:
type: object
description: |
The current game state. Included in `GameFull` and returned by move
endpoints and stream events.
required: [fen, pgn, turn, status, moves, undoAvailable, redoAvailable]
properties:
fen:
type: string
description: FEN string for the current position
example: rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1
pgn:
type: string
description: PGN move text for the full game so far
example: "1. e4"
turn:
type: string
enum: [white, black]
description: The side to move
status:
$ref: '#/components/schemas/GameStatus'
winner:
type: string
enum: [white, black]
description: Set when `status` is `checkmate` or `resign`
nullable: true
moves:
type: array
description: All moves played so far, in UCI notation
items:
type: string
example: [e2e4, e7e5, g1f3]
undoAvailable:
type: boolean
description: Whether `POST /undo` is currently valid
redoAvailable:
type: boolean
description: Whether `POST /redo` is currently valid
GameStatus:
type: string
description: |
Current game status:
| Value | Meaning |
|-------|---------|
| `started` | Game in progress, no special condition |
| `check` | Side to move is in check |
| `checkmate` | Side to move is checkmated — game over |
| `stalemate` | Side to move has no legal moves, not in check — game over (draw) |
| `resign` | A player resigned — game over |
| `draw` | Draw agreed or claimed — game over |
| `drawOffered` | Waiting for the opponent to accept or decline a draw offer |
| `fiftyMoveAvailable` | Fifty-move rule threshold reached; active player may claim draw |
| `promotionPending` | A pawn reached the back rank; awaiting promotion piece selection |
| `insufficientMaterial` | Neither side has enough pieces to deliver checkmate — game over (draw) |
enum:
- started
- check
- checkmate
- stalemate
- resign
- draw
- drawOffered
- fiftyMoveAvailable
- promotionPending
- insufficientMaterial
# -------------------------------------------------------------------------
# Moves
# -------------------------------------------------------------------------
LegalMovesResponse:
type: object
required: [moves]
properties:
moves:
type: array
items:
$ref: '#/components/schemas/LegalMove'
LegalMove:
type: object
required: [from, to, uci, moveType]
properties:
from:
type: string
description: Origin square in algebraic notation
example: e2
to:
type: string
description: Destination square in algebraic notation
example: e4
uci:
type: string
description: Full move in UCI notation
example: e2e4
moveType:
$ref: '#/components/schemas/MoveType'
promotion:
type: string
enum: [queen, rook, bishop, knight]
description: Target piece for promotion moves
nullable: true
MoveType:
type: string
description: Classification of the move
enum:
- normal
- capture
- castleKingside
- castleQueenside
- enPassant
- promotion
# -------------------------------------------------------------------------
# Streaming events
# -------------------------------------------------------------------------
GameFullEvent:
type: object
description: |
First event on a game stream. Contains the complete game snapshot.
required: [type, game]
properties:
type:
type: string
enum: [gameFull]
game:
$ref: '#/components/schemas/GameFull'
GameStateEvent:
type: object
description: |
Emitted on a game stream whenever the game state changes (move played,
draw offered, game over, etc.).
required: [type, state]
properties:
type:
type: string
enum: [gameState]
state:
$ref: '#/components/schemas/GameState'
ErrorEvent:
type: object
description: Emitted on a game stream when an error occurs.
required: [type, error]
properties:
type:
type: string
enum: [error]
error:
$ref: '#/components/schemas/ApiError'
# -------------------------------------------------------------------------
# Shared types
# -------------------------------------------------------------------------
PlayerInfo:
type: object
required: [id, displayName]
properties:
id:
type: string
description: Unique player identifier
example: player1
displayName:
type: string
description: Human-readable display name
example: Alice
OkResponse:
type: object
required: [ok]
properties:
ok:
type: boolean
enum: [true]
ApiError:
type: object
required: [code, message]
properties:
code:
type: string
description: Machine-readable error code
example: INVALID_MOVE
message:
type: string
description: Human-readable error description
example: e2e5 is not a legal move
field:
type: string
description: Request field that caused the error, if applicable
example: uci
nullable: true
+396
View File
@@ -0,0 +1,396 @@
{
"nodes": [
{
"id": "claude_md_project_instructions",
"label": "Now-Chess Project Instructions (CLAUDE.md)",
"file_type": "document",
"source_file": "CLAUDE.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "agents_md_config",
"label": "Agents Configuration (AGENTS.md)",
"file_type": "document",
"source_file": "AGENTS.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "api_changelog",
"label": "API Module Changelog",
"file_type": "document",
"source_file": "modules/api/CHANGELOG.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_changelog",
"label": "UI Module Changelog",
"file_type": "document",
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "rule_changelog",
"label": "Rule Module Changelog",
"file_type": "document",
"source_file": "modules/rule/CHANGELOG.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "io_changelog",
"label": "IO Module Changelog",
"file_type": "document",
"source_file": "modules/io/CHANGELOG.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "core_changelog",
"label": "Core Module Changelog",
"file_type": "document",
"source_file": "modules/core/CHANGELOG.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "bot_python_readme",
"label": "Bot Python Module README",
"file_type": "document",
"source_file": "modules/bot/python/README.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "bot_python_requirements",
"label": "Bot Python Requirements",
"file_type": "document",
"source_file": "modules/bot/python/requirements.txt",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "bot_python_positions",
"label": "Bot Python Positions Dataset",
"file_type": "document",
"source_file": "modules/bot/python/data/positions.txt",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "security_doc",
"label": "Security Documentation",
"file_type": "document",
"source_file": "docs/Security.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "claude_skills_doc",
"label": "Claude Skills Documentation",
"file_type": "document",
"source_file": "docs/Claude-Skills.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "idea_doc",
"label": "Idea Documentation",
"file_type": "document",
"source_file": "docs/idea.md",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "arabian_chess_license",
"label": "Arabian Chess License",
"file_type": "document",
"source_file": "ARABIAN CHESS/license.txt",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_board_sprite_black",
"label": "UI Board Square Black Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/board/board_square_black.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_board_sprite_white",
"label": "UI Board Square White Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/board/board_square_white.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_board_sprite_bottom",
"label": "UI Board Bottom Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/board/board_bottom.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_piece_sprite_black_rook",
"label": "UI Black Rook Piece Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/pieces/black_rook.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_piece_sprite_white_pawn",
"label": "UI White Pawn Piece Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/pieces/white_pawn.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_piece_sprite_white_knight",
"label": "UI White Knight Piece Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/pieces/white_knight.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
},
{
"id": "ui_piece_sprite_black_knight",
"label": "UI Black Knight Piece Sprite",
"file_type": "image",
"source_file": "modules/ui/src/main/resources/sprites/pieces/black_knight.png",
"source_location": null,
"source_url": null,
"captured_at": null,
"author": null,
"contributor": null
}
],
"edges": [
{
"source": "claude_md_project_instructions",
"target": "agents_md_config",
"relation": "references",
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "CLAUDE.md",
"source_location": null,
"weight": 1.0
},
{
"source": "bot_python_readme",
"target": "bot_python_requirements",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.85,
"source_file": "modules/bot/python/README.md",
"source_location": null,
"weight": 1.0
},
{
"source": "bot_python_readme",
"target": "bot_python_positions",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.8,
"source_file": "modules/bot/python/README.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_board_sprite_black",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_board_sprite_white",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_piece_sprite_black_rook",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_piece_sprite_white_pawn",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_piece_sprite_white_knight",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_piece_sprite_black_knight",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "ui_changelog",
"target": "ui_board_sprite_bottom",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.75,
"source_file": "modules/ui/CHANGELOG.md",
"source_location": null,
"weight": 1.0
},
{
"source": "claude_skills_doc",
"target": "agents_md_config",
"relation": "references",
"confidence": "INFERRED",
"confidence_score": 0.7,
"source_file": "docs/Claude-Skills.md",
"source_location": null,
"weight": 1.0
}
],
"hyperedges": [
{
"id": "module_changelogs",
"label": "Module Changelog Documentation",
"nodes": [
"api_changelog",
"ui_changelog",
"rule_changelog",
"io_changelog",
"core_changelog"
],
"relation": "form",
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "modules"
},
{
"id": "ui_sprite_assets",
"label": "UI Sprite Asset Collection",
"nodes": [
"ui_board_sprite_black",
"ui_board_sprite_white",
"ui_board_sprite_bottom",
"ui_piece_sprite_black_rook",
"ui_piece_sprite_white_pawn",
"ui_piece_sprite_white_knight",
"ui_piece_sprite_black_knight"
],
"relation": "participate_in",
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "modules/ui/src/main/resources/sprites"
},
{
"id": "bot_python_components",
"label": "Bot Python Implementation Components",
"nodes": [
"bot_python_readme",
"bot_python_requirements",
"bot_python_positions"
],
"relation": "participate_in",
"confidence": "EXTRACTED",
"confidence_score": 1.0,
"source_file": "modules/bot/python"
}
],
"input_tokens": 0,
"output_tokens": 0
}
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
/usr/bin/python
+413
View File
@@ -0,0 +1,413 @@
# Graph Report - . (2026-04-12)
## Corpus Check
- 78 files · ~273,497 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 480 nodes · 549 edges · 74 communities detected
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
- Token cost: 0 input · 0 output
## God Nodes (most connected - your core abstractions)
1. `DefaultRules` - 35 edges
2. `GameEngine` - 29 edges
3. `ChessBoardView` - 17 edges
4. `FenParserFastParse` - 17 edges
5. `FenParserCombinators` - 16 edges
6. `PgnParser` - 14 edges
7. `FenParser` - 9 edges
8. `CommandInvoker` - 9 edges
9. `GameContext` - 8 edges
10. `FenExporter` - 7 edges
## Surprising Connections (you probably didn't know these)
- None detected - all connections are within the same source files.
## Communities
### Community 0 - "Community 0"
Cohesion: 0.11
Nodes (2): CastlingMove, DefaultRules
### Community 1 - "Community 1"
Cohesion: 0.09
Nodes (17): ClassGap, _compact_ranges(), _find_scoverage_xml(), format_agent(), format_json(), format_markdown(), format_module_gaps(), main() (+9 more)
### Community 2 - "Community 2"
Cohesion: 0.11
Nodes (2): GameEngine, PendingPromotion
### Community 3 - "Community 3"
Cohesion: 0.09
Nodes (4): FenParserCombinators, EmptyToken, FenParserSupport, PieceToken
### Community 4 - "Community 4"
Cohesion: 0.14
Nodes (9): format_module(), load_module(), main(), ModuleResult, parse_suite_xml(), run(), SuiteResult, TestCase (+1 more)
### Community 5 - "Community 5"
Cohesion: 0.2
Nodes (1): ChessBoardView
### Community 6 - "Community 6"
Cohesion: 0.15
Nodes (1): FenParserFastParse
### Community 7 - "Community 7"
Cohesion: 0.12
Nodes (7): InvalidFormat, InvalidMove, MoveCommand, MoveResult, QuitCommand, ResetCommand, Successful
### Community 8 - "Community 8"
Cohesion: 0.12
Nodes (12): BoardResetEvent, CheckDetectedEvent, CheckmateEvent, DrawClaimedEvent, FiftyMoveRuleAvailableEvent, InvalidMoveEvent, MoveExecutedEvent, MoveRedoneEvent (+4 more)
### Community 9 - "Community 9"
Cohesion: 0.26
Nodes (2): PgnGame, PgnParser
### Community 10 - "Community 10"
Cohesion: 0.15
Nodes (3): candidateMoves(), GameEngineIntegrationTest, legalMoves()
### Community 11 - "Community 11"
Cohesion: 0.14
Nodes (1): GameEnginePromotionTest
### Community 12 - "Community 12"
Cohesion: 0.15
Nodes (2): EngineTestHelpers, MockObserver
### Community 13 - "Community 13"
Cohesion: 0.17
Nodes (3): CommandInvokerBranchTest, ConditionalFailCommand, FailingCommand
### Community 14 - "Community 14"
Cohesion: 0.36
Nodes (1): FenParser
### Community 15 - "Community 15"
Cohesion: 0.22
Nodes (1): CommandInvoker
### Community 16 - "Community 16"
Cohesion: 0.31
Nodes (5): applyMove(), Board, removed(), updated(), withMove()
### Community 17 - "Community 17"
Cohesion: 0.22
Nodes (1): GameContext
### Community 18 - "Community 18"
Cohesion: 0.25
Nodes (6): ApiError, ApiResponse, Failure, PagedResponse, Pagination, Success
### Community 19 - "Community 19"
Cohesion: 0.43
Nodes (1): FenExporter
### Community 20 - "Community 20"
Cohesion: 0.29
Nodes (1): CastlingRights
### Community 21 - "Community 21"
Cohesion: 0.4
Nodes (2): ChessGUIApp, ChessGUILauncher
### Community 22 - "Community 22"
Cohesion: 0.5
Nodes (2): offset(), Square
### Community 23 - "Community 23"
Cohesion: 0.4
Nodes (2): PlayerId, PlayerInfo
### Community 24 - "Community 24"
Cohesion: 0.5
Nodes (2): PieceSprites, SquareColors
### Community 25 - "Community 25"
Cohesion: 0.6
Nodes (1): TerminalUI
### Community 26 - "Community 26"
Cohesion: 0.6
Nodes (1): PgnExporter
### Community 27 - "Community 27"
Cohesion: 0.67
Nodes (1): GUIObserver
### Community 28 - "Community 28"
Cohesion: 0.5
Nodes (1): DefaultRulesStateTransitionsTest
### Community 29 - "Community 29"
Cohesion: 0.5
Nodes (2): EndingMockObserver, GameEngineGameEndingTest
### Community 30 - "Community 30"
Cohesion: 0.5
Nodes (2): GameEngineLoadGameTest, MockObserver
### Community 31 - "Community 31"
Cohesion: 0.5
Nodes (1): CommandInvokerTest
### Community 32 - "Community 32"
Cohesion: 0.67
Nodes (1): Parser
### Community 33 - "Community 33"
Cohesion: 0.67
Nodes (0):
### Community 34 - "Community 34"
Cohesion: 0.67
Nodes (1): Main
### Community 35 - "Community 35"
Cohesion: 0.67
Nodes (1): Renderer
### Community 36 - "Community 36"
Cohesion: 0.67
Nodes (1): PgnExporterTest
### Community 37 - "Community 37"
Cohesion: 0.67
Nodes (1): FenExporterTest
### Community 38 - "Community 38"
Cohesion: 0.67
Nodes (1): GameEngineNotationTest
### Community 39 - "Community 39"
Cohesion: 0.67
Nodes (1): MoveCommandTest
### Community 40 - "Community 40"
Cohesion: 1.0
Nodes (1): PieceTest
### Community 41 - "Community 41"
Cohesion: 1.0
Nodes (1): PieceTypeTest
### Community 42 - "Community 42"
Cohesion: 1.0
Nodes (1): SquareTest
### Community 43 - "Community 43"
Cohesion: 1.0
Nodes (1): CastlingRightsTest
### Community 44 - "Community 44"
Cohesion: 1.0
Nodes (1): BoardTest
### Community 45 - "Community 45"
Cohesion: 1.0
Nodes (1): ColorTest
### Community 46 - "Community 46"
Cohesion: 1.0
Nodes (1): MoveTest
### Community 47 - "Community 47"
Cohesion: 1.0
Nodes (1): GameContextTest
### Community 48 - "Community 48"
Cohesion: 1.0
Nodes (1): ApiResponseTest
### Community 49 - "Community 49"
Cohesion: 1.0
Nodes (1): PlayerInfoTest
### Community 50 - "Community 50"
Cohesion: 1.0
Nodes (0):
### Community 51 - "Community 51"
Cohesion: 1.0
Nodes (1): Piece
### Community 52 - "Community 52"
Cohesion: 1.0
Nodes (1): Move
### Community 53 - "Community 53"
Cohesion: 1.0
Nodes (1): RendererAndUnicodeTest
### Community 54 - "Community 54"
Cohesion: 1.0
Nodes (0):
### Community 55 - "Community 55"
Cohesion: 1.0
Nodes (1): DefaultRulesTest
### Community 56 - "Community 56"
Cohesion: 1.0
Nodes (1): PgnParserTest
### Community 57 - "Community 57"
Cohesion: 1.0
Nodes (1): PgnValidatorTest
### Community 58 - "Community 58"
Cohesion: 1.0
Nodes (1): FenParserCombinatorsTest
### Community 59 - "Community 59"
Cohesion: 1.0
Nodes (1): FenParserTest
### Community 60 - "Community 60"
Cohesion: 1.0
Nodes (1): FenParserFastParseTest
### Community 61 - "Community 61"
Cohesion: 1.0
Nodes (1): ParserTest
### Community 62 - "Community 62"
Cohesion: 1.0
Nodes (1): GameEngineOutcomesTest
### Community 63 - "Community 63"
Cohesion: 1.0
Nodes (1): GameEngineSpecialMovesTest
### Community 64 - "Community 64"
Cohesion: 1.0
Nodes (1): GameEngineScenarioTest
### Community 65 - "Community 65"
Cohesion: 1.0
Nodes (1): CommandTest
### Community 66 - "Community 66"
Cohesion: 1.0
Nodes (0):
### Community 67 - "Community 67"
Cohesion: 1.0
Nodes (0):
### Community 68 - "Community 68"
Cohesion: 1.0
Nodes (0):
### Community 69 - "Community 69"
Cohesion: 1.0
Nodes (0):
### Community 70 - "Community 70"
Cohesion: 1.0
Nodes (0):
### Community 71 - "Community 71"
Cohesion: 1.0
Nodes (1): Strip the package prefix from the full method path.
### Community 72 - "Community 72"
Cohesion: 1.0
Nodes (1): Lines that are branch points and have at least one uncovered branch statement.
### Community 73 - "Community 73"
Cohesion: 1.0
Nodes (0):
## Knowledge Gaps
- **55 isolated node(s):** `PieceTest`, `PieceTypeTest`, `SquareTest`, `CastlingRightsTest`, `BoardTest` (+50 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 40`** (2 nodes): `PieceTest.scala`, `PieceTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 41`** (2 nodes): `PieceTypeTest.scala`, `PieceTypeTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 42`** (2 nodes): `SquareTest.scala`, `SquareTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 43`** (2 nodes): `CastlingRightsTest.scala`, `CastlingRightsTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 44`** (2 nodes): `BoardTest.scala`, `BoardTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 45`** (2 nodes): `ColorTest.scala`, `ColorTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 46`** (2 nodes): `MoveTest.scala`, `MoveTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 47`** (2 nodes): `GameContextTest.scala`, `GameContextTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 48`** (2 nodes): `ApiResponseTest.scala`, `ApiResponseTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 49`** (2 nodes): `PlayerInfoTest.scala`, `PlayerInfoTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 50`** (2 nodes): `PieceType.scala`, `label()`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 51`** (2 nodes): `Piece.scala`, `Piece`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 52`** (2 nodes): `Move.scala`, `Move`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 53`** (2 nodes): `RendererAndUnicodeTest.scala`, `RendererAndUnicodeTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 54`** (2 nodes): `PieceUnicode.scala`, `unicode()`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 55`** (2 nodes): `DefaultRulesTest.scala`, `DefaultRulesTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 56`** (2 nodes): `PgnParserTest.scala`, `PgnParserTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 57`** (2 nodes): `PgnValidatorTest.scala`, `PgnValidatorTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 58`** (2 nodes): `FenParserCombinatorsTest.scala`, `FenParserCombinatorsTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 59`** (2 nodes): `FenParserTest.scala`, `FenParserTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 60`** (2 nodes): `FenParserFastParseTest.scala`, `FenParserFastParseTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 61`** (2 nodes): `ParserTest.scala`, `ParserTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 62`** (2 nodes): `GameEngineOutcomesTest.scala`, `GameEngineOutcomesTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 63`** (2 nodes): `GameEngineSpecialMovesTest.scala`, `GameEngineSpecialMovesTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 64`** (2 nodes): `GameEngineScenarioTest.scala`, `GameEngineScenarioTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 65`** (2 nodes): `CommandTest.scala`, `CommandTest`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 66`** (1 nodes): `build.gradle.kts`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 67`** (1 nodes): `settings.gradle.kts`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 68`** (1 nodes): `RuleSet.scala`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 69`** (1 nodes): `GameContextImport.scala`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 70`** (1 nodes): `GameContextExport.scala`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 71`** (1 nodes): `Strip the package prefix from the full method path.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 72`** (1 nodes): `Lines that are branch points and have at least one uncovered branch statement.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 73`** (1 nodes): `test_counter.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `FenParserFastParse` connect `Community 6` to `Community 3`?**
_High betweenness centrality (0.004) - this node is a cross-community bridge._
- **What connects `PieceTest`, `PieceTypeTest`, `SquareTest` to the rest of the system?**
_55 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.11 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.09 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.11 - nodes in this community are weakly interconnected._
- **Should `Community 3` be split into smaller, more focused modules?**
_Cohesion score 0.09 - nodes in this community are weakly interconnected._
- **Should `Community 4` be split into smaller, more focused modules?**
_Cohesion score 0.14 - nodes in this community are weakly interconnected._
@@ -0,0 +1 @@
{"nodes": [{"id": "commandinvokertest", "label": "CommandInvokerTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L1"}, {"id": "commandinvokertest_commandinvokertest", "label": "CommandInvokerTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L8"}, {"id": "commandinvokertest_commandinvokertest_sq", "label": ".sq()", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L10"}, {"id": "commandinvokertest_commandinvokertest_createmovecommand", "label": ".createMoveCommand()", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L12"}], "edges": [{"source": "commandinvokertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "commandinvokertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "commandinvokertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "commandinvokertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "commandinvokertest", "target": "commandinvokertest_commandinvokertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "commandinvokertest_commandinvokertest", "target": "commandinvokertest_commandinvokertest_sq", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L10", "weight": 1.0}, {"source": "commandinvokertest_commandinvokertest", "target": "commandinvokertest_commandinvokertest_createmovecommand", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerTest.scala", "source_location": "L12", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "build_gradle", "label": "build.gradle.kts", "file_type": "code", "source_file": "modules/ui/build.gradle.kts", "source_location": "L1"}], "edges": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "nnuebot", "label": "NNUEBot.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L1"}, {"id": "nnuebot_nnuebot", "label": "NNUEBot", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L12"}, {"id": "nnuebot_nnuebot_nextmove", "label": ".nextMove()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L23"}], "edges": [{"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L3", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L4", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L5", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L6", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L7", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L8", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L9", "weight": 1.0}, {"source": "nnuebot", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L10", "weight": 1.0}, {"source": "nnuebot", "target": "nnuebot_nnuebot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L12", "weight": 1.0}, {"source": "nnuebot_nnuebot", "target": "nnuebot_nnuebot_nextmove", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/NNUEBot.scala", "source_location": "L23", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "pgnexporter", "label": "PgnExporter.scala", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L1"}, {"id": "pgnexporter_pgnexporter", "label": "PgnExporter", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L9"}, {"id": "pgnexporter_pgnexporter_exportgamecontext", "label": ".exportGameContext()", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L12"}, {"id": "pgnexporter_pgnexporter_exportgame", "label": ".exportGame()", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L23"}, {"id": "pgnexporter_pgnexporter_movetoalgebraic", "label": ".moveToAlgebraic()", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L53"}], "edges": [{"source": "pgnexporter", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L3", "weight": 1.0}, {"source": "pgnexporter", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L4", "weight": 1.0}, {"source": "pgnexporter", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L5", "weight": 1.0}, {"source": "pgnexporter", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L6", "weight": 1.0}, {"source": "pgnexporter", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L7", "weight": 1.0}, {"source": "pgnexporter", "target": "pgnexporter_pgnexporter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L9", "weight": 1.0}, {"source": "pgnexporter_pgnexporter", "target": "pgnexporter_pgnexporter_exportgamecontext", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L12", "weight": 1.0}, {"source": "pgnexporter_pgnexporter", "target": "pgnexporter_pgnexporter_exportgame", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L23", "weight": 1.0}, {"source": "pgnexporter_pgnexporter", "target": "pgnexporter_pgnexporter_movetoalgebraic", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L53", "weight": 1.0}, {"source": "pgnexporter_pgnexporter_exportgamecontext", "target": "pgnexporter_pgnexporter_exportgame", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L20", "weight": 1.0}, {"source": "pgnexporter_pgnexporter_exportgame", "target": "pgnexporter_pgnexporter_movetoalgebraic", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala", "source_location": "L32", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "piece", "label": "Piece.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Piece.scala", "source_location": "L1"}, {"id": "piece_piece", "label": "Piece", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Piece.scala", "source_location": "L4"}], "edges": [{"source": "piece", "target": "piece_piece", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Piece.scala", "source_location": "L4", "weight": 1.0}, {"source": "piece", "target": "piece_piece", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Piece.scala", "source_location": "L6", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "commandinvoker", "label": "CommandInvoker.scala", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L1"}, {"id": "commandinvoker_commandinvoker", "label": "CommandInvoker", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L4"}, {"id": "commandinvoker_commandinvoker_execute", "label": ".execute()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L11"}, {"id": "commandinvoker_commandinvoker_undo", "label": ".undo()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L24"}, {"id": "commandinvoker_commandinvoker_redo", "label": ".redo()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L37"}, {"id": "commandinvoker_commandinvoker_history", "label": ".history()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L50"}, {"id": "commandinvoker_commandinvoker_getcurrentindex", "label": ".getCurrentIndex()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L55"}, {"id": "commandinvoker_commandinvoker_clear", "label": ".clear()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L60"}, {"id": "commandinvoker_commandinvoker_canundo", "label": ".canUndo()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L66"}, {"id": "commandinvoker_commandinvoker_canredo", "label": ".canRedo()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L71"}], "edges": [{"source": "commandinvoker", "target": "commandinvoker_commandinvoker", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L4", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_execute", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L11", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_undo", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L24", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_redo", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L37", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L50", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_getcurrentindex", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L55", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_clear", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L60", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_canundo", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L66", "weight": 1.0}, {"source": "commandinvoker_commandinvoker", "target": "commandinvoker_commandinvoker_canredo", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L71", "weight": 1.0}, {"source": "commandinvoker_commandinvoker_redo", "target": "commandinvoker_commandinvoker_execute", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/command/CommandInvoker.scala", "source_location": "L40", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "squaretest", "label": "SquareTest.scala", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/SquareTest.scala", "source_location": "L1"}, {"id": "squaretest_squaretest", "label": "SquareTest", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/SquareTest.scala", "source_location": "L6"}], "edges": [{"source": "squaretest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/SquareTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "squaretest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/SquareTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "squaretest", "target": "squaretest_squaretest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/SquareTest.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "guiobserver", "label": "GUIObserver.scala", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L1"}, {"id": "guiobserver_guiobserver", "label": "GUIObserver", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L13"}, {"id": "guiobserver_guiobserver_ongameevent", "label": ".onGameEvent()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L15"}, {"id": "guiobserver_guiobserver_showalert", "label": ".showAlert()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L73"}], "edges": [{"source": "guiobserver", "target": "scalafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L3", "weight": 1.0}, {"source": "guiobserver", "target": "scalafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L4", "weight": 1.0}, {"source": "guiobserver", "target": "scalafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L5", "weight": 1.0}, {"source": "guiobserver", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L6", "weight": 1.0}, {"source": "guiobserver", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L7", "weight": 1.0}, {"source": "guiobserver", "target": "guiobserver_guiobserver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L13", "weight": 1.0}, {"source": "guiobserver_guiobserver", "target": "guiobserver_guiobserver_ongameevent", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L15", "weight": 1.0}, {"source": "guiobserver_guiobserver", "target": "guiobserver_guiobserver_showalert", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L73", "weight": 1.0}, {"source": "guiobserver_guiobserver_ongameevent", "target": "guiobserver_guiobserver_showalert", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/GUIObserver.scala", "source_location": "L31", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "gamecontextexport", "label": "GameContextExport.scala", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala", "source_location": "L1"}], "edges": [{"source": "gamecontextexport", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala", "source_location": "L3", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "apiresponsetest", "label": "ApiResponseTest.scala", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/response/ApiResponseTest.scala", "source_location": "L1"}, {"id": "apiresponsetest_apiresponsetest", "label": "ApiResponseTest", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/response/ApiResponseTest.scala", "source_location": "L6"}], "edges": [{"source": "apiresponsetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/response/ApiResponseTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "apiresponsetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/response/ApiResponseTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "apiresponsetest", "target": "apiresponsetest_apiresponsetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/response/ApiResponseTest.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gameenginewithbottest", "label": "GameEngineWithBotTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L1"}, {"id": "gameenginewithbottest_gameenginewithbottest", "label": "GameEngineWithBotTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L14"}, {"id": "gameenginewithbottest_ongameevent", "label": "onGameEvent()", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L29"}], "edges": [{"source": "gameenginewithbottest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L10", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "scala", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L11", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "scala", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L12", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "gameenginewithbottest_gameenginewithbottest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L14", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "gameenginewithbottest_ongameevent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L29", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "gameenginewithbottest_ongameevent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L75", "weight": 1.0}, {"source": "gameenginewithbottest", "target": "gameenginewithbottest_ongameevent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineWithBotTest.scala", "source_location": "L99", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "botdifficultytest", "label": "BotDifficultyTest.scala", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/BotDifficultyTest.scala", "source_location": "L1"}, {"id": "botdifficultytest_botdifficultytest", "label": "BotDifficultyTest", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/BotDifficultyTest.scala", "source_location": "L6"}], "edges": [{"source": "botdifficultytest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/BotDifficultyTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "botdifficultytest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/BotDifficultyTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "botdifficultytest", "target": "botdifficultytest_botdifficultytest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/BotDifficultyTest.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gameengineloadgametest", "label": "GameEngineLoadGameTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L1"}, {"id": "gameengineloadgametest_gameengineloadgametest", "label": "GameEngineLoadGameTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L14"}, {"id": "gameengineloadgametest_mockobserver", "label": "MockObserver", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L40"}, {"id": "gameengineloadgametest_mockobserver_ongameevent", "label": ".onGameEvent()", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L42"}], "edges": [{"source": "gameengineloadgametest", "target": "scala", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L10", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L11", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L12", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "gameengineloadgametest_gameengineloadgametest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L14", "weight": 1.0}, {"source": "gameengineloadgametest", "target": "gameengineloadgametest_mockobserver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L40", "weight": 1.0}, {"source": "gameengineloadgametest_mockobserver", "target": "gameengineloadgametest_mockobserver_ongameevent", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala", "source_location": "L42", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gamecontextimport", "label": "GameContextImport.scala", "file_type": "code", "source_file": "modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala", "source_location": "L1"}], "edges": [{"source": "gamecontextimport", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala", "source_location": "L3", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "settings_gradle", "label": "settings.gradle.kts", "file_type": "code", "source_file": "settings.gradle.kts", "source_location": "L1"}], "edges": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "generate", "label": "generate.py", "file_type": "code", "source_file": "modules/bot/python/src/generate.py", "source_location": "L1"}, {"id": "generate_worker_generate_games", "label": "_worker_generate_games()", "file_type": "code", "source_file": "modules/bot/python/src/generate.py", "source_location": "L13"}, {"id": "generate_play_random_game_and_collect_positions", "label": "play_random_game_and_collect_positions()", "file_type": "code", "source_file": "modules/bot/python/src/generate.py", "source_location": "L64"}, {"id": "generate_rationale_14", "label": "Generate games for one worker. Returns: list of FENs generated by t", "file_type": "rationale", "source_file": "modules/bot/python/src/generate.py", "source_location": "L14"}, {"id": "generate_rationale_72", "label": "Generate positions using multiprocessing with multiple workers. Args:", "file_type": "rationale", "source_file": "modules/bot/python/src/generate.py", "source_location": "L72"}], "edges": [{"source": "generate", "target": "chess", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L4", "weight": 1.0}, {"source": "generate", "target": "random", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L5", "weight": 1.0}, {"source": "generate", "target": "sys", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L6", "weight": 1.0}, {"source": "generate", "target": "pathlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L7", "weight": 1.0}, {"source": "generate", "target": "tqdm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L8", "weight": 1.0}, {"source": "generate", "target": "multiprocessing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L9", "weight": 1.0}, {"source": "generate", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L10", "weight": 1.0}, {"source": "generate", "target": "time", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L11", "weight": 1.0}, {"source": "generate", "target": "generate_worker_generate_games", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L13", "weight": 1.0}, {"source": "generate", "target": "generate_play_random_game_and_collect_positions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L64", "weight": 1.0}, {"source": "generate", "target": "argparse", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L144", "weight": 1.0}, {"source": "generate_rationale_14", "target": "generate_worker_generate_games", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L14", "weight": 1.0}, {"source": "generate_rationale_72", "target": "generate_play_random_game_and_collect_positions", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/generate.py", "source_location": "L72", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "config", "label": "Config.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/Config.scala", "source_location": "L1"}, {"id": "config_config", "label": "Config", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/Config.scala", "source_location": "L3"}], "edges": [{"source": "config", "target": "config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/Config.scala", "source_location": "L3", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "pieceunicode", "label": "PieceUnicode.scala", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/PieceUnicode.scala", "source_location": "L1"}, {"id": "pieceunicode_unicode", "label": "unicode()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/PieceUnicode.scala", "source_location": "L6"}], "edges": [{"source": "pieceunicode", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/PieceUnicode.scala", "source_location": "L3", "weight": 1.0}, {"source": "pieceunicode", "target": "pieceunicode_unicode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/PieceUnicode.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "test_counter", "label": "test_counter.py", "file_type": "code", "source_file": "jacoco-reporter/test_counter.py", "source_location": "L1"}], "edges": [{"source": "test_counter", "target": "glob", "relation": "imports", "confidence": "EXTRACTED", "source_file": "jacoco-reporter/test_counter.py", "source_location": "L1", "weight": 1.0}, {"source": "test_counter", "target": "re", "relation": "imports", "confidence": "EXTRACTED", "source_file": "jacoco-reporter/test_counter.py", "source_location": "L1", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gamecontext", "label": "GameContext.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L1"}, {"id": "gamecontext_gamecontext", "label": "GameContext", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L9"}, {"id": "gamecontext_gamecontext_withboard", "label": ".withBoard()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L18"}, {"id": "gamecontext_gamecontext_withturn", "label": ".withTurn()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L21"}, {"id": "gamecontext_gamecontext_withcastlingrights", "label": ".withCastlingRights()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L24"}, {"id": "gamecontext_gamecontext_withenpassantsquare", "label": ".withEnPassantSquare()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L27"}, {"id": "gamecontext_gamecontext_withhalfmoveclock", "label": ".withHalfMoveClock()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L30"}, {"id": "gamecontext_gamecontext_withmove", "label": ".withMove()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L33"}, {"id": "gamecontext_gamecontext_initial", "label": ".initial()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L37"}], "edges": [{"source": "gamecontext", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L3", "weight": 1.0}, {"source": "gamecontext", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L4", "weight": 1.0}, {"source": "gamecontext", "target": "gamecontext_gamecontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L9", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_withboard", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L18", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_withturn", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L21", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_withcastlingrights", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L24", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_withenpassantsquare", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L27", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_withhalfmoveclock", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L30", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_withmove", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L33", "weight": 1.0}, {"source": "gamecontext", "target": "gamecontext_gamecontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L35", "weight": 1.0}, {"source": "gamecontext_gamecontext", "target": "gamecontext_gamecontext_initial", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L37", "weight": 1.0}, {"source": "gamecontext_gamecontext_initial", "target": "gamecontext_gamecontext", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala", "source_location": "L37", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "chessgui", "label": "ChessGUI.scala", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L1"}, {"id": "chessgui_chessguiapp", "label": "ChessGUIApp", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L14"}, {"id": "chessgui_chessguiapp_start", "label": ".start()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L16"}, {"id": "chessgui_chessguilauncher", "label": "ChessGUILauncher", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L51"}, {"id": "chessgui_chessguilauncher_getengine", "label": ".getEngine()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L54"}, {"id": "chessgui_chessguilauncher_launch", "label": ".launch()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L56"}], "edges": [{"source": "chessgui", "target": "javafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L3", "weight": 1.0}, {"source": "chessgui", "target": "javafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L4", "weight": 1.0}, {"source": "chessgui", "target": "scalafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L5", "weight": 1.0}, {"source": "chessgui", "target": "scalafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L6", "weight": 1.0}, {"source": "chessgui", "target": "scalafx", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L7", "weight": 1.0}, {"source": "chessgui", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L8", "weight": 1.0}, {"source": "chessgui", "target": "chessgui_chessguiapp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L14", "weight": 1.0}, {"source": "chessgui_chessguiapp", "target": "chessgui_chessguiapp_start", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L16", "weight": 1.0}, {"source": "chessgui", "target": "chessgui_chessguilauncher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L51", "weight": 1.0}, {"source": "chessgui_chessguilauncher", "target": "chessgui_chessguilauncher_getengine", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L54", "weight": 1.0}, {"source": "chessgui_chessguilauncher", "target": "chessgui_chessguilauncher_launch", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L56", "weight": 1.0}, {"source": "chessgui_chessguilauncher_launch", "target": "chessgui_chessguiapp_start", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/gui/ChessGUI.scala", "source_location": "L63", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "nnue", "label": "NNUE.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L1"}, {"id": "nnue_nnue", "label": "NNUE", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L8"}, {"id": "nnue_nnue_loadweights", "label": ".loadWeights()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L12"}, {"id": "nnue_nnue_readtensor", "label": ".readTensor()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L46"}, {"id": "nnue_nnue_positiontofeatures", "label": ".positionToFeatures()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L72"}, {"id": "nnue_nnue_evaluate", "label": ".evaluate()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L98"}, {"id": "nnue_nnue_benchmark", "label": ".benchmark()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L148"}], "edges": [{"source": "nnue", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L3", "weight": 1.0}, {"source": "nnue", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L4", "weight": 1.0}, {"source": "nnue", "target": "java", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L5", "weight": 1.0}, {"source": "nnue", "target": "java", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L6", "weight": 1.0}, {"source": "nnue", "target": "nnue_nnue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L8", "weight": 1.0}, {"source": "nnue_nnue", "target": "nnue_nnue_loadweights", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L12", "weight": 1.0}, {"source": "nnue_nnue", "target": "nnue_nnue_readtensor", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L46", "weight": 1.0}, {"source": "nnue_nnue", "target": "nnue_nnue_positiontofeatures", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L72", "weight": 1.0}, {"source": "nnue_nnue", "target": "nnue_nnue_evaluate", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L98", "weight": 1.0}, {"source": "nnue_nnue", "target": "nnue_nnue_benchmark", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L148", "weight": 1.0}, {"source": "nnue_nnue_loadweights", "target": "nnue_nnue_readtensor", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L32", "weight": 1.0}, {"source": "nnue_nnue_evaluate", "target": "nnue_nnue_positiontofeatures", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L99", "weight": 1.0}, {"source": "nnue_nnue_benchmark", "target": "nnue_nnue_evaluate", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/NNUE.scala", "source_location": "L154", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "pgnexportertest", "label": "PgnExporterTest.scala", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L1"}, {"id": "pgnexportertest_pgnexportertest", "label": "PgnExporterTest", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L9"}, {"id": "pgnexportertest_pgnexportertest_sq", "label": ".sq()", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L66"}], "edges": [{"source": "pgnexportertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "pgnexportertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "pgnexportertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "pgnexportertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "pgnexportertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "pgnexportertest", "target": "pgnexportertest_pgnexportertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "pgnexportertest_pgnexportertest", "target": "pgnexportertest_pgnexportertest_sq", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala", "source_location": "L66", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "test_counter", "label": "test_counter.py", "file_type": "code", "source_file": "jacoco-reporter/test_counter.py", "source_location": "L1"}], "edges": [{"source": "test_counter", "target": "glob", "relation": "imports", "confidence": "EXTRACTED", "source_file": "jacoco-reporter/test_counter.py", "source_location": "L1", "weight": 1.0}, {"source": "test_counter", "target": "re", "relation": "imports", "confidence": "EXTRACTED", "source_file": "jacoco-reporter/test_counter.py", "source_location": "L1", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gameenginespecialmovestest", "label": "GameEngineSpecialMovesTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L1"}, {"id": "gameenginespecialmovestest_gameenginespecialmovestest", "label": "GameEngineSpecialMovesTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L9"}], "edges": [{"source": "gameenginespecialmovestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "gameenginespecialmovestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "gameenginespecialmovestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "gameenginespecialmovestest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "gameenginespecialmovestest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "gameenginespecialmovestest", "target": "gameenginespecialmovestest_gameenginespecialmovestest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala", "source_location": "L9", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "build_gradle", "label": "build.gradle.kts", "file_type": "code", "source_file": "modules/core/build.gradle.kts", "source_location": "L1"}], "edges": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "build_gradle", "label": "build.gradle.kts", "file_type": "code", "source_file": "modules/core/build.gradle.kts", "source_location": "L1"}], "edges": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "label", "label": "label.py", "file_type": "code", "source_file": "modules/bot/python/src/label.py", "source_location": "L1"}, {"id": "label_normalize_evaluation", "label": "normalize_evaluation()", "file_type": "code", "source_file": "modules/bot/python/src/label.py", "source_location": "L14"}, {"id": "label_evaluate_fen_batch", "label": "_evaluate_fen_batch()", "file_type": "code", "source_file": "modules/bot/python/src/label.py", "source_location": "L32"}, {"id": "label_label_positions_with_stockfish", "label": "label_positions_with_stockfish()", "file_type": "code", "source_file": "modules/bot/python/src/label.py", "source_location": "L82"}, {"id": "label_rationale_15", "label": "Normalize centipawn evaluation to a bounded range. Args: cp_value:", "file_type": "rationale", "source_file": "modules/bot/python/src/label.py", "source_location": "L15"}, {"id": "label_rationale_33", "label": "Worker function to evaluate a batch of FENs with Stockfish threading. Args:", "file_type": "rationale", "source_file": "modules/bot/python/src/label.py", "source_location": "L33"}, {"id": "label_rationale_83", "label": "Read positions and label them with Stockfish evaluations. Args: pos", "file_type": "rationale", "source_file": "modules/bot/python/src/label.py", "source_location": "L83"}], "edges": [{"source": "label", "target": "json", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L4", "weight": 1.0}, {"source": "label", "target": "chess_engine", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L5", "weight": 1.0}, {"source": "label", "target": "sys", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L6", "weight": 1.0}, {"source": "label", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L7", "weight": 1.0}, {"source": "label", "target": "numpy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L8", "weight": 1.0}, {"source": "label", "target": "pathlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L9", "weight": 1.0}, {"source": "label", "target": "tqdm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L10", "weight": 1.0}, {"source": "label", "target": "multiprocessing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L11", "weight": 1.0}, {"source": "label", "target": "functools", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L12", "weight": 1.0}, {"source": "label", "target": "label_normalize_evaluation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L14", "weight": 1.0}, {"source": "label", "target": "label_evaluate_fen_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L32", "weight": 1.0}, {"source": "label", "target": "label_label_positions_with_stockfish", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L82", "weight": 1.0}, {"source": "label", "target": "argparse", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L279", "weight": 1.0}, {"source": "label_evaluate_fen_batch", "target": "label_normalize_evaluation", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L70", "weight": 1.0}, {"source": "label_rationale_15", "target": "label_normalize_evaluation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L15", "weight": 1.0}, {"source": "label_rationale_33", "target": "label_evaluate_fen_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L33", "weight": 1.0}, {"source": "label_rationale_83", "target": "label_label_positions_with_stockfish", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "modules/bot/python/src/label.py", "source_location": "L83", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "movecommandtest", "label": "MoveCommandTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L1"}, {"id": "movecommandtest_movecommandtest", "label": "MoveCommandTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L8"}, {"id": "movecommandtest_movecommandtest_sq", "label": ".sq()", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L10"}], "edges": [{"source": "movecommandtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "movecommandtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "movecommandtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "movecommandtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "movecommandtest", "target": "movecommandtest_movecommandtest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "movecommandtest_movecommandtest", "target": "movecommandtest_movecommandtest_sq", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala", "source_location": "L10", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "polyglothashtest", "label": "PolyglotHashTest.scala", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L1"}, {"id": "polyglothashtest_polyglothashtest", "label": "PolyglotHashTest", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L10"}], "edges": [{"source": "polyglothashtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "polyglothashtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "polyglothashtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "polyglothashtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "polyglothashtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "polyglothashtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "polyglothashtest", "target": "polyglothashtest_polyglothashtest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotHashTest.scala", "source_location": "L10", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "piecetest", "label": "PieceTest.scala", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTest.scala", "source_location": "L1"}, {"id": "piecetest_piecetest", "label": "PieceTest", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTest.scala", "source_location": "L6"}], "edges": [{"source": "piecetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "piecetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "piecetest", "target": "piecetest_piecetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTest.scala", "source_location": "L6", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "main", "label": "Main.scala", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L1"}, {"id": "main_main", "label": "Main", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L14"}, {"id": "main_main_main", "label": ".main()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L15"}], "edges": [{"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L3", "weight": 1.0}, {"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L4", "weight": 1.0}, {"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L5", "weight": 1.0}, {"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L6", "weight": 1.0}, {"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L7", "weight": 1.0}, {"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L8", "weight": 1.0}, {"source": "main", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L9", "weight": 1.0}, {"source": "main", "target": "main_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L14", "weight": 1.0}, {"source": "main_main", "target": "main_main_main", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/Main.scala", "source_location": "L15", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "ruleset", "label": "RuleSet.scala", "file_type": "code", "source_file": "modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala", "source_location": "L1"}], "edges": [{"source": "ruleset", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala", "source_location": "L3", "weight": 1.0}, {"source": "ruleset", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala", "source_location": "L4", "weight": 1.0}, {"source": "ruleset", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala", "source_location": "L5", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gameenginescenariotest", "label": "GameEngineScenarioTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L1"}, {"id": "gameenginescenariotest_gameenginescenariotest", "label": "GameEngineScenarioTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L11"}], "edges": [{"source": "gameenginescenariotest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "scala", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "gameenginescenariotest", "target": "gameenginescenariotest_gameenginescenariotest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala", "source_location": "L11", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "pgnvalidatortest", "label": "PgnValidatorTest.scala", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L1"}, {"id": "pgnvalidatortest_pgnvalidatortest", "label": "PgnValidatorTest", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L8"}], "edges": [{"source": "pgnvalidatortest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "pgnvalidatortest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "pgnvalidatortest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "pgnvalidatortest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "pgnvalidatortest", "target": "pgnvalidatortest_pgnvalidatortest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala", "source_location": "L8", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "fenexportertest", "label": "FenExporterTest.scala", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L1"}, {"id": "fenexportertest_fenexportertest", "label": "FenExporterTest", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L9"}, {"id": "fenexportertest_fenexportertest_context", "label": ".context()", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L11"}], "edges": [{"source": "fenexportertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "fenexportertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "fenexportertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "fenexportertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "fenexportertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "fenexportertest", "target": "fenexportertest_fenexportertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "fenexportertest_fenexportertest", "target": "fenexportertest_fenexportertest_context", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala", "source_location": "L11", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "weights", "label": "Weights.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/ai/Weights.scala", "source_location": "L1"}], "edges": [{"source": "weights", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/ai/Weights.scala", "source_location": "L3", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "board", "label": "Board.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L1"}, {"id": "board_board", "label": "Board", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L5"}, {"id": "board_board_apply", "label": ".apply()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L7"}, {"id": "board_pieceat", "label": "pieceAt()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L10"}, {"id": "board_updated", "label": "updated()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L11"}, {"id": "board_removed", "label": "removed()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L12"}, {"id": "board_withmove", "label": "withMove()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L13"}, {"id": "board_applymove", "label": "applyMove()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L17"}, {"id": "board_pieces", "label": "pieces()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L20"}], "edges": [{"source": "board", "target": "board_board", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L5", "weight": 1.0}, {"source": "board_board", "target": "board_board_apply", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L7", "weight": 1.0}, {"source": "board", "target": "board_pieceat", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L10", "weight": 1.0}, {"source": "board", "target": "board_updated", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L11", "weight": 1.0}, {"source": "board", "target": "board_removed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L12", "weight": 1.0}, {"source": "board", "target": "board_withmove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L13", "weight": 1.0}, {"source": "board", "target": "board_applymove", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L17", "weight": 1.0}, {"source": "board", "target": "board_pieces", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L20", "weight": 1.0}, {"source": "board_withmove", "target": "board_updated", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L15", "weight": 1.0}, {"source": "board_withmove", "target": "board_removed", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L15", "weight": 1.0}, {"source": "board_applymove", "target": "board_withmove", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Board.scala", "source_location": "L18", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "fenparsertest", "label": "FenParserTest.scala", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala", "source_location": "L1"}, {"id": "fenparsertest_fenparsertest", "label": "FenParserTest", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala", "source_location": "L7"}], "edges": [{"source": "fenparsertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "fenparsertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "fenparsertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "fenparsertest", "target": "fenparsertest_fenparsertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala", "source_location": "L7", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "rendererandunicodetest", "label": "RendererAndUnicodeTest.scala", "file_type": "code", "source_file": "modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala", "source_location": "L1"}, {"id": "rendererandunicodetest_rendererandunicodetest", "label": "RendererAndUnicodeTest", "file_type": "code", "source_file": "modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala", "source_location": "L7"}], "edges": [{"source": "rendererandunicodetest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "rendererandunicodetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "rendererandunicodetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "rendererandunicodetest", "target": "rendererandunicodetest_rendererandunicodetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala", "source_location": "L7", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "polyglotbooktest", "label": "PolyglotBookTest.scala", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L1"}, {"id": "polyglotbooktest_polyglotbooktest", "label": "PolyglotBookTest", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L16"}], "edges": [{"source": "polyglotbooktest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "polyglotbooktest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "polyglotbooktest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "polyglotbooktest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "polyglotbooktest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "polyglotbooktest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "polyglotbooktest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "polyglotbooktest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L10", "weight": 1.0}, {"source": "polyglotbooktest", "target": "java", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L12", "weight": 1.0}, {"source": "polyglotbooktest", "target": "java", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L13", "weight": 1.0}, {"source": "polyglotbooktest", "target": "scala", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L14", "weight": 1.0}, {"source": "polyglotbooktest", "target": "polyglotbooktest_polyglotbooktest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/PolyglotBookTest.scala", "source_location": "L16", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "gameenginenotationtest", "label": "GameEngineNotationTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L1"}, {"id": "gameenginenotationtest_gameenginenotationtest", "label": "GameEngineNotationTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L17"}, {"id": "gameenginenotationtest_gameenginenotationtest_captureevents", "label": ".captureEvents()", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L19"}], "edges": [{"source": "gameenginenotationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "gameenginenotationtest", "target": "gameenginenotationtest_gameenginenotationtest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L17", "weight": 1.0}, {"source": "gameenginenotationtest_gameenginenotationtest", "target": "gameenginenotationtest_gameenginenotationtest_captureevents", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala", "source_location": "L19", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "apiresponse", "label": "ApiResponse.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L1"}, {"id": "apiresponse_apiresponse", "label": "ApiResponse", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L13"}, {"id": "apiresponse_success", "label": "Success", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L15"}, {"id": "apiresponse_failure", "label": "Failure", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L18"}, {"id": "apiresponse_apiresponse_error", "label": ".error()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L21"}, {"id": "apiresponse_apierror", "label": "ApiError", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L30"}, {"id": "apiresponse_pagination", "label": "Pagination", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L43"}, {"id": "apiresponse_pagination_totalpages", "label": ".totalPages()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L48"}, {"id": "apiresponse_pagedresponse", "label": "PagedResponse", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L59"}], "edges": [{"source": "apiresponse", "target": "apiresponse_apiresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L13", "weight": 1.0}, {"source": "apiresponse", "target": "apiresponse_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L15", "weight": 1.0}, {"source": "apiresponse", "target": "apiresponse_failure", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L18", "weight": 1.0}, {"source": "apiresponse_apiresponse", "target": "apiresponse_apiresponse_error", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L21", "weight": 1.0}, {"source": "apiresponse", "target": "apiresponse_apierror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L30", "weight": 1.0}, {"source": "apiresponse", "target": "apiresponse_pagination", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L43", "weight": 1.0}, {"source": "apiresponse_pagination", "target": "apiresponse_pagination_totalpages", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L48", "weight": 1.0}, {"source": "apiresponse", "target": "apiresponse_pagedresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L59", "weight": 1.0}, {"source": "apiresponse_apiresponse_error", "target": "apiresponse_failure", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/response/ApiResponse.scala", "source_location": "L21", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "renderer", "label": "Renderer.scala", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala", "source_location": "L1"}, {"id": "renderer_renderer", "label": "Renderer", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala", "source_location": "L5"}, {"id": "renderer_renderer_render", "label": ".render()", "file_type": "code", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala", "source_location": "L13"}], "edges": [{"source": "renderer", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala", "source_location": "L3", "weight": 1.0}, {"source": "renderer", "target": "renderer_renderer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala", "source_location": "L5", "weight": 1.0}, {"source": "renderer_renderer", "target": "renderer_renderer_render", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/ui/src/main/scala/de/nowchess/ui/utils/Renderer.scala", "source_location": "L13", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "piecetypetest", "label": "PieceTypeTest.scala", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTypeTest.scala", "source_location": "L1"}, {"id": "piecetypetest_piecetypetest", "label": "PieceTypeTest", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTypeTest.scala", "source_location": "L6"}], "edges": [{"source": "piecetypetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTypeTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "piecetypetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTypeTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "piecetypetest", "target": "piecetypetest_piecetypetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/PieceTypeTest.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "parser", "label": "Parser.scala", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L1"}, {"id": "parser_parser", "label": "Parser", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L5"}, {"id": "parser_parser_parsemove", "label": ".parseMove()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L10"}, {"id": "parser_parser_parsesquare", "label": ".parseSquare()", "file_type": "code", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L18"}], "edges": [{"source": "parser", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L3", "weight": 1.0}, {"source": "parser", "target": "parser_parser", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L5", "weight": 1.0}, {"source": "parser_parser", "target": "parser_parser_parsemove", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L10", "weight": 1.0}, {"source": "parser_parser", "target": "parser_parser_parsesquare", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L18", "weight": 1.0}, {"source": "parser_parser_parsemove", "target": "parser_parser_parsesquare", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/core/src/main/scala/de/nowchess/chess/controller/Parser.scala", "source_location": "L14", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "castlingrightstest", "label": "CastlingRightsTest.scala", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/CastlingRightsTest.scala", "source_location": "L1"}, {"id": "castlingrightstest_castlingrightstest", "label": "CastlingRightsTest", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/CastlingRightsTest.scala", "source_location": "L6"}], "edges": [{"source": "castlingrightstest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/CastlingRightsTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "castlingrightstest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/CastlingRightsTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "castlingrightstest", "target": "castlingrightstest_castlingrightstest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/CastlingRightsTest.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "defaultrulesstatetransitionstest", "label": "DefaultRulesStateTransitionsTest.scala", "file_type": "code", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L1"}, {"id": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest", "label": "DefaultRulesStateTransitionsTest", "file_type": "code", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L11"}, {"id": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest_contextfromfen", "label": ".contextFromFen()", "file_type": "code", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L13"}, {"id": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest_sq", "label": ".sq()", "file_type": "code", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L16"}], "edges": [{"source": "defaultrulesstatetransitionstest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest", "target": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L11", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest", "target": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest_contextfromfen", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L13", "weight": 1.0}, {"source": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest", "target": "defaultrulesstatetransitionstest_defaultrulesstatetransitionstest_sq", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala", "source_location": "L16", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "pgnparsertest", "label": "PgnParserTest.scala", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L1"}, {"id": "pgnparsertest_pgnparsertest", "label": "PgnParserTest", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L10"}], "edges": [{"source": "pgnparsertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "pgnparsertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "pgnparsertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "pgnparsertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "pgnparsertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "pgnparsertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "pgnparsertest", "target": "pgnparsertest_pgnparsertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala", "source_location": "L10", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "defaultrulestest", "label": "DefaultRulesTest.scala", "file_type": "code", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L1"}, {"id": "defaultrulestest_defaultrulestest", "label": "DefaultRulesTest", "file_type": "code", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L11"}], "edges": [{"source": "defaultrulestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "defaultrulestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "defaultrulestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "defaultrulestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "defaultrulestest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "defaultrulestest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "defaultrulestest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L9", "weight": 1.0}, {"source": "defaultrulestest", "target": "defaultrulestest_defaultrulestest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala", "source_location": "L11", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "polyglothash", "label": "PolyglotHash.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L1"}, {"id": "polyglothash_polyglothash", "label": "PolyglotHash", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L6"}, {"id": "polyglothash_polyglothash_hash", "label": ".hash()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L208"}, {"id": "polyglothash_polyglothash_pieceindex", "label": ".pieceIndex()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L238"}, {"id": "polyglothash_polyglothash_squareindex", "label": ".squareIndex()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L249"}, {"id": "polyglothash_polyglothash_cancaptureenpassant", "label": ".canCaptureEnPassant()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L252"}], "edges": [{"source": "polyglothash", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L3", "weight": 1.0}, {"source": "polyglothash", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L4", "weight": 1.0}, {"source": "polyglothash", "target": "polyglothash_polyglothash", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L6", "weight": 1.0}, {"source": "polyglothash_polyglothash", "target": "polyglothash_polyglothash_hash", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L208", "weight": 1.0}, {"source": "polyglothash_polyglothash", "target": "polyglothash_polyglothash_pieceindex", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L238", "weight": 1.0}, {"source": "polyglothash_polyglothash", "target": "polyglothash_polyglothash_squareindex", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L249", "weight": 1.0}, {"source": "polyglothash_polyglothash", "target": "polyglothash_polyglothash_cancaptureenpassant", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L252", "weight": 1.0}, {"source": "polyglothash_polyglothash_hash", "target": "polyglothash_polyglothash_pieceindex", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L213", "weight": 1.0}, {"source": "polyglothash_polyglothash_hash", "target": "polyglothash_polyglothash_squareindex", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L213", "weight": 1.0}, {"source": "polyglothash_polyglothash_hash", "target": "polyglothash_polyglothash_cancaptureenpassant", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/util/PolyglotHash.scala", "source_location": "L228", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "colortest", "label": "ColorTest.scala", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/ColorTest.scala", "source_location": "L1"}, {"id": "colortest_colortest", "label": "ColorTest", "file_type": "code", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/ColorTest.scala", "source_location": "L6"}], "edges": [{"source": "colortest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/ColorTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "colortest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/ColorTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "colortest", "target": "colortest_colortest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/test/scala/de/nowchess/api/board/ColorTest.scala", "source_location": "L6", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "transpositiontable", "label": "TranspositionTable.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L1"}, {"id": "transpositiontable_ttentry", "label": "TTEntry", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L10"}, {"id": "transpositiontable_transpositiontable", "label": "TranspositionTable", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L18"}, {"id": "transpositiontable_transpositiontable_probe", "label": ".probe()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L24"}, {"id": "transpositiontable_transpositiontable_store", "label": ".store()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L30"}, {"id": "transpositiontable_transpositiontable_clear", "label": ".clear()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L36"}], "edges": [{"source": "transpositiontable", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L3", "weight": 1.0}, {"source": "transpositiontable", "target": "transpositiontable_ttentry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L10", "weight": 1.0}, {"source": "transpositiontable", "target": "transpositiontable_transpositiontable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L18", "weight": 1.0}, {"source": "transpositiontable_transpositiontable", "target": "transpositiontable_transpositiontable_probe", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L24", "weight": 1.0}, {"source": "transpositiontable_transpositiontable", "target": "transpositiontable_transpositiontable_store", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L30", "weight": 1.0}, {"source": "transpositiontable_transpositiontable", "target": "transpositiontable_transpositiontable_clear", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/logic/TranspositionTable.scala", "source_location": "L36", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "moveorderingtest", "label": "MoveOrderingTest.scala", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L1"}, {"id": "moveorderingtest_moveorderingtest", "label": "MoveOrderingTest", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L10"}], "edges": [{"source": "moveorderingtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "moveorderingtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "moveorderingtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "moveorderingtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "moveorderingtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "moveorderingtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "moveorderingtest", "target": "moveorderingtest_moveorderingtest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/MoveOrderingTest.scala", "source_location": "L10", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "start", "label": "start.ps1", "file_type": "code", "source_file": "modules/bot/python/start.ps1", "source_location": "L1"}], "edges": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "build_gradle", "label": "build.gradle.kts", "file_type": "code", "source_file": "modules/api/build.gradle.kts", "source_location": "L1"}], "edges": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "castlingrights", "label": "CastlingRights.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L1"}, {"id": "castlingrights_castlingrights", "label": "CastlingRights", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L12"}, {"id": "castlingrights_castlingrights_hasanyrights", "label": ".hasAnyRights()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L21"}, {"id": "castlingrights_castlingrights_hasrights", "label": ".hasRights()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L27"}, {"id": "castlingrights_castlingrights_revokecolor", "label": ".revokeColor()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L34"}, {"id": "castlingrights_castlingrights_revokekingside", "label": ".revokeKingSide()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L41"}, {"id": "castlingrights_castlingrights_revokequeenside", "label": ".revokeQueenSide()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L48"}], "edges": [{"source": "castlingrights", "target": "castlingrights_castlingrights", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L12", "weight": 1.0}, {"source": "castlingrights_castlingrights", "target": "castlingrights_castlingrights_hasanyrights", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L21", "weight": 1.0}, {"source": "castlingrights_castlingrights", "target": "castlingrights_castlingrights_hasrights", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L27", "weight": 1.0}, {"source": "castlingrights_castlingrights", "target": "castlingrights_castlingrights_revokecolor", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L34", "weight": 1.0}, {"source": "castlingrights_castlingrights", "target": "castlingrights_castlingrights_revokekingside", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L41", "weight": 1.0}, {"source": "castlingrights_castlingrights", "target": "castlingrights_castlingrights_revokequeenside", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L48", "weight": 1.0}, {"source": "castlingrights", "target": "castlingrights_castlingrights", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala", "source_location": "L52", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "evaluationnnue", "label": "EvaluationNNUE.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L1"}, {"id": "evaluationnnue_evaluationnnue", "label": "EvaluationNNUE", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L6"}, {"id": "evaluationnnue_evaluationnnue_evaluate", "label": ".evaluate()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L15"}], "edges": [{"source": "evaluationnnue", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L3", "weight": 1.0}, {"source": "evaluationnnue", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L4", "weight": 1.0}, {"source": "evaluationnnue", "target": "evaluationnnue_evaluationnnue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L6", "weight": 1.0}, {"source": "evaluationnnue_evaluationnnue", "target": "evaluationnnue_evaluationnnue_evaluate", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/bots/nnue/EvaluationNNUE.scala", "source_location": "L15", "weight": 1.0}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "build_gradle", "label": "build.gradle.kts", "file_type": "code", "source_file": "modules/rule/build.gradle.kts", "source_location": "L1"}], "edges": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "evaluationtest", "label": "EvaluationTest.scala", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L1"}, {"id": "evaluationtest_evaluationtest", "label": "EvaluationTest", "file_type": "code", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L10"}], "edges": [{"source": "evaluationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "evaluationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "evaluationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "evaluationtest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L6", "weight": 1.0}, {"source": "evaluationtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L7", "weight": 1.0}, {"source": "evaluationtest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L8", "weight": 1.0}, {"source": "evaluationtest", "target": "evaluationtest_evaluationtest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/test/scala/de/nowchess/bot/EvaluationTest.scala", "source_location": "L10", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "botcontroller", "label": "BotController.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L1"}, {"id": "botcontroller_botcontroller", "label": "BotController", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L5"}, {"id": "botcontroller_botcontroller_getbot", "label": ".getBot()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L25"}, {"id": "botcontroller_botcontroller_listbots", "label": ".listBots()", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L28"}], "edges": [{"source": "botcontroller", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L3", "weight": 1.0}, {"source": "botcontroller", "target": "botcontroller_botcontroller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L5", "weight": 1.0}, {"source": "botcontroller_botcontroller", "target": "botcontroller_botcontroller_getbot", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L25", "weight": 1.0}, {"source": "botcontroller_botcontroller", "target": "botcontroller_botcontroller_listbots", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotController.scala", "source_location": "L28", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "move", "label": "Move.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/move/Move.scala", "source_location": "L1"}, {"id": "move_move", "label": "Move", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/move/Move.scala", "source_location": "L29"}], "edges": [{"source": "move", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/move/Move.scala", "source_location": "L3", "weight": 1.0}, {"source": "move", "target": "move_move", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/move/Move.scala", "source_location": "L29", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "square", "label": "Square.scala", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L1"}, {"id": "square_square", "label": "Square", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L23"}, {"id": "square_square_tostring", "label": ".toString()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L25"}, {"id": "square_square_fromalgebraic", "label": ".fromAlgebraic()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L31"}, {"id": "square_offset", "label": "offset()", "file_type": "code", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L52"}], "edges": [{"source": "square", "target": "square_square", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L23", "weight": 1.0}, {"source": "square_square", "target": "square_square_tostring", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L25", "weight": 1.0}, {"source": "square", "target": "square_square", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L28", "weight": 1.0}, {"source": "square_square", "target": "square_square_fromalgebraic", "relation": "method", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L31", "weight": 1.0}, {"source": "square", "target": "square_offset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L52", "weight": 1.0}, {"source": "square_square_fromalgebraic", "target": "square_square", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L41", "weight": 1.0}, {"source": "square_offset", "target": "square_square", "relation": "calls", "confidence": "EXTRACTED", "source_file": "modules/api/src/main/scala/de/nowchess/api/board/Square.scala", "source_location": "L56", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "botdifficulty", "label": "BotDifficulty.scala", "file_type": "code", "source_file": "modules/bot/src/main/scala/de/nowchess/bot/BotDifficulty.scala", "source_location": "L1"}], "edges": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "parsertest", "label": "ParserTest.scala", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/controller/ParserTest.scala", "source_location": "L1"}, {"id": "parsertest_parsertest", "label": "ParserTest", "file_type": "code", "source_file": "modules/core/src/test/scala/de/nowchess/chess/controller/ParserTest.scala", "source_location": "L7"}], "edges": [{"source": "parsertest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/controller/ParserTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "parsertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/controller/ParserTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "parsertest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/controller/ParserTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "parsertest", "target": "parsertest_parsertest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/core/src/test/scala/de/nowchess/chess/controller/ParserTest.scala", "source_location": "L7", "weight": 1.0}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "fenparserfastparsetest", "label": "FenParserFastParseTest.scala", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserFastParseTest.scala", "source_location": "L1"}, {"id": "fenparserfastparsetest_fenparserfastparsetest", "label": "FenParserFastParseTest", "file_type": "code", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserFastParseTest.scala", "source_location": "L7"}], "edges": [{"source": "fenparserfastparsetest", "target": "de", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserFastParseTest.scala", "source_location": "L3", "weight": 1.0}, {"source": "fenparserfastparsetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserFastParseTest.scala", "source_location": "L4", "weight": 1.0}, {"source": "fenparserfastparsetest", "target": "org", "relation": "imports", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserFastParseTest.scala", "source_location": "L5", "weight": 1.0}, {"source": "fenparserfastparsetest", "target": "fenparserfastparsetest_fenparserfastparsetest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "modules/io/src/test/scala/de/nowchess/io/fen/FenParserFastParseTest.scala", "source_location": "L7", "weight": 1.0}]}
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More