hoi4-agent-tools 0.0.0-bootstrap.1 → 0.1.2

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 (416) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +201 -0
  3. package/README.md +140 -2
  4. package/SECURITY.md +17 -0
  5. package/dist/bin/http.d.ts +3 -0
  6. package/dist/bin/http.d.ts.map +1 -0
  7. package/dist/bin/http.js +27 -0
  8. package/dist/bin/http.js.map +1 -0
  9. package/dist/bin/setup.d.ts +3 -0
  10. package/dist/bin/setup.d.ts.map +1 -0
  11. package/dist/bin/setup.js +188 -0
  12. package/dist/bin/setup.js.map +1 -0
  13. package/dist/bin/stdio.d.ts +3 -0
  14. package/dist/bin/stdio.d.ts.map +1 -0
  15. package/dist/bin/stdio.js +36 -0
  16. package/dist/bin/stdio.js.map +1 -0
  17. package/dist/hoi4_agent_tools/core/artifacts.d.ts +117 -0
  18. package/dist/hoi4_agent_tools/core/artifacts.d.ts.map +1 -0
  19. package/dist/hoi4_agent_tools/core/artifacts.js +1047 -0
  20. package/dist/hoi4_agent_tools/core/artifacts.js.map +1 -0
  21. package/dist/hoi4_agent_tools/core/canonical.d.ts +13 -0
  22. package/dist/hoi4_agent_tools/core/canonical.d.ts.map +1 -0
  23. package/dist/hoi4_agent_tools/core/canonical.js +41 -0
  24. package/dist/hoi4_agent_tools/core/canonical.js.map +1 -0
  25. package/dist/hoi4_agent_tools/core/configuration.d.ts +137 -0
  26. package/dist/hoi4_agent_tools/core/configuration.d.ts.map +1 -0
  27. package/dist/hoi4_agent_tools/core/configuration.js +383 -0
  28. package/dist/hoi4_agent_tools/core/configuration.js.map +1 -0
  29. package/dist/hoi4_agent_tools/core/diagnostic-collector.d.ts +18 -0
  30. package/dist/hoi4_agent_tools/core/diagnostic-collector.d.ts.map +1 -0
  31. package/dist/hoi4_agent_tools/core/diagnostic-collector.js +45 -0
  32. package/dist/hoi4_agent_tools/core/diagnostic-collector.js.map +1 -0
  33. package/dist/hoi4_agent_tools/core/diagnostics.d.ts +26 -0
  34. package/dist/hoi4_agent_tools/core/diagnostics.d.ts.map +1 -0
  35. package/dist/hoi4_agent_tools/core/diagnostics.js +25 -0
  36. package/dist/hoi4_agent_tools/core/diagnostics.js.map +1 -0
  37. package/dist/hoi4_agent_tools/core/diff.d.ts +22 -0
  38. package/dist/hoi4_agent_tools/core/diff.d.ts.map +1 -0
  39. package/dist/hoi4_agent_tools/core/diff.js +93 -0
  40. package/dist/hoi4_agent_tools/core/diff.js.map +1 -0
  41. package/dist/hoi4_agent_tools/core/engine.d.ts +56 -0
  42. package/dist/hoi4_agent_tools/core/engine.d.ts.map +1 -0
  43. package/dist/hoi4_agent_tools/core/engine.js +319 -0
  44. package/dist/hoi4_agent_tools/core/engine.js.map +1 -0
  45. package/dist/hoi4_agent_tools/core/image-diff.d.ts +14 -0
  46. package/dist/hoi4_agent_tools/core/image-diff.d.ts.map +1 -0
  47. package/dist/hoi4_agent_tools/core/image-diff.js +121 -0
  48. package/dist/hoi4_agent_tools/core/image-diff.js.map +1 -0
  49. package/dist/hoi4_agent_tools/core/index.d.ts +64 -0
  50. package/dist/hoi4_agent_tools/core/index.d.ts.map +1 -0
  51. package/dist/hoi4_agent_tools/core/index.js +963 -0
  52. package/dist/hoi4_agent_tools/core/index.js.map +1 -0
  53. package/dist/hoi4_agent_tools/core/index.public.d.ts +16 -0
  54. package/dist/hoi4_agent_tools/core/index.public.d.ts.map +1 -0
  55. package/dist/hoi4_agent_tools/core/index.public.js +16 -0
  56. package/dist/hoi4_agent_tools/core/index.public.js.map +1 -0
  57. package/dist/hoi4_agent_tools/core/render-budget.d.ts +51 -0
  58. package/dist/hoi4_agent_tools/core/render-budget.d.ts.map +1 -0
  59. package/dist/hoi4_agent_tools/core/render-budget.js +109 -0
  60. package/dist/hoi4_agent_tools/core/render-budget.js.map +1 -0
  61. package/dist/hoi4_agent_tools/core/result.d.ts +45 -0
  62. package/dist/hoi4_agent_tools/core/result.d.ts.map +1 -0
  63. package/dist/hoi4_agent_tools/core/result.js +26 -0
  64. package/dist/hoi4_agent_tools/core/result.js.map +1 -0
  65. package/dist/hoi4_agent_tools/core/scanner.d.ts +28 -0
  66. package/dist/hoi4_agent_tools/core/scanner.d.ts.map +1 -0
  67. package/dist/hoi4_agent_tools/core/scanner.js +136 -0
  68. package/dist/hoi4_agent_tools/core/scanner.js.map +1 -0
  69. package/dist/hoi4_agent_tools/core/server-state.d.ts +31 -0
  70. package/dist/hoi4_agent_tools/core/server-state.d.ts.map +1 -0
  71. package/dist/hoi4_agent_tools/core/server-state.js +413 -0
  72. package/dist/hoi4_agent_tools/core/server-state.js.map +1 -0
  73. package/dist/hoi4_agent_tools/core/source/encoding.d.ts +10 -0
  74. package/dist/hoi4_agent_tools/core/source/encoding.d.ts.map +1 -0
  75. package/dist/hoi4_agent_tools/core/source/encoding.js +54 -0
  76. package/dist/hoi4_agent_tools/core/source/encoding.js.map +1 -0
  77. package/dist/hoi4_agent_tools/core/source/index.d.ts +7 -0
  78. package/dist/hoi4_agent_tools/core/source/index.d.ts.map +1 -0
  79. package/dist/hoi4_agent_tools/core/source/index.js +7 -0
  80. package/dist/hoi4_agent_tools/core/source/index.js.map +1 -0
  81. package/dist/hoi4_agent_tools/core/source/lexer.d.ts +30 -0
  82. package/dist/hoi4_agent_tools/core/source/lexer.d.ts.map +1 -0
  83. package/dist/hoi4_agent_tools/core/source/lexer.js +266 -0
  84. package/dist/hoi4_agent_tools/core/source/lexer.js.map +1 -0
  85. package/dist/hoi4_agent_tools/core/source/limits.d.ts +21 -0
  86. package/dist/hoi4_agent_tools/core/source/limits.d.ts.map +1 -0
  87. package/dist/hoi4_agent_tools/core/source/limits.js +49 -0
  88. package/dist/hoi4_agent_tools/core/source/limits.js.map +1 -0
  89. package/dist/hoi4_agent_tools/core/source/localisation.d.ts +20 -0
  90. package/dist/hoi4_agent_tools/core/source/localisation.d.ts.map +1 -0
  91. package/dist/hoi4_agent_tools/core/source/localisation.js +163 -0
  92. package/dist/hoi4_agent_tools/core/source/localisation.js.map +1 -0
  93. package/dist/hoi4_agent_tools/core/source/parser.d.ts +44 -0
  94. package/dist/hoi4_agent_tools/core/source/parser.d.ts.map +1 -0
  95. package/dist/hoi4_agent_tools/core/source/parser.js +334 -0
  96. package/dist/hoi4_agent_tools/core/source/parser.js.map +1 -0
  97. package/dist/hoi4_agent_tools/core/source/rewrite.d.ts +10 -0
  98. package/dist/hoi4_agent_tools/core/source/rewrite.d.ts.map +1 -0
  99. package/dist/hoi4_agent_tools/core/source/rewrite.js +28 -0
  100. package/dist/hoi4_agent_tools/core/source/rewrite.js.map +1 -0
  101. package/dist/hoi4_agent_tools/core/svg-text.d.ts +34 -0
  102. package/dist/hoi4_agent_tools/core/svg-text.d.ts.map +1 -0
  103. package/dist/hoi4_agent_tools/core/svg-text.js +127 -0
  104. package/dist/hoi4_agent_tools/core/svg-text.js.map +1 -0
  105. package/dist/hoi4_agent_tools/core/transaction-limits.d.ts +9 -0
  106. package/dist/hoi4_agent_tools/core/transaction-limits.d.ts.map +1 -0
  107. package/dist/hoi4_agent_tools/core/transaction-limits.js +9 -0
  108. package/dist/hoi4_agent_tools/core/transaction-limits.js.map +1 -0
  109. package/dist/hoi4_agent_tools/core/transactions.d.ts +162 -0
  110. package/dist/hoi4_agent_tools/core/transactions.d.ts.map +1 -0
  111. package/dist/hoi4_agent_tools/core/transactions.js +1181 -0
  112. package/dist/hoi4_agent_tools/core/transactions.js.map +1 -0
  113. package/dist/hoi4_agent_tools/core/workspace.d.ts +68 -0
  114. package/dist/hoi4_agent_tools/core/workspace.d.ts.map +1 -0
  115. package/dist/hoi4_agent_tools/core/workspace.js +794 -0
  116. package/dist/hoi4_agent_tools/core/workspace.js.map +1 -0
  117. package/dist/hoi4_agent_tools/focus/compiler.d.ts +9 -0
  118. package/dist/hoi4_agent_tools/focus/compiler.d.ts.map +1 -0
  119. package/dist/hoi4_agent_tools/focus/compiler.js +273 -0
  120. package/dist/hoi4_agent_tools/focus/compiler.js.map +1 -0
  121. package/dist/hoi4_agent_tools/focus/continuous-render.d.ts +32 -0
  122. package/dist/hoi4_agent_tools/focus/continuous-render.d.ts.map +1 -0
  123. package/dist/hoi4_agent_tools/focus/continuous-render.js +179 -0
  124. package/dist/hoi4_agent_tools/focus/continuous-render.js.map +1 -0
  125. package/dist/hoi4_agent_tools/focus/drift.d.ts +22 -0
  126. package/dist/hoi4_agent_tools/focus/drift.d.ts.map +1 -0
  127. package/dist/hoi4_agent_tools/focus/drift.js +124 -0
  128. package/dist/hoi4_agent_tools/focus/drift.js.map +1 -0
  129. package/dist/hoi4_agent_tools/focus/geometry.d.ts +17 -0
  130. package/dist/hoi4_agent_tools/focus/geometry.d.ts.map +1 -0
  131. package/dist/hoi4_agent_tools/focus/geometry.js +35 -0
  132. package/dist/hoi4_agent_tools/focus/geometry.js.map +1 -0
  133. package/dist/hoi4_agent_tools/focus/importer.d.ts +9 -0
  134. package/dist/hoi4_agent_tools/focus/importer.d.ts.map +1 -0
  135. package/dist/hoi4_agent_tools/focus/importer.js +732 -0
  136. package/dist/hoi4_agent_tools/focus/importer.js.map +1 -0
  137. package/dist/hoi4_agent_tools/focus/index.d.ts +14 -0
  138. package/dist/hoi4_agent_tools/focus/index.d.ts.map +1 -0
  139. package/dist/hoi4_agent_tools/focus/index.js +14 -0
  140. package/dist/hoi4_agent_tools/focus/index.js.map +1 -0
  141. package/dist/hoi4_agent_tools/focus/layout.d.ts +5 -0
  142. package/dist/hoi4_agent_tools/focus/layout.d.ts.map +1 -0
  143. package/dist/hoi4_agent_tools/focus/layout.js +653 -0
  144. package/dist/hoi4_agent_tools/focus/layout.js.map +1 -0
  145. package/dist/hoi4_agent_tools/focus/limits.d.ts +9 -0
  146. package/dist/hoi4_agent_tools/focus/limits.d.ts.map +1 -0
  147. package/dist/hoi4_agent_tools/focus/limits.js +9 -0
  148. package/dist/hoi4_agent_tools/focus/limits.js.map +1 -0
  149. package/dist/hoi4_agent_tools/focus/lint.d.ts +14 -0
  150. package/dist/hoi4_agent_tools/focus/lint.d.ts.map +1 -0
  151. package/dist/hoi4_agent_tools/focus/lint.js +839 -0
  152. package/dist/hoi4_agent_tools/focus/lint.js.map +1 -0
  153. package/dist/hoi4_agent_tools/focus/model.d.ts +303 -0
  154. package/dist/hoi4_agent_tools/focus/model.d.ts.map +1 -0
  155. package/dist/hoi4_agent_tools/focus/model.js +20 -0
  156. package/dist/hoi4_agent_tools/focus/model.js.map +1 -0
  157. package/dist/hoi4_agent_tools/focus/native-effects.d.ts +9 -0
  158. package/dist/hoi4_agent_tools/focus/native-effects.d.ts.map +1 -0
  159. package/dist/hoi4_agent_tools/focus/native-effects.js +563 -0
  160. package/dist/hoi4_agent_tools/focus/native-effects.js.map +1 -0
  161. package/dist/hoi4_agent_tools/focus/planning.d.ts +15 -0
  162. package/dist/hoi4_agent_tools/focus/planning.d.ts.map +1 -0
  163. package/dist/hoi4_agent_tools/focus/planning.js +241 -0
  164. package/dist/hoi4_agent_tools/focus/planning.js.map +1 -0
  165. package/dist/hoi4_agent_tools/focus/presentation.d.ts +24 -0
  166. package/dist/hoi4_agent_tools/focus/presentation.d.ts.map +1 -0
  167. package/dist/hoi4_agent_tools/focus/presentation.js +204 -0
  168. package/dist/hoi4_agent_tools/focus/presentation.js.map +1 -0
  169. package/dist/hoi4_agent_tools/focus/render.d.ts +35 -0
  170. package/dist/hoi4_agent_tools/focus/render.d.ts.map +1 -0
  171. package/dist/hoi4_agent_tools/focus/render.js +491 -0
  172. package/dist/hoi4_agent_tools/focus/render.js.map +1 -0
  173. package/dist/hoi4_agent_tools/focus/service.d.ts +82 -0
  174. package/dist/hoi4_agent_tools/focus/service.d.ts.map +1 -0
  175. package/dist/hoi4_agent_tools/focus/service.js +492 -0
  176. package/dist/hoi4_agent_tools/focus/service.js.map +1 -0
  177. package/dist/hoi4_agent_tools/focus/source-update.d.ts +6 -0
  178. package/dist/hoi4_agent_tools/focus/source-update.d.ts.map +1 -0
  179. package/dist/hoi4_agent_tools/focus/source-update.js +328 -0
  180. package/dist/hoi4_agent_tools/focus/source-update.js.map +1 -0
  181. package/dist/hoi4_agent_tools/gui/animation-manifest.d.ts +37 -0
  182. package/dist/hoi4_agent_tools/gui/animation-manifest.d.ts.map +1 -0
  183. package/dist/hoi4_agent_tools/gui/animation-manifest.js +66 -0
  184. package/dist/hoi4_agent_tools/gui/animation-manifest.js.map +1 -0
  185. package/dist/hoi4_agent_tools/gui/assets.d.ts +71 -0
  186. package/dist/hoi4_agent_tools/gui/assets.d.ts.map +1 -0
  187. package/dist/hoi4_agent_tools/gui/assets.js +629 -0
  188. package/dist/hoi4_agent_tools/gui/assets.js.map +1 -0
  189. package/dist/hoi4_agent_tools/gui/dds.d.ts +17 -0
  190. package/dist/hoi4_agent_tools/gui/dds.d.ts.map +1 -0
  191. package/dist/hoi4_agent_tools/gui/dds.js +245 -0
  192. package/dist/hoi4_agent_tools/gui/dds.js.map +1 -0
  193. package/dist/hoi4_agent_tools/gui/helpers.d.ts +101 -0
  194. package/dist/hoi4_agent_tools/gui/helpers.d.ts.map +1 -0
  195. package/dist/hoi4_agent_tools/gui/helpers.js +1072 -0
  196. package/dist/hoi4_agent_tools/gui/helpers.js.map +1 -0
  197. package/dist/hoi4_agent_tools/gui/index.d.ts +15 -0
  198. package/dist/hoi4_agent_tools/gui/index.d.ts.map +1 -0
  199. package/dist/hoi4_agent_tools/gui/index.js +15 -0
  200. package/dist/hoi4_agent_tools/gui/index.js.map +1 -0
  201. package/dist/hoi4_agent_tools/gui/layout.d.ts +6 -0
  202. package/dist/hoi4_agent_tools/gui/layout.d.ts.map +1 -0
  203. package/dist/hoi4_agent_tools/gui/layout.js +753 -0
  204. package/dist/hoi4_agent_tools/gui/layout.js.map +1 -0
  205. package/dist/hoi4_agent_tools/gui/limits.d.ts +25 -0
  206. package/dist/hoi4_agent_tools/gui/limits.d.ts.map +1 -0
  207. package/dist/hoi4_agent_tools/gui/limits.js +27 -0
  208. package/dist/hoi4_agent_tools/gui/limits.js.map +1 -0
  209. package/dist/hoi4_agent_tools/gui/renderer.d.ts +18 -0
  210. package/dist/hoi4_agent_tools/gui/renderer.d.ts.map +1 -0
  211. package/dist/hoi4_agent_tools/gui/renderer.js +388 -0
  212. package/dist/hoi4_agent_tools/gui/renderer.js.map +1 -0
  213. package/dist/hoi4_agent_tools/gui/scenario.d.ts +66 -0
  214. package/dist/hoi4_agent_tools/gui/scenario.d.ts.map +1 -0
  215. package/dist/hoi4_agent_tools/gui/scenario.js +191 -0
  216. package/dist/hoi4_agent_tools/gui/scenario.js.map +1 -0
  217. package/dist/hoi4_agent_tools/gui/source-graph.d.ts +7 -0
  218. package/dist/hoi4_agent_tools/gui/source-graph.d.ts.map +1 -0
  219. package/dist/hoi4_agent_tools/gui/source-graph.js +1074 -0
  220. package/dist/hoi4_agent_tools/gui/source-graph.js.map +1 -0
  221. package/dist/hoi4_agent_tools/gui/source-patch.d.ts +13 -0
  222. package/dist/hoi4_agent_tools/gui/source-patch.d.ts.map +1 -0
  223. package/dist/hoi4_agent_tools/gui/source-patch.js +90 -0
  224. package/dist/hoi4_agent_tools/gui/source-patch.js.map +1 -0
  225. package/dist/hoi4_agent_tools/gui/studio.d.ts +86 -0
  226. package/dist/hoi4_agent_tools/gui/studio.d.ts.map +1 -0
  227. package/dist/hoi4_agent_tools/gui/studio.js +830 -0
  228. package/dist/hoi4_agent_tools/gui/studio.js.map +1 -0
  229. package/dist/hoi4_agent_tools/gui/tga.d.ts +16 -0
  230. package/dist/hoi4_agent_tools/gui/tga.d.ts.map +1 -0
  231. package/dist/hoi4_agent_tools/gui/tga.js +157 -0
  232. package/dist/hoi4_agent_tools/gui/tga.js.map +1 -0
  233. package/dist/hoi4_agent_tools/gui/types.d.ts +322 -0
  234. package/dist/hoi4_agent_tools/gui/types.d.ts.map +1 -0
  235. package/dist/hoi4_agent_tools/gui/types.js +19 -0
  236. package/dist/hoi4_agent_tools/gui/types.js.map +1 -0
  237. package/dist/hoi4_agent_tools/gui/validators.d.ts +8 -0
  238. package/dist/hoi4_agent_tools/gui/validators.d.ts.map +1 -0
  239. package/dist/hoi4_agent_tools/gui/validators.js +951 -0
  240. package/dist/hoi4_agent_tools/gui/validators.js.map +1 -0
  241. package/dist/hoi4_agent_tools/map/bmp.d.ts +62 -0
  242. package/dist/hoi4_agent_tools/map/bmp.d.ts.map +1 -0
  243. package/dist/hoi4_agent_tools/map/bmp.js +363 -0
  244. package/dist/hoi4_agent_tools/map/bmp.js.map +1 -0
  245. package/dist/hoi4_agent_tools/map/diagnostic-limit.d.ts +5 -0
  246. package/dist/hoi4_agent_tools/map/diagnostic-limit.d.ts.map +1 -0
  247. package/dist/hoi4_agent_tools/map/diagnostic-limit.js +21 -0
  248. package/dist/hoi4_agent_tools/map/diagnostic-limit.js.map +1 -0
  249. package/dist/hoi4_agent_tools/map/index.d.ts +8 -0
  250. package/dist/hoi4_agent_tools/map/index.d.ts.map +1 -0
  251. package/dist/hoi4_agent_tools/map/index.js +8 -0
  252. package/dist/hoi4_agent_tools/map/index.js.map +1 -0
  253. package/dist/hoi4_agent_tools/map/limits.d.ts +13 -0
  254. package/dist/hoi4_agent_tools/map/limits.d.ts.map +1 -0
  255. package/dist/hoi4_agent_tools/map/limits.js +13 -0
  256. package/dist/hoi4_agent_tools/map/limits.js.map +1 -0
  257. package/dist/hoi4_agent_tools/map/model.d.ts +269 -0
  258. package/dist/hoi4_agent_tools/map/model.d.ts.map +1 -0
  259. package/dist/hoi4_agent_tools/map/model.js +1114 -0
  260. package/dist/hoi4_agent_tools/map/model.js.map +1 -0
  261. package/dist/hoi4_agent_tools/map/operations.d.ts +401 -0
  262. package/dist/hoi4_agent_tools/map/operations.d.ts.map +1 -0
  263. package/dist/hoi4_agent_tools/map/operations.js +2717 -0
  264. package/dist/hoi4_agent_tools/map/operations.js.map +1 -0
  265. package/dist/hoi4_agent_tools/map/render.d.ts +90 -0
  266. package/dist/hoi4_agent_tools/map/render.d.ts.map +1 -0
  267. package/dist/hoi4_agent_tools/map/render.js +759 -0
  268. package/dist/hoi4_agent_tools/map/render.js.map +1 -0
  269. package/dist/hoi4_agent_tools/map/service.d.ts +81 -0
  270. package/dist/hoi4_agent_tools/map/service.d.ts.map +1 -0
  271. package/dist/hoi4_agent_tools/map/service.js +695 -0
  272. package/dist/hoi4_agent_tools/map/service.js.map +1 -0
  273. package/dist/hoi4_agent_tools/map/validation.d.ts +23 -0
  274. package/dist/hoi4_agent_tools/map/validation.d.ts.map +1 -0
  275. package/dist/hoi4_agent_tools/map/validation.js +1177 -0
  276. package/dist/hoi4_agent_tools/map/validation.js.map +1 -0
  277. package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts +3 -0
  278. package/dist/hoi4_agent_tools/mcp/prompts/register.d.ts.map +1 -0
  279. package/dist/hoi4_agent_tools/mcp/prompts/register.js +50 -0
  280. package/dist/hoi4_agent_tools/mcp/prompts/register.js.map +1 -0
  281. package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts +9 -0
  282. package/dist/hoi4_agent_tools/mcp/registry/metadata.d.ts.map +1 -0
  283. package/dist/hoi4_agent_tools/mcp/registry/metadata.js +10 -0
  284. package/dist/hoi4_agent_tools/mcp/registry/metadata.js.map +1 -0
  285. package/dist/hoi4_agent_tools/mcp/resources/register.d.ts +5 -0
  286. package/dist/hoi4_agent_tools/mcp/resources/register.d.ts.map +1 -0
  287. package/dist/hoi4_agent_tools/mcp/resources/register.js +278 -0
  288. package/dist/hoi4_agent_tools/mcp/resources/register.js.map +1 -0
  289. package/dist/hoi4_agent_tools/mcp/security/auth.d.ts +24 -0
  290. package/dist/hoi4_agent_tools/mcp/security/auth.d.ts.map +1 -0
  291. package/dist/hoi4_agent_tools/mcp/security/auth.js +234 -0
  292. package/dist/hoi4_agent_tools/mcp/security/auth.js.map +1 -0
  293. package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts +35 -0
  294. package/dist/hoi4_agent_tools/mcp/server/base-tools.d.ts.map +1 -0
  295. package/dist/hoi4_agent_tools/mcp/server/base-tools.js +835 -0
  296. package/dist/hoi4_agent_tools/mcp/server/base-tools.js.map +1 -0
  297. package/dist/hoi4_agent_tools/mcp/server/create.d.ts +5 -0
  298. package/dist/hoi4_agent_tools/mcp/server/create.d.ts.map +1 -0
  299. package/dist/hoi4_agent_tools/mcp/server/create.js +26 -0
  300. package/dist/hoi4_agent_tools/mcp/server/create.js.map +1 -0
  301. package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts +133 -0
  302. package/dist/hoi4_agent_tools/mcp/server/output-schemas.d.ts.map +1 -0
  303. package/dist/hoi4_agent_tools/mcp/server/output-schemas.js +127 -0
  304. package/dist/hoi4_agent_tools/mcp/server/output-schemas.js.map +1 -0
  305. package/dist/hoi4_agent_tools/mcp/server/progress.d.ts +8 -0
  306. package/dist/hoi4_agent_tools/mcp/server/progress.d.ts.map +1 -0
  307. package/dist/hoi4_agent_tools/mcp/server/progress.js +21 -0
  308. package/dist/hoi4_agent_tools/mcp/server/progress.js.map +1 -0
  309. package/dist/hoi4_agent_tools/mcp/server/result.d.ts +232 -0
  310. package/dist/hoi4_agent_tools/mcp/server/result.d.ts.map +1 -0
  311. package/dist/hoi4_agent_tools/mcp/server/result.js +353 -0
  312. package/dist/hoi4_agent_tools/mcp/server/result.js.map +1 -0
  313. package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts +5 -0
  314. package/dist/hoi4_agent_tools/mcp/tools/focus.d.ts.map +1 -0
  315. package/dist/hoi4_agent_tools/mcp/tools/focus.js +1059 -0
  316. package/dist/hoi4_agent_tools/mcp/tools/focus.js.map +1 -0
  317. package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts +111 -0
  318. package/dist/hoi4_agent_tools/mcp/tools/gui.d.ts.map +1 -0
  319. package/dist/hoi4_agent_tools/mcp/tools/gui.js +598 -0
  320. package/dist/hoi4_agent_tools/mcp/tools/gui.js.map +1 -0
  321. package/dist/hoi4_agent_tools/mcp/tools/map.d.ts +5 -0
  322. package/dist/hoi4_agent_tools/mcp/tools/map.d.ts.map +1 -0
  323. package/dist/hoi4_agent_tools/mcp/tools/map.js +685 -0
  324. package/dist/hoi4_agent_tools/mcp/tools/map.js.map +1 -0
  325. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.d.ts +58 -0
  326. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.d.ts.map +1 -0
  327. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.js +181 -0
  328. package/dist/hoi4_agent_tools/mcp/transports/bounded-stdio.js.map +1 -0
  329. package/dist/hoi4_agent_tools/mcp/transports/event-store.d.ts +26 -0
  330. package/dist/hoi4_agent_tools/mcp/transports/event-store.d.ts.map +1 -0
  331. package/dist/hoi4_agent_tools/mcp/transports/event-store.js +86 -0
  332. package/dist/hoi4_agent_tools/mcp/transports/event-store.js.map +1 -0
  333. package/dist/hoi4_agent_tools/mcp/transports/http.d.ts +28 -0
  334. package/dist/hoi4_agent_tools/mcp/transports/http.d.ts.map +1 -0
  335. package/dist/hoi4_agent_tools/mcp/transports/http.js +744 -0
  336. package/dist/hoi4_agent_tools/mcp/transports/http.js.map +1 -0
  337. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.d.ts +15 -0
  338. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.d.ts.map +1 -0
  339. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.js +51 -0
  340. package/dist/hoi4_agent_tools/mcp/transports/protocol-gate.js.map +1 -0
  341. package/dist/hoi4_agent_tools/runtime.d.ts +4 -0
  342. package/dist/hoi4_agent_tools/runtime.d.ts.map +1 -0
  343. package/dist/hoi4_agent_tools/runtime.js +27 -0
  344. package/dist/hoi4_agent_tools/runtime.js.map +1 -0
  345. package/dist/hoi4_agent_tools/schemas/common.d.ts +74 -0
  346. package/dist/hoi4_agent_tools/schemas/common.d.ts.map +1 -0
  347. package/dist/hoi4_agent_tools/schemas/common.js +51 -0
  348. package/dist/hoi4_agent_tools/schemas/common.js.map +1 -0
  349. package/dist/hoi4_agent_tools/schemas/focus.d.ts +784 -0
  350. package/dist/hoi4_agent_tools/schemas/focus.d.ts.map +1 -0
  351. package/dist/hoi4_agent_tools/schemas/focus.js +330 -0
  352. package/dist/hoi4_agent_tools/schemas/focus.js.map +1 -0
  353. package/dist/hoi4_agent_tools/schemas/index.d.ts +5 -0
  354. package/dist/hoi4_agent_tools/schemas/index.d.ts.map +1 -0
  355. package/dist/hoi4_agent_tools/schemas/index.js +5 -0
  356. package/dist/hoi4_agent_tools/schemas/index.js.map +1 -0
  357. package/dist/hoi4_agent_tools/schemas/map.d.ts +654 -0
  358. package/dist/hoi4_agent_tools/schemas/map.d.ts.map +1 -0
  359. package/dist/hoi4_agent_tools/schemas/map.js +570 -0
  360. package/dist/hoi4_agent_tools/schemas/map.js.map +1 -0
  361. package/dist/hoi4_agent_tools/schemas/transaction.d.ts +259 -0
  362. package/dist/hoi4_agent_tools/schemas/transaction.d.ts.map +1 -0
  363. package/dist/hoi4_agent_tools/schemas/transaction.js +104 -0
  364. package/dist/hoi4_agent_tools/schemas/transaction.js.map +1 -0
  365. package/dist/hoi4_agent_tools/version.d.ts +6 -0
  366. package/dist/hoi4_agent_tools/version.d.ts.map +1 -0
  367. package/dist/hoi4_agent_tools/version.js +7 -0
  368. package/dist/hoi4_agent_tools/version.js.map +1 -0
  369. package/dist/index.d.ts +3 -0
  370. package/dist/index.d.ts.map +1 -0
  371. package/dist/index.js +3 -0
  372. package/dist/index.js.map +1 -0
  373. package/docs/README.md +22 -0
  374. package/docs/adr/0001-runtime-and-language.md +16 -0
  375. package/docs/adr/0002-lossless-source-model.md +18 -0
  376. package/docs/adr/0003-image-and-font-codecs.md +18 -0
  377. package/docs/adr/0004-focus-layout.md +16 -0
  378. package/docs/adr/0005-offline-rendering.md +18 -0
  379. package/docs/adr/0006-mcp-sdk-and-protocol.md +16 -0
  380. package/docs/adr/0007-storage-and-transactions.md +24 -0
  381. package/docs/adr/0008-test-strategy.md +18 -0
  382. package/docs/adr/0009-packaging-and-registry.md +16 -0
  383. package/docs/adr/0010-unsupported-and-refusal-policy.md +18 -0
  384. package/docs/adr/0011-http-security.md +16 -0
  385. package/docs/adr/README.md +13 -0
  386. package/docs/architecture.md +60 -0
  387. package/docs/artifacts.md +133 -0
  388. package/docs/compatibility.md +33 -0
  389. package/docs/completion-report.md +60 -0
  390. package/docs/configuration.md +285 -0
  391. package/docs/focus-workflow.md +68 -0
  392. package/docs/gui-workflow.md +121 -0
  393. package/docs/limitations.md +30 -0
  394. package/docs/map-workflow.md +89 -0
  395. package/docs/performance.md +117 -0
  396. package/docs/release.md +181 -0
  397. package/docs/research/mcp-2026-07-10.md +46 -0
  398. package/docs/research/source-ledger.md +68 -0
  399. package/docs/security.md +139 -0
  400. package/docs/self-hosting.md +168 -0
  401. package/docs/testing.md +43 -0
  402. package/docs/third-party-notices.md +11 -0
  403. package/docs/transactions.md +162 -0
  404. package/docs/troubleshooting.md +46 -0
  405. package/package.json +98 -5
  406. package/schemas/configuration.schema.json +794 -0
  407. package/schemas/continuous-focus-palette.schema.json +325 -0
  408. package/schemas/focus-plan.schema.json +902 -0
  409. package/schemas/focus-planning-sidecar.schema.json +364 -0
  410. package/schemas/gui-animation-source.schema.json +176 -0
  411. package/schemas/gui-helper.schema.json +301 -0
  412. package/schemas/gui-scenario.schema.json +298 -0
  413. package/schemas/map-operation.schema.json +2284 -0
  414. package/schemas/operation-result.schema.json +344 -0
  415. package/schemas/transaction-manifest.schema.json +685 -0
  416. package/server.json +32 -0
@@ -0,0 +1,491 @@
1
+ import sharp from 'sharp';
2
+ import { boundedSourceHashEvidence, } from '../core/artifacts.js';
3
+ import { compareCodeUnits, canonicalJson, sha256Bytes } from '../core/canonical.js';
4
+ import { assertRenderDimensions, RenderBudget, RENDER_MAX_DECODED_PIXELS, RENDER_MAX_ENCODED_IMAGE_BYTES, RENDER_MAX_PIXELS, } from '../core/render-budget.js';
5
+ import { ServiceError } from '../core/result.js';
6
+ import { DeterministicSvgTextRenderer } from '../core/svg-text.js';
7
+ import { PACKAGE_VERSION } from '../version.js';
8
+ import { compileFocusTreeWithSourceMap } from './compiler.js';
9
+ import { FOCUS_HORIZONTAL_GRID_PIXELS, FOCUS_NODE_HEIGHT_PIXELS, FOCUS_NODE_WIDTH_PIXELS, FOCUS_VERTICAL_GRID_PIXELS, focusNodeOrigin, } from './geometry.js';
10
+ import { createFocusPlanningSidecar, serializeFocusPlanningSidecar } from './planning.js';
11
+ import { FOCUS_GRAPH_MAX_EDGES, FOCUS_GRAPH_MAX_NODES } from './lint.js';
12
+ import { layoutNodeMap, } from './model.js';
13
+ export async function admitFocusIconDataUris(options, budget, renderedDataUris) {
14
+ const declaredDataUris = [
15
+ ...Object.values(options.iconDataUris ?? {}),
16
+ ...Object.values(options.presentation?.icons ?? {}).map(({ dataUri }) => dataUri),
17
+ ];
18
+ const occurrences = renderedDataUris ?? declaredDataUris;
19
+ const dataUris = new Set([...declaredDataUris, ...occurrences]);
20
+ if (dataUris.size > FOCUS_GRAPH_MAX_NODES) {
21
+ throw new ServiceError('FOCUS_RENDER_ICON_BUDGET_BLOCKED', 'Focus render exceeds the fixed distinct icon asset ceiling', { icons: dataUris.size, maximumIcons: FOCUS_GRAPH_MAX_NODES });
22
+ }
23
+ let totalUriCharacters = 0;
24
+ let totalDecodedBytes = 0;
25
+ const dimensions = new Map();
26
+ const decodedDimensions = new Map();
27
+ for (const [index, dataUri] of [...dataUris].entries()) {
28
+ if (dataUri.length > RENDER_MAX_ENCODED_IMAGE_BYTES * 2) {
29
+ throw new ServiceError('RENDER_ASSET_BYTES_BLOCKED', 'Focus icon data URI exceeds the fixed encoded-byte ceiling', {
30
+ index,
31
+ encodedCharacters: dataUri.length,
32
+ maximumBytes: RENDER_MAX_ENCODED_IMAGE_BYTES,
33
+ });
34
+ }
35
+ if (dataUri.length > RENDER_MAX_ENCODED_IMAGE_BYTES * 2 - totalUriCharacters) {
36
+ throw new ServiceError('RENDER_ASSET_AGGREGATE_BYTES_BLOCKED', 'Focus icon data URIs exceed the fixed aggregate encoded-character ceiling', {
37
+ index,
38
+ totalUriCharacters,
39
+ requestedCharacters: totalUriCharacters + dataUri.length,
40
+ maximumCharacters: RENDER_MAX_ENCODED_IMAGE_BYTES * 2,
41
+ });
42
+ }
43
+ totalUriCharacters += dataUri.length;
44
+ const match = /^data:image\/(?:png|jpeg|webp)(?:;(base64))?,(.*)$/isu.exec(dataUri);
45
+ if (match === null) {
46
+ throw new ServiceError('RENDER_ASSET_DATA_URI_BLOCKED', 'Focus icon must be an embedded static PNG, JPEG, or WebP data URI', { index });
47
+ }
48
+ const encoded = match[2] ?? '';
49
+ if (encoded.length > RENDER_MAX_ENCODED_IMAGE_BYTES * 2) {
50
+ throw new ServiceError('RENDER_ASSET_BYTES_BLOCKED', 'Focus icon data URI exceeds the fixed encoded-byte ceiling', { index, encodedCharacters: encoded.length, maximumBytes: RENDER_MAX_ENCODED_IMAGE_BYTES });
51
+ }
52
+ let bytes;
53
+ try {
54
+ bytes =
55
+ match[1] === 'base64'
56
+ ? Buffer.from(encoded, 'base64')
57
+ : Buffer.from(decodeURIComponent(encoded), 'utf8');
58
+ }
59
+ catch {
60
+ throw new ServiceError('RENDER_ASSET_DECODE_BLOCKED', 'Focus icon data URI contains malformed encoded data', { index });
61
+ }
62
+ if (bytes.length > RENDER_MAX_ENCODED_IMAGE_BYTES) {
63
+ throw new ServiceError('RENDER_ASSET_BYTES_BLOCKED', 'Focus icon data URI exceeds the fixed decoded-byte ceiling', { index, bytes: bytes.length, maximumBytes: RENDER_MAX_ENCODED_IMAGE_BYTES });
64
+ }
65
+ if (bytes.length > RENDER_MAX_ENCODED_IMAGE_BYTES - totalDecodedBytes) {
66
+ throw new ServiceError('RENDER_ASSET_AGGREGATE_BYTES_BLOCKED', 'Focus icon data URIs exceed the fixed aggregate decoded-byte ceiling', {
67
+ index,
68
+ totalDecodedBytes,
69
+ requestedBytes: totalDecodedBytes + bytes.length,
70
+ maximumBytes: RENDER_MAX_ENCODED_IMAGE_BYTES,
71
+ });
72
+ }
73
+ totalDecodedBytes += bytes.length;
74
+ const decodeHash = sha256Bytes(bytes);
75
+ budget.reserveRasterOperation(`focus-icon:${decodeHash}`, `focus icon decode ${index}`);
76
+ const existingDimensions = decodedDimensions.get(decodeHash);
77
+ if (existingDimensions !== undefined) {
78
+ dimensions.set(dataUri, existingDimensions);
79
+ continue;
80
+ }
81
+ try {
82
+ const metadata = await sharp(bytes, {
83
+ limitInputPixels: RENDER_MAX_DECODED_PIXELS,
84
+ }).metadata();
85
+ if (metadata.pages !== undefined && metadata.pages > 1) {
86
+ throw new ServiceError('RENDER_ASSET_PAGES_BLOCKED', 'Focus icon data URI must contain exactly one static image page', { index, pages: metadata.pages });
87
+ }
88
+ const admitted = assertRenderDimensions(metadata.width, metadata.height, `focus icon ${index}`, {
89
+ maximumPixels: RENDER_MAX_DECODED_PIXELS,
90
+ });
91
+ dimensions.set(dataUri, admitted);
92
+ decodedDimensions.set(decodeHash, admitted);
93
+ }
94
+ catch (error) {
95
+ if (error instanceof ServiceError)
96
+ throw error;
97
+ throw new ServiceError('RENDER_ASSET_DECODE_BLOCKED', 'Focus icon data URI cannot be decoded within the fixed image budget', { index, maximumPixels: RENDER_MAX_DECODED_PIXELS });
98
+ }
99
+ }
100
+ for (const [index, dataUri] of occurrences.entries()) {
101
+ const admitted = dimensions.get(dataUri);
102
+ if (admitted === undefined) {
103
+ throw new ServiceError('RENDER_ASSET_DECODE_BLOCKED', 'Rendered focus icon was not admitted before SVG rasterization', { index });
104
+ }
105
+ budget.reserve(admitted.width, admitted.height, `rendered focus icon ${index}`, {
106
+ maximumPixels: RENDER_MAX_DECODED_PIXELS,
107
+ });
108
+ }
109
+ }
110
+ function escapeXml(value) {
111
+ return value
112
+ .replaceAll('&', '&')
113
+ .replaceAll('<', '&lt;')
114
+ .replaceAll('>', '&gt;')
115
+ .replaceAll('"', '&quot;')
116
+ .replaceAll("'", '&apos;');
117
+ }
118
+ function safeArtifactStem(value) {
119
+ const safe = value
120
+ .replace(/[^A-Za-z0-9._-]+/gu, '_')
121
+ .replace(/^[_-]+/u, '')
122
+ .slice(0, 80);
123
+ return safe.length === 0 ? 'focus-tree' : safe;
124
+ }
125
+ function focusIdForDiagnostic(diagnostic) {
126
+ if (diagnostic.location?.symbol !== undefined)
127
+ return diagnostic.location.symbol;
128
+ const detail = diagnostic.details?.focusId;
129
+ return typeof detail === 'string' ? detail : undefined;
130
+ }
131
+ function diagnosticLabel(diagnostic) {
132
+ const location = diagnostic.location;
133
+ const suffix = location === undefined
134
+ ? ''
135
+ : ` (${location.path}:${location.start.line}:${location.start.column})`;
136
+ return `${diagnostic.severity.toUpperCase()} ${diagnostic.code}: ${diagnostic.message}${suffix}`;
137
+ }
138
+ function focusIconDataUri(focus, options) {
139
+ const icon = focus.icons[0];
140
+ return icon === undefined
141
+ ? undefined
142
+ : (options.presentation?.icons[icon.sprite]?.dataUri ?? options.iconDataUris?.[icon.sprite]);
143
+ }
144
+ function svgDocument(plan, layout, diagnostics, options) {
145
+ const horizontal = options.horizontalSpacing ?? FOCUS_HORIZONTAL_GRID_PIXELS;
146
+ const vertical = options.verticalSpacing ?? FOCUS_VERTICAL_GRID_PIXELS;
147
+ const padding = options.padding ?? 80;
148
+ const nodeWidth = FOCUS_NODE_WIDTH_PIXELS;
149
+ const nodeHeight = FOCUS_NODE_HEIGHT_PIXELS;
150
+ const nodes = [...layout.nodes].sort((left, right) => compareCodeUnits(left.id, right.id));
151
+ const minimumX = Math.min(0, ...nodes.map(({ x }) => x));
152
+ const minimumY = Math.min(0, ...nodes.map(({ y }) => y));
153
+ const maximumX = Math.max(0, ...nodes.map(({ x }) => x));
154
+ const maximumY = Math.max(0, ...nodes.map(({ y }) => y));
155
+ const width = Math.max(320, (maximumX - minimumX) * horizontal + nodeWidth + padding * 2);
156
+ const height = Math.max(240, (maximumY - minimumY) * vertical + nodeHeight + padding * 2);
157
+ (options.budget ?? new RenderBudget()).reserve(width, height, 'focus tree PNG');
158
+ const pixel = new Map(nodes.map((node) => [
159
+ node.id,
160
+ focusNodeOrigin(node, minimumX, minimumY, padding, horizontal, vertical),
161
+ ]));
162
+ const focusMap = new Map(plan.focuses.map((focus) => [focus.id, focus]));
163
+ const diagnosticMap = new Map();
164
+ const toolText = new DeterministicSvgTextRenderer();
165
+ for (const diagnostic of diagnostics) {
166
+ const focusId = focusIdForDiagnostic(diagnostic);
167
+ if (focusId === undefined)
168
+ continue;
169
+ const group = diagnosticMap.get(focusId) ?? [];
170
+ group.push(diagnostic);
171
+ diagnosticMap.set(focusId, group);
172
+ }
173
+ const prerequisiteEdges = plan.focuses
174
+ .flatMap((focus) => focus.prerequisites.groups.flatMap((group, groupIndex) => group.focusIds.map((parentId) => ({ parentId, childId: focus.id, groupIndex }))))
175
+ .filter(({ parentId, childId }) => pixel.has(parentId) && pixel.has(childId))
176
+ .sort((left, right) => compareCodeUnits(left.parentId, right.parentId) ||
177
+ compareCodeUnits(left.childId, right.childId) ||
178
+ left.groupIndex - right.groupIndex);
179
+ const exclusionEdges = plan.focuses
180
+ .flatMap((focus) => focus.mutuallyExclusive.map((other) => [focus.id, other]))
181
+ .filter(([left, right]) => pixel.has(left) && pixel.has(right) && compareCodeUnits(left, right) < 0)
182
+ .sort((left, right) => compareCodeUnits(left.join('\0'), right.join('\0')));
183
+ const parts = [
184
+ `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-labelledby="title description">`,
185
+ `<title id="title">${escapeXml(plan.id)} focus tree</title>`,
186
+ `<desc id="description">Offline HOI4 Agent Tools representation. ${plan.focuses.length} focuses.</desc>`,
187
+ '<defs>',
188
+ '__DETERMINISTIC_FONT_DEFINITIONS__',
189
+ '<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#8da2bc"/></marker>',
190
+ '<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="2" stdDeviation="2" flood-opacity="0.35"/></filter>',
191
+ '</defs>',
192
+ '<rect width="100%" height="100%" fill="#111723"/>',
193
+ toolText.render(plan.id, { x: padding, y: 36, fontSize: 22, weight: 700, fill: '#e8edf5' }),
194
+ toolText.render(`Offline agent render · layout ${layout.layoutHash.slice(0, 12)}`, {
195
+ x: padding,
196
+ y: 58,
197
+ fontSize: 12,
198
+ fill: '#95a4b8',
199
+ }),
200
+ '<g id="prerequisites">',
201
+ ];
202
+ for (const edge of prerequisiteEdges) {
203
+ const parent = pixel.get(edge.parentId);
204
+ const child = pixel.get(edge.childId);
205
+ if (parent === undefined || child === undefined)
206
+ continue;
207
+ const startX = parent.x + nodeWidth / 2;
208
+ const startY = parent.y + nodeHeight;
209
+ const endX = child.x + nodeWidth / 2;
210
+ const endY = child.y;
211
+ const middleY = (startY + endY) / 2;
212
+ parts.push(`<path d="M ${startX} ${startY} C ${startX} ${middleY}, ${endX} ${middleY}, ${endX} ${endY}" fill="none" stroke="#8da2bc" stroke-width="2" marker-end="url(#arrow)" data-parent="${escapeXml(edge.parentId)}" data-child="${escapeXml(edge.childId)}" data-prerequisite-group="${edge.groupIndex}"/>`);
213
+ }
214
+ parts.push('</g>', '<g id="mutual-exclusions">');
215
+ for (const [leftId, rightId] of exclusionEdges) {
216
+ const left = pixel.get(leftId);
217
+ const right = pixel.get(rightId);
218
+ if (left === undefined || right === undefined)
219
+ continue;
220
+ parts.push(`<line x1="${left.x + nodeWidth / 2}" y1="${left.y + nodeHeight / 2}" x2="${right.x + nodeWidth / 2}" y2="${right.y + nodeHeight / 2}" stroke="#e76f75" stroke-width="2" stroke-dasharray="7 5" data-mutual-left="${escapeXml(leftId)}" data-mutual-right="${escapeXml(rightId)}"/>`);
221
+ }
222
+ parts.push('</g>', '<g id="focus-nodes">');
223
+ for (const node of nodes) {
224
+ const focus = focusMap.get(node.id);
225
+ if (focus === undefined)
226
+ continue;
227
+ const point = pixel.get(node.id);
228
+ if (point === undefined)
229
+ continue;
230
+ const focusDiagnostics = diagnosticMap.get(node.id) ?? [];
231
+ const severity = focusDiagnostics.some(({ severity }) => severity === 'error' || severity === 'blocker')
232
+ ? 'error'
233
+ : focusDiagnostics.some(({ severity }) => severity === 'warning')
234
+ ? 'warning'
235
+ : 'clean';
236
+ const fill = focus.visibility === 'hidden'
237
+ ? '#283043'
238
+ : focus.visibility === 'crisis'
239
+ ? '#4b2831'
240
+ : '#25344a';
241
+ const stroke = severity === 'error' ? '#ff6b6b' : severity === 'warning' ? '#f0b85a' : '#71849e';
242
+ const icon = focus.icons[0];
243
+ const iconUri = focusIconDataUri(focus, options);
244
+ const title = options.presentation?.entries[focus.id]?.title ??
245
+ focus.localisation.workingLabel ??
246
+ focus.label;
247
+ const diagnosticCodes = focusDiagnostics
248
+ .map(({ code }) => code)
249
+ .sort()
250
+ .join(' ');
251
+ parts.push(`<g class="focus-node ${escapeXml(focus.visibility)} ${severity}" id="focus-${escapeXml(node.id)}" data-focus-id="${escapeXml(node.id)}" data-branch="${escapeXml(focus.branchId ?? '')}" data-lane="${escapeXml(node.laneId)}" data-diagnostics="${escapeXml(diagnosticCodes)}" transform="translate(${point.x} ${point.y})" filter="url(#shadow)">`, `<title>${escapeXml(`${title} (${node.id}) at ${node.x},${node.y}`)}</title>`, `<rect width="${nodeWidth}" height="${nodeHeight}" rx="8" fill="${fill}" stroke="${stroke}" stroke-width="${severity === 'clean' ? 1.5 : 3}"/>`);
252
+ if (iconUri !== undefined) {
253
+ parts.push(`<image href="${escapeXml(iconUri)}" x="8" y="10" width="48" height="48" preserveAspectRatio="xMidYMid meet"/>`);
254
+ }
255
+ else {
256
+ parts.push(`<rect x="8" y="10" width="48" height="48" rx="5" fill="#182131" stroke="#52647d"/>`, toolText.render(icon?.sprite === undefined ? '?' : 'ICON', {
257
+ x: 32,
258
+ y: 38,
259
+ fontSize: 10,
260
+ anchor: 'middle',
261
+ fill: '#91a0b4',
262
+ }));
263
+ }
264
+ parts.push(toolText.render(title.slice(0, 18), {
265
+ x: 64,
266
+ y: 25,
267
+ fontSize: 12,
268
+ weight: 700,
269
+ fill: '#f2f5fa',
270
+ }), toolText.render(node.id.slice(0, 22), {
271
+ x: 64,
272
+ y: 43,
273
+ fontSize: 9,
274
+ fill: '#aeb9c8',
275
+ }), toolText.render(`(${node.x}, ${node.y}) · ${node.laneId}`, {
276
+ x: 64,
277
+ y: 59,
278
+ fontSize: 9,
279
+ fill: '#8391a5',
280
+ }), '</g>');
281
+ }
282
+ parts.push('</g>', '</svg>');
283
+ const graph = {
284
+ schemaVersion: 1,
285
+ tree: {
286
+ id: plan.id,
287
+ sourcePath: plan.provenance.sourcePath,
288
+ sourceHash: plan.provenance.sourceHash,
289
+ importedPlanHash: plan.provenance.importedPlanHash,
290
+ focusCount: plan.focuses.length,
291
+ continuousFocusPaletteIds: plan.continuousFocusPaletteIds,
292
+ continuousFocusIds: plan.continuousFocusIds,
293
+ },
294
+ layout: {
295
+ hash: layout.layoutHash,
296
+ nodes,
297
+ decisions: layout.decisions,
298
+ },
299
+ focuses: [...plan.focuses]
300
+ .sort((left, right) => compareCodeUnits(left.id, right.id))
301
+ .map((focus) => ({
302
+ id: focus.id,
303
+ label: focus.label,
304
+ position: positionsForJson(layoutNodeMap(layout), focus.id),
305
+ prerequisiteGroups: focus.prerequisites.groups.map(({ focusIds }) => ({
306
+ operator: 'or',
307
+ focusIds,
308
+ })),
309
+ mutualExclusions: focus.mutuallyExclusive,
310
+ branchId: focus.branchId ?? null,
311
+ laneId: focus.laneId ?? null,
312
+ visibility: focus.visibility,
313
+ convergence: focus.convergence,
314
+ terminal: !plan.focuses.some((candidate) => prerequisiteIdsForRender(candidate).includes(focus.id)),
315
+ ai: focus.ai,
316
+ filters: focus.filters,
317
+ icons: focus.icons.map(({ kind, sprite }) => ({ kind, sprite })),
318
+ localisation: focus.localisation,
319
+ resolvedPresentation: options.presentation?.entries[focus.id] ?? null,
320
+ links: focus.links,
321
+ sourceLocation: focus.sourceLocation ?? null,
322
+ })),
323
+ diagnostics: [...diagnostics],
324
+ sourceHashes: {
325
+ [plan.provenance.sourcePath]: plan.provenance.sourceHash,
326
+ ...(options.presentation?.sourceHashes ?? {}),
327
+ ...(options.sourceHashes ?? {}),
328
+ },
329
+ };
330
+ return {
331
+ svg: `${parts.join('\n').replace('__DETERMINISTIC_FONT_DEFINITIONS__', toolText.definitions())}\n`,
332
+ width,
333
+ height,
334
+ graph,
335
+ };
336
+ }
337
+ function prerequisiteIdsForRender(focus) {
338
+ return focus.prerequisites.groups.flatMap(({ focusIds }) => focusIds);
339
+ }
340
+ function positionsForJson(positions, focusId) {
341
+ const node = positions.get(focusId);
342
+ return node === undefined ? null : { x: node.x, y: node.y };
343
+ }
344
+ function htmlDocument(plan, svg, graphJson, diagnostics) {
345
+ const diagnosticsHtml = diagnostics
346
+ .map((diagnostic) => `<li class="${escapeXml(diagnostic.severity)}" data-focus-id="${escapeXml(focusIdForDiagnostic(diagnostic) ?? '')}"><code>${escapeXml(diagnostic.code)}</code> ${escapeXml(diagnosticLabel(diagnostic))}</li>`)
347
+ .join('\n');
348
+ const safeJson = graphJson.replaceAll('<', '\\u003c');
349
+ return `<!doctype html>
350
+ <html lang="en">
351
+ <head>
352
+ <meta charset="utf-8">
353
+ <meta name="viewport" content="width=device-width,initial-scale=1">
354
+ <title>${escapeXml(plan.id)} focus tree · HOI4 Agent Tools</title>
355
+ <style>
356
+ :root{color-scheme:dark;font-family:Inter,system-ui,sans-serif;background:#0b1019;color:#e9eef6}*{box-sizing:border-box}body{margin:0;display:grid;grid-template-columns:minmax(0,1fr) 360px;height:100vh}.canvas{overflow:auto;background:#111723}.canvas svg{display:block}.panel{overflow:auto;border-left:1px solid #2d3849;padding:18px;background:#0d141f}.notice{color:#f0b85a;font-size:13px}.controls{position:sticky;top:0;background:#0d141f;padding-bottom:12px}input{width:100%;padding:9px;border:1px solid #41516a;border-radius:5px;background:#151e2c;color:#fff}li{margin:.65rem 0;font-size:12px;line-height:1.4}.error,.blocker{color:#ff8e8e}.warning{color:#f0c271}.muted{color:#92a0b2}.focus-node.filtered{opacity:.12}.focus-node.match rect{stroke:#66d9ef;stroke-width:4}</style>
357
+ </head>
358
+ <body>
359
+ <main class="canvas" aria-label="Focus tree artifact">${svg}</main>
360
+ <aside class="panel">
361
+ <div class="controls"><h1>${escapeXml(plan.id)}</h1><p class="notice">Offline HOI4 Agent Tools representation — not an in-game screenshot or editor.</p><label>Find focus<input id="search" type="search" placeholder="ID, title, branch, or lane"></label></div>
362
+ <h2>Diagnostics</h2><ol>${diagnosticsHtml}</ol>
363
+ <p class="muted">Source revision: <code>${escapeXml(plan.provenance.sourceHash)}</code></p>
364
+ </aside>
365
+ <script type="application/json" id="focus-data">${safeJson}</script>
366
+ <script>
367
+ const input=document.getElementById('search');
368
+ const nodes=[...document.querySelectorAll('.focus-node')];
369
+ input.addEventListener('input',()=>{const query=input.value.trim().toLowerCase();for(const node of nodes){const text=(node.textContent+' '+node.dataset.focusId+' '+node.dataset.branch+' '+node.dataset.lane).toLowerCase();node.classList.toggle('filtered',query!==''&&!text.includes(query));node.classList.toggle('match',query!==''&&text.includes(query));}});
370
+ </script>
371
+ </body>
372
+ </html>
373
+ `;
374
+ }
375
+ export async function renderFocusTree(plan, layout, diagnostics, options = {}) {
376
+ options.signal?.throwIfAborted();
377
+ if (plan.focuses.length > FOCUS_GRAPH_MAX_NODES) {
378
+ throw new ServiceError('FOCUS_RENDER_NODE_BUDGET_BLOCKED', 'Focus tree exceeds the fixed render node ceiling', { nodes: plan.focuses.length, maximumNodes: FOCUS_GRAPH_MAX_NODES });
379
+ }
380
+ let edgeCount = 0;
381
+ for (const focus of plan.focuses) {
382
+ const prerequisiteEdges = focus.prerequisites.groups.reduce((total, { focusIds }) => total + focusIds.length, 0);
383
+ const additionalEdges = prerequisiteEdges + focus.mutuallyExclusive.length;
384
+ if (additionalEdges > FOCUS_GRAPH_MAX_EDGES - edgeCount) {
385
+ throw new ServiceError('FOCUS_RENDER_EDGE_BUDGET_BLOCKED', 'Focus tree exceeds the fixed render edge ceiling', { edges: edgeCount + additionalEdges, maximumEdges: FOCUS_GRAPH_MAX_EDGES });
386
+ }
387
+ edgeCount += additionalEdges;
388
+ }
389
+ const budget = options.budget ?? new RenderBudget();
390
+ const resolvedOptions = { ...options, budget };
391
+ const focusById = new Map(plan.focuses.map((focus) => [focus.id, focus]));
392
+ const renderedDataUris = layout.nodes.flatMap(({ id }) => {
393
+ const focus = focusById.get(id);
394
+ if (focus === undefined)
395
+ return [];
396
+ const dataUri = focusIconDataUri(focus, resolvedOptions);
397
+ return dataUri === undefined ? [] : [dataUri];
398
+ });
399
+ await admitFocusIconDataUris(resolvedOptions, budget, renderedDataUris);
400
+ const compiled = compileFocusTreeWithSourceMap(plan, layout);
401
+ const rendered = svgDocument(plan, layout, diagnostics, resolvedOptions);
402
+ const json = `${canonicalJson({ ...rendered.graph, generatedSourceMap: compiled.sourceMap })}\n`;
403
+ const html = htmlDocument(plan, rendered.svg, json, diagnostics);
404
+ assertRenderDimensions(rendered.width, rendered.height, 'focus tree Sharp raster');
405
+ budget.reserveRasterOperation(`focus-tree:${sha256Bytes(rendered.svg)}`, 'focus tree SVG rasterization');
406
+ const png = await sharp(Buffer.from(rendered.svg, 'utf8'), {
407
+ limitInputPixels: RENDER_MAX_PIXELS,
408
+ })
409
+ .png({ compressionLevel: 9, adaptiveFiltering: false, palette: false })
410
+ .toBuffer();
411
+ options.signal?.throwIfAborted();
412
+ return {
413
+ html,
414
+ svg: rendered.svg,
415
+ png,
416
+ json,
417
+ hashes: {
418
+ html: sha256Bytes(html),
419
+ svg: sha256Bytes(rendered.svg),
420
+ png: sha256Bytes(png),
421
+ json: sha256Bytes(json),
422
+ },
423
+ sourceMap: compiled.sourceMap,
424
+ width: rendered.width,
425
+ height: rendered.height,
426
+ };
427
+ }
428
+ export async function storeFocusRenderArtifacts(workspace, artifacts, plan, bundle, options = {}) {
429
+ options.signal?.throwIfAborted();
430
+ const stem = safeArtifactStem(plan.id);
431
+ const sourceEvidence = boundedSourceHashEvidence({
432
+ [plan.provenance.sourcePath]: plan.provenance.sourceHash,
433
+ ...(options.presentation?.sourceHashes ?? {}),
434
+ ...(options.sourceHashes ?? {}),
435
+ });
436
+ const provenance = {
437
+ toolVersion: PACKAGE_VERSION,
438
+ schemaVersion: 'focus-render.v1',
439
+ sourceHashes: sourceEvidence.sourceHashes,
440
+ renderProfile: {
441
+ renderer: 'svg+sharp',
442
+ width: bundle.width,
443
+ height: bundle.height,
444
+ ...(options.renderProfile ?? {}),
445
+ },
446
+ metadata: { sourceHashInventory: sourceEvidence.inventory },
447
+ };
448
+ const sidecar = createFocusPlanningSidecar(plan);
449
+ const writes = [
450
+ {
451
+ name: `${stem}.focus.html`,
452
+ mimeType: 'text/html',
453
+ content: bundle.html,
454
+ provenance: { ...provenance, kind: 'focus-html' },
455
+ },
456
+ {
457
+ name: `${stem}.focus.svg`,
458
+ mimeType: 'image/svg+xml',
459
+ content: bundle.svg,
460
+ provenance: { ...provenance, kind: 'focus-svg' },
461
+ },
462
+ {
463
+ name: `${stem}.focus.png`,
464
+ mimeType: 'image/png',
465
+ content: bundle.png,
466
+ provenance: { ...provenance, kind: 'focus-png' },
467
+ },
468
+ {
469
+ name: `${stem}.focus.json`,
470
+ mimeType: 'application/json',
471
+ content: bundle.json,
472
+ provenance: { ...provenance, kind: 'focus-json' },
473
+ },
474
+ {
475
+ name: `${stem}.focus.source-map.json`,
476
+ mimeType: 'application/json',
477
+ content: `${canonicalJson(bundle.sourceMap)}\n`,
478
+ provenance: { ...provenance, kind: 'focus-source-map' },
479
+ description: 'Generated focus ranges mapped to planning nodes and imported source locations',
480
+ },
481
+ {
482
+ name: `${stem}.focus.plan.json`,
483
+ mimeType: 'application/json',
484
+ content: serializeFocusPlanningSidecar(sidecar),
485
+ provenance: { ...provenance, kind: 'focus-planning-sidecar' },
486
+ description: 'Source-hash-bound non-Clausewitz planning metadata',
487
+ },
488
+ ];
489
+ return artifacts.withAtomicChunkedWrites(workspace, writes, (stored) => Promise.resolve([...stored]), options.signal);
490
+ }
491
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/hoi4_agent_tools/focus/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { ArtifactStore, type StoredArtifact } from '../core/artifacts.js';
2
+ import type { ArtifactLink } from '../core/result.js';
3
+ import type { SymbolIndex } from '../core/index.js';
4
+ import { type SourceDocument } from '../core/source/index.js';
5
+ import type { TransactionManager, TransactionManifest, TransactionReadDependency } from '../core/transactions.js';
6
+ import type { WorkspaceResolver } from '../core/workspace.js';
7
+ import { type ContinuousFocusDriftResult, type FocusDriftResult } from './drift.js';
8
+ import { lintContinuousFocusPalette, lintFocusTree, type FocusLintOptions } from './lint.js';
9
+ import { type ContinuousFocusPalettePlan, type FocusImportResult, type FocusLayoutOptions, type FocusLayoutResult, type FocusPlanningSidecar, type FocusReferenceCatalog, type FocusTreePlan } from './model.js';
10
+ import { type ContinuousFocusRenderBundle, type ContinuousFocusRenderOptions } from './continuous-render.js';
11
+ import { type FocusRenderBundle, type FocusRenderOptions } from './render.js';
12
+ export interface FocusImportedFile {
13
+ document: SourceDocument;
14
+ result: FocusImportResult;
15
+ }
16
+ export interface FocusPlanChangesInput {
17
+ workspaceId: string;
18
+ relativePath: string;
19
+ plan: FocusTreePlan;
20
+ authority?: 'plan' | 'source';
21
+ createIfMissing?: boolean;
22
+ principal?: string;
23
+ layout?: FocusLayoutResult;
24
+ index?: SymbolIndex;
25
+ references?: FocusReferenceCatalog;
26
+ artifacts?: ArtifactLink[];
27
+ readDependencies?: TransactionReadDependency[];
28
+ signal?: AbortSignal;
29
+ }
30
+ export interface FocusPlanChangesResult {
31
+ transaction: TransactionManifest;
32
+ drift: FocusDriftResult;
33
+ layout: FocusLayoutResult;
34
+ }
35
+ export interface FocusStoredRender {
36
+ bundle: FocusRenderBundle;
37
+ layout: FocusLayoutResult;
38
+ diagnostics: ReturnType<typeof lintFocusTree>;
39
+ artifacts: StoredArtifact[];
40
+ }
41
+ export interface ContinuousFocusStoredRender {
42
+ bundle: ContinuousFocusRenderBundle;
43
+ diagnostics: ReturnType<typeof lintContinuousFocusPalette>;
44
+ artifacts: StoredArtifact[];
45
+ }
46
+ export interface ContinuousFocusPlanChangesInput {
47
+ workspaceId: string;
48
+ relativePath: string;
49
+ plan: ContinuousFocusPalettePlan;
50
+ authority?: 'plan' | 'source';
51
+ createIfMissing?: boolean;
52
+ principal?: string;
53
+ artifacts?: ArtifactLink[];
54
+ readDependencies?: TransactionReadDependency[];
55
+ signal?: AbortSignal;
56
+ }
57
+ export interface ContinuousFocusPlanChangesResult {
58
+ transaction: TransactionManifest;
59
+ drift: ContinuousFocusDriftResult;
60
+ }
61
+ export declare class FocusWorkbench {
62
+ private readonly resolver;
63
+ private readonly transactions;
64
+ private readonly artifactStore;
65
+ constructor(resolver: WorkspaceResolver, transactions: TransactionManager, artifactStore?: ArtifactStore);
66
+ importPath(workspaceId: string, relativePath: string, principal?: string, sidecar?: FocusPlanningSidecar, references?: FocusReferenceCatalog): Promise<FocusImportedFile>;
67
+ importContinuousPath(workspaceId: string, relativePath: string, principal?: string): Promise<FocusImportedFile>;
68
+ layout(plan: FocusTreePlan, options?: FocusLayoutOptions): FocusLayoutResult;
69
+ layoutAsync(plan: FocusTreePlan, options?: FocusLayoutOptions): Promise<FocusLayoutResult>;
70
+ lint(plan: FocusTreePlan, options?: FocusLintOptions): ReturnType<typeof lintFocusTree>;
71
+ lintContinuous(plan: ContinuousFocusPalettePlan): ReturnType<typeof lintContinuousFocusPalette>;
72
+ renderAndStore(workspaceId: string, plan: FocusTreePlan, options?: FocusRenderOptions & FocusLintOptions & {
73
+ principal?: string;
74
+ layout?: FocusLayoutResult;
75
+ }): Promise<FocusStoredRender>;
76
+ renderContinuousAndStore(workspaceId: string, plan: ContinuousFocusPalettePlan, options?: ContinuousFocusRenderOptions & {
77
+ principal?: string;
78
+ }): Promise<ContinuousFocusStoredRender>;
79
+ planChanges(input: FocusPlanChangesInput): Promise<FocusPlanChangesResult>;
80
+ planContinuousChanges(input: ContinuousFocusPlanChangesInput): Promise<ContinuousFocusPlanChangesResult>;
81
+ }
82
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/hoi4_agent_tools/focus/service.ts"],"names":[],"mappings":"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"}