hoi4-agent-tools 0.1.7 → 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.
Files changed (424) hide show
  1. package/CHANGELOG.md +12 -94
  2. package/README.md +35 -121
  3. package/SECURITY.md +5 -5
  4. package/dist/bin/http.js +0 -1
  5. package/dist/bin/setup.js +141 -85
  6. package/dist/bin/stdio.js +0 -1
  7. package/dist/hoi4_agent_tools/core/artifacts.js +0 -1
  8. package/dist/hoi4_agent_tools/core/canonical.js +0 -1
  9. package/dist/hoi4_agent_tools/core/configuration.js +28 -28
  10. package/dist/hoi4_agent_tools/core/diagnostic-collector.js +0 -1
  11. package/dist/hoi4_agent_tools/core/diagnostics.js +0 -1
  12. package/dist/hoi4_agent_tools/core/diff.js +0 -1
  13. package/dist/hoi4_agent_tools/core/engine.js +6 -20
  14. package/dist/hoi4_agent_tools/core/image-diff.js +0 -1
  15. package/dist/hoi4_agent_tools/core/index.js +0 -1
  16. package/dist/hoi4_agent_tools/core/render-budget.js +0 -1
  17. package/dist/hoi4_agent_tools/core/result.js +0 -1
  18. package/dist/hoi4_agent_tools/core/scanner.js +0 -1
  19. package/dist/hoi4_agent_tools/core/server-state.js +0 -1
  20. package/dist/hoi4_agent_tools/core/source/encoding.js +0 -1
  21. package/dist/hoi4_agent_tools/core/source/index.js +0 -1
  22. package/dist/hoi4_agent_tools/core/source/lexer.js +0 -1
  23. package/dist/hoi4_agent_tools/core/source/limits.js +0 -1
  24. package/dist/hoi4_agent_tools/core/source/localisation.js +0 -1
  25. package/dist/hoi4_agent_tools/core/source/parser.js +0 -1
  26. package/dist/hoi4_agent_tools/core/source/rewrite.js +0 -1
  27. package/dist/hoi4_agent_tools/core/svg-text.js +0 -1
  28. package/dist/hoi4_agent_tools/core/transaction-limits.js +0 -1
  29. package/dist/hoi4_agent_tools/core/transactions.js +46 -31
  30. package/dist/hoi4_agent_tools/core/workspace.js +112 -396
  31. package/dist/hoi4_agent_tools/focus/compiler.js +0 -1
  32. package/dist/hoi4_agent_tools/focus/continuous-render.js +0 -1
  33. package/dist/hoi4_agent_tools/focus/drift.js +0 -1
  34. package/dist/hoi4_agent_tools/focus/geometry.js +0 -1
  35. package/dist/hoi4_agent_tools/focus/importer.js +0 -1
  36. package/dist/hoi4_agent_tools/focus/index.js +0 -1
  37. package/dist/hoi4_agent_tools/focus/layout.js +0 -1
  38. package/dist/hoi4_agent_tools/focus/limits.js +0 -1
  39. package/dist/hoi4_agent_tools/focus/lint.js +0 -1
  40. package/dist/hoi4_agent_tools/focus/model.js +0 -1
  41. package/dist/hoi4_agent_tools/focus/native-effects.js +0 -1
  42. package/dist/hoi4_agent_tools/focus/planning.js +0 -1
  43. package/dist/hoi4_agent_tools/focus/presentation.js +0 -1
  44. package/dist/hoi4_agent_tools/focus/render.js +0 -1
  45. package/dist/hoi4_agent_tools/focus/service.js +11 -26
  46. package/dist/hoi4_agent_tools/focus/source-update.js +1 -2
  47. package/dist/hoi4_agent_tools/gui/animation-manifest.js +0 -1
  48. package/dist/hoi4_agent_tools/gui/assets.js +0 -1
  49. package/dist/hoi4_agent_tools/gui/dds.js +0 -1
  50. package/dist/hoi4_agent_tools/gui/helpers.js +1 -2
  51. package/dist/hoi4_agent_tools/gui/index.js +0 -1
  52. package/dist/hoi4_agent_tools/gui/layout.js +0 -1
  53. package/dist/hoi4_agent_tools/gui/limits.js +0 -1
  54. package/dist/hoi4_agent_tools/gui/renderer.js +0 -1
  55. package/dist/hoi4_agent_tools/gui/scenario.js +0 -1
  56. package/dist/hoi4_agent_tools/gui/source-graph.js +0 -1
  57. package/dist/hoi4_agent_tools/gui/source-patch.js +1 -2
  58. package/dist/hoi4_agent_tools/gui/studio.js +247 -103
  59. package/dist/hoi4_agent_tools/gui/tga.js +0 -1
  60. package/dist/hoi4_agent_tools/gui/types.js +0 -1
  61. package/dist/hoi4_agent_tools/gui/validators.js +0 -1
  62. package/dist/hoi4_agent_tools/map/bmp.js +0 -1
  63. package/dist/hoi4_agent_tools/map/diagnostic-limit.js +0 -1
  64. package/dist/hoi4_agent_tools/map/index.js +0 -1
  65. package/dist/hoi4_agent_tools/map/limits.js +2 -1
  66. package/dist/hoi4_agent_tools/map/model.js +0 -1
  67. package/dist/hoi4_agent_tools/map/operations.js +0 -1
  68. package/dist/hoi4_agent_tools/map/render.js +0 -1
  69. package/dist/hoi4_agent_tools/map/service.js +182 -38
  70. package/dist/hoi4_agent_tools/map/validation.js +0 -1
  71. package/dist/hoi4_agent_tools/mcp/resources/register.js +61 -187
  72. package/dist/hoi4_agent_tools/mcp/security/auth.js +1 -5
  73. package/dist/hoi4_agent_tools/mcp/server/base-tools.js +26 -733
  74. package/dist/hoi4_agent_tools/mcp/server/create.js +3 -6
  75. package/dist/hoi4_agent_tools/mcp/server/output-schemas.js +0 -70
  76. package/dist/hoi4_agent_tools/mcp/server/progress.js +0 -1
  77. package/dist/hoi4_agent_tools/mcp/server/result.js +24 -30
  78. package/dist/hoi4_agent_tools/mcp/server/transaction-execution.js +123 -0
  79. package/dist/hoi4_agent_tools/mcp/tools/focus.js +244 -254
  80. package/dist/hoi4_agent_tools/mcp/tools/gui.js +163 -236
  81. package/dist/hoi4_agent_tools/mcp/tools/map.js +269 -323
  82. package/dist/hoi4_agent_tools/mcp/tools/mods.js +54 -0
  83. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.js +0 -1
  84. package/dist/hoi4_agent_tools/mcp/transports/event-store.js +0 -1
  85. package/dist/hoi4_agent_tools/mcp/transports/http.js +1 -9
  86. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.js +0 -1
  87. package/dist/hoi4_agent_tools/runtime.js +5 -2
  88. package/dist/hoi4_agent_tools/schemas/common.js +1 -2
  89. package/dist/hoi4_agent_tools/schemas/focus.js +0 -1
  90. package/dist/hoi4_agent_tools/schemas/map.js +0 -1
  91. package/dist/hoi4_agent_tools/schemas/transaction.js +0 -1
  92. package/dist/hoi4_agent_tools/version.js +1 -2
  93. package/docs/README.md +8 -21
  94. package/docs/development.md +22 -0
  95. package/docs/focus.md +40 -0
  96. package/docs/gui.md +37 -0
  97. package/docs/http.md +53 -0
  98. package/docs/map.md +39 -0
  99. package/docs/setup.md +39 -0
  100. package/package.json +10 -11
  101. package/server.json +3 -12
  102. package/dist/bin/http.d.ts +0 -3
  103. package/dist/bin/http.d.ts.map +0 -1
  104. package/dist/bin/http.js.map +0 -1
  105. package/dist/bin/setup.d.ts +0 -3
  106. package/dist/bin/setup.d.ts.map +0 -1
  107. package/dist/bin/setup.js.map +0 -1
  108. package/dist/bin/stdio.d.ts +0 -3
  109. package/dist/bin/stdio.d.ts.map +0 -1
  110. package/dist/bin/stdio.js.map +0 -1
  111. package/dist/hoi4_agent_tools/core/artifacts.d.ts +0 -117
  112. package/dist/hoi4_agent_tools/core/artifacts.d.ts.map +0 -1
  113. package/dist/hoi4_agent_tools/core/artifacts.js.map +0 -1
  114. package/dist/hoi4_agent_tools/core/canonical.d.ts +0 -13
  115. package/dist/hoi4_agent_tools/core/canonical.d.ts.map +0 -1
  116. package/dist/hoi4_agent_tools/core/canonical.js.map +0 -1
  117. package/dist/hoi4_agent_tools/core/configuration.d.ts +0 -137
  118. package/dist/hoi4_agent_tools/core/configuration.d.ts.map +0 -1
  119. package/dist/hoi4_agent_tools/core/configuration.js.map +0 -1
  120. package/dist/hoi4_agent_tools/core/diagnostic-collector.d.ts +0 -18
  121. package/dist/hoi4_agent_tools/core/diagnostic-collector.d.ts.map +0 -1
  122. package/dist/hoi4_agent_tools/core/diagnostic-collector.js.map +0 -1
  123. package/dist/hoi4_agent_tools/core/diagnostics.d.ts +0 -26
  124. package/dist/hoi4_agent_tools/core/diagnostics.d.ts.map +0 -1
  125. package/dist/hoi4_agent_tools/core/diagnostics.js.map +0 -1
  126. package/dist/hoi4_agent_tools/core/diff.d.ts +0 -22
  127. package/dist/hoi4_agent_tools/core/diff.d.ts.map +0 -1
  128. package/dist/hoi4_agent_tools/core/diff.js.map +0 -1
  129. package/dist/hoi4_agent_tools/core/engine.d.ts +0 -56
  130. package/dist/hoi4_agent_tools/core/engine.d.ts.map +0 -1
  131. package/dist/hoi4_agent_tools/core/engine.js.map +0 -1
  132. package/dist/hoi4_agent_tools/core/image-diff.d.ts +0 -14
  133. package/dist/hoi4_agent_tools/core/image-diff.d.ts.map +0 -1
  134. package/dist/hoi4_agent_tools/core/image-diff.js.map +0 -1
  135. package/dist/hoi4_agent_tools/core/index.d.ts +0 -64
  136. package/dist/hoi4_agent_tools/core/index.d.ts.map +0 -1
  137. package/dist/hoi4_agent_tools/core/index.js.map +0 -1
  138. package/dist/hoi4_agent_tools/core/index.public.d.ts +0 -16
  139. package/dist/hoi4_agent_tools/core/index.public.d.ts.map +0 -1
  140. package/dist/hoi4_agent_tools/core/index.public.js +0 -16
  141. package/dist/hoi4_agent_tools/core/index.public.js.map +0 -1
  142. package/dist/hoi4_agent_tools/core/render-budget.d.ts +0 -51
  143. package/dist/hoi4_agent_tools/core/render-budget.d.ts.map +0 -1
  144. package/dist/hoi4_agent_tools/core/render-budget.js.map +0 -1
  145. package/dist/hoi4_agent_tools/core/result.d.ts +0 -45
  146. package/dist/hoi4_agent_tools/core/result.d.ts.map +0 -1
  147. package/dist/hoi4_agent_tools/core/result.js.map +0 -1
  148. package/dist/hoi4_agent_tools/core/scanner.d.ts +0 -28
  149. package/dist/hoi4_agent_tools/core/scanner.d.ts.map +0 -1
  150. package/dist/hoi4_agent_tools/core/scanner.js.map +0 -1
  151. package/dist/hoi4_agent_tools/core/server-state.d.ts +0 -31
  152. package/dist/hoi4_agent_tools/core/server-state.d.ts.map +0 -1
  153. package/dist/hoi4_agent_tools/core/server-state.js.map +0 -1
  154. package/dist/hoi4_agent_tools/core/source/encoding.d.ts +0 -10
  155. package/dist/hoi4_agent_tools/core/source/encoding.d.ts.map +0 -1
  156. package/dist/hoi4_agent_tools/core/source/encoding.js.map +0 -1
  157. package/dist/hoi4_agent_tools/core/source/index.d.ts +0 -7
  158. package/dist/hoi4_agent_tools/core/source/index.d.ts.map +0 -1
  159. package/dist/hoi4_agent_tools/core/source/index.js.map +0 -1
  160. package/dist/hoi4_agent_tools/core/source/lexer.d.ts +0 -30
  161. package/dist/hoi4_agent_tools/core/source/lexer.d.ts.map +0 -1
  162. package/dist/hoi4_agent_tools/core/source/lexer.js.map +0 -1
  163. package/dist/hoi4_agent_tools/core/source/limits.d.ts +0 -21
  164. package/dist/hoi4_agent_tools/core/source/limits.d.ts.map +0 -1
  165. package/dist/hoi4_agent_tools/core/source/limits.js.map +0 -1
  166. package/dist/hoi4_agent_tools/core/source/localisation.d.ts +0 -20
  167. package/dist/hoi4_agent_tools/core/source/localisation.d.ts.map +0 -1
  168. package/dist/hoi4_agent_tools/core/source/localisation.js.map +0 -1
  169. package/dist/hoi4_agent_tools/core/source/parser.d.ts +0 -44
  170. package/dist/hoi4_agent_tools/core/source/parser.d.ts.map +0 -1
  171. package/dist/hoi4_agent_tools/core/source/parser.js.map +0 -1
  172. package/dist/hoi4_agent_tools/core/source/rewrite.d.ts +0 -10
  173. package/dist/hoi4_agent_tools/core/source/rewrite.d.ts.map +0 -1
  174. package/dist/hoi4_agent_tools/core/source/rewrite.js.map +0 -1
  175. package/dist/hoi4_agent_tools/core/svg-text.d.ts +0 -34
  176. package/dist/hoi4_agent_tools/core/svg-text.d.ts.map +0 -1
  177. package/dist/hoi4_agent_tools/core/svg-text.js.map +0 -1
  178. package/dist/hoi4_agent_tools/core/transaction-limits.d.ts +0 -9
  179. package/dist/hoi4_agent_tools/core/transaction-limits.d.ts.map +0 -1
  180. package/dist/hoi4_agent_tools/core/transaction-limits.js.map +0 -1
  181. package/dist/hoi4_agent_tools/core/transactions.d.ts +0 -162
  182. package/dist/hoi4_agent_tools/core/transactions.d.ts.map +0 -1
  183. package/dist/hoi4_agent_tools/core/transactions.js.map +0 -1
  184. package/dist/hoi4_agent_tools/core/workspace.d.ts +0 -68
  185. package/dist/hoi4_agent_tools/core/workspace.d.ts.map +0 -1
  186. package/dist/hoi4_agent_tools/core/workspace.js.map +0 -1
  187. package/dist/hoi4_agent_tools/focus/compiler.d.ts +0 -10
  188. package/dist/hoi4_agent_tools/focus/compiler.d.ts.map +0 -1
  189. package/dist/hoi4_agent_tools/focus/compiler.js.map +0 -1
  190. package/dist/hoi4_agent_tools/focus/continuous-render.d.ts +0 -32
  191. package/dist/hoi4_agent_tools/focus/continuous-render.d.ts.map +0 -1
  192. package/dist/hoi4_agent_tools/focus/continuous-render.js.map +0 -1
  193. package/dist/hoi4_agent_tools/focus/drift.d.ts +0 -22
  194. package/dist/hoi4_agent_tools/focus/drift.d.ts.map +0 -1
  195. package/dist/hoi4_agent_tools/focus/drift.js.map +0 -1
  196. package/dist/hoi4_agent_tools/focus/geometry.d.ts +0 -17
  197. package/dist/hoi4_agent_tools/focus/geometry.d.ts.map +0 -1
  198. package/dist/hoi4_agent_tools/focus/geometry.js.map +0 -1
  199. package/dist/hoi4_agent_tools/focus/importer.d.ts +0 -9
  200. package/dist/hoi4_agent_tools/focus/importer.d.ts.map +0 -1
  201. package/dist/hoi4_agent_tools/focus/importer.js.map +0 -1
  202. package/dist/hoi4_agent_tools/focus/index.d.ts +0 -14
  203. package/dist/hoi4_agent_tools/focus/index.d.ts.map +0 -1
  204. package/dist/hoi4_agent_tools/focus/index.js.map +0 -1
  205. package/dist/hoi4_agent_tools/focus/layout.d.ts +0 -5
  206. package/dist/hoi4_agent_tools/focus/layout.d.ts.map +0 -1
  207. package/dist/hoi4_agent_tools/focus/layout.js.map +0 -1
  208. package/dist/hoi4_agent_tools/focus/limits.d.ts +0 -9
  209. package/dist/hoi4_agent_tools/focus/limits.d.ts.map +0 -1
  210. package/dist/hoi4_agent_tools/focus/limits.js.map +0 -1
  211. package/dist/hoi4_agent_tools/focus/lint.d.ts +0 -14
  212. package/dist/hoi4_agent_tools/focus/lint.d.ts.map +0 -1
  213. package/dist/hoi4_agent_tools/focus/lint.js.map +0 -1
  214. package/dist/hoi4_agent_tools/focus/model.d.ts +0 -307
  215. package/dist/hoi4_agent_tools/focus/model.d.ts.map +0 -1
  216. package/dist/hoi4_agent_tools/focus/model.js.map +0 -1
  217. package/dist/hoi4_agent_tools/focus/native-effects.d.ts +0 -9
  218. package/dist/hoi4_agent_tools/focus/native-effects.d.ts.map +0 -1
  219. package/dist/hoi4_agent_tools/focus/native-effects.js.map +0 -1
  220. package/dist/hoi4_agent_tools/focus/planning.d.ts +0 -15
  221. package/dist/hoi4_agent_tools/focus/planning.d.ts.map +0 -1
  222. package/dist/hoi4_agent_tools/focus/planning.js.map +0 -1
  223. package/dist/hoi4_agent_tools/focus/presentation.d.ts +0 -24
  224. package/dist/hoi4_agent_tools/focus/presentation.d.ts.map +0 -1
  225. package/dist/hoi4_agent_tools/focus/presentation.js.map +0 -1
  226. package/dist/hoi4_agent_tools/focus/render.d.ts +0 -39
  227. package/dist/hoi4_agent_tools/focus/render.d.ts.map +0 -1
  228. package/dist/hoi4_agent_tools/focus/render.js.map +0 -1
  229. package/dist/hoi4_agent_tools/focus/service.d.ts +0 -82
  230. package/dist/hoi4_agent_tools/focus/service.d.ts.map +0 -1
  231. package/dist/hoi4_agent_tools/focus/service.js.map +0 -1
  232. package/dist/hoi4_agent_tools/focus/source-update.d.ts +0 -6
  233. package/dist/hoi4_agent_tools/focus/source-update.d.ts.map +0 -1
  234. package/dist/hoi4_agent_tools/focus/source-update.js.map +0 -1
  235. package/dist/hoi4_agent_tools/gui/animation-manifest.d.ts +0 -37
  236. package/dist/hoi4_agent_tools/gui/animation-manifest.d.ts.map +0 -1
  237. package/dist/hoi4_agent_tools/gui/animation-manifest.js.map +0 -1
  238. package/dist/hoi4_agent_tools/gui/assets.d.ts +0 -71
  239. package/dist/hoi4_agent_tools/gui/assets.d.ts.map +0 -1
  240. package/dist/hoi4_agent_tools/gui/assets.js.map +0 -1
  241. package/dist/hoi4_agent_tools/gui/dds.d.ts +0 -17
  242. package/dist/hoi4_agent_tools/gui/dds.d.ts.map +0 -1
  243. package/dist/hoi4_agent_tools/gui/dds.js.map +0 -1
  244. package/dist/hoi4_agent_tools/gui/helpers.d.ts +0 -101
  245. package/dist/hoi4_agent_tools/gui/helpers.d.ts.map +0 -1
  246. package/dist/hoi4_agent_tools/gui/helpers.js.map +0 -1
  247. package/dist/hoi4_agent_tools/gui/index.d.ts +0 -15
  248. package/dist/hoi4_agent_tools/gui/index.d.ts.map +0 -1
  249. package/dist/hoi4_agent_tools/gui/index.js.map +0 -1
  250. package/dist/hoi4_agent_tools/gui/layout.d.ts +0 -6
  251. package/dist/hoi4_agent_tools/gui/layout.d.ts.map +0 -1
  252. package/dist/hoi4_agent_tools/gui/layout.js.map +0 -1
  253. package/dist/hoi4_agent_tools/gui/limits.d.ts +0 -25
  254. package/dist/hoi4_agent_tools/gui/limits.d.ts.map +0 -1
  255. package/dist/hoi4_agent_tools/gui/limits.js.map +0 -1
  256. package/dist/hoi4_agent_tools/gui/renderer.d.ts +0 -18
  257. package/dist/hoi4_agent_tools/gui/renderer.d.ts.map +0 -1
  258. package/dist/hoi4_agent_tools/gui/renderer.js.map +0 -1
  259. package/dist/hoi4_agent_tools/gui/scenario.d.ts +0 -66
  260. package/dist/hoi4_agent_tools/gui/scenario.d.ts.map +0 -1
  261. package/dist/hoi4_agent_tools/gui/scenario.js.map +0 -1
  262. package/dist/hoi4_agent_tools/gui/source-graph.d.ts +0 -7
  263. package/dist/hoi4_agent_tools/gui/source-graph.d.ts.map +0 -1
  264. package/dist/hoi4_agent_tools/gui/source-graph.js.map +0 -1
  265. package/dist/hoi4_agent_tools/gui/source-patch.d.ts +0 -13
  266. package/dist/hoi4_agent_tools/gui/source-patch.d.ts.map +0 -1
  267. package/dist/hoi4_agent_tools/gui/source-patch.js.map +0 -1
  268. package/dist/hoi4_agent_tools/gui/studio.d.ts +0 -86
  269. package/dist/hoi4_agent_tools/gui/studio.d.ts.map +0 -1
  270. package/dist/hoi4_agent_tools/gui/studio.js.map +0 -1
  271. package/dist/hoi4_agent_tools/gui/tga.d.ts +0 -16
  272. package/dist/hoi4_agent_tools/gui/tga.d.ts.map +0 -1
  273. package/dist/hoi4_agent_tools/gui/tga.js.map +0 -1
  274. package/dist/hoi4_agent_tools/gui/types.d.ts +0 -322
  275. package/dist/hoi4_agent_tools/gui/types.d.ts.map +0 -1
  276. package/dist/hoi4_agent_tools/gui/types.js.map +0 -1
  277. package/dist/hoi4_agent_tools/gui/validators.d.ts +0 -8
  278. package/dist/hoi4_agent_tools/gui/validators.d.ts.map +0 -1
  279. package/dist/hoi4_agent_tools/gui/validators.js.map +0 -1
  280. package/dist/hoi4_agent_tools/map/bmp.d.ts +0 -62
  281. package/dist/hoi4_agent_tools/map/bmp.d.ts.map +0 -1
  282. package/dist/hoi4_agent_tools/map/bmp.js.map +0 -1
  283. package/dist/hoi4_agent_tools/map/diagnostic-limit.d.ts +0 -5
  284. package/dist/hoi4_agent_tools/map/diagnostic-limit.d.ts.map +0 -1
  285. package/dist/hoi4_agent_tools/map/diagnostic-limit.js.map +0 -1
  286. package/dist/hoi4_agent_tools/map/index.d.ts +0 -8
  287. package/dist/hoi4_agent_tools/map/index.d.ts.map +0 -1
  288. package/dist/hoi4_agent_tools/map/index.js.map +0 -1
  289. package/dist/hoi4_agent_tools/map/limits.d.ts +0 -13
  290. package/dist/hoi4_agent_tools/map/limits.d.ts.map +0 -1
  291. package/dist/hoi4_agent_tools/map/limits.js.map +0 -1
  292. package/dist/hoi4_agent_tools/map/model.d.ts +0 -269
  293. package/dist/hoi4_agent_tools/map/model.d.ts.map +0 -1
  294. package/dist/hoi4_agent_tools/map/model.js.map +0 -1
  295. package/dist/hoi4_agent_tools/map/operations.d.ts +0 -401
  296. package/dist/hoi4_agent_tools/map/operations.d.ts.map +0 -1
  297. package/dist/hoi4_agent_tools/map/operations.js.map +0 -1
  298. package/dist/hoi4_agent_tools/map/render.d.ts +0 -90
  299. package/dist/hoi4_agent_tools/map/render.d.ts.map +0 -1
  300. package/dist/hoi4_agent_tools/map/render.js.map +0 -1
  301. package/dist/hoi4_agent_tools/map/service.d.ts +0 -81
  302. package/dist/hoi4_agent_tools/map/service.d.ts.map +0 -1
  303. package/dist/hoi4_agent_tools/map/service.js.map +0 -1
  304. package/dist/hoi4_agent_tools/map/validation.d.ts +0 -23
  305. package/dist/hoi4_agent_tools/map/validation.d.ts.map +0 -1
  306. package/dist/hoi4_agent_tools/map/validation.js.map +0 -1
  307. package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts +0 -3
  308. package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts.map +0 -1
  309. package/dist/hoi4_agent_tools/mcp/prompts/register.js +0 -50
  310. package/dist/hoi4_agent_tools/mcp/prompts/register.js.map +0 -1
  311. package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts +0 -9
  312. package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts.map +0 -1
  313. package/dist/hoi4_agent_tools/mcp/registry/metadata.js +0 -10
  314. package/dist/hoi4_agent_tools/mcp/registry/metadata.js.map +0 -1
  315. package/dist/hoi4_agent_tools/mcp/resources/register.d.ts +0 -5
  316. package/dist/hoi4_agent_tools/mcp/resources/register.d.ts.map +0 -1
  317. package/dist/hoi4_agent_tools/mcp/resources/register.js.map +0 -1
  318. package/dist/hoi4_agent_tools/mcp/security/auth.d.ts +0 -24
  319. package/dist/hoi4_agent_tools/mcp/security/auth.d.ts.map +0 -1
  320. package/dist/hoi4_agent_tools/mcp/security/auth.js.map +0 -1
  321. package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts +0 -35
  322. package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts.map +0 -1
  323. package/dist/hoi4_agent_tools/mcp/server/base-tools.js.map +0 -1
  324. package/dist/hoi4_agent_tools/mcp/server/create.d.ts +0 -5
  325. package/dist/hoi4_agent_tools/mcp/server/create.d.ts.map +0 -1
  326. package/dist/hoi4_agent_tools/mcp/server/create.js.map +0 -1
  327. package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts +0 -133
  328. package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts.map +0 -1
  329. package/dist/hoi4_agent_tools/mcp/server/output-schemas.js.map +0 -1
  330. package/dist/hoi4_agent_tools/mcp/server/progress.d.ts +0 -8
  331. package/dist/hoi4_agent_tools/mcp/server/progress.d.ts.map +0 -1
  332. package/dist/hoi4_agent_tools/mcp/server/progress.js.map +0 -1
  333. package/dist/hoi4_agent_tools/mcp/server/result.d.ts +0 -232
  334. package/dist/hoi4_agent_tools/mcp/server/result.d.ts.map +0 -1
  335. package/dist/hoi4_agent_tools/mcp/server/result.js.map +0 -1
  336. package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts +0 -5
  337. package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts.map +0 -1
  338. package/dist/hoi4_agent_tools/mcp/tools/focus.js.map +0 -1
  339. package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts +0 -111
  340. package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts.map +0 -1
  341. package/dist/hoi4_agent_tools/mcp/tools/gui.js.map +0 -1
  342. package/dist/hoi4_agent_tools/mcp/tools/map.d.ts +0 -5
  343. package/dist/hoi4_agent_tools/mcp/tools/map.d.ts.map +0 -1
  344. package/dist/hoi4_agent_tools/mcp/tools/map.js.map +0 -1
  345. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.d.ts +0 -58
  346. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.d.ts.map +0 -1
  347. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.js.map +0 -1
  348. package/dist/hoi4_agent_tools/mcp/transports/event-store.d.ts +0 -26
  349. package/dist/hoi4_agent_tools/mcp/transports/event-store.d.ts.map +0 -1
  350. package/dist/hoi4_agent_tools/mcp/transports/event-store.js.map +0 -1
  351. package/dist/hoi4_agent_tools/mcp/transports/http.d.ts +0 -28
  352. package/dist/hoi4_agent_tools/mcp/transports/http.d.ts.map +0 -1
  353. package/dist/hoi4_agent_tools/mcp/transports/http.js.map +0 -1
  354. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.d.ts +0 -15
  355. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.d.ts.map +0 -1
  356. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.js.map +0 -1
  357. package/dist/hoi4_agent_tools/runtime.d.ts +0 -4
  358. package/dist/hoi4_agent_tools/runtime.d.ts.map +0 -1
  359. package/dist/hoi4_agent_tools/runtime.js.map +0 -1
  360. package/dist/hoi4_agent_tools/schemas/common.d.ts +0 -74
  361. package/dist/hoi4_agent_tools/schemas/common.d.ts.map +0 -1
  362. package/dist/hoi4_agent_tools/schemas/common.js.map +0 -1
  363. package/dist/hoi4_agent_tools/schemas/focus.d.ts +0 -784
  364. package/dist/hoi4_agent_tools/schemas/focus.d.ts.map +0 -1
  365. package/dist/hoi4_agent_tools/schemas/focus.js.map +0 -1
  366. package/dist/hoi4_agent_tools/schemas/index.d.ts +0 -5
  367. package/dist/hoi4_agent_tools/schemas/index.d.ts.map +0 -1
  368. package/dist/hoi4_agent_tools/schemas/index.js +0 -5
  369. package/dist/hoi4_agent_tools/schemas/index.js.map +0 -1
  370. package/dist/hoi4_agent_tools/schemas/map.d.ts +0 -654
  371. package/dist/hoi4_agent_tools/schemas/map.d.ts.map +0 -1
  372. package/dist/hoi4_agent_tools/schemas/map.js.map +0 -1
  373. package/dist/hoi4_agent_tools/schemas/transaction.d.ts +0 -259
  374. package/dist/hoi4_agent_tools/schemas/transaction.d.ts.map +0 -1
  375. package/dist/hoi4_agent_tools/schemas/transaction.js.map +0 -1
  376. package/dist/hoi4_agent_tools/version.d.ts +0 -6
  377. package/dist/hoi4_agent_tools/version.d.ts.map +0 -1
  378. package/dist/hoi4_agent_tools/version.js.map +0 -1
  379. package/dist/index.d.ts +0 -3
  380. package/dist/index.d.ts.map +0 -1
  381. package/dist/index.js +0 -3
  382. package/dist/index.js.map +0 -1
  383. package/docs/adr/0001-runtime-and-language.md +0 -16
  384. package/docs/adr/0002-lossless-source-model.md +0 -18
  385. package/docs/adr/0003-image-and-font-codecs.md +0 -18
  386. package/docs/adr/0004-focus-layout.md +0 -16
  387. package/docs/adr/0005-offline-rendering.md +0 -18
  388. package/docs/adr/0006-mcp-sdk-and-protocol.md +0 -16
  389. package/docs/adr/0007-storage-and-transactions.md +0 -24
  390. package/docs/adr/0008-test-strategy.md +0 -18
  391. package/docs/adr/0009-packaging-and-registry.md +0 -16
  392. package/docs/adr/0010-unsupported-and-refusal-policy.md +0 -18
  393. package/docs/adr/0011-http-security.md +0 -16
  394. package/docs/adr/README.md +0 -13
  395. package/docs/agent-integration.md +0 -136
  396. package/docs/architecture.md +0 -60
  397. package/docs/artifacts.md +0 -133
  398. package/docs/compatibility.md +0 -33
  399. package/docs/completion-report.md +0 -162
  400. package/docs/configuration.md +0 -289
  401. package/docs/focus-workflow.md +0 -195
  402. package/docs/gui-workflow.md +0 -121
  403. package/docs/limitations.md +0 -31
  404. package/docs/map-workflow.md +0 -89
  405. package/docs/performance.md +0 -117
  406. package/docs/release.md +0 -220
  407. package/docs/research/mcp-2026-07-10.md +0 -46
  408. package/docs/research/source-ledger.md +0 -68
  409. package/docs/security.md +0 -139
  410. package/docs/self-hosting.md +0 -168
  411. package/docs/testing.md +0 -43
  412. package/docs/third-party-notices.md +0 -11
  413. package/docs/transactions.md +0 -168
  414. package/docs/troubleshooting.md +0 -46
  415. package/schemas/configuration.schema.json +0 -794
  416. package/schemas/continuous-focus-palette.schema.json +0 -325
  417. package/schemas/focus-plan.schema.json +0 -927
  418. package/schemas/focus-planning-sidecar.schema.json +0 -379
  419. package/schemas/gui-animation-source.schema.json +0 -176
  420. package/schemas/gui-helper.schema.json +0 -301
  421. package/schemas/gui-scenario.schema.json +0 -298
  422. package/schemas/map-operation.schema.json +0 -2284
  423. package/schemas/operation-result.schema.json +0 -344
  424. package/schemas/transaction-manifest.schema.json +0 -685
@@ -1,136 +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 transaction 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.1.7
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 setup utility creates a read-only configuration unless `--enable-writes` and a separate `--server-state` root are supplied. `--print-client-config` prints both a pinned `npx` registration and an optional global-install registration. It does not edit an MCP host's settings.
27
-
28
- Generic host registration:
29
-
30
- ```json
31
- {
32
- "mcpServers": {
33
- "hoi4_agent_tools": {
34
- "command": "npx",
35
- "args": ["-y", "hoi4-agent-tools@0.1.7"],
36
- "env": {
37
- "HOI4_AGENT_CONFIG": "/absolute/path/config.json"
38
- }
39
- }
40
- }
41
- }
42
- ```
43
-
44
- Codex registration:
45
-
46
- ```toml
47
- [mcp_servers.hoi4_agent_tools]
48
- command = "npx"
49
- args = ["-y", "hoi4-agent-tools@0.1.7"]
50
- startup_timeout_sec = 120
51
-
52
- [mcp_servers.hoi4_agent_tools.env]
53
- HOI4_AGENT_CONFIG = "/absolute/path/config.json"
54
- ```
55
-
56
- 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.
57
-
58
- ## Autonomous selection rules
59
-
60
- A coding agent should select this server when a registered HOI4 workspace task involves any of these surfaces:
61
-
62
- - national focus trees or continuous focus palettes;
63
- - Clausewitz prerequisite, route-lock, mutual-exclusion, localisation, icon, AI, or linked-content validation;
64
- - scripted GUI, interface, GFX, sprites, fonts, animation states, deterministic previews, or visual comparisons;
65
- - states, provinces, province geometry, strategic regions, adjacency, supply nodes, or railways;
66
- - source-preserving dry runs, visual diffs, atomic multi-file apply, or rollback for those surfaces.
67
-
68
- 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.
69
-
70
- The normal first calls are:
71
-
72
- 1. `hoi4.project_status` to discover the configured workspace ID and write status.
73
- 2. `hoi4.project_scan` when a complete shared symbol/reference revision is useful.
74
- 3. The relevant domain scan and lint tools.
75
- 4. Deterministic layout/render/compare tools before a source plan.
76
-
77
- 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.
78
-
79
- ## Large focus-tree repair
80
-
81
- 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.
82
-
83
- The safe repair sequence is:
84
-
85
- 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 transaction and final review artifacts.
86
- 2. Read the complete imported plan resource and baseline HTML/SVG/PNG/JSON/source-map artifacts.
87
- 3. Preserve prerequisites, exclusions, route locks, rewards, comments, raw passthrough, source locations, and provenance.
88
- 4. Assign explicit `branchGroups`, `laneGroups`, `branchId`, and `laneId` metadata that reflect the intended route architecture.
89
- 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.
90
- 6. Change movable nodes to automatic positions, optionally retaining route intent with preferred coordinates:
91
-
92
- ```json
93
- {
94
- "mode": "auto",
95
- "pinned": false,
96
- "preferredX": 8,
97
- "preferredY": 12
98
- }
99
- ```
100
-
101
- 7. Submit the complete plan to `hoi4.focus_plan_changes`. This performs the deterministic proposed layout, source-preserving compilation, lint, before/proposed render, bitmap comparison, and dry-run transaction. 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.
102
- 8. Follow every `hoi4.transaction_diff` cursor. Review the source map, changed fields, diagnostics, and visual artifacts.
103
- 9. Apply only when the coding-agent host's write policy authorizes it, using the exact transaction ID and expected plan hash.
104
- 10. Rescan, lint, and render the applied source. Use `hoi4.transaction_rollback` with the same hash if validation fails or the reviewed result is not acceptable.
105
-
106
- `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.
107
-
108
- ## Creating a large focus tree
109
-
110
- 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.
111
-
112
- A serious large-tree plan should define:
113
-
114
- - a small number of intentional fixed anchors and automatic branch nodes;
115
- - lane and branch groups with stable order and horizontal bounds;
116
- - exact AND/OR prerequisite grouping;
117
- - reciprocal route exclusions where the UI should show them;
118
- - shared support lanes that stay available to compatible political routes;
119
- - convergence points, capstones, failure states, hidden/reveal metadata, and late-game payoffs;
120
- - localisation keys, icon sprites, AI weights/strategies, filters, and links to decisions, events, ideas, leaders, helpers, and formables;
121
- - raw passthrough for unsupported or not-yet-modelled Clausewitz content.
122
-
123
- For a new source beneath `common/national_focus`, call `hoi4.focus_plan_changes` 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 first write is still a dry-run transaction with transparent before evidence and complete proposed artifacts.
124
-
125
- ## Write autonomy and safety boundary
126
-
127
- Agents may autonomously discover workspaces, scan, lint, lay out, render, compare, inspect artifacts, and prepare dry-run transactions. Source apply remains a distinct capability boundary:
128
-
129
- - global `writePolicy` must be `transactions`;
130
- - the canonical mod workspace must be allowlisted and `writeEnabled`;
131
- - the dry run must be complete and unexpired;
132
- - every source hash and principal/workspace binding is rechecked;
133
- - the separate apply call must carry the exact expected plan hash;
134
- - the coding-agent host's configured write/approval policy must authorize the apply.
135
-
136
- This division lets agents decide when the MCP is useful and do the analysis autonomously without turning discovery into implicit source mutation.
@@ -1,60 +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.
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 transactions
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
- A transaction includes the complete affected-file set, before/after hashes and blobs, operation
53
- provenance, validation, source/binary/visual diffs, expiry, principal, workspace/root fingerprint,
54
- and plan hash. Its complete mutable journal is HMAC-authenticated by a random key beneath the
55
- isolated `serverStateRoot`; a protected latest-revision head prevents replay and bounds state to one
56
- head per admitted cache journal.
57
-
58
- Apply acquires one workspace write lock, rechecks preconditions, stages files on the same volume, journals deterministic replacements, rebuilds the affected index, and post-validates. Failure and startup recovery restore original blobs. This is recoverable logical atomicity; another process can briefly observe a replacement sequence.
59
-
60
- Detailed decisions are recorded in [ADRs](adr/README.md).
package/docs/artifacts.md DELETED
@@ -1,133 +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
- Each version-2 manifest records name, MIME type, byte size, content hash, artifact kind,
10
- tool/schema version, SHA-256 source hashes, render profile, domain metadata, and hash-only bindings
11
- for the resolved workspace and its configured or runtime owner. Filesystem paths and raw principals
12
- are not exposed. Missing/create/delete states belong in provenance metadata, never sentinel values
13
- inside the source-hash map.
14
-
15
- Very broad domain inventories retain a deterministic path/hash sample capped at 256 entries and
16
- 128 KiB in the manifest, plus a count and a SHA-256 commitment over every length-prefixed sorted
17
- path/hash pair. This policy applies uniformly to project, focus, GUI, and map evidence. Complete
18
- inventories remain in the structured artifact content: project diagnostics use their exact `files`
19
- inventory, while focus, GUI, and map JSON evidence records exact source hashes. Binary and HTML
20
- review artifacts carry the same bounded, digest-backed provenance and are paired with the exact
21
- structured evidence for their bundle. Bounding a manifest therefore does not drop source evidence.
22
- The inventory commitment uses the versioned `sha256-length-prefixed-path-digest-v1` algorithm
23
- recorded in metadata.
24
-
25
- 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.
26
-
27
- Artifact names ending in `.manifest.json`, under an ASCII case-insensitive comparison, are reserved
28
- for store metadata and rejected. This rule is identical on case-sensitive and case-insensitive
29
- filesystems, so content can never be mistaken for an inventory manifest.
30
-
31
- The workspace and owner bindings participate in the provenance hash and are checked by list,
32
- describe, and resource reads. A store reused by another workspace ID, canonical root topology, or
33
- runtime principal cannot enumerate or read the older manifests. Statically configured workspaces
34
- derive one shared operator identity, so all explicitly granted principals retain their intended
35
- access. Legacy unbound manifests and malformed/conflicting manifests fail closed; the server does
36
- not delete or relabel them automatically.
37
-
38
- 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.
39
-
40
- Some complete logical evidence, notably an installed workspace's GUI source graph, can legitimately
41
- be larger than `artifactMaxSingleBytes`. Callers that opt into byte-exact logical storage receive a
42
- normal artifact when the payload fits. An oversized payload instead returns one small canonical
43
- JSON index named `*.chunks.json`. The index records `type = hoi4-agent.chunked-artifact`, the
44
- original name, MIME type, size, SHA-256 and description, followed by ordered chunk resource links
45
- with indexes, byte offsets, lengths and SHA-256 hashes. Chunks use
46
- `application/octet-stream`; concatenating their decoded bytes in index order must reproduce the
47
- recorded original size and SHA-256 exactly. The index itself is limited to 1 MiB so an MCP client
48
- can read it in one request.
49
-
50
- The chunks and index are one atomic artifact batch. Every physical object and provenance manifest
51
- counts against the same aggregate-byte and entry quotas, every chunk remains at or below the
52
- configured per-object ceiling, and any admission, write, cancellation or owning-commit failure
53
- removes all files newly created by the bundle. This representation is lossless storage, not graph
54
- truncation or a quota bypass. `hoi4.gui_scan` and GUI render source-graph evidence return only the
55
- logical index link; agents follow its resource links when they need the full graph.
56
-
57
- Logical chunk preparation has a separate fixed 536,870,912-byte in-memory batch ceiling, and a
58
- lower configured `artifactMaxBytes` always wins. Before any payload is copied or hashed, admission
59
- validates every logical write's name, provenance and byte length, checks safe aggregate arithmetic,
60
- and projects the complete physical entry count after chunking. Preflight yields after each 256
61
- logical writes so cancellation can stop a broad batch before preparation. Preparation is then
62
- sequential, verifies that each admitted byte length is unchanged, and yields during hashing every
63
- 16 MiB. Chunks share the one owned logical buffer during preparation instead of duplicating it.
64
- Crossing the fixed preparation ceiling fails with `ARTIFACT_LOGICAL_BATCH_LIMIT` before allocation.
65
-
66
- Artifact listing is paged at no more than 100 links. The store walks the complete sorted manifest
67
- inventory to verify bindings and compute an exact SHA-256 inventory revision, but retains only the
68
- requested page in memory. Cursors name the last public URI and are accepted only when that exact URI
69
- still occurs under the same revision. Listing and content verification honor request cancellation
70
- between directories, manifests, and hash chunks.
71
-
72
- Manifest reads stat the file and enforce the fixed 1 MiB ceiling before signal-aware JSON loading.
73
- Artifact writes, existing-content verification, quota walks, and queue waits also honor
74
- cancellation. A cancelled batch completes non-cancellable cleanup of every partial file. Once the
75
- caller's commit callback begins, that callback owns its critical-phase completion rules.
76
-
77
- ## Storage placement
78
-
79
- A mod workspace defaults to `<mod>/.hoi4-agent/artifacts`; any in-mod override must remain beneath
80
- that exact generated subtree. An operator may instead place it beneath a configured `storageRoots`
81
- parent. A primary `game` or `dependency` workspace must always use an explicit operator-owned
82
- artifact root beneath `storageRoots`, separate from its explicit cache root. Artifact and cache
83
- roots cannot overlap each other or a source root.
84
-
85
- Generated artifact writes never make the game, dependency, or fixture source writable. Source
86
- changes are a separate transaction surface and are confined to the mod root.
87
-
88
- ## Retention quotas
89
-
90
- The default per-workspace limits are:
91
-
92
- - `artifactMaxBytes`: 536,870,912 bytes across content and manifests;
93
- - `artifactMaxEntries`: 5,000 provenance manifests;
94
- - `artifactMaxSingleBytes`: 134,217,728 bytes for one content object;
95
- - serialized provenance manifests have a separate fixed 1 MiB ceiling and bounded fields.
96
- - one logical chunk-preparation batch has a fixed 536,870,912-byte ceiling.
97
-
98
- Content deduplication means a reused content hash adds no duplicate content bytes, while a new
99
- provenance manifest still counts as an entry and consumes its serialized bytes. Within one server
100
- process, the store measures current usage under an in-process per-root write queue before adding
101
- immutable files. Multi-artifact operations preflight all logical writes and their projected
102
- normal/chunk/index entries as one batch before payload copying or hashing, then retain newly created
103
- content and manifests only if their owning operation commits. A failed transaction-journal
104
- admission removes the diff files created by that batch without deleting pre-existing shared
105
- content or provenance. If the complete content and manifest would exceed a count, aggregate-byte,
106
- or per-object ceiling, the store refuses the write with `ARTIFACT_STORAGE_LIMIT`,
107
- `ARTIFACT_LOGICAL_BATCH_LIMIT`, `ARTIFACT_SINGLE_LIMIT`, `ARTIFACT_CHUNK_INDEX_LIMIT`, or
108
- `ARTIFACT_MANIFEST_LIMIT`; it does not write a truncated artifact or evict older evidence. Listing
109
- also refuses when an externally modified store is already over its configured retention budget.
110
-
111
- Artifact retention has no automatic garbage collector. Operator deletion is explicit and should
112
- be coordinated with active requests; deleting an artifact invalidates its URI. In contrast,
113
- transaction-journal cleanup follows the separate rules in [transactions](transactions.md). Do not
114
- share one writable artifact root between uncoordinated server processes; an operating-system
115
- storage service or operator must provide that coordination.
116
-
117
- Typical artifacts:
118
-
119
- - shared diagnostics and capability reports;
120
- - focus HTML/SVG/PNG/JSON, generated-source maps, and hash-bound planning sidecars;
121
- - GUI renders, galleries, hierarchy/click maps, comparisons, and fidelity reports;
122
- - map layers, changed-pixel reports, and before/after previews;
123
- - transaction manifests, source diffs, binary diffs, and validation reports.
124
-
125
- Structured JSON evidence records source paths, hashes, frame numbers, dimensions, formats, and
126
- fidelity metadata, but strips embedded `data:` payloads and glyph bitmap bytes. Composite SVG and
127
- PNG review renders may contain processed, source-derived icon, sprite-frame, or font-glyph pixels
128
- needed to inspect the requested interface; they are principal-bound generated evidence, not raw
129
- asset-file resources. The server never registers an installed-game, dependency, or mod raster/font
130
- file itself as an artifact.
131
-
132
- Artifacts are evidence. External HOI4 source remains authoritative. Deleting the configured
133
- artifact root invalidates only generated evidence, not mod content.
@@ -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,162 +0,0 @@
1
- # Completion report: 0.1.6 public release
2
-
3
- - Released version: `0.1.6`
4
- - Report date: 2026-07-11
5
- - Status: complete; public delivery and installation independently verified
6
- - Release commit: `a7eeb31532c067fa2fe4e297f1710615b49a1273`
7
- - Annotated tag object: `4933d5bc28cc7941304d8573fcc1fea65ad74328`
8
- - Exact-source CI: [run 29161368937](https://github.com/klimPaskov/hoi4-agent-tools/actions/runs/29161368937)
9
- - Release workflow: [run 29161750887](https://github.com/klimPaskov/hoi4-agent-tools/actions/runs/29161750887)
10
-
11
- ## Implemented scope
12
-
13
- The release provides the shared source-preserving core, Focus Tree Workbench, Scripted GUI Studio, Agent Nudger map workflow, read-only-by-default transaction controls, stdio and authenticated Streamable HTTP transports, package entry points, schemas, synthetic portable fixtures, and public deployment documentation described by this repository.
14
-
15
- The npm payload is explicitly limited to compiled entry points, documentation, schemas, `server.json`, and the project license, security policy, README, and changelog. Installed-game data, third-party mod data, fixtures, tests, source files, local configuration, and workspace artifacts are excluded.
16
-
17
- ## Qualification evidence
18
-
19
- The release passed all 46 portable test files: 495 tests passed and one POSIX case was intentionally skipped on Windows. Enforced coverage is 88.44% statements, 78.25% branches, 91.28% functions, and 89.90% lines.
20
-
21
- Release-specific qualification also covers:
22
-
23
- - installation of the actual `npm pack` tarball into an isolated consumer, including an empty-cache install that proves `--prefer-offline` can fetch missing dependencies;
24
- - execution of the installed stdio, HTTP, and setup entry points;
25
- - package-content allowlisting, workspace-path leak checks, synchronized package and Registry metadata, and generated-schema checks;
26
- - npm dependency audit, registry signatures, and attestations;
27
- - live validation against the official MCP Registry API and pinned schema;
28
- - official MCP Inspector discovery against the production stdio entry point;
29
- - a production Docker build and protocol-only container stdio initialization/discovery; the release workflow records the final non-self-referential image digest in `container-image.json` rather than embedding an obsolete candidate digest into documentation copied inside that image;
30
- - immutable GitHub Action references, workflow and shell linting, strict release ordering, and byte-for-byte npm/GitHub release verification;
31
- - pinned Dockerfile-frontend and Node base-image digests, a multi-platform base supporting `linux/amd64` and `linux/arm64`, and a warning-free Docker build check;
32
- - read-only production-container checks proving OAuth metadata discovery, unauthenticated `401`, invalid-Origin `403`, protocol-only stdio initialization/discovery of all 26 tools, and a real read-only `hoi4.project_status` call from the non-root Node 22.23.1 runtime;
33
- - reusable bounded GUI helper templates, source-valid typed helper output, explicit state variants, deterministic scrolling and static meter handoffs, and refusal tests for unsafe or ambiguous helper compilation;
34
- - explicit even-odd province polygons with raster-boundary bounds checking before rasterization, pixel-center sampling, and refusal rather than clipping;
35
- - interrupted GitHub release recovery through a uniquely selected, byte-verified draft without asset overwrite or deletion, followed by exact immutable-release verification;
36
- - three installed-data qualifications covering a large vanilla/external focus workflow, a real GUI/GFX/font graph with deterministic full/annotated renders, and full province-map scan/render/storage without launching the game; the 302,497,021-byte canonical GUI graph was stored exactly as three bounded resources plus its one-read index while the default 128 MiB per-object ceiling remained enabled;
37
- - deterministic cold/warm benchmark output for the 255-focus, 203-visible-element GUI, and all-layer map workloads, including same-size/same-mtime content-hash invalidation.
38
-
39
- Known refusal cases and intentional boundaries remain documented in [Known limitations](limitations.md). They are explicit product constraints, not fallback implementations.
40
-
41
- ## Public delivery status
42
-
43
- The immutable `v0.1.2` release attempt published npm with trusted-publisher provenance and then
44
- stopped in independent verification because the pinned npm subprocess reported the configured
45
- official Registry URL without a trailing slash while the strict verifier required the canonical
46
- slash-terminated spelling. npm's signature audit itself verified 448 registry signatures and 128
47
- attestations. The workflow correctly skipped GHCR, GitHub Release, MCP Registry, and final public
48
- verification. The public npm `0.1.2` bytes and tag are retained as immutable audit evidence.
49
-
50
- The immutable `v0.1.3` release attempt published and independently verified npm, then published
51
- the exact two-platform GHCR image with SPDX SBOM and SLSA v0.2 provenance attached to each runtime
52
- manifest. BuildKit correctly resolved its Git context URI to the immutable commit while recording
53
- the exact release tag and workflow identity in the provenance environment; the verifier had
54
- incorrectly required the URI itself to retain the tag. GitHub Release, MCP Registry, and final
55
- public verification were skipped. The npm `0.1.3` bytes, GHCR `0.1.3` digest, and tag are retained
56
- as immutable audit evidence.
57
-
58
- The immutable `v0.1.4` release attempt published and independently verified npm and the exact
59
- two-platform GHCR image, then staged a four-asset GitHub draft with the expected names, sizes,
60
- SHA-256 digests, upload states, and GitHub Actions bot ownership. The live Releases API represented
61
- the omitted optional asset label as an empty string while the verifier accepted only `null`, so the
62
- draft remained unpublished. MCP Registry and final public verification were skipped. The npm
63
- `0.1.4` bytes, GHCR `0.1.4` digest, tag, draft, and draft assets are retained as immutable or
64
- unchanged audit evidence.
65
-
66
- The immutable `v0.1.5` release attempt published and independently verified npm, the exact
67
- two-platform GHCR image with attestations, an immutable four-asset GitHub Release, and an
68
- active/latest official MCP Registry record. Its final cross-surface verifier stopped because the
69
- Registry canonically omitted explicit `isSecret: false`; the pinned official schema defines false
70
- as that field's default. Every public object had already passed its dedicated publication gate and
71
- remains unchanged as audit evidence.
72
-
73
- The `v0.1.6` workflow completed every validation, writer, and final verification job. Independent
74
- post-release audits then downloaded the public bytes again without changing release state.
75
-
76
- | Surface | Verified public evidence | Status |
77
- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
78
- | GitHub source | Public repository, annotated tag object `4933d5bc...`, and peeled commit `a7eeb315...` | Verified |
79
- | npm | `hoi4-agent-tools@0.1.6`, exact tarball bytes, Registry signature, npm publish attestation, and SLSA provenance v1 | Verified |
80
- | GitHub release | Immutable [Release v0.1.6](https://github.com/klimPaskov/hoi4-agent-tools/releases/tag/v0.1.6), ID `352573210`, with exactly four byte-verified assets | Verified |
81
- | GHCR | Anonymous `ghcr.io/klimpaskov/hoi4-agent-tools:0.1.6` index with exact amd64/arm64 runtimes and per-runtime SPDX/SLSA attestations | Verified |
82
- | MCP Registry | Exact `io.github.klimPaskov/hoi4-agent-tools@0.1.6` record, strict-equal to `server.json`, with official `active` and `isLatest: true` state | Verified |
83
- | Public install | Clean npm install, signature/attestation audit, setup diagnostics, stdio initialization/discovery, and authenticated Streamable HTTP session/resource/progress/cancellation checks | Verified |
84
-
85
- ### npm and provenance
86
-
87
- - Published at `2026-07-11T17:41:29.169Z`; `latest` resolves to `0.1.6`.
88
- - Tarball: `669,550` bytes at `https://registry.npmjs.org/hoi4-agent-tools/-/hoi4-agent-tools-0.1.6.tgz`.
89
- - SHA-1: `0b240508a9dab4bc31a84ba1733ded3eb6983390`.
90
- - SHA-256: `b3925c8600fbb8eda44b7aaf36edb7d7bd056b84766e2b0cd6b4fa8fdbc385ce`.
91
- - SRI: `sha512-OaWY67zCEuwNj4AQZHlGBg59BoAQlgBoJ7soV5cOD2DiVClcjdz+8z0gBB02I1UXkoxFQgCcWw8YMVkBl0iLhg==`.
92
- - The npm and GitHub Release tarballs are byte-identical. Pinned npm `11.16.0` verified the
93
- Registry signature, npm publish attestation, and SLSA provenance v1 with Rekor log index
94
- `2145861311`. The provenance binds `release.yml`, `refs/tags/v0.1.6`, release commit
95
- `a7eeb31532c067fa2fe4e297f1710615b49a1273`, and workflow run `29161750887`.
96
-
97
- ### Immutable GitHub Release
98
-
99
- The GitHub Actions bot published Release ID `352573210` at `2026-07-11T17:46:42Z`; it is neither a
100
- draft nor a prerelease and reports `immutable: true`. Its body exactly matches tagged
101
- `CHANGELOG.md`. All assets have canonical empty labels, uploaded state, the canonical bot uploader,
102
- and API digest/size values matching independently downloaded bytes:
103
-
104
- | Asset | Bytes | SHA-256 |
105
- | ---------------------------- | ------: | ------------------------------------------------------------------ |
106
- | `container-image.json` | 361 | `0830611b33f26cb24baf05a8e997512db962ad4297966aa3b7db0bd1a37da179` |
107
- | `hoi4-agent-tools-0.1.6.tgz` | 669,550 | `b3925c8600fbb8eda44b7aaf36edb7d7bd056b84766e2b0cd6b4fa8fdbc385ce` |
108
- | `npm-pack.json` | 49,941 | `a359bc1e0e64d119606a9c6bfb3f1a77725089e7cd5ada82c7efef839594543f` |
109
- | `release-identity.json` | 431 | `d289937579f1e6e272264b09b4d9286a62e2c05c01a921d56dbc3d678fb5f576` |
110
-
111
- ### GHCR image and attestations
112
-
113
- - OCI index: `sha256:9593b77b50938a76341d293dd4ef97bb42224661a6a25dc28a1378e0109e0e5b`.
114
- - `linux/amd64`: `sha256:bda20a48cff5d5597467e22bb53b142bcb698420b637fe5cdc1f05107e7bce0f`.
115
- - `linux/arm64`: `sha256:52ed0aa7bf35de90f49364a94bb41fbd0136895a155af624fc26b4275631d735`.
116
- - The index has exactly two runtime and two attached attestation manifests, without orphans. Each
117
- runtime has one SPDX 2.3 and one SLSA v0.2 statement whose sole SHA-256 subject is that runtime
118
- digest. Provenance binds `Dockerfile`, `publish_image`, `refs/tags/v0.1.6`, the release workflow,
119
- and the exact commit.
120
- - A fresh pull with an empty Docker configuration succeeded anonymously. A non-root, read-only,
121
- network-disabled stdio smoke negotiated MCP `2025-11-25`, reported version `0.1.6`, and listed 26
122
- tools. The default HTTP entry point also returned an authenticated Streamable HTTP initialization.
123
-
124
- ### MCP Registry and public installation
125
-
126
- The exact official Registry endpoint returned a server object strict-equal to checked-in
127
- `server.json`, plus `status: active` and `isLatest: true`. `publishedAt`, `updatedAt`, and
128
- `statusChangedAt` are all `2026-07-11T17:46:54.873191Z`.
129
-
130
- A clean public installation fetched 132 packages only from `https://registry.npmjs.org`; its
131
- lockfile had no `file:`, `workspace:`, `link:`, repository-path, or other local resolution. The
132
- signature audit verified 131 installed package signatures and 17 attestations with no invalid or
133
- missing records. The installed setup entry point passed help, read-only config initialization,
134
- diagnostics, rendering probe, and client-config output. Installed stdio and authenticated,
135
- Origin-validated Streamable HTTP passed initialization, discovery, resources, prompts, progress,
136
- cancellation, and session deletion.
137
-
138
- ## Acceptance coverage
139
-
140
- | Acceptance source | Completion evidence |
141
- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
142
- | `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 |
143
- | `01_shared_architecture.md` | One engine and shared workspace/source/index/diagnostic/configuration/transaction/artifact services exercised across Focus, GUI, map, and MCP acceptance tests |
144
- | `02_focus_tree_workbench.md` | Synthetic and installed-data import/layout/lint/render workflows with deterministic HTML/SVG/PNG/JSON artifacts and source-linked diagnostics |
145
- | `03_scripted_gui_studio.md` | Deterministic full/crop/annotation/state/resolution/click-region/hierarchy/comparison rendering, source graph integration, bitmap diffs, and mandatory fidelity reports |
146
- | `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 |
147
- | `05_validation_delivery_and_agent_integration.md` | 495 portable tests, enforced coverage, synthetic CI fixtures, installed-data qualification, official MCP Inspector discovery, package/install tests, and end-to-end coding-agent workflows |
148
- | `06_public_mcp_server.md` | Read-only-default stdio and secured Streamable HTTP, OAuth/origin/isolation/limit checks, typed handlers, resource-backed large artifacts, package/Release/GHCR/Registry publication, and examples |
149
-
150
- ## Simplifications, omissions, and blockers
151
-
152
- No required feature was replaced by a mock tool, static placeholder diagram, manual editor,
153
- interactive dashboard, game automation, or unpublished package. No required acceptance item or
154
- release blocker remains. Engine-unknown syntax and renderer fields are preserved and explicitly
155
- reported through refusal diagnostics and fidelity reports; the supported boundaries are listed in
156
- [Known limitations](limitations.md), not hidden behind fallback rewrites.
157
-
158
- The immutable earlier release attempts and the exact unpublished `v0.1.4` draft remain unchanged as
159
- audit evidence. One independent post-release Registry read timed out and succeeded on retry; it did
160
- not affect the green release workflow or repeated successful verification.
161
-
162
- Detailed commands and failure behavior are documented in [Release and MCP Registry publication](release.md).