hoi4-agent-tools 0.2.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -118
- package/README.md +35 -127
- package/SECURITY.md +5 -7
- package/dist/bin/http.js +0 -1
- package/dist/bin/setup.js +141 -92
- package/dist/bin/stdio.js +0 -1
- package/dist/hoi4_agent_tools/core/artifacts.js +0 -1
- package/dist/hoi4_agent_tools/core/canonical.js +0 -1
- package/dist/hoi4_agent_tools/core/configuration.js +28 -28
- package/dist/hoi4_agent_tools/core/diagnostic-collector.js +0 -1
- package/dist/hoi4_agent_tools/core/diagnostics.js +0 -1
- package/dist/hoi4_agent_tools/core/diff.js +0 -1
- package/dist/hoi4_agent_tools/core/engine.js +6 -21
- package/dist/hoi4_agent_tools/core/image-diff.js +0 -1
- package/dist/hoi4_agent_tools/core/index.js +0 -1
- package/dist/hoi4_agent_tools/core/render-budget.js +0 -1
- package/dist/hoi4_agent_tools/core/result.js +0 -1
- package/dist/hoi4_agent_tools/core/scanner.js +0 -1
- package/dist/hoi4_agent_tools/core/server-state.js +0 -1
- package/dist/hoi4_agent_tools/core/source/encoding.js +0 -1
- package/dist/hoi4_agent_tools/core/source/index.js +0 -1
- package/dist/hoi4_agent_tools/core/source/lexer.js +0 -1
- package/dist/hoi4_agent_tools/core/source/limits.js +0 -1
- package/dist/hoi4_agent_tools/core/source/localisation.js +0 -1
- package/dist/hoi4_agent_tools/core/source/parser.js +0 -1
- package/dist/hoi4_agent_tools/core/source/rewrite.js +0 -1
- package/dist/hoi4_agent_tools/core/svg-text.js +0 -1
- package/dist/hoi4_agent_tools/core/transaction-limits.js +0 -1
- package/dist/hoi4_agent_tools/core/transactions.js +2 -30
- package/dist/hoi4_agent_tools/core/workspace.js +112 -396
- package/dist/hoi4_agent_tools/focus/compiler.js +0 -1
- package/dist/hoi4_agent_tools/focus/continuous-render.js +0 -1
- package/dist/hoi4_agent_tools/focus/drift.js +0 -1
- package/dist/hoi4_agent_tools/focus/geometry.js +0 -1
- package/dist/hoi4_agent_tools/focus/importer.js +0 -1
- package/dist/hoi4_agent_tools/focus/index.js +0 -1
- package/dist/hoi4_agent_tools/focus/layout.js +0 -1
- package/dist/hoi4_agent_tools/focus/limits.js +0 -1
- package/dist/hoi4_agent_tools/focus/lint.js +0 -1
- package/dist/hoi4_agent_tools/focus/model.js +0 -1
- package/dist/hoi4_agent_tools/focus/native-effects.js +0 -1
- package/dist/hoi4_agent_tools/focus/planning.js +0 -1
- package/dist/hoi4_agent_tools/focus/presentation.js +0 -1
- package/dist/hoi4_agent_tools/focus/render.js +0 -1
- package/dist/hoi4_agent_tools/focus/service.js +7 -8
- package/dist/hoi4_agent_tools/focus/source-update.js +1 -2
- package/dist/hoi4_agent_tools/gui/animation-manifest.js +0 -1
- package/dist/hoi4_agent_tools/gui/assets.js +0 -1
- package/dist/hoi4_agent_tools/gui/dds.js +0 -1
- package/dist/hoi4_agent_tools/gui/helpers.js +1 -2
- package/dist/hoi4_agent_tools/gui/index.js +0 -1
- package/dist/hoi4_agent_tools/gui/layout.js +0 -1
- package/dist/hoi4_agent_tools/gui/limits.js +0 -1
- package/dist/hoi4_agent_tools/gui/renderer.js +0 -1
- package/dist/hoi4_agent_tools/gui/scenario.js +0 -1
- package/dist/hoi4_agent_tools/gui/source-graph.js +0 -1
- package/dist/hoi4_agent_tools/gui/source-patch.js +1 -2
- package/dist/hoi4_agent_tools/gui/studio.js +247 -104
- package/dist/hoi4_agent_tools/gui/tga.js +0 -1
- package/dist/hoi4_agent_tools/gui/types.js +0 -1
- package/dist/hoi4_agent_tools/gui/validators.js +0 -1
- package/dist/hoi4_agent_tools/map/bmp.js +0 -1
- package/dist/hoi4_agent_tools/map/diagnostic-limit.js +0 -1
- package/dist/hoi4_agent_tools/map/index.js +0 -1
- package/dist/hoi4_agent_tools/map/limits.js +2 -1
- package/dist/hoi4_agent_tools/map/model.js +0 -1
- package/dist/hoi4_agent_tools/map/operations.js +0 -1
- package/dist/hoi4_agent_tools/map/render.js +0 -1
- package/dist/hoi4_agent_tools/map/service.js +171 -33
- package/dist/hoi4_agent_tools/map/validation.js +0 -1
- package/dist/hoi4_agent_tools/mcp/resources/register.js +61 -187
- package/dist/hoi4_agent_tools/mcp/security/auth.js +1 -2
- package/dist/hoi4_agent_tools/mcp/server/base-tools.js +24 -750
- package/dist/hoi4_agent_tools/mcp/server/create.js +3 -12
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.js +0 -71
- package/dist/hoi4_agent_tools/mcp/server/progress.js +0 -1
- package/dist/hoi4_agent_tools/mcp/server/result.js +24 -30
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js +10 -14
- package/dist/hoi4_agent_tools/mcp/tools/focus.js +219 -275
- package/dist/hoi4_agent_tools/mcp/tools/gui.js +149 -250
- package/dist/hoi4_agent_tools/mcp/tools/map.js +256 -337
- package/dist/hoi4_agent_tools/mcp/tools/mods.js +54 -0
- package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.js +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/event-store.js +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/http.js +1 -12
- package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.js +0 -1
- package/dist/hoi4_agent_tools/runtime.js +5 -2
- package/dist/hoi4_agent_tools/schemas/common.js +1 -2
- package/dist/hoi4_agent_tools/schemas/focus.js +0 -1
- package/dist/hoi4_agent_tools/schemas/map.js +0 -1
- package/dist/hoi4_agent_tools/schemas/transaction.js +0 -1
- package/dist/hoi4_agent_tools/version.js +1 -2
- package/docs/README.md +8 -21
- package/docs/development.md +22 -0
- package/docs/focus.md +40 -0
- package/docs/gui.md +37 -0
- package/docs/http.md +53 -0
- package/docs/map.md +39 -0
- package/docs/setup.md +39 -0
- package/package.json +10 -11
- package/server.json +3 -12
- package/dist/bin/http.d.ts +0 -3
- package/dist/bin/http.d.ts.map +0 -1
- package/dist/bin/http.js.map +0 -1
- package/dist/bin/setup.d.ts +0 -3
- package/dist/bin/setup.d.ts.map +0 -1
- package/dist/bin/setup.js.map +0 -1
- package/dist/bin/stdio.d.ts +0 -3
- package/dist/bin/stdio.d.ts.map +0 -1
- package/dist/bin/stdio.js.map +0 -1
- package/dist/hoi4_agent_tools/core/artifacts.d.ts +0 -117
- package/dist/hoi4_agent_tools/core/artifacts.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/artifacts.js.map +0 -1
- package/dist/hoi4_agent_tools/core/canonical.d.ts +0 -13
- package/dist/hoi4_agent_tools/core/canonical.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/canonical.js.map +0 -1
- package/dist/hoi4_agent_tools/core/configuration.d.ts +0 -138
- package/dist/hoi4_agent_tools/core/configuration.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/configuration.js.map +0 -1
- package/dist/hoi4_agent_tools/core/diagnostic-collector.d.ts +0 -18
- package/dist/hoi4_agent_tools/core/diagnostic-collector.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/diagnostic-collector.js.map +0 -1
- package/dist/hoi4_agent_tools/core/diagnostics.d.ts +0 -26
- package/dist/hoi4_agent_tools/core/diagnostics.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/diagnostics.js.map +0 -1
- package/dist/hoi4_agent_tools/core/diff.d.ts +0 -22
- package/dist/hoi4_agent_tools/core/diff.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/diff.js.map +0 -1
- package/dist/hoi4_agent_tools/core/engine.d.ts +0 -57
- package/dist/hoi4_agent_tools/core/engine.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/engine.js.map +0 -1
- package/dist/hoi4_agent_tools/core/image-diff.d.ts +0 -14
- package/dist/hoi4_agent_tools/core/image-diff.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/image-diff.js.map +0 -1
- package/dist/hoi4_agent_tools/core/index.d.ts +0 -64
- package/dist/hoi4_agent_tools/core/index.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/index.js.map +0 -1
- package/dist/hoi4_agent_tools/core/index.public.d.ts +0 -16
- package/dist/hoi4_agent_tools/core/index.public.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/index.public.js +0 -16
- package/dist/hoi4_agent_tools/core/index.public.js.map +0 -1
- package/dist/hoi4_agent_tools/core/render-budget.d.ts +0 -51
- package/dist/hoi4_agent_tools/core/render-budget.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/render-budget.js.map +0 -1
- package/dist/hoi4_agent_tools/core/result.d.ts +0 -45
- package/dist/hoi4_agent_tools/core/result.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/result.js.map +0 -1
- package/dist/hoi4_agent_tools/core/scanner.d.ts +0 -28
- package/dist/hoi4_agent_tools/core/scanner.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/scanner.js.map +0 -1
- package/dist/hoi4_agent_tools/core/server-state.d.ts +0 -31
- package/dist/hoi4_agent_tools/core/server-state.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/server-state.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/encoding.d.ts +0 -10
- package/dist/hoi4_agent_tools/core/source/encoding.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/encoding.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/index.d.ts +0 -7
- package/dist/hoi4_agent_tools/core/source/index.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/index.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/lexer.d.ts +0 -30
- package/dist/hoi4_agent_tools/core/source/lexer.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/lexer.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/limits.d.ts +0 -21
- package/dist/hoi4_agent_tools/core/source/limits.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/limits.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/localisation.d.ts +0 -20
- package/dist/hoi4_agent_tools/core/source/localisation.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/localisation.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/parser.d.ts +0 -44
- package/dist/hoi4_agent_tools/core/source/parser.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/parser.js.map +0 -1
- package/dist/hoi4_agent_tools/core/source/rewrite.d.ts +0 -10
- package/dist/hoi4_agent_tools/core/source/rewrite.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/source/rewrite.js.map +0 -1
- package/dist/hoi4_agent_tools/core/svg-text.d.ts +0 -34
- package/dist/hoi4_agent_tools/core/svg-text.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/svg-text.js.map +0 -1
- package/dist/hoi4_agent_tools/core/transaction-limits.d.ts +0 -9
- package/dist/hoi4_agent_tools/core/transaction-limits.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/transaction-limits.js.map +0 -1
- package/dist/hoi4_agent_tools/core/transactions.d.ts +0 -164
- package/dist/hoi4_agent_tools/core/transactions.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/transactions.js.map +0 -1
- package/dist/hoi4_agent_tools/core/workspace.d.ts +0 -68
- package/dist/hoi4_agent_tools/core/workspace.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/core/workspace.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/compiler.d.ts +0 -10
- package/dist/hoi4_agent_tools/focus/compiler.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/compiler.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/continuous-render.d.ts +0 -32
- package/dist/hoi4_agent_tools/focus/continuous-render.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/continuous-render.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/drift.d.ts +0 -22
- package/dist/hoi4_agent_tools/focus/drift.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/drift.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/geometry.d.ts +0 -17
- package/dist/hoi4_agent_tools/focus/geometry.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/geometry.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/importer.d.ts +0 -9
- package/dist/hoi4_agent_tools/focus/importer.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/importer.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/index.d.ts +0 -14
- package/dist/hoi4_agent_tools/focus/index.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/index.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/layout.d.ts +0 -5
- package/dist/hoi4_agent_tools/focus/layout.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/layout.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/limits.d.ts +0 -9
- package/dist/hoi4_agent_tools/focus/limits.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/limits.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/lint.d.ts +0 -14
- package/dist/hoi4_agent_tools/focus/lint.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/lint.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/model.d.ts +0 -307
- package/dist/hoi4_agent_tools/focus/model.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/model.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/native-effects.d.ts +0 -9
- package/dist/hoi4_agent_tools/focus/native-effects.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/native-effects.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/planning.d.ts +0 -15
- package/dist/hoi4_agent_tools/focus/planning.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/planning.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/presentation.d.ts +0 -24
- package/dist/hoi4_agent_tools/focus/presentation.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/presentation.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/render.d.ts +0 -39
- package/dist/hoi4_agent_tools/focus/render.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/render.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/service.d.ts +0 -82
- package/dist/hoi4_agent_tools/focus/service.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/service.js.map +0 -1
- package/dist/hoi4_agent_tools/focus/source-update.d.ts +0 -6
- package/dist/hoi4_agent_tools/focus/source-update.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/focus/source-update.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/animation-manifest.d.ts +0 -37
- package/dist/hoi4_agent_tools/gui/animation-manifest.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/animation-manifest.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/assets.d.ts +0 -71
- package/dist/hoi4_agent_tools/gui/assets.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/assets.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/dds.d.ts +0 -17
- package/dist/hoi4_agent_tools/gui/dds.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/dds.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/helpers.d.ts +0 -101
- package/dist/hoi4_agent_tools/gui/helpers.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/helpers.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/index.d.ts +0 -15
- package/dist/hoi4_agent_tools/gui/index.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/index.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/layout.d.ts +0 -6
- package/dist/hoi4_agent_tools/gui/layout.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/layout.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/limits.d.ts +0 -25
- package/dist/hoi4_agent_tools/gui/limits.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/limits.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/renderer.d.ts +0 -18
- package/dist/hoi4_agent_tools/gui/renderer.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/renderer.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/scenario.d.ts +0 -66
- package/dist/hoi4_agent_tools/gui/scenario.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/scenario.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/source-graph.d.ts +0 -7
- package/dist/hoi4_agent_tools/gui/source-graph.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/source-graph.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/source-patch.d.ts +0 -13
- package/dist/hoi4_agent_tools/gui/source-patch.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/source-patch.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/studio.d.ts +0 -86
- package/dist/hoi4_agent_tools/gui/studio.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/studio.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/tga.d.ts +0 -16
- package/dist/hoi4_agent_tools/gui/tga.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/tga.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/types.d.ts +0 -322
- package/dist/hoi4_agent_tools/gui/types.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/types.js.map +0 -1
- package/dist/hoi4_agent_tools/gui/validators.d.ts +0 -8
- package/dist/hoi4_agent_tools/gui/validators.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/gui/validators.js.map +0 -1
- package/dist/hoi4_agent_tools/map/bmp.d.ts +0 -62
- package/dist/hoi4_agent_tools/map/bmp.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/bmp.js.map +0 -1
- package/dist/hoi4_agent_tools/map/diagnostic-limit.d.ts +0 -5
- package/dist/hoi4_agent_tools/map/diagnostic-limit.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/diagnostic-limit.js.map +0 -1
- package/dist/hoi4_agent_tools/map/index.d.ts +0 -8
- package/dist/hoi4_agent_tools/map/index.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/index.js.map +0 -1
- package/dist/hoi4_agent_tools/map/limits.d.ts +0 -13
- package/dist/hoi4_agent_tools/map/limits.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/limits.js.map +0 -1
- package/dist/hoi4_agent_tools/map/model.d.ts +0 -269
- package/dist/hoi4_agent_tools/map/model.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/model.js.map +0 -1
- package/dist/hoi4_agent_tools/map/operations.d.ts +0 -401
- package/dist/hoi4_agent_tools/map/operations.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/operations.js.map +0 -1
- package/dist/hoi4_agent_tools/map/render.d.ts +0 -90
- package/dist/hoi4_agent_tools/map/render.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/render.js.map +0 -1
- package/dist/hoi4_agent_tools/map/service.d.ts +0 -81
- package/dist/hoi4_agent_tools/map/service.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/service.js.map +0 -1
- package/dist/hoi4_agent_tools/map/validation.d.ts +0 -23
- package/dist/hoi4_agent_tools/map/validation.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/map/validation.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts +0 -4
- package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/prompts/register.js +0 -72
- package/dist/hoi4_agent_tools/mcp/prompts/register.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts +0 -9
- package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/registry/metadata.js +0 -10
- package/dist/hoi4_agent_tools/mcp/registry/metadata.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/resources/register.d.ts +0 -5
- package/dist/hoi4_agent_tools/mcp/resources/register.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/resources/register.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/security/auth.d.ts +0 -24
- package/dist/hoi4_agent_tools/mcp/security/auth.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/security/auth.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts +0 -47
- package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/base-tools.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/create.d.ts +0 -5
- package/dist/hoi4_agent_tools/mcp/server/create.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/create.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts +0 -138
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/output-schemas.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/progress.d.ts +0 -8
- package/dist/hoi4_agent_tools/mcp/server/progress.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/progress.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/result.d.ts +0 -232
- package/dist/hoi4_agent_tools/mcp/server/result.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/result.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.d.ts +0 -31
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts +0 -5
- package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/tools/focus.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts +0 -117
- package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/tools/gui.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/tools/map.d.ts +0 -5
- package/dist/hoi4_agent_tools/mcp/tools/map.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/tools/map.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.d.ts +0 -58
- package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/event-store.d.ts +0 -26
- package/dist/hoi4_agent_tools/mcp/transports/event-store.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/event-store.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/http.d.ts +0 -28
- package/dist/hoi4_agent_tools/mcp/transports/http.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/http.js.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.d.ts +0 -15
- package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.js.map +0 -1
- package/dist/hoi4_agent_tools/runtime.d.ts +0 -4
- package/dist/hoi4_agent_tools/runtime.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/runtime.js.map +0 -1
- package/dist/hoi4_agent_tools/schemas/common.d.ts +0 -74
- package/dist/hoi4_agent_tools/schemas/common.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/schemas/common.js.map +0 -1
- package/dist/hoi4_agent_tools/schemas/focus.d.ts +0 -784
- package/dist/hoi4_agent_tools/schemas/focus.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/schemas/focus.js.map +0 -1
- package/dist/hoi4_agent_tools/schemas/index.d.ts +0 -5
- package/dist/hoi4_agent_tools/schemas/index.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/schemas/index.js +0 -5
- package/dist/hoi4_agent_tools/schemas/index.js.map +0 -1
- package/dist/hoi4_agent_tools/schemas/map.d.ts +0 -654
- package/dist/hoi4_agent_tools/schemas/map.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/schemas/map.js.map +0 -1
- package/dist/hoi4_agent_tools/schemas/transaction.d.ts +0 -259
- package/dist/hoi4_agent_tools/schemas/transaction.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/schemas/transaction.js.map +0 -1
- package/dist/hoi4_agent_tools/version.d.ts +0 -6
- package/dist/hoi4_agent_tools/version.d.ts.map +0 -1
- package/dist/hoi4_agent_tools/version.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/docs/adr/0001-runtime-and-language.md +0 -16
- package/docs/adr/0002-lossless-source-model.md +0 -18
- package/docs/adr/0003-image-and-font-codecs.md +0 -18
- package/docs/adr/0004-focus-layout.md +0 -16
- package/docs/adr/0005-offline-rendering.md +0 -18
- package/docs/adr/0006-mcp-sdk-and-protocol.md +0 -16
- package/docs/adr/0007-storage-and-transactions.md +0 -24
- package/docs/adr/0008-test-strategy.md +0 -18
- package/docs/adr/0009-packaging-and-registry.md +0 -16
- package/docs/adr/0010-unsupported-and-refusal-policy.md +0 -18
- package/docs/adr/0011-http-security.md +0 -16
- package/docs/adr/0012-autonomous-rewrites.md +0 -55
- package/docs/adr/README.md +0 -14
- package/docs/agent-integration.md +0 -146
- package/docs/architecture.md +0 -76
- package/docs/artifacts.md +0 -136
- package/docs/compatibility.md +0 -33
- package/docs/completion-report.md +0 -122
- package/docs/configuration.md +0 -305
- package/docs/focus-workflow.md +0 -197
- package/docs/gui-workflow.md +0 -125
- package/docs/limitations.md +0 -32
- package/docs/map-workflow.md +0 -95
- package/docs/performance.md +0 -117
- package/docs/release.md +0 -222
- package/docs/research/mcp-2026-07-10.md +0 -52
- package/docs/research/source-ledger.md +0 -68
- package/docs/security.md +0 -145
- package/docs/self-hosting.md +0 -170
- package/docs/testing.md +0 -43
- package/docs/third-party-notices.md +0 -11
- package/docs/transactions.md +0 -180
- package/docs/troubleshooting.md +0 -54
- package/schemas/configuration.schema.json +0 -795
- package/schemas/continuous-focus-palette.schema.json +0 -325
- package/schemas/focus-plan.schema.json +0 -927
- package/schemas/focus-planning-sidecar.schema.json +0 -379
- package/schemas/gui-animation-source.schema.json +0 -176
- package/schemas/gui-helper.schema.json +0 -301
- package/schemas/gui-scenario.schema.json +0 -298
- package/schemas/map-operation.schema.json +0 -2284
- package/schemas/operation-result.schema.json +0 -344
- package/schemas/transaction-manifest.schema.json +0 -685
package/docs/adr/README.md
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# Architecture decisions
|
|
2
|
-
|
|
3
|
-
1. [Runtime and language](0001-runtime-and-language.md)
|
|
4
|
-
2. [Lossless source model](0002-lossless-source-model.md)
|
|
5
|
-
3. [Image and font codecs](0003-image-and-font-codecs.md)
|
|
6
|
-
4. [Focus layout](0004-focus-layout.md)
|
|
7
|
-
5. [Offline rendering](0005-offline-rendering.md)
|
|
8
|
-
6. [MCP SDK and protocol](0006-mcp-sdk-and-protocol.md)
|
|
9
|
-
7. [Storage and transactions](0007-storage-and-transactions.md)
|
|
10
|
-
8. [Test strategy](0008-test-strategy.md)
|
|
11
|
-
9. [Packaging and Registry](0009-packaging-and-registry.md)
|
|
12
|
-
10. [Unsupported/refusal policy](0010-unsupported-and-refusal-policy.md)
|
|
13
|
-
11. [HTTP security](0011-http-security.md)
|
|
14
|
-
12. [Autonomous one-call rewrites](0012-autonomous-rewrites.md)
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
# Agent integration and autonomous tool selection
|
|
2
|
-
|
|
3
|
-
HOI4 Agent Tools is a capability server for coding agents. Once an MCP-compatible host has a persistent server registration, the coding agent should decide when to invoke it from the task and repository context. The server does not need a special activation phrase and does not replace the agent's planning, research, or source-control workflow.
|
|
4
|
-
|
|
5
|
-
## Persistent local availability
|
|
6
|
-
|
|
7
|
-
Use a durable server configuration and a pinned package version. The MCP host launches the stdio process when needed, so no background daemon or manual server window is required.
|
|
8
|
-
|
|
9
|
-
Suggested durable configuration locations:
|
|
10
|
-
|
|
11
|
-
- Windows: `%APPDATA%\hoi4-agent-tools\config.json`
|
|
12
|
-
- macOS: `~/.config/hoi4-agent-tools/config.json`
|
|
13
|
-
- Linux: `~/.config/hoi4-agent-tools/config.json`
|
|
14
|
-
|
|
15
|
-
Keep rewrite state outside every game, mod, dependency, artifact, and cache root. Generated artifact/cache storage may also be placed outside the mod by using `storageRoots`, `artifactRoot`, and `cacheRoot`. See [configuration](configuration.md).
|
|
16
|
-
|
|
17
|
-
Create and validate a configuration:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install --global hoi4-agent-tools@0.2.0
|
|
21
|
-
hoi4-agent-tools-setup --init-config /absolute/path/config.json --workspace /absolute/path/mod --workspace-id my_mod --workspace-name "My Mod" --game /absolute/path/game
|
|
22
|
-
hoi4-agent-tools-setup --diagnose --config /absolute/path/config.json
|
|
23
|
-
hoi4-agent-tools-setup --print-client-config --config /absolute/path/config.json
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
The initialization command above creates a read-only configuration. To choose the recommended autonomous mode instead, replace that initialization command with:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
hoi4-agent-tools-setup --init-config /absolute/path/config.json --workspace /absolute/path/mod --workspace-id my_mod --workspace-name "My Mod" --game /absolute/path/game --autonomous-writes --server-state /separate/operator/state
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
`--autonomous-writes` writes `"writePolicy": "autonomous"` and enables the named mod workspace. Use `--reviewed-writes --server-state /separate/operator/state` only when compatibility with the separate transaction review/apply sequence is required; `--enable-writes` remains a compatibility alias for reviewed mode. The flags are mutually exclusive. `--print-client-config` prints both a pinned `npx` registration and an optional global-install registration; it does not edit an MCP host's settings.
|
|
33
|
-
|
|
34
|
-
Generic host registration:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"mcpServers": {
|
|
39
|
-
"hoi4_agent_tools": {
|
|
40
|
-
"command": "npx",
|
|
41
|
-
"args": ["-y", "hoi4-agent-tools@0.2.0"],
|
|
42
|
-
"env": {
|
|
43
|
-
"HOI4_AGENT_CONFIG": "/absolute/path/config.json"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Codex registration:
|
|
51
|
-
|
|
52
|
-
```toml
|
|
53
|
-
[mcp_servers.hoi4_agent_tools]
|
|
54
|
-
command = "npx"
|
|
55
|
-
args = ["-y", "hoi4-agent-tools@0.2.0"]
|
|
56
|
-
startup_timeout_sec = 120
|
|
57
|
-
|
|
58
|
-
[mcp_servers.hoi4_agent_tools.env]
|
|
59
|
-
HOI4_AGENT_CONFIG = "/absolute/path/config.json"
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Use `npx.cmd` on Windows. Restart the coding-agent host after adding or changing the registration. Statically configured workspaces remain available across every server process; runtime `hoi4.project_register` registrations intentionally last only for the current process.
|
|
63
|
-
|
|
64
|
-
## Autonomous selection rules
|
|
65
|
-
|
|
66
|
-
A coding agent should select this server when a registered HOI4 workspace task involves any of these surfaces:
|
|
67
|
-
|
|
68
|
-
- national focus trees or continuous focus palettes;
|
|
69
|
-
- Clausewitz prerequisite, route-lock, mutual-exclusion, localisation, icon, AI, or linked-content validation;
|
|
70
|
-
- scripted GUI, interface, GFX, sprites, fonts, animation states, deterministic previews, or visual comparisons;
|
|
71
|
-
- states, provinces, province geometry, strategic regions, adjacency, supply nodes, or railways;
|
|
72
|
-
- source-preserving rewrites, visual diffs, and recoverable multi-file changes for those surfaces.
|
|
73
|
-
|
|
74
|
-
Do not use the server for arbitrary shell commands, general repository edits, game automation, or in-game screenshots. It exposes typed HOI4 services, not a command runner.
|
|
75
|
-
|
|
76
|
-
The normal first calls are:
|
|
77
|
-
|
|
78
|
-
1. `hoi4.project_status` to discover the configured workspace ID, effective `writePolicy`, and write status.
|
|
79
|
-
2. `hoi4.project_scan` when a complete shared symbol/reference revision is useful.
|
|
80
|
-
3. The relevant domain scan and lint tools.
|
|
81
|
-
4. Deterministic layout/render/compare tools before a source rewrite.
|
|
82
|
-
|
|
83
|
-
Large artifacts are returned as opaque `hoi4-agent://` resources. Read the linked resource instead of asking the tool to inline it. Artifact reads are range-bounded; use `?offset=N&length=1048576` until the complete advertised size has been retrieved.
|
|
84
|
-
|
|
85
|
-
## Large focus-tree repair
|
|
86
|
-
|
|
87
|
-
Use the Focus Tree Workbench for large or badly structured trees: broken or ambiguous prerequisites, duplicate coordinates, avoidable connector crossings, unstable route layout, missing references, weak convergence, or a tree whose visual structure no longer matches its route architecture.
|
|
88
|
-
|
|
89
|
-
The autonomous repair sequence is:
|
|
90
|
-
|
|
91
|
-
1. Call `hoi4.focus_scan`, `hoi4.focus_lint`, and `hoi4.focus_render` for the existing source. A very wide or deep national tree can pass `reviewScale` from `0.25` through `1.0`; retain that scale for proposed and final evidence.
|
|
92
|
-
2. Read the complete imported plan resource and baseline HTML/SVG/PNG/JSON/source-map artifacts.
|
|
93
|
-
3. Preserve prerequisites, exclusions, route locks, rewards, comments, raw passthrough, source locations, and provenance.
|
|
94
|
-
4. Assign explicit `branchGroups`, `laneGroups`, `branchId`, and `laneId` metadata that reflect the intended route architecture.
|
|
95
|
-
5. Keep only deliberate anchors fixed or pinned. Imported authored `x`/`y` values are intentionally treated as fixed; nodes do not become movable merely because `hoi4.focus_layout` was called.
|
|
96
|
-
6. Change movable nodes to automatic positions, optionally retaining route intent with preferred coordinates:
|
|
97
|
-
|
|
98
|
-
```json
|
|
99
|
-
{
|
|
100
|
-
"mode": "auto",
|
|
101
|
-
"pinned": false,
|
|
102
|
-
"preferredX": 8,
|
|
103
|
-
"preferredY": 12
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
7. Submit the complete plan once to `hoi4.focus_rewrite`. This performs deterministic proposed layout, source-preserving compilation, lint, before/proposed rendering, bitmap comparison, journal admission, application, index rebuild, and post-write validation. For a national tree whose default review canvas would exceed the bounded renderer, pass a uniform `reviewScale` from `0.25` through `1.0` (for example, `0.4` for a very large tree). It scales the complete visual rather than crowding node geometry, is applied identically to before and proposed artifacts, and does not change compiled focus coordinates. Optional `horizontalSpacing`, `verticalSpacing`, and `padding` controls remain available for intentional review-presentation changes.
|
|
108
|
-
8. Check `execution`, `changedFiles`, diagnostics, validation, source-map links, and visual evidence in the result. A blocked proposal has `execution: "planned"` and changes no source. A successful rewrite has `execution: "applied"`.
|
|
109
|
-
9. Rescan, lint, and render when additional final evidence is useful. The rewrite call already rescans and post-validates; if any application or post-validation step fails, the journal restores every affected file automatically before failure is returned.
|
|
110
|
-
|
|
111
|
-
`hoi4.focus_layout` by itself is deliberately conservative. It preserves fixed, relative, pinned, and prior-stable nodes. Full-tree cleanup is an explicit plan decision because silently rearranging authored coordinates would be unsafe.
|
|
112
|
-
|
|
113
|
-
## Creating a large focus tree
|
|
114
|
-
|
|
115
|
-
The coding agent translates repository requirements and route descriptions into the public `FocusTreePlan` schema at `hoi4-agent://schema/focus-plan`. The MCP server validates and compiles that typed plan; it is not an unbounded natural-language generator.
|
|
116
|
-
|
|
117
|
-
A serious large-tree plan should define:
|
|
118
|
-
|
|
119
|
-
- a small number of intentional fixed anchors and automatic branch nodes;
|
|
120
|
-
- lane and branch groups with stable order and horizontal bounds;
|
|
121
|
-
- exact AND/OR prerequisite grouping;
|
|
122
|
-
- reciprocal route exclusions where the UI should show them;
|
|
123
|
-
- shared support lanes that stay available to compatible political routes;
|
|
124
|
-
- convergence points, capstones, failure states, hidden/reveal metadata, and late-game payoffs;
|
|
125
|
-
- localisation keys, icon sprites, AI weights/strategies, filters, and links to decisions, events, ideas, leaders, helpers, and formables;
|
|
126
|
-
- raw passthrough for unsupported or not-yet-modelled Clausewitz content.
|
|
127
|
-
|
|
128
|
-
For a new source beneath `common/national_focus`, call `hoi4.focus_rewrite` with `createIfMissing: true`. Use `plan:<tree-id>` as creation `provenance.sourcePath` and 64 zeroes for both initial provenance hashes only when the target is missing. Existing targets normally use imported, hash-bound provenance; resolving intentional plan/source drift additionally requires explicit `authority: "plan"`. Creation refuses to append a different tree to an existing source file. The one-call rewrite retains transparent before evidence, complete proposed artifacts, and exact recovery bytes for the newly created source and sidecar.
|
|
129
|
-
|
|
130
|
-
## Write autonomy and safety boundary
|
|
131
|
-
|
|
132
|
-
Read-only remains the default. With global `writePolicy: "autonomous"` and `writeEnabled: true` on a canonical mod workspace, the server exposes only the one-call source tools:
|
|
133
|
-
|
|
134
|
-
- `hoi4.focus_rewrite`;
|
|
135
|
-
- `hoi4.gui_rewrite`;
|
|
136
|
-
- `hoi4.map_rewrite`.
|
|
137
|
-
|
|
138
|
-
Each rewrite internally creates a complete hash-bound plan, validates it, persists an authenticated journal and exact before-bytes, applies it under the workspace lock, rebuilds the shared index, and post-validates. Invalid proposals never apply. Stale source, wrong principal/workspace bindings, write-scope failure, application errors, final hash mismatch, and post-validation failures fail closed; failures after replacement begins trigger automatic restoration. Transaction status, diff, apply, and rollback tools are intentionally not registered in autonomous mode.
|
|
139
|
-
|
|
140
|
-
MCP itself does not mandate a confirmation dialog for each mutating tool. The rewrite tools advertise `readOnlyHint: false` and `destructiveHint: true`, but those annotations are hints to the client. The server cannot override a coding-agent host policy that prompts for, blocks, or otherwise constrains the call. Operators grant server-side authority through configuration and, for HTTP, the `hoi4:write` scope; clients independently decide how that authority is presented to users.
|
|
141
|
-
|
|
142
|
-
Git remains the project-history, collaboration, and intentional-revert layer. The authenticated journal is separate operational recovery: it prevents an interrupted or invalid multi-file rewrite from being reported as success or left partially applied.
|
|
143
|
-
|
|
144
|
-
## Reviewed transaction compatibility
|
|
145
|
-
|
|
146
|
-
Set `writePolicy: "transactions"` (or initialize with `--reviewed-writes`) only when a client or workflow still depends on the older review boundary. In that mode, the server exposes `hoi4.focus_plan_changes`, `hoi4.gui_plan_changes`, and `hoi4.map_plan`; callers page through `hoi4.transaction_diff`, then call `hoi4.transaction_apply` with the exact transaction ID and plan hash. `hoi4.transaction_status` and explicit `hoi4.transaction_rollback` are also available. The same planning, hash checks, journal, post-validation, and failure-recovery engine is used in both write modes.
|
package/docs/architecture.md
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Architecture
|
|
2
|
-
|
|
3
|
-
All external behavior enters through MCP and calls typed domain services. Transport code validates protocol and authorization; it does not parse source, lay out graphs, render images, or write files. The configured write policy selects the public MCP surface without changing the shared core implementation.
|
|
4
|
-
|
|
5
|
-
In this documentation, “read-only” scan, lint, layout, and render operations mean that registered HOI4 source bytes are never changed. MCP `readOnlyHint` follows the protocol's broader environmental-mutation meaning: an operation that creates content-addressed evidence under an allowlisted generated-artifact root advertises `readOnlyHint: false`, even though it cannot edit game or mod source.
|
|
6
|
-
|
|
7
|
-
```text
|
|
8
|
-
MCP tools/resources/prompts
|
|
9
|
-
│
|
|
10
|
-
▼
|
|
11
|
-
focus / gui / map services
|
|
12
|
-
│
|
|
13
|
-
▼
|
|
14
|
-
workspace resolver ─ source CST ─ symbol/reference index
|
|
15
|
-
│ │
|
|
16
|
-
├─ diagnostics ───┤
|
|
17
|
-
├─ artifact store ┤
|
|
18
|
-
└─ transaction journal / diffs / rollback
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Workspace overlay
|
|
22
|
-
|
|
23
|
-
A workspace combines a mod root, an optional installed-game reference root, ordered dependency roots, owner-scoped `replace_path` declarations, conventional subsystem roots, an artifact root, cache root, and optional fixture root. File traversal is stable. Same-relative-path files are shadowed by higher load order; each mod or dependency replacement declaration hides its subtree only in lower-precedence roots.
|
|
24
|
-
|
|
25
|
-
Paths are canonicalized through existing ancestors. Public operations accept relative paths only and reject traversal, absolute/device/UNC paths, alternate data streams, Windows device names, and symlink or junction escapes. Game and dependency roots are immutable.
|
|
26
|
-
|
|
27
|
-
## Source model
|
|
28
|
-
|
|
29
|
-
The lexer retains original bytes and every token: whitespace, comments, strings, atoms, operators, braces, and invalid ranges. The CST retains duplicate keys and ordered blocks. Semantic readers build focus, GUI, or map views over CST ranges. Targeted replacements splice the original decoded text and encode with the original UTF-8 BOM, UTF-8, or Windows-1252 mode. No-change serialization returns original bytes.
|
|
30
|
-
|
|
31
|
-
Malformed or unrepresentable content blocks rewriting. Unknown constructs remain raw source, not guessed fields.
|
|
32
|
-
|
|
33
|
-
## Shared index
|
|
34
|
-
|
|
35
|
-
`CoreEngine.scan` creates the authoritative `SymbolIndex` for an exact file snapshot. Focus consumes it directly; Scripted GUI receives that same index when building its connected source graph; Agent Nudger attaches it as `MapWorkspaceIndex.sharedIndex` and layers raster/network semantics over it. Proposed-file graphs rebuild through the shared index service rather than a domain parser authority.
|
|
36
|
-
|
|
37
|
-
The index connects tree/focus IDs, sprites/textures, GUI elements, scripted GUI entries, localisation, state/province IDs and colors, strategic regions, adjacencies, supply nodes, railways, and cross-file references. Definitions retain load order, locations, collision state, and override evidence. Province definitions are resolved from each source root's own `default.map` selector, with lower partial roots inheriting the active selector name.
|
|
38
|
-
|
|
39
|
-
Large binary rasters and translation catalogs are selected lazily rather than retained wholesale. Agent Nudger follows the active `default.map` province-bitmap selector. The shared index uses `l_english`, while GUI scenario operations add every explicitly requested language. This narrows scan breadth without changing source precedence or the lossless representation of any selected file.
|
|
40
|
-
|
|
41
|
-
## Determinism
|
|
42
|
-
|
|
43
|
-
Canonical JSON sorts keys with a locale-independent total UTF-16 code-unit order, traversal uses stable path ordering, layout tie-breaking is fixed, and artifact names are content hashes. Render profiles include source/asset/font hashes and all scenario geometry. Timestamps, host paths, locale collation, random IDs, and time zones are excluded from hashed artifacts.
|
|
44
|
-
|
|
45
|
-
## Artifacts and write execution
|
|
46
|
-
|
|
47
|
-
Generated evidence is content-addressed below `.hoi4-agent/artifacts`. Artifact manifests bind their
|
|
48
|
-
immutable provenance address to a hash-only canonical workspace and configured/runtime owner
|
|
49
|
-
identity. Runtime-generated stores also carry an atomic persistent owner claim, while statically
|
|
50
|
-
configured workspaces retain one shared operator identity for their explicit grants.
|
|
51
|
-
|
|
52
|
-
The server has three configured source policies. `read-only` authorizes no source mutation.
|
|
53
|
-
`autonomous` registers `hoi4.focus_rewrite`, `hoi4.gui_rewrite`, and `hoi4.map_rewrite`, but not
|
|
54
|
-
transaction status, diff, apply, or rollback tools. `transactions` is a compatibility surface that
|
|
55
|
-
registers domain planning plus the separate transaction tools. MCP annotations remain truthful:
|
|
56
|
-
the autonomous rewrite tools advertise `readOnlyHint: false` and `destructiveHint: true`. Those
|
|
57
|
-
annotations do not mandate a client prompt, and the server cannot override its host's approval
|
|
58
|
-
policy.
|
|
59
|
-
|
|
60
|
-
Internally, both write policies call the same transaction core. A journal includes the complete affected-file set, before/after hashes and blobs, operation
|
|
61
|
-
provenance, validation, source/binary/visual diffs, expiry, principal, workspace/root fingerprint,
|
|
62
|
-
and plan hash. Its complete mutable journal is HMAC-authenticated by a random key beneath the
|
|
63
|
-
isolated `serverStateRoot`; a protected latest-revision head prevents replay and bounds state to one
|
|
64
|
-
head per admitted cache journal.
|
|
65
|
-
|
|
66
|
-
In autonomous mode, the domain tool plans and validates, admits the journal, applies, rebuilds the
|
|
67
|
-
index, and post-validates inside one call. Apply acquires one workspace write lock, rechecks
|
|
68
|
-
preconditions, stages files on the same volume, and journals deterministic replacements. Failure
|
|
69
|
-
and startup recovery restore original blobs automatically. This is recoverable logical atomicity;
|
|
70
|
-
another process can briefly observe a replacement sequence, but the server never reports success
|
|
71
|
-
for a partial result.
|
|
72
|
-
|
|
73
|
-
Git provides durable project history and collaboration. The internal journal is deliberately
|
|
74
|
-
independent of Git so failed multi-file writes recover even in an unversioned workspace.
|
|
75
|
-
|
|
76
|
-
Detailed decisions are recorded in [ADRs](adr/README.md).
|
package/docs/artifacts.md
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Artifact resources
|
|
2
|
-
|
|
3
|
-
Tools return compact summaries and links. Content is stored by SHA-256 under the workspace's configured artifact root and exposed through an authorization-checked URI:
|
|
4
|
-
|
|
5
|
-
```text
|
|
6
|
-
hoi4-agent://workspace/{workspaceId}/artifact/{sha256}/{provenanceHash}/{name}
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
An applied autonomous rewrite returns a source-linked `*.execution-validation.json` resource with the complete pre-write and post-write checks, final target hashes, diagnostics, and any overflow-validation resource links. This public evidence omits the engine's internal transaction ID and plan hash.
|
|
10
|
-
|
|
11
|
-
Each version-2 manifest records name, MIME type, byte size, content hash, artifact kind,
|
|
12
|
-
tool/schema version, SHA-256 source hashes, render profile, domain metadata, and hash-only bindings
|
|
13
|
-
for the resolved workspace and its configured or runtime owner. Filesystem paths and raw principals
|
|
14
|
-
are not exposed. Missing/create/delete states belong in provenance metadata, never sentinel values
|
|
15
|
-
inside the source-hash map.
|
|
16
|
-
|
|
17
|
-
Very broad domain inventories retain a deterministic path/hash sample capped at 256 entries and
|
|
18
|
-
128 KiB in the manifest, plus a count and a SHA-256 commitment over every length-prefixed sorted
|
|
19
|
-
path/hash pair. This policy applies uniformly to project, focus, GUI, and map evidence. Complete
|
|
20
|
-
inventories remain in the structured artifact content: project diagnostics use their exact `files`
|
|
21
|
-
inventory, while focus, GUI, and map JSON evidence records exact source hashes. Binary and HTML
|
|
22
|
-
review artifacts carry the same bounded, digest-backed provenance and are paired with the exact
|
|
23
|
-
structured evidence for their bundle. Bounding a manifest therefore does not drop source evidence.
|
|
24
|
-
The inventory commitment uses the versioned `sha256-length-prefixed-path-digest-v1` algorithm
|
|
25
|
-
recorded in metadata.
|
|
26
|
-
|
|
27
|
-
The manifest is immutable for a given content hash, provenance hash, and artifact name. Repeating the same bytes, name, and provenance is idempotent. Identical content produced from a different source revision receives a distinct provenance hash and URI while reusing the same content-addressed bytes, so earlier evidence is never rewritten or ambiguously relabelled.
|
|
28
|
-
|
|
29
|
-
Artifact names ending in `.manifest.json`, under an ASCII case-insensitive comparison, are reserved
|
|
30
|
-
for store metadata and rejected. This rule is identical on case-sensitive and case-insensitive
|
|
31
|
-
filesystems, so content can never be mistaken for an inventory manifest.
|
|
32
|
-
|
|
33
|
-
The workspace and owner bindings participate in the provenance hash and are checked by list,
|
|
34
|
-
describe, and resource reads. A store reused by another workspace ID, canonical root topology, or
|
|
35
|
-
runtime principal cannot enumerate or read the older manifests. Statically configured workspaces
|
|
36
|
-
derive one shared operator identity, so all explicitly granted principals retain their intended
|
|
37
|
-
access. Legacy unbound manifests and malformed/conflicting manifests fail closed; the server does
|
|
38
|
-
not delete or relabel them automatically.
|
|
39
|
-
|
|
40
|
-
Resource reads are limited to 1 MiB per request and support `offset` and `length` query parameters for large artifacts. Integrity verification streams the complete artifact through a fixed-size hash buffer while retaining only the requested range, so chunking also bounds payload memory. Only a complete payload that round-trips as strict UTF-8 may return MCP `text`. Every partial range, invalid UTF-8 payload, image, and other binary returns an MCP base64 `blob`, preserving exact bytes even when a range splits a code point. Clients advance `offset` by the decoded byte count and continue until a chunk is shorter than the requested length; the same rule applies to provenance-manifest resources.
|
|
41
|
-
|
|
42
|
-
Some complete logical evidence, notably an installed workspace's GUI source graph, can legitimately
|
|
43
|
-
be larger than `artifactMaxSingleBytes`. Callers that opt into byte-exact logical storage receive a
|
|
44
|
-
normal artifact when the payload fits. An oversized payload instead returns one small canonical
|
|
45
|
-
JSON index named `*.chunks.json`. The index records `type = hoi4-agent.chunked-artifact`, the
|
|
46
|
-
original name, MIME type, size, SHA-256 and description, followed by ordered chunk resource links
|
|
47
|
-
with indexes, byte offsets, lengths and SHA-256 hashes. Chunks use
|
|
48
|
-
`application/octet-stream`; concatenating their decoded bytes in index order must reproduce the
|
|
49
|
-
recorded original size and SHA-256 exactly. The index itself is limited to 1 MiB so an MCP client
|
|
50
|
-
can read it in one request.
|
|
51
|
-
|
|
52
|
-
The chunks and index are one atomic artifact batch. Every physical object and provenance manifest
|
|
53
|
-
counts against the same aggregate-byte and entry quotas, every chunk remains at or below the
|
|
54
|
-
configured per-object ceiling, and any admission, write, cancellation or owning-commit failure
|
|
55
|
-
removes all files newly created by the bundle. This representation is lossless storage, not graph
|
|
56
|
-
truncation or a quota bypass. `hoi4.gui_scan` and GUI render source-graph evidence return only the
|
|
57
|
-
logical index link; agents follow its resource links when they need the full graph.
|
|
58
|
-
|
|
59
|
-
Logical chunk preparation has a separate fixed 536,870,912-byte in-memory batch ceiling, and a
|
|
60
|
-
lower configured `artifactMaxBytes` always wins. Before any payload is copied or hashed, admission
|
|
61
|
-
validates every logical write's name, provenance and byte length, checks safe aggregate arithmetic,
|
|
62
|
-
and projects the complete physical entry count after chunking. Preflight yields after each 256
|
|
63
|
-
logical writes so cancellation can stop a broad batch before preparation. Preparation is then
|
|
64
|
-
sequential, verifies that each admitted byte length is unchanged, and yields during hashing every
|
|
65
|
-
16 MiB. Chunks share the one owned logical buffer during preparation instead of duplicating it.
|
|
66
|
-
Crossing the fixed preparation ceiling fails with `ARTIFACT_LOGICAL_BATCH_LIMIT` before allocation.
|
|
67
|
-
|
|
68
|
-
Artifact listing is paged at no more than 100 links. The store walks the complete sorted manifest
|
|
69
|
-
inventory to verify bindings and compute an exact SHA-256 inventory revision, but retains only the
|
|
70
|
-
requested page in memory. Cursors name the last public URI and are accepted only when that exact URI
|
|
71
|
-
still occurs under the same revision. Listing and content verification honor request cancellation
|
|
72
|
-
between directories, manifests, and hash chunks.
|
|
73
|
-
|
|
74
|
-
Manifest reads stat the file and enforce the fixed 1 MiB ceiling before signal-aware JSON loading.
|
|
75
|
-
Artifact writes, existing-content verification, quota walks, and queue waits also honor
|
|
76
|
-
cancellation. A cancelled batch completes non-cancellable cleanup of every partial file. Once the
|
|
77
|
-
caller's commit callback begins, that callback owns its critical-phase completion rules.
|
|
78
|
-
|
|
79
|
-
## Storage placement
|
|
80
|
-
|
|
81
|
-
A mod workspace defaults to `<mod>/.hoi4-agent/artifacts`; any in-mod override must remain beneath
|
|
82
|
-
that exact generated subtree. An operator may instead place it beneath a configured `storageRoots`
|
|
83
|
-
parent. A primary `game` or `dependency` workspace must always use an explicit operator-owned
|
|
84
|
-
artifact root beneath `storageRoots`, separate from its explicit cache root. Artifact and cache
|
|
85
|
-
roots cannot overlap each other or a source root.
|
|
86
|
-
|
|
87
|
-
Generated artifact writes never make the game, dependency, or fixture source writable. Source
|
|
88
|
-
changes use a separate autonomous-rewrite or reviewed-transaction surface and are confined to the
|
|
89
|
-
mod root.
|
|
90
|
-
|
|
91
|
-
## Retention quotas
|
|
92
|
-
|
|
93
|
-
The default per-workspace limits are:
|
|
94
|
-
|
|
95
|
-
- `artifactMaxBytes`: 536,870,912 bytes across content and manifests;
|
|
96
|
-
- `artifactMaxEntries`: 5,000 provenance manifests;
|
|
97
|
-
- `artifactMaxSingleBytes`: 134,217,728 bytes for one content object;
|
|
98
|
-
- serialized provenance manifests have a separate fixed 1 MiB ceiling and bounded fields.
|
|
99
|
-
- one logical chunk-preparation batch has a fixed 536,870,912-byte ceiling.
|
|
100
|
-
|
|
101
|
-
Content deduplication means a reused content hash adds no duplicate content bytes, while a new
|
|
102
|
-
provenance manifest still counts as an entry and consumes its serialized bytes. Within one server
|
|
103
|
-
process, the store measures current usage under an in-process per-root write queue before adding
|
|
104
|
-
immutable files. Multi-artifact operations preflight all logical writes and their projected
|
|
105
|
-
normal/chunk/index entries as one batch before payload copying or hashing, then retain newly created
|
|
106
|
-
content and manifests only if their owning operation commits. A failed rewrite-journal admission
|
|
107
|
-
removes the diff files created by that batch without deleting pre-existing shared
|
|
108
|
-
content or provenance. If the complete content and manifest would exceed a count, aggregate-byte,
|
|
109
|
-
or per-object ceiling, the store refuses the write with `ARTIFACT_STORAGE_LIMIT`,
|
|
110
|
-
`ARTIFACT_LOGICAL_BATCH_LIMIT`, `ARTIFACT_SINGLE_LIMIT`, `ARTIFACT_CHUNK_INDEX_LIMIT`, or
|
|
111
|
-
`ARTIFACT_MANIFEST_LIMIT`; it does not write a truncated artifact or evict older evidence. Listing
|
|
112
|
-
also refuses when an externally modified store is already over its configured retention budget.
|
|
113
|
-
|
|
114
|
-
Artifact retention has no automatic garbage collector. Operator deletion is explicit and should
|
|
115
|
-
be coordinated with active requests; deleting an artifact invalidates its URI. In contrast,
|
|
116
|
-
internal journal cleanup follows the separate rules in [autonomous rewrites and transactions](transactions.md). Do not
|
|
117
|
-
share one writable artifact root between uncoordinated server processes; an operating-system
|
|
118
|
-
storage service or operator must provide that coordination.
|
|
119
|
-
|
|
120
|
-
Typical artifacts:
|
|
121
|
-
|
|
122
|
-
- shared diagnostics and capability reports;
|
|
123
|
-
- focus HTML/SVG/PNG/JSON, generated-source maps, and hash-bound planning sidecars;
|
|
124
|
-
- GUI renders, galleries, hierarchy/click maps, comparisons, and fidelity reports;
|
|
125
|
-
- map layers, changed-pixel reports, and before/after previews;
|
|
126
|
-
- rewrite journals, source diffs, binary diffs, and validation reports.
|
|
127
|
-
|
|
128
|
-
Structured JSON evidence records source paths, hashes, frame numbers, dimensions, formats, and
|
|
129
|
-
fidelity metadata, but strips embedded `data:` payloads and glyph bitmap bytes. Composite SVG and
|
|
130
|
-
PNG review renders may contain processed, source-derived icon, sprite-frame, or font-glyph pixels
|
|
131
|
-
needed to inspect the requested interface; they are principal-bound generated evidence, not raw
|
|
132
|
-
asset-file resources. The server never registers an installed-game, dependency, or mod raster/font
|
|
133
|
-
file itself as an artifact.
|
|
134
|
-
|
|
135
|
-
Artifacts are evidence. External HOI4 source remains authoritative. Deleting the configured
|
|
136
|
-
artifact root invalidates only generated evidence, not mod content.
|
package/docs/compatibility.md
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Compatibility and versioning
|
|
2
|
-
|
|
3
|
-
## Runtime and platforms
|
|
4
|
-
|
|
5
|
-
| Component | Supported |
|
|
6
|
-
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
7
|
-
| Node.js | 22.x and 24.x |
|
|
8
|
-
| Windows | Windows 10/11 x64 |
|
|
9
|
-
| Linux | Current x64/arm64 distributions supported by Node and Sharp |
|
|
10
|
-
| macOS | Source package supported; CI coverage may lag Windows/Linux |
|
|
11
|
-
| MCP | Final `2025-11-25` only; initialization requests for other revisions receive `2025-11-25` so clients without that revision can disconnect cleanly |
|
|
12
|
-
| HOI4 | Current file formats are capability-scanned; no fixed game installation path |
|
|
13
|
-
|
|
14
|
-
The `2026-07-28` protocol was a release candidate at 0.1.0 development time. Adopting its breaking stateless core and SDK v2 requires a compatibility release after it is final and supported by clients.
|
|
15
|
-
|
|
16
|
-
The pinned SDK also recognizes `2025-06-18`, `2025-03-26`, `2024-11-05`, and `2024-10-07`, but this server does not claim them: its public contracts use the final revision's structured output and resource-link behavior. Both stdio and Streamable HTTP gate negotiation to `2025-11-25`. After initialization, every Streamable HTTP POST, GET, or DELETE must carry `MCP-Protocol-Version: 2025-11-25`; a missing or different value receives a JSON-RPC error with HTTP status 400.
|
|
17
|
-
|
|
18
|
-
## Public schemas
|
|
19
|
-
|
|
20
|
-
Tool names and input/output schemas are public API. Additive compatible changes use a minor release. Removing/renaming a tool or changing accepted/returned meaning requires a major release or a documented deprecation period. Schema version, package version, server implementation version, changelog, container tag, and Registry metadata stay synchronized.
|
|
21
|
-
|
|
22
|
-
Focus consumers can use `focus-plan.schema.json`, `focus-planning-sidecar.schema.json`, and `continuous-focus-palette.schema.json`. The planning sidecar is hash-bound enrichment data; it is not Clausewitz source and is never loaded by HOI4.
|
|
23
|
-
|
|
24
|
-
Focus reward import ships a reviewed native-effect identifier catalog derived from the official
|
|
25
|
-
HOI4 1.19.2 `effects_documentation.md`. This lets the importer distinguish engine effects from
|
|
26
|
-
direct `scripted_effect_id = yes/{ ... }` calls without requiring an installed game at runtime.
|
|
27
|
-
Compatibility reviews must refresh the catalog when official effect identifiers change; unknown
|
|
28
|
-
effect-position scalars remain source-linked helper references so stale or misspelled calls lint
|
|
29
|
-
as missing instead of disappearing.
|
|
30
|
-
|
|
31
|
-
## Configuration migration
|
|
32
|
-
|
|
33
|
-
Config has an integer `version`. Unknown versions or fields fail with deterministic diagnostics. A future migration utility must print a reviewable proposed config and never edit a client or workspace silently.
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# Completion report: 0.1.7 public release
|
|
2
|
-
|
|
3
|
-
> Historical release record. Version 0.2.0 supersedes the agent-facing write workflow described here; see [ADR 0012](adr/0012-autonomous-rewrites.md) and the current workflow documentation.
|
|
4
|
-
|
|
5
|
-
- Released version: `0.1.7`
|
|
6
|
-
- Report date: 2026-07-12
|
|
7
|
-
- Status: complete; public delivery, installation, and a real external-workspace transaction are verified
|
|
8
|
-
- Release commit: `9718388626a29dc4b584ae235bdbe325689e44b0`
|
|
9
|
-
- Annotated tag object: `d06a18d106a53007e12a202468cd85356ca91ef7`
|
|
10
|
-
- Exact-source CI: [run 29183088020](https://github.com/klimPaskov/hoi4-agent-tools/actions/runs/29183088020)
|
|
11
|
-
- Release workflow: [run 29183455724](https://github.com/klimPaskov/hoi4-agent-tools/actions/runs/29183455724)
|
|
12
|
-
|
|
13
|
-
## Outcome
|
|
14
|
-
|
|
15
|
-
The release provides one source-preserving engine for the Focus Tree Workbench, Scripted GUI Studio, Agent Nudger map workflow, MCP handlers, workspace resolution, Clausewitz parsing, symbol indexing, diagnostics, configuration, transactions, artifacts, diffs, and rollback data. It starts read-only, supports local stdio and secured Streamable HTTP, and is published as an installable package, a dual-platform container, an immutable GitHub Release, and an active/latest MCP Registry server.
|
|
16
|
-
|
|
17
|
-
The coding agent selects the server from repository and task context once its MCP host has a persistent registration. No special activation phrase or background daemon is required. The public documentation covers pinned `npx`, optional global installation, durable configuration, Codex and generic client registration, self-hosted HTTP, safe transactions, and large focus-tree repair and creation.
|
|
18
|
-
|
|
19
|
-
Version `0.1.7` additionally qualifies:
|
|
20
|
-
|
|
21
|
-
- uniform `reviewScale` output for large national-tree baseline, transaction, and final artifacts without changing logical geometry or compiled coordinates;
|
|
22
|
-
- exact import, schema, compilation, and targeted-update support for safe symbolic focus-cost constants;
|
|
23
|
-
- complete proposed and post-write focus diagnostics as MCP resources while the bounded inline/manifest limits remain enforced;
|
|
24
|
-
- sidecar-aware post-write focus validation without treating adjacent JSON planning metadata as Clausewitz focus source;
|
|
25
|
-
- agent-first discovery and setup wording, with no human-request activation framing.
|
|
26
|
-
|
|
27
|
-
No installed-game data, external-mod data, local configuration, runtime artifacts, test fixtures, source files, or tests are included in the npm payload.
|
|
28
|
-
|
|
29
|
-
## Qualification evidence
|
|
30
|
-
|
|
31
|
-
All 46 portable test files passed: 503 tests passed and one POSIX-only case was intentionally skipped on Windows. Enforced coverage is 88.58% statements, 78.34% branches, 91.38% functions, and 90.03% lines.
|
|
32
|
-
|
|
33
|
-
The release gate and exact-source CI also verified:
|
|
34
|
-
|
|
35
|
-
- deterministic project-owned focus, GUI, and map fixtures and generated schemas;
|
|
36
|
-
- a 417-file package allowlist and clean installed entry points;
|
|
37
|
-
- official MCP Inspector discovery against the production stdio server;
|
|
38
|
-
- Node 22 and 24 on Windows and Linux plus the production container build;
|
|
39
|
-
- zero dependency vulnerabilities, 448 dependency registry signatures, and 128 dependency attestations in the pinned release checkout;
|
|
40
|
-
- live official MCP Registry schema/API validation;
|
|
41
|
-
- strict tag, main ancestry, release ordering, immutable-release settings, and exact artifact identity;
|
|
42
|
-
- stdio stdout isolation, authenticated/Origin-validated Streamable HTTP, limits, isolation, progress, cancellation, sessions, and resource reads;
|
|
43
|
-
- source preservation, deterministic rendering, bitmap diffs, stale-plan rejection, atomic multi-file apply, post-write validation, exact rollback, symlink/path/cross-workspace security, and end-to-end coding-agent workflows.
|
|
44
|
-
|
|
45
|
-
Independent final code and documentation reviews found no actionable defects. The code review covered symbolic cost preservation, uniform review scaling, complete diagnostic resources, capacity accounting, rollback behavior, sidecar filtering, and security boundaries.
|
|
46
|
-
|
|
47
|
-
## Public delivery status
|
|
48
|
-
|
|
49
|
-
| Surface | Verified public evidence | Status |
|
|
50
|
-
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
|
|
51
|
-
| GitHub source | Public repository, annotated tag object `d06a18d...`, peeled commit `97183886...`, and green exact-source CI | Verified |
|
|
52
|
-
| npm | `hoi4-agent-tools@0.1.7`, Registry signature, npm publish attestation, and SLSA provenance v1 | Verified |
|
|
53
|
-
| GitHub Release | Immutable [Release v0.1.7](https://github.com/klimPaskov/hoi4-agent-tools/releases/tag/v0.1.7), ID `352694363`, with exactly four byte-verified assets | Verified |
|
|
54
|
-
| GHCR | Anonymous `ghcr.io/klimpaskov/hoi4-agent-tools:0.1.7` OCI index with exact amd64/arm64 runtimes and attached attestations | Verified |
|
|
55
|
-
| MCP Registry | Exact `io.github.klimPaskov/hoi4-agent-tools@0.1.7` record with official `active` and `isLatest: true` state | Verified |
|
|
56
|
-
| Public install | Clean install, signature/attestation audit, stdio discovery, and authenticated Streamable HTTP qualification | Verified |
|
|
57
|
-
|
|
58
|
-
### npm and provenance
|
|
59
|
-
|
|
60
|
-
- Published at `2026-07-12T07:09:58.926Z`; `latest` resolves to `0.1.7`.
|
|
61
|
-
- Tarball: `688,684` bytes at `https://registry.npmjs.org/hoi4-agent-tools/-/hoi4-agent-tools-0.1.7.tgz`.
|
|
62
|
-
- SHA-1: `6c34d998f664b846de4a9b60a6dbadd39898a6cc`.
|
|
63
|
-
- SHA-256: `e0c08ca4db2347dfadc767eea230d4c24071b6f54b1927c7e2a9aa2eec524b0e`.
|
|
64
|
-
- SRI: `sha512-PmCgPyh/qA5dj6jgCpMKsKqFcQCVk0PdMa2PwATfcJ4EETbKgknJEKuaxHLb+UoPaFiDkHSQEJu2fF/UV8EGfQ==`.
|
|
65
|
-
- The npm and GitHub Release tarballs are byte-identical. The npm publish attestation is recorded at Rekor log index `2148574615`; SLSA provenance v1 is recorded at index `2148573874` and binds `release.yml`, `refs/tags/v0.1.7`, release commit `9718388626a29dc4b584ae235bdbe325689e44b0`, and release run `29183455724`.
|
|
66
|
-
|
|
67
|
-
### Immutable GitHub Release
|
|
68
|
-
|
|
69
|
-
The GitHub Actions bot published Release ID `352694363` at `2026-07-12T07:15:14Z`. It is neither a draft nor a prerelease and reports `immutable: true`.
|
|
70
|
-
|
|
71
|
-
| Asset | Bytes | SHA-256 |
|
|
72
|
-
| ---------------------------- | ------: | ------------------------------------------------------------------ |
|
|
73
|
-
| `container-image.json` | 361 | `06695fa817a1ac9bc2fbb94840c817732875fec0988fe6caa23d46fec75983cb` |
|
|
74
|
-
| `hoi4-agent-tools-0.1.7.tgz` | 688,684 | `e0c08ca4db2347dfadc767eea230d4c24071b6f54b1927c7e2a9aa2eec524b0e` |
|
|
75
|
-
| `npm-pack.json` | 50,050 | `9417225028ae5f516c5f727785eedf8764842d96e98a9674caab0c671dea3312` |
|
|
76
|
-
| `release-identity.json` | 431 | `49318a7d830e410520e61c6d7f9e67af2be8f072ecde50645f2d19cb962c5a79` |
|
|
77
|
-
|
|
78
|
-
### GHCR image and attestations
|
|
79
|
-
|
|
80
|
-
- OCI index: `sha256:b9651c3647d6f0efe563f82a7973ab4dcde7165546507a7fe6e4e429b0c31f0c`.
|
|
81
|
-
- `linux/amd64`: `sha256:c4927b19b736ced1e528694e8f53bffd8f28066463ab806eacce1ee064715741`.
|
|
82
|
-
- `linux/arm64`: `sha256:372c9ac76ced1cd7afb03e985cbb17855f9e44500257ca816c5f376ad233db7b`.
|
|
83
|
-
- The index exposes exactly two runtime manifests and one attached attestation manifest per runtime. The checked-in release workflow verifies SPDX SBOM and SLSA statements, anonymous access, exact source identity, non-root execution, read-only container behavior, and both supported architectures.
|
|
84
|
-
|
|
85
|
-
### MCP Registry and public installation
|
|
86
|
-
|
|
87
|
-
The official Registry returned `io.github.klimPaskov/hoi4-agent-tools@0.1.7` with `status: active` and `isLatest: true`. `publishedAt`, `updatedAt`, and `statusChangedAt` are all `2026-07-12T07:15:29.426439Z`.
|
|
88
|
-
|
|
89
|
-
A fresh independent public install fetched 132 packages. Its signature audit verified 131 installed-package signatures and 17 attestations with no invalid or missing records. Installed stdio and authenticated, Origin-validated Streamable HTTP initialization/discovery and protocol workflows passed.
|
|
90
|
-
|
|
91
|
-
## Real large-focus transaction proof
|
|
92
|
-
|
|
93
|
-
The published `0.1.7` stdio server was exercised against a 238-focus external mod workspace without copying that workspace into this repository or package.
|
|
94
|
-
|
|
95
|
-
- Baseline import preserved all 238 focus IDs and symbolic costs and reported 15 avoidable connector crossings.
|
|
96
|
-
- The structured plan used 14 branch groups, 12 ordered lanes, 16 fixed anchors, and 222 automatically placed nodes.
|
|
97
|
-
- The proposed layout has 238 unique coordinates, zero parent-order violations, zero connector-crossing findings, and zero errors or blockers.
|
|
98
|
-
- Source and semantic projections are byte-identical after normalising only focus `x`/`y` and `continuous_focus_position`; prerequisites, exclusions, rewards, triggers, comments, unknown fields, raw blocks, ordering, encoding, and symbolic costs are preserved.
|
|
99
|
-
- The dry run emitted one complete transaction-diff page with 14 artifacts. A second fresh dry run reproduced every non-manifest artifact byte-for-byte.
|
|
100
|
-
- A public-package apply passed all eight validation checks. Explicit rollback restored the exact baseline source hash and removed the newly created planning sidecar. A fresh transaction was then applied and retained.
|
|
101
|
-
- Final scan/lint/render recovered all planning metadata and reproduced the reviewed 6317 by 1997 PNG exactly at `reviewScale: 0.4`.
|
|
102
|
-
- Complete proposed and post-write diagnostic resources retained 116 content-specific repeated-reward warnings with zero hard findings. The fixed transaction diagnostic ceiling was not raised or bypassed.
|
|
103
|
-
|
|
104
|
-
## Acceptance coverage
|
|
105
|
-
|
|
106
|
-
| Acceptance source | Completion evidence |
|
|
107
|
-
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
108
|
-
| `00_standalone_project_bootstrap.md` | Independent public Git repository, Apache-2.0 licensing, project-owned instructions/docs/tests/workflows, installable npm package, immutable Release, and Registry metadata |
|
|
109
|
-
| `01_shared_architecture.md` | One engine and shared workspace/source/index/diagnostic/configuration/transaction/artifact services across Focus, GUI, map, and MCP tests |
|
|
110
|
-
| `02_focus_tree_workbench.md` | Source-preserving import/layout/lint/render/create/update workflows, complex route metadata, deterministic HTML/SVG/PNG/JSON, and source-linked diagnostics |
|
|
111
|
-
| `03_scripted_gui_studio.md` | Deterministic full/crop/annotation/state/resolution/click-region/hierarchy/comparison rendering, integrated source graphs, bitmap diffs, and mandatory fidelity reports |
|
|
112
|
-
| `04_agent_nudger.md` | Declarative state/province/geometry/region/adjacency/supply/railway transactions, global ID/color scans, split-data blockers, map artifacts, and rollback tests |
|
|
113
|
-
| `05_validation_delivery_and_agent_integration.md` | 503 portable tests, enforced coverage, synthetic CI fixtures, installed-data qualification, official Inspector, package/install checks, and coding-agent workflows |
|
|
114
|
-
| `06_public_mcp_server.md` | Read-only-default stdio and secured Streamable HTTP, OAuth/origin/isolation/limit checks, typed handlers, resource-backed artifacts, package/Release/GHCR/Registry publication, and client examples |
|
|
115
|
-
|
|
116
|
-
## Simplifications, omissions, and blockers
|
|
117
|
-
|
|
118
|
-
No required feature was replaced by a mock tool, static placeholder diagram, manual editor, interactive dashboard, game automation, or unpublished package. No required acceptance item or release blocker remains.
|
|
119
|
-
|
|
120
|
-
Engine-unknown syntax and renderer fields are preserved and explicitly reported through refusal diagnostics and fidelity reports. Supported boundaries remain listed in [Known limitations](limitations.md), not hidden behind fallback rewrites. The real external focus workflow deliberately preserved 116 gameplay-design warnings because it was a layout-only transaction; those warnings are reported above and are not suppressed by the server.
|
|
121
|
-
|
|
122
|
-
Detailed release commands, ordering, recovery behavior, and the immutable earlier release-attempt history remain in [Release and MCP Registry publication](release.md).
|