@aquex/cmos-mcp 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 (854) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/LICENSE +15 -0
  3. package/README.md +250 -0
  4. package/cmos-seed/README.md +153 -0
  5. package/cmos-seed/context/master_context.json +27 -0
  6. package/cmos-seed/context/project_context.json +12 -0
  7. package/cmos-seed/db/schema.sql +334 -0
  8. package/cmos-seed/docs/README.md +128 -0
  9. package/cmos-seed/docs/agents-md-guide.md +253 -0
  10. package/cmos-seed/docs/build-session-prompt.md +137 -0
  11. package/cmos-seed/docs/getting-started.md +150 -0
  12. package/cmos-seed/docs/session-management-guide.md +163 -0
  13. package/cmos-seed/docs/sqlite-schema-reference.md +188 -0
  14. package/cmos-seed/foundational-docs/roadmap_template.md +365 -0
  15. package/cmos-seed/foundational-docs/tech_arch_template.md +331 -0
  16. package/cmos-seed/templates/PROJECT-README-template.md +110 -0
  17. package/cmos-seed/templates/agents.md +306 -0
  18. package/cmos-seed/tiers/build.md +110 -0
  19. package/cmos-seed/tiers/general.md +112 -0
  20. package/cmos-seed/tiers/managed.md +118 -0
  21. package/dist/.build-manifest.json +5 -0
  22. package/dist/auth/auth-state.d.ts +96 -0
  23. package/dist/auth/auth-state.d.ts.map +1 -0
  24. package/dist/auth/auth-state.js +115 -0
  25. package/dist/auth/auth-state.js.map +1 -0
  26. package/dist/auth/delivery-ack-cache.d.ts +27 -0
  27. package/dist/auth/delivery-ack-cache.d.ts.map +1 -0
  28. package/dist/auth/delivery-ack-cache.js +21 -0
  29. package/dist/auth/delivery-ack-cache.js.map +1 -0
  30. package/dist/auth/device-code.d.ts +136 -0
  31. package/dist/auth/device-code.d.ts.map +1 -0
  32. package/dist/auth/device-code.js +334 -0
  33. package/dist/auth/device-code.js.map +1 -0
  34. package/dist/auth/project-key-capture.d.ts +124 -0
  35. package/dist/auth/project-key-capture.d.ts.map +1 -0
  36. package/dist/auth/project-key-capture.js +218 -0
  37. package/dist/auth/project-key-capture.js.map +1 -0
  38. package/dist/combination/dependency-resolver.d.ts +69 -0
  39. package/dist/combination/dependency-resolver.d.ts.map +1 -0
  40. package/dist/combination/dependency-resolver.js +303 -0
  41. package/dist/combination/dependency-resolver.js.map +1 -0
  42. package/dist/combination/merge-strategies.d.ts +87 -0
  43. package/dist/combination/merge-strategies.d.ts.map +1 -0
  44. package/dist/combination/merge-strategies.js +210 -0
  45. package/dist/combination/merge-strategies.js.map +1 -0
  46. package/dist/combination/pack-combiner.d.ts +84 -0
  47. package/dist/combination/pack-combiner.d.ts.map +1 -0
  48. package/dist/combination/pack-combiner.js +288 -0
  49. package/dist/combination/pack-combiner.js.map +1 -0
  50. package/dist/combination/types.d.ts +112 -0
  51. package/dist/combination/types.d.ts.map +1 -0
  52. package/dist/combination/types.js +39 -0
  53. package/dist/combination/types.js.map +1 -0
  54. package/dist/domains/domain-pack-loader.d.ts +148 -0
  55. package/dist/domains/domain-pack-loader.d.ts.map +1 -0
  56. package/dist/domains/domain-pack-loader.js +501 -0
  57. package/dist/domains/domain-pack-loader.js.map +1 -0
  58. package/dist/domains/types.d.ts +64 -0
  59. package/dist/domains/types.d.ts.map +1 -0
  60. package/dist/domains/types.js +10 -0
  61. package/dist/domains/types.js.map +1 -0
  62. package/dist/errors/config-error.d.ts +13 -0
  63. package/dist/errors/config-error.d.ts.map +1 -0
  64. package/dist/errors/config-error.js +19 -0
  65. package/dist/errors/config-error.js.map +1 -0
  66. package/dist/errors/domain-error.d.ts +13 -0
  67. package/dist/errors/domain-error.d.ts.map +1 -0
  68. package/dist/errors/domain-error.js +19 -0
  69. package/dist/errors/domain-error.js.map +1 -0
  70. package/dist/errors/handler.d.ts +30 -0
  71. package/dist/errors/handler.d.ts.map +1 -0
  72. package/dist/errors/handler.js +63 -0
  73. package/dist/errors/handler.js.map +1 -0
  74. package/dist/errors/index.d.ts +9 -0
  75. package/dist/errors/index.d.ts.map +1 -0
  76. package/dist/errors/index.js +25 -0
  77. package/dist/errors/index.js.map +1 -0
  78. package/dist/errors/io-error.d.ts +13 -0
  79. package/dist/errors/io-error.d.ts.map +1 -0
  80. package/dist/errors/io-error.js +19 -0
  81. package/dist/errors/io-error.js.map +1 -0
  82. package/dist/errors/logger.d.ts +21 -0
  83. package/dist/errors/logger.d.ts.map +1 -0
  84. package/dist/errors/logger.js +88 -0
  85. package/dist/errors/logger.js.map +1 -0
  86. package/dist/errors/mission-error.d.ts +27 -0
  87. package/dist/errors/mission-error.d.ts.map +1 -0
  88. package/dist/errors/mission-error.js +76 -0
  89. package/dist/errors/mission-error.js.map +1 -0
  90. package/dist/errors/types.d.ts +52 -0
  91. package/dist/errors/types.d.ts.map +1 -0
  92. package/dist/errors/types.js +3 -0
  93. package/dist/errors/types.js.map +1 -0
  94. package/dist/errors/utils.d.ts +24 -0
  95. package/dist/errors/utils.d.ts.map +1 -0
  96. package/dist/errors/utils.js +64 -0
  97. package/dist/errors/utils.js.map +1 -0
  98. package/dist/errors/validation-error.d.ts +13 -0
  99. package/dist/errors/validation-error.d.ts.map +1 -0
  100. package/dist/errors/validation-error.js +19 -0
  101. package/dist/errors/validation-error.js.map +1 -0
  102. package/dist/extraction/template-extractor.d.ts +59 -0
  103. package/dist/extraction/template-extractor.d.ts.map +1 -0
  104. package/dist/extraction/template-extractor.js +553 -0
  105. package/dist/extraction/template-extractor.js.map +1 -0
  106. package/dist/extraction/types.d.ts +160 -0
  107. package/dist/extraction/types.d.ts.map +1 -0
  108. package/dist/extraction/types.js +7 -0
  109. package/dist/extraction/types.js.map +1 -0
  110. package/dist/http-server.d.ts +18 -0
  111. package/dist/http-server.d.ts.map +1 -0
  112. package/dist/http-server.js +326 -0
  113. package/dist/http-server.js.map +1 -0
  114. package/dist/import-export/hybrid-template-parser.d.ts +44 -0
  115. package/dist/import-export/hybrid-template-parser.d.ts.map +1 -0
  116. package/dist/import-export/hybrid-template-parser.js +373 -0
  117. package/dist/import-export/hybrid-template-parser.js.map +1 -0
  118. package/dist/import-export/security-validator.d.ts +93 -0
  119. package/dist/import-export/security-validator.d.ts.map +1 -0
  120. package/dist/import-export/security-validator.js +441 -0
  121. package/dist/import-export/security-validator.js.map +1 -0
  122. package/dist/import-export/template-exporter.d.ts +106 -0
  123. package/dist/import-export/template-exporter.d.ts.map +1 -0
  124. package/dist/import-export/template-exporter.js +247 -0
  125. package/dist/import-export/template-exporter.js.map +1 -0
  126. package/dist/import-export/template-importer.d.ts +97 -0
  127. package/dist/import-export/template-importer.d.ts.map +1 -0
  128. package/dist/import-export/template-importer.js +308 -0
  129. package/dist/import-export/template-importer.js.map +1 -0
  130. package/dist/import-export/types.d.ts +118 -0
  131. package/dist/import-export/types.d.ts.map +1 -0
  132. package/dist/import-export/types.js +41 -0
  133. package/dist/import-export/types.js.map +1 -0
  134. package/dist/index.d.ts +157 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +972 -0
  137. package/dist/index.js.map +1 -0
  138. package/dist/intelligence/agentic-controller.d.ts +345 -0
  139. package/dist/intelligence/agentic-controller.d.ts.map +1 -0
  140. package/dist/intelligence/agentic-controller.js +1376 -0
  141. package/dist/intelligence/agentic-controller.js.map +1 -0
  142. package/dist/intelligence/agentic-observability.d.ts +43 -0
  143. package/dist/intelligence/agentic-observability.d.ts.map +1 -0
  144. package/dist/intelligence/agentic-observability.js +62 -0
  145. package/dist/intelligence/agentic-observability.js.map +1 -0
  146. package/dist/intelligence/agents-md-loader.d.ts +81 -0
  147. package/dist/intelligence/agents-md-loader.d.ts.map +1 -0
  148. package/dist/intelligence/agents-md-loader.js +298 -0
  149. package/dist/intelligence/agents-md-loader.js.map +1 -0
  150. package/dist/intelligence/attribution-verification.d.ts +58 -0
  151. package/dist/intelligence/attribution-verification.d.ts.map +1 -0
  152. package/dist/intelligence/attribution-verification.js +133 -0
  153. package/dist/intelligence/attribution-verification.js.map +1 -0
  154. package/dist/intelligence/boomerang-workflow.d.ts +87 -0
  155. package/dist/intelligence/boomerang-workflow.d.ts.map +1 -0
  156. package/dist/intelligence/boomerang-workflow.js +311 -0
  157. package/dist/intelligence/boomerang-workflow.js.map +1 -0
  158. package/dist/intelligence/cmos-detector.d.ts +42 -0
  159. package/dist/intelligence/cmos-detector.d.ts.map +1 -0
  160. package/dist/intelligence/cmos-detector.js +94 -0
  161. package/dist/intelligence/cmos-detector.js.map +1 -0
  162. package/dist/intelligence/cmos-sync.d.ts +101 -0
  163. package/dist/intelligence/cmos-sync.d.ts.map +1 -0
  164. package/dist/intelligence/cmos-sync.js +435 -0
  165. package/dist/intelligence/cmos-sync.js.map +1 -0
  166. package/dist/intelligence/complexity-scorer.d.ts +111 -0
  167. package/dist/intelligence/complexity-scorer.d.ts.map +1 -0
  168. package/dist/intelligence/complexity-scorer.js +299 -0
  169. package/dist/intelligence/complexity-scorer.js.map +1 -0
  170. package/dist/intelligence/compression-rules.d.ts +62 -0
  171. package/dist/intelligence/compression-rules.d.ts.map +1 -0
  172. package/dist/intelligence/compression-rules.js +303 -0
  173. package/dist/intelligence/compression-rules.js.map +1 -0
  174. package/dist/intelligence/content-sanitizer.d.ts +61 -0
  175. package/dist/intelligence/content-sanitizer.d.ts.map +1 -0
  176. package/dist/intelligence/content-sanitizer.js +170 -0
  177. package/dist/intelligence/content-sanitizer.js.map +1 -0
  178. package/dist/intelligence/context-propagator-v2.d.ts +23 -0
  179. package/dist/intelligence/context-propagator-v2.d.ts.map +1 -0
  180. package/dist/intelligence/context-propagator-v2.js +37 -0
  181. package/dist/intelligence/context-propagator-v2.js.map +1 -0
  182. package/dist/intelligence/context-propagator-v3.d.ts +46 -0
  183. package/dist/intelligence/context-propagator-v3.d.ts.map +1 -0
  184. package/dist/intelligence/context-propagator-v3.js +266 -0
  185. package/dist/intelligence/context-propagator-v3.js.map +1 -0
  186. package/dist/intelligence/context-propagator.d.ts +108 -0
  187. package/dist/intelligence/context-propagator.d.ts.map +1 -0
  188. package/dist/intelligence/context-propagator.js +283 -0
  189. package/dist/intelligence/context-propagator.js.map +1 -0
  190. package/dist/intelligence/context-windows.d.ts +5 -0
  191. package/dist/intelligence/context-windows.d.ts.map +1 -0
  192. package/dist/intelligence/context-windows.js +18 -0
  193. package/dist/intelligence/context-windows.js.map +1 -0
  194. package/dist/intelligence/credential-store.d.ts +145 -0
  195. package/dist/intelligence/credential-store.d.ts.map +1 -0
  196. package/dist/intelligence/credential-store.js +243 -0
  197. package/dist/intelligence/credential-store.js.map +1 -0
  198. package/dist/intelligence/dependency-analyzer.d.ts +117 -0
  199. package/dist/intelligence/dependency-analyzer.d.ts.map +1 -0
  200. package/dist/intelligence/dependency-analyzer.js +398 -0
  201. package/dist/intelligence/dependency-analyzer.js.map +1 -0
  202. package/dist/intelligence/dependency-inferrer.d.ts +68 -0
  203. package/dist/intelligence/dependency-inferrer.d.ts.map +1 -0
  204. package/dist/intelligence/dependency-inferrer.js +281 -0
  205. package/dist/intelligence/dependency-inferrer.js.map +1 -0
  206. package/dist/intelligence/enhanced-dependency-analyzer.d.ts +25 -0
  207. package/dist/intelligence/enhanced-dependency-analyzer.d.ts.map +1 -0
  208. package/dist/intelligence/enhanced-dependency-analyzer.js +207 -0
  209. package/dist/intelligence/enhanced-dependency-analyzer.js.map +1 -0
  210. package/dist/intelligence/graph-validator.d.ts +61 -0
  211. package/dist/intelligence/graph-validator.d.ts.map +1 -0
  212. package/dist/intelligence/graph-validator.js +212 -0
  213. package/dist/intelligence/graph-validator.js.map +1 -0
  214. package/dist/intelligence/lifecycle-analyzer.d.ts +64 -0
  215. package/dist/intelligence/lifecycle-analyzer.d.ts.map +1 -0
  216. package/dist/intelligence/lifecycle-analyzer.js +587 -0
  217. package/dist/intelligence/lifecycle-analyzer.js.map +1 -0
  218. package/dist/intelligence/mission-history.d.ts +56 -0
  219. package/dist/intelligence/mission-history.d.ts.map +1 -0
  220. package/dist/intelligence/mission-history.js +145 -0
  221. package/dist/intelligence/mission-history.js.map +1 -0
  222. package/dist/intelligence/mission-outcome-analytics.d.ts +84 -0
  223. package/dist/intelligence/mission-outcome-analytics.d.ts.map +1 -0
  224. package/dist/intelligence/mission-outcome-analytics.js +499 -0
  225. package/dist/intelligence/mission-outcome-analytics.js.map +1 -0
  226. package/dist/intelligence/mission-splitter.d.ts +148 -0
  227. package/dist/intelligence/mission-splitter.d.ts.map +1 -0
  228. package/dist/intelligence/mission-splitter.js +461 -0
  229. package/dist/intelligence/mission-splitter.js.map +1 -0
  230. package/dist/intelligence/model-transpilers.d.ts +59 -0
  231. package/dist/intelligence/model-transpilers.d.ts.map +1 -0
  232. package/dist/intelligence/model-transpilers.js +185 -0
  233. package/dist/intelligence/model-transpilers.js.map +1 -0
  234. package/dist/intelligence/project-registry.d.ts +265 -0
  235. package/dist/intelligence/project-registry.d.ts.map +1 -0
  236. package/dist/intelligence/project-registry.js +484 -0
  237. package/dist/intelligence/project-registry.js.map +1 -0
  238. package/dist/intelligence/rsip-loop.d.ts +52 -0
  239. package/dist/intelligence/rsip-loop.d.ts.map +1 -0
  240. package/dist/intelligence/rsip-loop.js +139 -0
  241. package/dist/intelligence/rsip-loop.js.map +1 -0
  242. package/dist/intelligence/sender-context.d.ts +114 -0
  243. package/dist/intelligence/sender-context.d.ts.map +1 -0
  244. package/dist/intelligence/sender-context.js +275 -0
  245. package/dist/intelligence/sender-context.js.map +1 -0
  246. package/dist/intelligence/sqlite-client.d.ts +144 -0
  247. package/dist/intelligence/sqlite-client.d.ts.map +1 -0
  248. package/dist/intelligence/sqlite-client.js +568 -0
  249. package/dist/intelligence/sqlite-client.js.map +1 -0
  250. package/dist/intelligence/telemetry.d.ts +44 -0
  251. package/dist/intelligence/telemetry.d.ts.map +1 -0
  252. package/dist/intelligence/telemetry.js +106 -0
  253. package/dist/intelligence/telemetry.js.map +1 -0
  254. package/dist/intelligence/token-counters.d.ts +69 -0
  255. package/dist/intelligence/token-counters.d.ts.map +1 -0
  256. package/dist/intelligence/token-counters.js +197 -0
  257. package/dist/intelligence/token-counters.js.map +1 -0
  258. package/dist/intelligence/token-optimizer.d.ts +52 -0
  259. package/dist/intelligence/token-optimizer.d.ts.map +1 -0
  260. package/dist/intelligence/token-optimizer.js +205 -0
  261. package/dist/intelligence/token-optimizer.js.map +1 -0
  262. package/dist/intelligence/tokenizer-bootstrap.d.ts +54 -0
  263. package/dist/intelligence/tokenizer-bootstrap.d.ts.map +1 -0
  264. package/dist/intelligence/tokenizer-bootstrap.js +238 -0
  265. package/dist/intelligence/tokenizer-bootstrap.js.map +1 -0
  266. package/dist/intelligence/types.d.ts +117 -0
  267. package/dist/intelligence/types.d.ts.map +1 -0
  268. package/dist/intelligence/types.js +8 -0
  269. package/dist/intelligence/types.js.map +1 -0
  270. package/dist/intelligence/worker-manifest-loader.d.ts +70 -0
  271. package/dist/intelligence/worker-manifest-loader.d.ts.map +1 -0
  272. package/dist/intelligence/worker-manifest-loader.js +387 -0
  273. package/dist/intelligence/worker-manifest-loader.js.map +1 -0
  274. package/dist/loaders/yaml-loader.d.ts +99 -0
  275. package/dist/loaders/yaml-loader.d.ts.map +1 -0
  276. package/dist/loaders/yaml-loader.js +236 -0
  277. package/dist/loaders/yaml-loader.js.map +1 -0
  278. package/dist/merge/deep-merge.d.ts +93 -0
  279. package/dist/merge/deep-merge.d.ts.map +1 -0
  280. package/dist/merge/deep-merge.js +168 -0
  281. package/dist/merge/deep-merge.js.map +1 -0
  282. package/dist/quality/analyzers/ai-readiness-analyzer.d.ts +35 -0
  283. package/dist/quality/analyzers/ai-readiness-analyzer.d.ts.map +1 -0
  284. package/dist/quality/analyzers/ai-readiness-analyzer.js +357 -0
  285. package/dist/quality/analyzers/ai-readiness-analyzer.js.map +1 -0
  286. package/dist/quality/analyzers/clarity-analyzer.d.ts +52 -0
  287. package/dist/quality/analyzers/clarity-analyzer.d.ts.map +1 -0
  288. package/dist/quality/analyzers/clarity-analyzer.js +405 -0
  289. package/dist/quality/analyzers/clarity-analyzer.js.map +1 -0
  290. package/dist/quality/analyzers/completeness-analyzer.d.ts +45 -0
  291. package/dist/quality/analyzers/completeness-analyzer.d.ts.map +1 -0
  292. package/dist/quality/analyzers/completeness-analyzer.js +331 -0
  293. package/dist/quality/analyzers/completeness-analyzer.js.map +1 -0
  294. package/dist/quality/improvement-engine.d.ts +37 -0
  295. package/dist/quality/improvement-engine.d.ts.map +1 -0
  296. package/dist/quality/improvement-engine.js +260 -0
  297. package/dist/quality/improvement-engine.js.map +1 -0
  298. package/dist/quality/quality-scorer.d.ts +36 -0
  299. package/dist/quality/quality-scorer.d.ts.map +1 -0
  300. package/dist/quality/quality-scorer.js +95 -0
  301. package/dist/quality/quality-scorer.js.map +1 -0
  302. package/dist/quality/types.d.ts +92 -0
  303. package/dist/quality/types.d.ts.map +1 -0
  304. package/dist/quality/types.js +33 -0
  305. package/dist/quality/types.js.map +1 -0
  306. package/dist/registry/registry-parser.d.ts +59 -0
  307. package/dist/registry/registry-parser.d.ts.map +1 -0
  308. package/dist/registry/registry-parser.js +161 -0
  309. package/dist/registry/registry-parser.js.map +1 -0
  310. package/dist/registry/semver-validator.d.ts +48 -0
  311. package/dist/registry/semver-validator.d.ts.map +1 -0
  312. package/dist/registry/semver-validator.js +115 -0
  313. package/dist/registry/semver-validator.js.map +1 -0
  314. package/dist/schemas/generic-mission.d.ts +120 -0
  315. package/dist/schemas/generic-mission.d.ts.map +1 -0
  316. package/dist/schemas/generic-mission.js +118 -0
  317. package/dist/schemas/generic-mission.js.map +1 -0
  318. package/dist/security/workspace-guard.d.ts +10 -0
  319. package/dist/security/workspace-guard.d.ts.map +1 -0
  320. package/dist/security/workspace-guard.js +116 -0
  321. package/dist/security/workspace-guard.js.map +1 -0
  322. package/dist/server-health.d.ts +73 -0
  323. package/dist/server-health.d.ts.map +1 -0
  324. package/dist/server-health.js +181 -0
  325. package/dist/server-health.js.map +1 -0
  326. package/dist/tools/analyze-dependencies.d.ts +99 -0
  327. package/dist/tools/analyze-dependencies.d.ts.map +1 -0
  328. package/dist/tools/analyze-dependencies.js +329 -0
  329. package/dist/tools/analyze-dependencies.js.map +1 -0
  330. package/dist/tools/cmos/agent-feedback.d.ts +25 -0
  331. package/dist/tools/cmos/agent-feedback.d.ts.map +1 -0
  332. package/dist/tools/cmos/agent-feedback.js +50 -0
  333. package/dist/tools/cmos/agent-feedback.js.map +1 -0
  334. package/dist/tools/cmos/blob-migrations.d.ts +77 -0
  335. package/dist/tools/cmos/blob-migrations.d.ts.map +1 -0
  336. package/dist/tools/cmos/blob-migrations.js +210 -0
  337. package/dist/tools/cmos/blob-migrations.js.map +1 -0
  338. package/dist/tools/cmos/checkpoint-backfill.d.ts +33 -0
  339. package/dist/tools/cmos/checkpoint-backfill.d.ts.map +1 -0
  340. package/dist/tools/cmos/checkpoint-backfill.js +186 -0
  341. package/dist/tools/cmos/checkpoint-backfill.js.map +1 -0
  342. package/dist/tools/cmos/client.d.ts +293 -0
  343. package/dist/tools/cmos/client.d.ts.map +1 -0
  344. package/dist/tools/cmos/client.js +669 -0
  345. package/dist/tools/cmos/client.js.map +1 -0
  346. package/dist/tools/cmos/cmos-agent-onboard.d.ts +344 -0
  347. package/dist/tools/cmos/cmos-agent-onboard.d.ts.map +1 -0
  348. package/dist/tools/cmos/cmos-agent-onboard.js +1533 -0
  349. package/dist/tools/cmos/cmos-agent-onboard.js.map +1 -0
  350. package/dist/tools/cmos/cmos-auth.d.ts +283 -0
  351. package/dist/tools/cmos/cmos-auth.d.ts.map +1 -0
  352. package/dist/tools/cmos/cmos-auth.js +687 -0
  353. package/dist/tools/cmos/cmos-auth.js.map +1 -0
  354. package/dist/tools/cmos/cmos-backlog-export.d.ts +142 -0
  355. package/dist/tools/cmos/cmos-backlog-export.d.ts.map +1 -0
  356. package/dist/tools/cmos/cmos-backlog-export.js +340 -0
  357. package/dist/tools/cmos/cmos-backlog-export.js.map +1 -0
  358. package/dist/tools/cmos/cmos-constraints.d.ts +58 -0
  359. package/dist/tools/cmos/cmos-constraints.d.ts.map +1 -0
  360. package/dist/tools/cmos/cmos-constraints.js +227 -0
  361. package/dist/tools/cmos/cmos-constraints.js.map +1 -0
  362. package/dist/tools/cmos/cmos-context-condense.d.ts +129 -0
  363. package/dist/tools/cmos/cmos-context-condense.d.ts.map +1 -0
  364. package/dist/tools/cmos/cmos-context-condense.js +649 -0
  365. package/dist/tools/cmos/cmos-context-condense.js.map +1 -0
  366. package/dist/tools/cmos/cmos-context-history.d.ts +145 -0
  367. package/dist/tools/cmos/cmos-context-history.d.ts.map +1 -0
  368. package/dist/tools/cmos/cmos-context-history.js +235 -0
  369. package/dist/tools/cmos/cmos-context-history.js.map +1 -0
  370. package/dist/tools/cmos/cmos-context-project-identity.d.ts +34 -0
  371. package/dist/tools/cmos/cmos-context-project-identity.d.ts.map +1 -0
  372. package/dist/tools/cmos/cmos-context-project-identity.js +145 -0
  373. package/dist/tools/cmos/cmos-context-project-identity.js.map +1 -0
  374. package/dist/tools/cmos/cmos-context-search.d.ts +44 -0
  375. package/dist/tools/cmos/cmos-context-search.d.ts.map +1 -0
  376. package/dist/tools/cmos/cmos-context-search.js +79 -0
  377. package/dist/tools/cmos/cmos-context-search.js.map +1 -0
  378. package/dist/tools/cmos/cmos-context-snapshot.d.ts +105 -0
  379. package/dist/tools/cmos/cmos-context-snapshot.d.ts.map +1 -0
  380. package/dist/tools/cmos/cmos-context-snapshot.js +213 -0
  381. package/dist/tools/cmos/cmos-context-snapshot.js.map +1 -0
  382. package/dist/tools/cmos/cmos-context-update.d.ts +193 -0
  383. package/dist/tools/cmos/cmos-context-update.d.ts.map +1 -0
  384. package/dist/tools/cmos/cmos-context-update.js +710 -0
  385. package/dist/tools/cmos/cmos-context-update.js.map +1 -0
  386. package/dist/tools/cmos/cmos-context-view.d.ts +159 -0
  387. package/dist/tools/cmos/cmos-context-view.d.ts.map +1 -0
  388. package/dist/tools/cmos/cmos-context-view.js +531 -0
  389. package/dist/tools/cmos/cmos-context-view.js.map +1 -0
  390. package/dist/tools/cmos/cmos-context.d.ts +325 -0
  391. package/dist/tools/cmos/cmos-context.d.ts.map +1 -0
  392. package/dist/tools/cmos/cmos-context.js +424 -0
  393. package/dist/tools/cmos/cmos-context.js.map +1 -0
  394. package/dist/tools/cmos/cmos-db-backfill.d.ts +119 -0
  395. package/dist/tools/cmos/cmos-db-backfill.d.ts.map +1 -0
  396. package/dist/tools/cmos/cmos-db-backfill.js +889 -0
  397. package/dist/tools/cmos/cmos-db-backfill.js.map +1 -0
  398. package/dist/tools/cmos/cmos-db-health.d.ts +76 -0
  399. package/dist/tools/cmos/cmos-db-health.d.ts.map +1 -0
  400. package/dist/tools/cmos/cmos-db-health.js +226 -0
  401. package/dist/tools/cmos/cmos-db-health.js.map +1 -0
  402. package/dist/tools/cmos/cmos-db-restore.d.ts +92 -0
  403. package/dist/tools/cmos/cmos-db-restore.d.ts.map +1 -0
  404. package/dist/tools/cmos/cmos-db-restore.js +359 -0
  405. package/dist/tools/cmos/cmos-db-restore.js.map +1 -0
  406. package/dist/tools/cmos/cmos-db-snapshot.d.ts +108 -0
  407. package/dist/tools/cmos/cmos-db-snapshot.d.ts.map +1 -0
  408. package/dist/tools/cmos/cmos-db-snapshot.js +359 -0
  409. package/dist/tools/cmos/cmos-db-snapshot.js.map +1 -0
  410. package/dist/tools/cmos/cmos-db.d.ts +103 -0
  411. package/dist/tools/cmos/cmos-db.d.ts.map +1 -0
  412. package/dist/tools/cmos/cmos-db.js +182 -0
  413. package/dist/tools/cmos/cmos-db.js.map +1 -0
  414. package/dist/tools/cmos/cmos-decisions-batch-update.d.ts +34 -0
  415. package/dist/tools/cmos/cmos-decisions-batch-update.d.ts.map +1 -0
  416. package/dist/tools/cmos/cmos-decisions-batch-update.js +90 -0
  417. package/dist/tools/cmos/cmos-decisions-batch-update.js.map +1 -0
  418. package/dist/tools/cmos/cmos-decisions-list.d.ts +134 -0
  419. package/dist/tools/cmos/cmos-decisions-list.d.ts.map +1 -0
  420. package/dist/tools/cmos/cmos-decisions-list.js +153 -0
  421. package/dist/tools/cmos/cmos-decisions-list.js.map +1 -0
  422. package/dist/tools/cmos/cmos-decisions-review.d.ts +21 -0
  423. package/dist/tools/cmos/cmos-decisions-review.d.ts.map +1 -0
  424. package/dist/tools/cmos/cmos-decisions-review.js +83 -0
  425. package/dist/tools/cmos/cmos-decisions-review.js.map +1 -0
  426. package/dist/tools/cmos/cmos-decisions-search.d.ts +119 -0
  427. package/dist/tools/cmos/cmos-decisions-search.d.ts.map +1 -0
  428. package/dist/tools/cmos/cmos-decisions-search.js +219 -0
  429. package/dist/tools/cmos/cmos-decisions-search.js.map +1 -0
  430. package/dist/tools/cmos/cmos-decisions-update.d.ts +34 -0
  431. package/dist/tools/cmos/cmos-decisions-update.d.ts.map +1 -0
  432. package/dist/tools/cmos/cmos-decisions-update.js +121 -0
  433. package/dist/tools/cmos/cmos-decisions-update.js.map +1 -0
  434. package/dist/tools/cmos/cmos-decisions.d.ts +156 -0
  435. package/dist/tools/cmos/cmos-decisions.d.ts.map +1 -0
  436. package/dist/tools/cmos/cmos-decisions.js +223 -0
  437. package/dist/tools/cmos/cmos-decisions.js.map +1 -0
  438. package/dist/tools/cmos/cmos-feedback.d.ts +127 -0
  439. package/dist/tools/cmos/cmos-feedback.d.ts.map +1 -0
  440. package/dist/tools/cmos/cmos-feedback.js +259 -0
  441. package/dist/tools/cmos/cmos-feedback.js.map +1 -0
  442. package/dist/tools/cmos/cmos-learnings-list.d.ts +81 -0
  443. package/dist/tools/cmos/cmos-learnings-list.d.ts.map +1 -0
  444. package/dist/tools/cmos/cmos-learnings-list.js +120 -0
  445. package/dist/tools/cmos/cmos-learnings-list.js.map +1 -0
  446. package/dist/tools/cmos/cmos-learnings-reaffirm.d.ts +27 -0
  447. package/dist/tools/cmos/cmos-learnings-reaffirm.d.ts.map +1 -0
  448. package/dist/tools/cmos/cmos-learnings-reaffirm.js +69 -0
  449. package/dist/tools/cmos/cmos-learnings-reaffirm.js.map +1 -0
  450. package/dist/tools/cmos/cmos-learnings-search.d.ts +69 -0
  451. package/dist/tools/cmos/cmos-learnings-search.d.ts.map +1 -0
  452. package/dist/tools/cmos/cmos-learnings-search.js +130 -0
  453. package/dist/tools/cmos/cmos-learnings-search.js.map +1 -0
  454. package/dist/tools/cmos/cmos-learnings-update.d.ts +52 -0
  455. package/dist/tools/cmos/cmos-learnings-update.d.ts.map +1 -0
  456. package/dist/tools/cmos/cmos-learnings-update.js +122 -0
  457. package/dist/tools/cmos/cmos-learnings-update.js.map +1 -0
  458. package/dist/tools/cmos/cmos-learnings.d.ts +137 -0
  459. package/dist/tools/cmos/cmos-learnings.d.ts.map +1 -0
  460. package/dist/tools/cmos/cmos-learnings.js +197 -0
  461. package/dist/tools/cmos/cmos-learnings.js.map +1 -0
  462. package/dist/tools/cmos/cmos-message.d.ts +257 -0
  463. package/dist/tools/cmos/cmos-message.d.ts.map +1 -0
  464. package/dist/tools/cmos/cmos-message.js +729 -0
  465. package/dist/tools/cmos/cmos-message.js.map +1 -0
  466. package/dist/tools/cmos/cmos-mission-add.d.ts +186 -0
  467. package/dist/tools/cmos/cmos-mission-add.d.ts.map +1 -0
  468. package/dist/tools/cmos/cmos-mission-add.js +328 -0
  469. package/dist/tools/cmos/cmos-mission-add.js.map +1 -0
  470. package/dist/tools/cmos/cmos-mission-block.d.ts +104 -0
  471. package/dist/tools/cmos/cmos-mission-block.d.ts.map +1 -0
  472. package/dist/tools/cmos/cmos-mission-block.js +248 -0
  473. package/dist/tools/cmos/cmos-mission-block.js.map +1 -0
  474. package/dist/tools/cmos/cmos-mission-complete.d.ts +127 -0
  475. package/dist/tools/cmos/cmos-mission-complete.d.ts.map +1 -0
  476. package/dist/tools/cmos/cmos-mission-complete.js +529 -0
  477. package/dist/tools/cmos/cmos-mission-complete.js.map +1 -0
  478. package/dist/tools/cmos/cmos-mission-defer.d.ts +41 -0
  479. package/dist/tools/cmos/cmos-mission-defer.d.ts.map +1 -0
  480. package/dist/tools/cmos/cmos-mission-defer.js +169 -0
  481. package/dist/tools/cmos/cmos-mission-defer.js.map +1 -0
  482. package/dist/tools/cmos/cmos-mission-depends.d.ts +98 -0
  483. package/dist/tools/cmos/cmos-mission-depends.d.ts.map +1 -0
  484. package/dist/tools/cmos/cmos-mission-depends.js +221 -0
  485. package/dist/tools/cmos/cmos-mission-depends.js.map +1 -0
  486. package/dist/tools/cmos/cmos-mission-drop.d.ts +36 -0
  487. package/dist/tools/cmos/cmos-mission-drop.d.ts.map +1 -0
  488. package/dist/tools/cmos/cmos-mission-drop.js +139 -0
  489. package/dist/tools/cmos/cmos-mission-drop.js.map +1 -0
  490. package/dist/tools/cmos/cmos-mission-list.d.ts +127 -0
  491. package/dist/tools/cmos/cmos-mission-list.d.ts.map +1 -0
  492. package/dist/tools/cmos/cmos-mission-list.js +277 -0
  493. package/dist/tools/cmos/cmos-mission-list.js.map +1 -0
  494. package/dist/tools/cmos/cmos-mission-show.d.ts +115 -0
  495. package/dist/tools/cmos/cmos-mission-show.d.ts.map +1 -0
  496. package/dist/tools/cmos/cmos-mission-show.js +278 -0
  497. package/dist/tools/cmos/cmos-mission-show.js.map +1 -0
  498. package/dist/tools/cmos/cmos-mission-start.d.ts +94 -0
  499. package/dist/tools/cmos/cmos-mission-start.d.ts.map +1 -0
  500. package/dist/tools/cmos/cmos-mission-start.js +347 -0
  501. package/dist/tools/cmos/cmos-mission-start.js.map +1 -0
  502. package/dist/tools/cmos/cmos-mission-status.d.ts +152 -0
  503. package/dist/tools/cmos/cmos-mission-status.d.ts.map +1 -0
  504. package/dist/tools/cmos/cmos-mission-status.js +420 -0
  505. package/dist/tools/cmos/cmos-mission-status.js.map +1 -0
  506. package/dist/tools/cmos/cmos-mission-transition.d.ts +126 -0
  507. package/dist/tools/cmos/cmos-mission-transition.d.ts.map +1 -0
  508. package/dist/tools/cmos/cmos-mission-transition.js +222 -0
  509. package/dist/tools/cmos/cmos-mission-transition.js.map +1 -0
  510. package/dist/tools/cmos/cmos-mission-unblock.d.ts +102 -0
  511. package/dist/tools/cmos/cmos-mission-unblock.d.ts.map +1 -0
  512. package/dist/tools/cmos/cmos-mission-unblock.js +242 -0
  513. package/dist/tools/cmos/cmos-mission-unblock.js.map +1 -0
  514. package/dist/tools/cmos/cmos-mission-undepends.d.ts +39 -0
  515. package/dist/tools/cmos/cmos-mission-undepends.d.ts.map +1 -0
  516. package/dist/tools/cmos/cmos-mission-undepends.js +94 -0
  517. package/dist/tools/cmos/cmos-mission-undepends.js.map +1 -0
  518. package/dist/tools/cmos/cmos-mission-update.d.ts +225 -0
  519. package/dist/tools/cmos/cmos-mission-update.d.ts.map +1 -0
  520. package/dist/tools/cmos/cmos-mission-update.js +350 -0
  521. package/dist/tools/cmos/cmos-mission-update.js.map +1 -0
  522. package/dist/tools/cmos/cmos-mission.d.ts +300 -0
  523. package/dist/tools/cmos/cmos-mission.d.ts.map +1 -0
  524. package/dist/tools/cmos/cmos-mission.js +318 -0
  525. package/dist/tools/cmos/cmos-mission.js.map +1 -0
  526. package/dist/tools/cmos/cmos-next-steps.d.ts +57 -0
  527. package/dist/tools/cmos/cmos-next-steps.d.ts.map +1 -0
  528. package/dist/tools/cmos/cmos-next-steps.js +154 -0
  529. package/dist/tools/cmos/cmos-next-steps.js.map +1 -0
  530. package/dist/tools/cmos/cmos-project-init.d.ts +283 -0
  531. package/dist/tools/cmos/cmos-project-init.d.ts.map +1 -0
  532. package/dist/tools/cmos/cmos-project-init.js +502 -0
  533. package/dist/tools/cmos/cmos-project-init.js.map +1 -0
  534. package/dist/tools/cmos/cmos-project-list.d.ts +79 -0
  535. package/dist/tools/cmos/cmos-project-list.d.ts.map +1 -0
  536. package/dist/tools/cmos/cmos-project-list.js +150 -0
  537. package/dist/tools/cmos/cmos-project-list.js.map +1 -0
  538. package/dist/tools/cmos/cmos-project-register.d.ts +90 -0
  539. package/dist/tools/cmos/cmos-project-register.d.ts.map +1 -0
  540. package/dist/tools/cmos/cmos-project-register.js +199 -0
  541. package/dist/tools/cmos/cmos-project-register.js.map +1 -0
  542. package/dist/tools/cmos/cmos-project-sweep.d.ts +34 -0
  543. package/dist/tools/cmos/cmos-project-sweep.d.ts.map +1 -0
  544. package/dist/tools/cmos/cmos-project-sweep.js +210 -0
  545. package/dist/tools/cmos/cmos-project-sweep.js.map +1 -0
  546. package/dist/tools/cmos/cmos-project-unregister.d.ts +66 -0
  547. package/dist/tools/cmos/cmos-project-unregister.d.ts.map +1 -0
  548. package/dist/tools/cmos/cmos-project-unregister.js +108 -0
  549. package/dist/tools/cmos/cmos-project-unregister.js.map +1 -0
  550. package/dist/tools/cmos/cmos-project-update.d.ts +21 -0
  551. package/dist/tools/cmos/cmos-project-update.d.ts.map +1 -0
  552. package/dist/tools/cmos/cmos-project-update.js +46 -0
  553. package/dist/tools/cmos/cmos-project-update.js.map +1 -0
  554. package/dist/tools/cmos/cmos-project-validate.d.ts +89 -0
  555. package/dist/tools/cmos/cmos-project-validate.d.ts.map +1 -0
  556. package/dist/tools/cmos/cmos-project-validate.js +155 -0
  557. package/dist/tools/cmos/cmos-project-validate.js.map +1 -0
  558. package/dist/tools/cmos/cmos-project.d.ts +225 -0
  559. package/dist/tools/cmos/cmos-project.d.ts.map +1 -0
  560. package/dist/tools/cmos/cmos-project.js +255 -0
  561. package/dist/tools/cmos/cmos-project.js.map +1 -0
  562. package/dist/tools/cmos/cmos-resolve-references.d.ts +145 -0
  563. package/dist/tools/cmos/cmos-resolve-references.d.ts.map +1 -0
  564. package/dist/tools/cmos/cmos-resolve-references.js +273 -0
  565. package/dist/tools/cmos/cmos-resolve-references.js.map +1 -0
  566. package/dist/tools/cmos/cmos-session-capture.d.ts +228 -0
  567. package/dist/tools/cmos/cmos-session-capture.d.ts.map +1 -0
  568. package/dist/tools/cmos/cmos-session-capture.js +552 -0
  569. package/dist/tools/cmos/cmos-session-capture.js.map +1 -0
  570. package/dist/tools/cmos/cmos-session-complete.d.ts +201 -0
  571. package/dist/tools/cmos/cmos-session-complete.d.ts.map +1 -0
  572. package/dist/tools/cmos/cmos-session-complete.js +816 -0
  573. package/dist/tools/cmos/cmos-session-complete.js.map +1 -0
  574. package/dist/tools/cmos/cmos-session-list.d.ts +150 -0
  575. package/dist/tools/cmos/cmos-session-list.d.ts.map +1 -0
  576. package/dist/tools/cmos/cmos-session-list.js +234 -0
  577. package/dist/tools/cmos/cmos-session-list.js.map +1 -0
  578. package/dist/tools/cmos/cmos-session-search.d.ts +176 -0
  579. package/dist/tools/cmos/cmos-session-search.d.ts.map +1 -0
  580. package/dist/tools/cmos/cmos-session-search.js +374 -0
  581. package/dist/tools/cmos/cmos-session-search.js.map +1 -0
  582. package/dist/tools/cmos/cmos-session-start.d.ts +136 -0
  583. package/dist/tools/cmos/cmos-session-start.d.ts.map +1 -0
  584. package/dist/tools/cmos/cmos-session-start.js +305 -0
  585. package/dist/tools/cmos/cmos-session-start.js.map +1 -0
  586. package/dist/tools/cmos/cmos-session.d.ts +223 -0
  587. package/dist/tools/cmos/cmos-session.d.ts.map +1 -0
  588. package/dist/tools/cmos/cmos-session.js +255 -0
  589. package/dist/tools/cmos/cmos-session.js.map +1 -0
  590. package/dist/tools/cmos/cmos-sprint-add.d.ts +114 -0
  591. package/dist/tools/cmos/cmos-sprint-add.d.ts.map +1 -0
  592. package/dist/tools/cmos/cmos-sprint-add.js +164 -0
  593. package/dist/tools/cmos/cmos-sprint-add.js.map +1 -0
  594. package/dist/tools/cmos/cmos-sprint-analytics.d.ts +66 -0
  595. package/dist/tools/cmos/cmos-sprint-analytics.d.ts.map +1 -0
  596. package/dist/tools/cmos/cmos-sprint-analytics.js +289 -0
  597. package/dist/tools/cmos/cmos-sprint-analytics.js.map +1 -0
  598. package/dist/tools/cmos/cmos-sprint-carry-forward.d.ts +55 -0
  599. package/dist/tools/cmos/cmos-sprint-carry-forward.d.ts.map +1 -0
  600. package/dist/tools/cmos/cmos-sprint-carry-forward.js +271 -0
  601. package/dist/tools/cmos/cmos-sprint-carry-forward.js.map +1 -0
  602. package/dist/tools/cmos/cmos-sprint-complete.d.ts +155 -0
  603. package/dist/tools/cmos/cmos-sprint-complete.d.ts.map +1 -0
  604. package/dist/tools/cmos/cmos-sprint-complete.js +768 -0
  605. package/dist/tools/cmos/cmos-sprint-complete.js.map +1 -0
  606. package/dist/tools/cmos/cmos-sprint-list.d.ts +115 -0
  607. package/dist/tools/cmos/cmos-sprint-list.d.ts.map +1 -0
  608. package/dist/tools/cmos/cmos-sprint-list.js +225 -0
  609. package/dist/tools/cmos/cmos-sprint-list.js.map +1 -0
  610. package/dist/tools/cmos/cmos-sprint-retro.d.ts +114 -0
  611. package/dist/tools/cmos/cmos-sprint-retro.d.ts.map +1 -0
  612. package/dist/tools/cmos/cmos-sprint-retro.js +331 -0
  613. package/dist/tools/cmos/cmos-sprint-retro.js.map +1 -0
  614. package/dist/tools/cmos/cmos-sprint-show.d.ts +109 -0
  615. package/dist/tools/cmos/cmos-sprint-show.d.ts.map +1 -0
  616. package/dist/tools/cmos/cmos-sprint-show.js +238 -0
  617. package/dist/tools/cmos/cmos-sprint-show.js.map +1 -0
  618. package/dist/tools/cmos/cmos-sprint-update.d.ts +150 -0
  619. package/dist/tools/cmos/cmos-sprint-update.d.ts.map +1 -0
  620. package/dist/tools/cmos/cmos-sprint-update.js +191 -0
  621. package/dist/tools/cmos/cmos-sprint-update.js.map +1 -0
  622. package/dist/tools/cmos/cmos-sprint.d.ts +219 -0
  623. package/dist/tools/cmos/cmos-sprint.d.ts.map +1 -0
  624. package/dist/tools/cmos/cmos-sprint.js +304 -0
  625. package/dist/tools/cmos/cmos-sprint.js.map +1 -0
  626. package/dist/tools/cmos/cmos-status.d.ts +69 -0
  627. package/dist/tools/cmos/cmos-status.d.ts.map +1 -0
  628. package/dist/tools/cmos/cmos-status.js +136 -0
  629. package/dist/tools/cmos/cmos-status.js.map +1 -0
  630. package/dist/tools/cmos/context-freshness.d.ts +67 -0
  631. package/dist/tools/cmos/context-freshness.d.ts.map +1 -0
  632. package/dist/tools/cmos/context-freshness.js +352 -0
  633. package/dist/tools/cmos/context-freshness.js.map +1 -0
  634. package/dist/tools/cmos/context-retention.d.ts +58 -0
  635. package/dist/tools/cmos/context-retention.d.ts.map +1 -0
  636. package/dist/tools/cmos/context-retention.js +507 -0
  637. package/dist/tools/cmos/context-retention.js.map +1 -0
  638. package/dist/tools/cmos/dashboard-client.d.ts +513 -0
  639. package/dist/tools/cmos/dashboard-client.d.ts.map +1 -0
  640. package/dist/tools/cmos/dashboard-client.js +800 -0
  641. package/dist/tools/cmos/dashboard-client.js.map +1 -0
  642. package/dist/tools/cmos/decision-memory.d.ts +39 -0
  643. package/dist/tools/cmos/decision-memory.d.ts.map +1 -0
  644. package/dist/tools/cmos/decision-memory.js +263 -0
  645. package/dist/tools/cmos/decision-memory.js.map +1 -0
  646. package/dist/tools/cmos/errors.d.ts +113 -0
  647. package/dist/tools/cmos/errors.d.ts.map +1 -0
  648. package/dist/tools/cmos/errors.js +315 -0
  649. package/dist/tools/cmos/errors.js.map +1 -0
  650. package/dist/tools/cmos/fts5-retriever.d.ts +101 -0
  651. package/dist/tools/cmos/fts5-retriever.d.ts.map +1 -0
  652. package/dist/tools/cmos/fts5-retriever.js +210 -0
  653. package/dist/tools/cmos/fts5-retriever.js.map +1 -0
  654. package/dist/tools/cmos/index.d.ts +1238 -0
  655. package/dist/tools/cmos/index.d.ts.map +1 -0
  656. package/dist/tools/cmos/index.js +359 -0
  657. package/dist/tools/cmos/index.js.map +1 -0
  658. package/dist/tools/cmos/learning-reaffirm.d.ts +74 -0
  659. package/dist/tools/cmos/learning-reaffirm.d.ts.map +1 -0
  660. package/dist/tools/cmos/learning-reaffirm.js +145 -0
  661. package/dist/tools/cmos/learning-reaffirm.js.map +1 -0
  662. package/dist/tools/cmos/orphan-detection.d.ts +55 -0
  663. package/dist/tools/cmos/orphan-detection.d.ts.map +1 -0
  664. package/dist/tools/cmos/orphan-detection.js +139 -0
  665. package/dist/tools/cmos/orphan-detection.js.map +1 -0
  666. package/dist/tools/cmos/owner-resolution.d.ts +21 -0
  667. package/dist/tools/cmos/owner-resolution.d.ts.map +1 -0
  668. package/dist/tools/cmos/owner-resolution.js +162 -0
  669. package/dist/tools/cmos/owner-resolution.js.map +1 -0
  670. package/dist/tools/cmos/project-identity.d.ts +112 -0
  671. package/dist/tools/cmos/project-identity.d.ts.map +1 -0
  672. package/dist/tools/cmos/project-identity.js +261 -0
  673. package/dist/tools/cmos/project-identity.js.map +1 -0
  674. package/dist/tools/cmos/relevance-surfacing.d.ts +40 -0
  675. package/dist/tools/cmos/relevance-surfacing.d.ts.map +1 -0
  676. package/dist/tools/cmos/relevance-surfacing.js +153 -0
  677. package/dist/tools/cmos/relevance-surfacing.js.map +1 -0
  678. package/dist/tools/cmos/schema-migrations.d.ts +157 -0
  679. package/dist/tools/cmos/schema-migrations.d.ts.map +1 -0
  680. package/dist/tools/cmos/schema-migrations.js +678 -0
  681. package/dist/tools/cmos/schema-migrations.js.map +1 -0
  682. package/dist/tools/cmos/schema.d.ts +76 -0
  683. package/dist/tools/cmos/schema.d.ts.map +1 -0
  684. package/dist/tools/cmos/schema.js +462 -0
  685. package/dist/tools/cmos/schema.js.map +1 -0
  686. package/dist/tools/cmos/sender-identity.d.ts +87 -0
  687. package/dist/tools/cmos/sender-identity.d.ts.map +1 -0
  688. package/dist/tools/cmos/sender-identity.js +207 -0
  689. package/dist/tools/cmos/sender-identity.js.map +1 -0
  690. package/dist/tools/cmos/staleness-detection.d.ts +128 -0
  691. package/dist/tools/cmos/staleness-detection.d.ts.map +1 -0
  692. package/dist/tools/cmos/staleness-detection.js +381 -0
  693. package/dist/tools/cmos/staleness-detection.js.map +1 -0
  694. package/dist/tools/cmos/supersession-detection.d.ts +46 -0
  695. package/dist/tools/cmos/supersession-detection.d.ts.map +1 -0
  696. package/dist/tools/cmos/supersession-detection.js +235 -0
  697. package/dist/tools/cmos/supersession-detection.js.map +1 -0
  698. package/dist/tools/cmos/sync-event-payloads.d.ts +576 -0
  699. package/dist/tools/cmos/sync-event-payloads.d.ts.map +1 -0
  700. package/dist/tools/cmos/sync-event-payloads.js +521 -0
  701. package/dist/tools/cmos/sync-event-payloads.js.map +1 -0
  702. package/dist/tools/cmos/sync-health-check.d.ts +43 -0
  703. package/dist/tools/cmos/sync-health-check.d.ts.map +1 -0
  704. package/dist/tools/cmos/sync-health-check.js +93 -0
  705. package/dist/tools/cmos/sync-health-check.js.map +1 -0
  706. package/dist/tools/cmos/sync-hooks.d.ts +82 -0
  707. package/dist/tools/cmos/sync-hooks.d.ts.map +1 -0
  708. package/dist/tools/cmos/sync-hooks.js +162 -0
  709. package/dist/tools/cmos/sync-hooks.js.map +1 -0
  710. package/dist/tools/cmos/sync-pusher.d.ts +128 -0
  711. package/dist/tools/cmos/sync-pusher.d.ts.map +1 -0
  712. package/dist/tools/cmos/sync-pusher.js +248 -0
  713. package/dist/tools/cmos/sync-pusher.js.map +1 -0
  714. package/dist/tools/cmos/sync-queue.d.ts +87 -0
  715. package/dist/tools/cmos/sync-queue.d.ts.map +1 -0
  716. package/dist/tools/cmos/sync-queue.js +208 -0
  717. package/dist/tools/cmos/sync-queue.js.map +1 -0
  718. package/dist/tools/cmos/tier-config.d.ts +32 -0
  719. package/dist/tools/cmos/tier-config.d.ts.map +1 -0
  720. package/dist/tools/cmos/tier-config.js +123 -0
  721. package/dist/tools/cmos/tier-config.js.map +1 -0
  722. package/dist/tools/cmos/types.d.ts +164 -0
  723. package/dist/tools/cmos/types.d.ts.map +1 -0
  724. package/dist/tools/cmos/types.js +11 -0
  725. package/dist/tools/cmos/types.js.map +1 -0
  726. package/dist/tools/combine-packs.d.ts +194 -0
  727. package/dist/tools/combine-packs.d.ts.map +1 -0
  728. package/dist/tools/combine-packs.js +283 -0
  729. package/dist/tools/combine-packs.js.map +1 -0
  730. package/dist/tools/create-mission.d.ts +192 -0
  731. package/dist/tools/create-mission.d.ts.map +1 -0
  732. package/dist/tools/create-mission.js +453 -0
  733. package/dist/tools/create-mission.js.map +1 -0
  734. package/dist/tools/export-template.d.ts +175 -0
  735. package/dist/tools/export-template.d.ts.map +1 -0
  736. package/dist/tools/export-template.js +212 -0
  737. package/dist/tools/export-template.js.map +1 -0
  738. package/dist/tools/extract-template.d.ts +106 -0
  739. package/dist/tools/extract-template.d.ts.map +1 -0
  740. package/dist/tools/extract-template.js +322 -0
  741. package/dist/tools/extract-template.js.map +1 -0
  742. package/dist/tools/formatters/mission-protocol-json.d.ts +122 -0
  743. package/dist/tools/formatters/mission-protocol-json.d.ts.map +1 -0
  744. package/dist/tools/formatters/mission-protocol-json.js +155 -0
  745. package/dist/tools/formatters/mission-protocol-json.js.map +1 -0
  746. package/dist/tools/import-template.d.ts +170 -0
  747. package/dist/tools/import-template.d.ts.map +1 -0
  748. package/dist/tools/import-template.js +203 -0
  749. package/dist/tools/import-template.js.map +1 -0
  750. package/dist/tools/list-domains.d.ts +70 -0
  751. package/dist/tools/list-domains.d.ts.map +1 -0
  752. package/dist/tools/list-domains.js +110 -0
  753. package/dist/tools/list-domains.js.map +1 -0
  754. package/dist/tools/optimize-tokens.d.ts +190 -0
  755. package/dist/tools/optimize-tokens.d.ts.map +1 -0
  756. package/dist/tools/optimize-tokens.js +193 -0
  757. package/dist/tools/optimize-tokens.js.map +1 -0
  758. package/dist/tools/score-quality.d.ts +76 -0
  759. package/dist/tools/score-quality.d.ts.map +1 -0
  760. package/dist/tools/score-quality.js +191 -0
  761. package/dist/tools/score-quality.js.map +1 -0
  762. package/dist/tools/split-mission.d.ts +181 -0
  763. package/dist/tools/split-mission.d.ts.map +1 -0
  764. package/dist/tools/split-mission.js +416 -0
  765. package/dist/tools/split-mission.js.map +1 -0
  766. package/dist/tools/suggest-splits.d.ts +162 -0
  767. package/dist/tools/suggest-splits.d.ts.map +1 -0
  768. package/dist/tools/suggest-splits.js +344 -0
  769. package/dist/tools/suggest-splits.js.map +1 -0
  770. package/dist/tools/tool-execution.d.ts +4 -0
  771. package/dist/tools/tool-execution.d.ts.map +1 -0
  772. package/dist/tools/tool-execution.js +3 -0
  773. package/dist/tools/tool-execution.js.map +1 -0
  774. package/dist/tools/version-template.d.ts +515 -0
  775. package/dist/tools/version-template.d.ts.map +1 -0
  776. package/dist/tools/version-template.js +338 -0
  777. package/dist/tools/version-template.js.map +1 -0
  778. package/dist/types/errors.d.ts +19 -0
  779. package/dist/types/errors.d.ts.map +1 -0
  780. package/dist/types/errors.js +52 -0
  781. package/dist/types/errors.js.map +1 -0
  782. package/dist/types/mission-types.d.ts +8 -0
  783. package/dist/types/mission-types.d.ts.map +1 -0
  784. package/dist/types/mission-types.js +12 -0
  785. package/dist/types/mission-types.js.map +1 -0
  786. package/dist/types/registry.d.ts +55 -0
  787. package/dist/types/registry.d.ts.map +1 -0
  788. package/dist/types/registry.js +10 -0
  789. package/dist/types/registry.js.map +1 -0
  790. package/dist/types/schemas.d.ts +25 -0
  791. package/dist/types/schemas.d.ts.map +1 -0
  792. package/dist/types/schemas.js +6 -0
  793. package/dist/types/schemas.js.map +1 -0
  794. package/dist/types/tools.d.ts +22 -0
  795. package/dist/types/tools.d.ts.map +1 -0
  796. package/dist/types/tools.js +10 -0
  797. package/dist/types/tools.js.map +1 -0
  798. package/dist/utils/abort.d.ts +16 -0
  799. package/dist/utils/abort.d.ts.map +1 -0
  800. package/dist/utils/abort.js +89 -0
  801. package/dist/utils/abort.js.map +1 -0
  802. package/dist/utils/fs.d.ts +14 -0
  803. package/dist/utils/fs.d.ts.map +1 -0
  804. package/dist/utils/fs.js +114 -0
  805. package/dist/utils/fs.js.map +1 -0
  806. package/dist/utils/workspace-io.d.ts +18 -0
  807. package/dist/utils/workspace-io.d.ts.map +1 -0
  808. package/dist/utils/workspace-io.js +40 -0
  809. package/dist/utils/workspace-io.js.map +1 -0
  810. package/dist/validation/common.d.ts +21 -0
  811. package/dist/validation/common.d.ts.map +1 -0
  812. package/dist/validation/common.js +241 -0
  813. package/dist/validation/common.js.map +1 -0
  814. package/dist/validation/errors.d.ts +21 -0
  815. package/dist/validation/errors.d.ts.map +1 -0
  816. package/dist/validation/errors.js +122 -0
  817. package/dist/validation/errors.js.map +1 -0
  818. package/dist/validation/middleware.d.ts +6 -0
  819. package/dist/validation/middleware.d.ts.map +1 -0
  820. package/dist/validation/middleware.js +26 -0
  821. package/dist/validation/middleware.js.map +1 -0
  822. package/dist/validation/schemas/config-schema.d.ts +25 -0
  823. package/dist/validation/schemas/config-schema.d.ts.map +1 -0
  824. package/dist/validation/schemas/config-schema.js +22 -0
  825. package/dist/validation/schemas/config-schema.js.map +1 -0
  826. package/dist/validation/schemas/domain-schema.d.ts +129 -0
  827. package/dist/validation/schemas/domain-schema.d.ts.map +1 -0
  828. package/dist/validation/schemas/domain-schema.js +28 -0
  829. package/dist/validation/schemas/domain-schema.js.map +1 -0
  830. package/dist/validation/schemas/file-path-schema.d.ts +10 -0
  831. package/dist/validation/schemas/file-path-schema.d.ts.map +1 -0
  832. package/dist/validation/schemas/file-path-schema.js +29 -0
  833. package/dist/validation/schemas/file-path-schema.js.map +1 -0
  834. package/dist/validation/schemas/mission-schema.d.ts +65 -0
  835. package/dist/validation/schemas/mission-schema.d.ts.map +1 -0
  836. package/dist/validation/schemas/mission-schema.js +24 -0
  837. package/dist/validation/schemas/mission-schema.js.map +1 -0
  838. package/dist/validation/schemas/template-schema.d.ts +364 -0
  839. package/dist/validation/schemas/template-schema.d.ts.map +1 -0
  840. package/dist/validation/schemas/template-schema.js +64 -0
  841. package/dist/validation/schemas/template-schema.js.map +1 -0
  842. package/dist/versioning/migration-engine.d.ts +82 -0
  843. package/dist/versioning/migration-engine.d.ts.map +1 -0
  844. package/dist/versioning/migration-engine.js +352 -0
  845. package/dist/versioning/migration-engine.js.map +1 -0
  846. package/dist/versioning/types.d.ts +236 -0
  847. package/dist/versioning/types.d.ts.map +1 -0
  848. package/dist/versioning/types.js +57 -0
  849. package/dist/versioning/types.js.map +1 -0
  850. package/dist/versioning/version-manager.d.ts +76 -0
  851. package/dist/versioning/version-manager.d.ts.map +1 -0
  852. package/dist/versioning/version-manager.js +386 -0
  853. package/dist/versioning/version-manager.js.map +1 -0
  854. package/package.json +117 -0
@@ -0,0 +1,1376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgenticController = exports.__test__ = exports.MissionStateManager = void 0;
4
+ const events_1 = require("events");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const cmos_detector_1 = require("./cmos-detector");
8
+ const context_propagator_v3_1 = require("./context-propagator-v3");
9
+ const mission_history_1 = require("./mission-history");
10
+ const cmos_sync_1 = require("./cmos-sync");
11
+ const rsip_loop_1 = require("./rsip-loop");
12
+ const telemetry_1 = require("./telemetry");
13
+ const agentic_observability_1 = require("./agentic-observability");
14
+ const boomerang_workflow_1 = require("./boomerang-workflow");
15
+ const fs_2 = require("../utils/fs");
16
+ const workspace_io_1 = require("../utils/workspace-io");
17
+ const DEFAULT_STATE_PATH = 'agentic_state.json';
18
+ const DEFAULT_SESSIONS_PATH = 'SESSIONS.jsonl';
19
+ const DEFAULT_BOOMERANG_RUNTIME_ROOT = 'runtime/boomerang';
20
+ const DEFAULT_BOOMERANG_RETENTION_DAYS = 7;
21
+ const DEFAULT_BOOMERANG_MAX_RETRIES = 2;
22
+ const DEFAULT_OBSERVABILITY_LOG_FILE = 'agentic-events.jsonl';
23
+ const DEFAULT_GOVERNANCE_TELEMETRY_SOURCE = 'AgenticGovernance';
24
+ const DEFAULT_CMOS_TELEMETRY_SOURCE = 'AgenticCMOS';
25
+ const DEFAULT_CMOS_SYNC_TELEMETRY_SOURCE = 'AgenticCMOSSync';
26
+ const DEFAULT_CMOS_SYNC_TRIGGERS = [
27
+ 'mission_start',
28
+ 'mission_complete',
29
+ ];
30
+ function createMissionState(missionId, now) {
31
+ return {
32
+ missionId,
33
+ phase: 'idle',
34
+ status: 'queued',
35
+ activeSubMissions: [],
36
+ updatedAt: now,
37
+ history: [],
38
+ subMissions: [],
39
+ };
40
+ }
41
+ function cloneState(value) {
42
+ return JSON.parse(JSON.stringify(value));
43
+ }
44
+ function ensureUnique(list, value) {
45
+ return list.includes(value) ? list : [...list, value];
46
+ }
47
+ function removeValue(list, value) {
48
+ return list.filter((item) => item !== value);
49
+ }
50
+ function normalizeRSIPMetrics(metrics, fallbackTimestamp) {
51
+ if (!metrics) {
52
+ return undefined;
53
+ }
54
+ const safeRuns = typeof metrics.runs === 'number' && Number.isFinite(metrics.runs) && metrics.runs >= 0
55
+ ? Math.floor(metrics.runs)
56
+ : 0;
57
+ const safeIterations = typeof metrics.totalIterations === 'number' &&
58
+ Number.isFinite(metrics.totalIterations) &&
59
+ metrics.totalIterations >= 0
60
+ ? Math.floor(metrics.totalIterations)
61
+ : 0;
62
+ let lastRun;
63
+ if (metrics.lastRun) {
64
+ const persisted = metrics.lastRun;
65
+ const normalizeReason = (reason) => {
66
+ if (reason === 'disabled' || reason === 'converged' || reason === 'max_iterations') {
67
+ return reason;
68
+ }
69
+ if (reason === 'error') {
70
+ return 'error';
71
+ }
72
+ return 'max_iterations';
73
+ };
74
+ const iterations = Array.isArray(persisted.iterations)
75
+ ? persisted.iterations.map((entry, index) => ({
76
+ index: typeof entry?.index === 'number' && Number.isFinite(entry.index)
77
+ ? Math.max(1, Math.floor(entry.index))
78
+ : index + 1,
79
+ improvementScore: typeof entry?.improvementScore === 'number' ? entry.improvementScore : 0,
80
+ summary: typeof entry?.summary === 'string' ? entry.summary : undefined,
81
+ }))
82
+ : [];
83
+ lastRun = {
84
+ startedAt: typeof persisted.startedAt === 'string' && persisted.startedAt.length > 0
85
+ ? persisted.startedAt
86
+ : fallbackTimestamp,
87
+ completedAt: typeof persisted.completedAt === 'string' && persisted.completedAt.length > 0
88
+ ? persisted.completedAt
89
+ : fallbackTimestamp,
90
+ converged: typeof persisted.converged === 'boolean' ? persisted.converged : false,
91
+ reason: normalizeReason(persisted.reason),
92
+ iterations,
93
+ };
94
+ }
95
+ return {
96
+ runs: safeRuns,
97
+ totalIterations: safeIterations,
98
+ lastRun,
99
+ };
100
+ }
101
+ function normalizeBoomerangMetrics(metrics) {
102
+ if (!metrics) {
103
+ return undefined;
104
+ }
105
+ const safeRuns = typeof metrics.runs === 'number' && Number.isFinite(metrics.runs) && metrics.runs >= 0
106
+ ? Math.floor(metrics.runs)
107
+ : 0;
108
+ const lastRun = metrics.lastRun
109
+ ? cloneState(metrics.lastRun)
110
+ : undefined;
111
+ return {
112
+ runs: safeRuns,
113
+ lastRun,
114
+ };
115
+ }
116
+ class MissionStateManager {
117
+ constructor(options = {}) {
118
+ this.cachedState = null;
119
+ this.statePath = options.statePath ?? DEFAULT_STATE_PATH;
120
+ this.clock = options.clock ?? (() => new Date());
121
+ }
122
+ async getState() {
123
+ const state = await this.ensureState();
124
+ return cloneState(state);
125
+ }
126
+ async getMission(missionId) {
127
+ const state = await this.ensureState();
128
+ const mission = state.missions[missionId];
129
+ return mission ? cloneState(mission) : undefined;
130
+ }
131
+ async update(mutator) {
132
+ const state = await this.ensureState();
133
+ mutator(state);
134
+ state.lastUpdated = this.nowIso();
135
+ await this.persist(state);
136
+ return cloneState(state);
137
+ }
138
+ async ensureState() {
139
+ if (this.cachedState) {
140
+ return this.cachedState;
141
+ }
142
+ this.cachedState = await this.loadFromDisk();
143
+ return this.cachedState;
144
+ }
145
+ async loadFromDisk() {
146
+ try {
147
+ const raw = await fs_1.promises.readFile(this.statePath, 'utf-8');
148
+ if (raw.trim().length === 0) {
149
+ const emptyState = this.createEmptyState();
150
+ await this.persist(emptyState);
151
+ return emptyState;
152
+ }
153
+ const parsed = JSON.parse(raw);
154
+ return this.normalize(parsed);
155
+ }
156
+ catch (error) {
157
+ const err = error;
158
+ if (err && err.code !== 'ENOENT') {
159
+ throw error;
160
+ }
161
+ const emptyState = this.createEmptyState();
162
+ await this.persist(emptyState);
163
+ return emptyState;
164
+ }
165
+ }
166
+ normalize(state) {
167
+ const now = this.nowIso();
168
+ const workflow = {
169
+ activeMission: state.workflow?.activeMission,
170
+ queue: state.workflow?.queue ? [...state.workflow.queue] : [],
171
+ completed: state.workflow?.completed ? [...state.workflow.completed] : [],
172
+ paused: state.workflow?.paused ? [...state.workflow.paused] : [],
173
+ };
174
+ const missions = {};
175
+ for (const [missionId, mission] of Object.entries(state.missions ?? {})) {
176
+ const rawActiveSubMissions = Array.isArray(mission.activeSubMissions)
177
+ ? (mission.activeSubMissions ?? [])
178
+ : [];
179
+ const activeSubMissions = [];
180
+ for (const entry of rawActiveSubMissions) {
181
+ if (!entry || typeof entry.id !== 'string' || entry.id.length === 0) {
182
+ continue;
183
+ }
184
+ activeSubMissions.push({
185
+ id: entry.id,
186
+ startedAt: typeof entry.startedAt === 'string' && entry.startedAt.length > 0
187
+ ? entry.startedAt
188
+ : now,
189
+ parent: typeof entry.parent === 'string' && entry.parent.length > 0 ? entry.parent : undefined,
190
+ objective: typeof entry.objective === 'string' && entry.objective.length > 0
191
+ ? entry.objective
192
+ : undefined,
193
+ metadata: entry.metadata ? { ...entry.metadata } : undefined,
194
+ previousContext: entry.previousContext
195
+ ? cloneState(entry.previousContext)
196
+ : undefined,
197
+ });
198
+ }
199
+ missions[missionId] = {
200
+ missionId,
201
+ phase: mission.phase ?? 'idle',
202
+ status: mission.status ?? 'queued',
203
+ objective: mission.objective,
204
+ currentSubMission: mission.currentSubMission,
205
+ activeSubMissions,
206
+ startedAt: mission.startedAt,
207
+ updatedAt: mission.updatedAt ?? now,
208
+ completedAt: mission.completedAt,
209
+ notes: mission.notes,
210
+ tags: mission.tags ? [...mission.tags] : undefined,
211
+ lastContext: mission.lastContext
212
+ ? cloneState(mission.lastContext)
213
+ : undefined,
214
+ lastDynamicQuery: mission.lastDynamicQuery,
215
+ history: Array.isArray(mission.history)
216
+ ? mission.history.map((entry) => ({ ...entry }))
217
+ : [],
218
+ subMissions: Array.isArray(mission.subMissions)
219
+ ? mission.subMissions.map((entry) => ({ ...entry }))
220
+ : [],
221
+ metadata: mission.metadata ? { ...mission.metadata } : undefined,
222
+ rsipMetrics: normalizeRSIPMetrics(mission.rsipMetrics, now),
223
+ boomerangMetrics: normalizeBoomerangMetrics(mission.boomerangMetrics),
224
+ };
225
+ }
226
+ return {
227
+ version: state.version ?? 1,
228
+ lastUpdated: state.lastUpdated ?? now,
229
+ missions,
230
+ workflow,
231
+ };
232
+ }
233
+ createEmptyState() {
234
+ const now = this.nowIso();
235
+ return {
236
+ version: 1,
237
+ lastUpdated: now,
238
+ missions: {},
239
+ workflow: {
240
+ queue: [],
241
+ completed: [],
242
+ paused: [],
243
+ },
244
+ };
245
+ }
246
+ async persist(state) {
247
+ const directory = (0, path_1.dirname)(this.statePath);
248
+ await fs_1.promises.mkdir(directory, { recursive: true });
249
+ const tempPath = `${this.statePath}.${process.pid}.${Date.now()}.tmp`;
250
+ const payload = JSON.stringify(state, null, 2);
251
+ await fs_1.promises.writeFile(tempPath, payload, 'utf-8');
252
+ await fs_1.promises.rename(tempPath, this.statePath);
253
+ }
254
+ nowIso() {
255
+ return this.clock().toISOString();
256
+ }
257
+ }
258
+ exports.MissionStateManager = MissionStateManager;
259
+ exports.__test__ = {
260
+ createMissionState,
261
+ ensureUnique,
262
+ removeValue,
263
+ normalizeRSIPMetrics,
264
+ normalizeBoomerangMetrics,
265
+ };
266
+ class AgenticController {
267
+ constructor(options = {}) {
268
+ this.emitter = new events_1.EventEmitter();
269
+ this.cmosDetectionPromise = null;
270
+ this.cmosDetectionResult = null;
271
+ this.clock = options.clock ?? (() => new Date());
272
+ const resolvedStatePath = options.statePath ?? DEFAULT_STATE_PATH;
273
+ this.stateManager = new MissionStateManager({
274
+ statePath: resolvedStatePath,
275
+ clock: this.clock,
276
+ });
277
+ const sessionsPath = options.sessionsPath ?? DEFAULT_SESSIONS_PATH;
278
+ this.sessionsPath = sessionsPath;
279
+ this.historyAnalyzer =
280
+ options.historyAnalyzer ??
281
+ new mission_history_1.MissionHistoryAnalyzer({
282
+ sessionsPath,
283
+ });
284
+ this.propagator =
285
+ options.propagator ??
286
+ new context_propagator_v3_1.ContextPropagatorV3(options.contextConfig ?? { maxContextTokens: 4096, strategy: 'map-reduce' }, this.historyAnalyzer);
287
+ this.historyLimit = options.historyLimit ?? 5;
288
+ this.autoPropagationPhases = new Set(options.autoPropagationPhases ?? ['execution', 'review']);
289
+ const guardrails = options.delegationGuardrails ?? {};
290
+ const requestedLimit = typeof guardrails.maxActiveSubMissions === 'number' &&
291
+ Number.isFinite(guardrails.maxActiveSubMissions)
292
+ ? Math.floor(guardrails.maxActiveSubMissions)
293
+ : NaN;
294
+ this.maxActiveSubMissions =
295
+ Number.isFinite(requestedLimit) && requestedLimit > 0
296
+ ? requestedLimit
297
+ : AgenticController.DEFAULT_MAX_ACTIVE_SUBMISSIONS;
298
+ this.delegationTelemetrySource =
299
+ guardrails.telemetrySource ?? AgenticController.DEFAULT_TELEMETRY_SOURCE;
300
+ const boomerang = options.boomerang ?? {};
301
+ const requestedRetries = typeof boomerang.maxRetries === 'number' && Number.isFinite(boomerang.maxRetries)
302
+ ? Math.floor(boomerang.maxRetries)
303
+ : NaN;
304
+ this.boomerangRuntimeRoot = boomerang.runtimeRoot ?? DEFAULT_BOOMERANG_RUNTIME_ROOT;
305
+ this.boomerangRetentionDays =
306
+ typeof boomerang.retentionDays === 'number' && Number.isFinite(boomerang.retentionDays)
307
+ ? boomerang.retentionDays
308
+ : DEFAULT_BOOMERANG_RETENTION_DAYS;
309
+ this.boomerangMaxRetries =
310
+ Number.isFinite(requestedRetries) && requestedRetries >= 0
311
+ ? requestedRetries
312
+ : DEFAULT_BOOMERANG_MAX_RETRIES;
313
+ const defaultObservabilityPath = (0, path_1.join)((0, path_1.dirname)(resolvedStatePath), DEFAULT_OBSERVABILITY_LOG_FILE);
314
+ const observabilityOption = options.observability;
315
+ if (observabilityOption instanceof agentic_observability_1.AgenticObservability) {
316
+ this.observability = observabilityOption;
317
+ }
318
+ else {
319
+ const observabilityOptions = observabilityOption && typeof observabilityOption === 'object'
320
+ ? observabilityOption
321
+ : {};
322
+ const logPath = observabilityOptions.logPath !== undefined
323
+ ? observabilityOptions.logPath
324
+ : defaultObservabilityPath;
325
+ this.observability = new agentic_observability_1.AgenticObservability({
326
+ ...observabilityOptions,
327
+ logPath,
328
+ clock: observabilityOptions.clock ?? this.clock,
329
+ });
330
+ }
331
+ this.governanceTelemetrySource =
332
+ options.governanceTelemetrySource ?? DEFAULT_GOVERNANCE_TELEMETRY_SOURCE;
333
+ const cmosOptions = options.cmos ?? {};
334
+ this.cmosIntegrationEnabled = cmosOptions.enabled !== false;
335
+ this.cmosProjectRoot = cmosOptions.projectRoot ?? process.cwd();
336
+ this.cmosDetector = cmosOptions.detector;
337
+ this.cmosDetectionOptions = cmosOptions.detectionOptions
338
+ ? { ...cmosOptions.detectionOptions }
339
+ : undefined;
340
+ this.cmosTelemetrySource = cmosOptions.telemetrySource ?? DEFAULT_CMOS_TELEMETRY_SOURCE;
341
+ const syncOptions = this.cmosIntegrationEnabled ? cmosOptions.sync : undefined;
342
+ this.cmosSyncTelemetrySource =
343
+ syncOptions?.telemetrySource ?? DEFAULT_CMOS_SYNC_TELEMETRY_SOURCE;
344
+ if (this.cmosIntegrationEnabled && syncOptions && syncOptions.enabled === true) {
345
+ const { service, automation, telemetrySource: _ignored, ...serviceOptions } = syncOptions;
346
+ const resolvedOptions = {
347
+ ...serviceOptions,
348
+ projectRoot: serviceOptions.projectRoot ?? this.cmosProjectRoot,
349
+ sessionsPath: serviceOptions.sessionsPath ?? sessionsPath,
350
+ detector: serviceOptions.detector ?? cmos_detector_1.CmosDetector.getInstance(),
351
+ };
352
+ this.cmosSyncService = service ?? new cmos_sync_1.CmosSyncService(resolvedOptions);
353
+ this.cmosSyncAutomation = this.normalizeSyncAutomationOptions(automation);
354
+ }
355
+ if (this.cmosIntegrationEnabled) {
356
+ this.runCmosDetection(cmosOptions.detectionOptions?.forceRefresh === true);
357
+ }
358
+ }
359
+ on(event, listener) {
360
+ this.emitter.on(event, listener);
361
+ return this;
362
+ }
363
+ off(event, listener) {
364
+ this.emitter.off(event, listener);
365
+ return this;
366
+ }
367
+ once(event, listener) {
368
+ this.emitter.once(event, listener);
369
+ return this;
370
+ }
371
+ async getState() {
372
+ return this.stateManager.getState();
373
+ }
374
+ async getCmosDetection(options = {}) {
375
+ if (!this.cmosIntegrationEnabled) {
376
+ return null;
377
+ }
378
+ if (options.forceRefresh) {
379
+ return this.runCmosDetection(true);
380
+ }
381
+ if (this.cmosDetectionResult) {
382
+ return this.cmosDetectionResult;
383
+ }
384
+ if (!this.cmosDetectionPromise) {
385
+ return this.runCmosDetection(false);
386
+ }
387
+ return this.cmosDetectionPromise;
388
+ }
389
+ async getMissionState(missionId) {
390
+ return this.stateManager.getMission(missionId);
391
+ }
392
+ async registerWorkflow(missionIds, options = {}) {
393
+ const now = this.nowIso();
394
+ const uniqueIds = Array.from(new Set(missionIds.filter(Boolean)));
395
+ const state = await this.stateManager.update((snapshot) => {
396
+ if (options.resetQueue) {
397
+ snapshot.workflow.queue = [...uniqueIds];
398
+ }
399
+ else {
400
+ for (const missionId of uniqueIds) {
401
+ if (missionId !== snapshot.workflow.activeMission &&
402
+ !snapshot.workflow.queue.includes(missionId)) {
403
+ snapshot.workflow.queue.push(missionId);
404
+ }
405
+ }
406
+ }
407
+ for (const missionId of uniqueIds) {
408
+ if (!snapshot.missions[missionId]) {
409
+ snapshot.missions[missionId] = createMissionState(missionId, now);
410
+ }
411
+ }
412
+ });
413
+ this.emit('stateChanged', state);
414
+ return state;
415
+ }
416
+ async advanceWorkflow() {
417
+ const now = this.nowIso();
418
+ const currentState = await this.stateManager.getState();
419
+ const activeMissionId = currentState.workflow.activeMission;
420
+ if (activeMissionId) {
421
+ const activeMission = currentState.missions[activeMissionId];
422
+ if (activeMission &&
423
+ activeMission.status !== 'completed' &&
424
+ activeMission.status !== 'blocked') {
425
+ return currentState;
426
+ }
427
+ }
428
+ const state = await this.stateManager.update((snapshot) => {
429
+ const previousActive = snapshot.workflow.activeMission;
430
+ if (previousActive) {
431
+ snapshot.workflow.activeMission = undefined;
432
+ snapshot.workflow.completed = ensureUnique(snapshot.workflow.completed, previousActive);
433
+ }
434
+ const nextMissionId = snapshot.workflow.queue.shift();
435
+ if (!nextMissionId) {
436
+ return;
437
+ }
438
+ const mission = snapshot.missions[nextMissionId] ?? createMissionState(nextMissionId, now);
439
+ const priorPhase = mission.phase;
440
+ if (mission.phase === 'idle') {
441
+ mission.phase = 'planning';
442
+ }
443
+ if (mission.status === 'queued') {
444
+ mission.status = 'current';
445
+ }
446
+ mission.updatedAt = now;
447
+ mission.history.push(this.buildMissionEvent('workflow_routed', now, {
448
+ from: priorPhase,
449
+ to: mission.phase,
450
+ }));
451
+ snapshot.missions[nextMissionId] = mission;
452
+ snapshot.workflow.activeMission = nextMissionId;
453
+ });
454
+ if (state.workflow.activeMission) {
455
+ this.emit('workflowAdvanced', { missionId: state.workflow.activeMission, ts: now });
456
+ }
457
+ this.emit('stateChanged', state);
458
+ return state;
459
+ }
460
+ async startMission(missionId, options = {}) {
461
+ const now = this.nowIso();
462
+ const previous = await this.stateManager.getMission(missionId);
463
+ const previousPhase = previous?.phase ?? 'idle';
464
+ const state = await this.stateManager.update((snapshot) => {
465
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, now);
466
+ const fromPhase = mission.phase;
467
+ const toPhase = options.phase ?? 'execution';
468
+ const phaseChanged = fromPhase !== toPhase;
469
+ mission.phase = toPhase;
470
+ mission.status = 'in_progress';
471
+ mission.objective = options.objective ?? mission.objective;
472
+ mission.currentSubMission = options.currentSubMission ?? mission.currentSubMission;
473
+ mission.notes = options.notes ?? mission.notes;
474
+ mission.tags = options.tags ?? mission.tags;
475
+ mission.metadata = options.metadata ?? mission.metadata;
476
+ mission.startedAt = mission.startedAt ?? now;
477
+ mission.updatedAt = now;
478
+ mission.history.push(this.buildMissionEvent('mission_started', now, {
479
+ currentSubMission: mission.currentSubMission,
480
+ }));
481
+ if (phaseChanged) {
482
+ mission.history.push(this.buildMissionEvent('phase_transition', now, {
483
+ from: fromPhase,
484
+ to: toPhase,
485
+ reason: 'mission_start',
486
+ }));
487
+ }
488
+ snapshot.missions[missionId] = mission;
489
+ snapshot.workflow.activeMission = missionId;
490
+ snapshot.workflow.queue = removeValue(snapshot.workflow.queue, missionId);
491
+ snapshot.workflow.paused = removeValue(snapshot.workflow.paused, missionId);
492
+ });
493
+ const currentPhase = state.missions[missionId]?.phase ?? previousPhase;
494
+ if (currentPhase !== previousPhase) {
495
+ this.emit('phaseTransition', {
496
+ missionId,
497
+ from: previousPhase,
498
+ to: currentPhase,
499
+ ts: now,
500
+ reason: 'mission_start',
501
+ });
502
+ }
503
+ this.emit('stateChanged', state);
504
+ const missionState = state.missions[missionId];
505
+ if (missionState) {
506
+ await this.observability.recordEvent({
507
+ missionId,
508
+ category: 'mission',
509
+ type: 'mission_started',
510
+ status: missionState.status,
511
+ data: {
512
+ phase: missionState.phase,
513
+ objective: missionState.objective,
514
+ tags: missionState.tags,
515
+ currentSubMission: missionState.currentSubMission,
516
+ },
517
+ });
518
+ }
519
+ await this.recordMissionSessionEvent('mission_start', {
520
+ ts: now,
521
+ mission: missionId,
522
+ action: 'start',
523
+ status: missionState?.status ?? 'in_progress',
524
+ agent: options.agent,
525
+ summary: options.summary ?? missionState?.objective,
526
+ });
527
+ return state;
528
+ }
529
+ async updatePhase(missionId, phase, options = {}) {
530
+ const now = this.nowIso();
531
+ const previous = await this.stateManager.getMission(missionId);
532
+ const previousPhase = previous?.phase ?? 'idle';
533
+ const state = await this.stateManager.update((snapshot) => {
534
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, now);
535
+ const fromPhase = mission.phase;
536
+ mission.phase = phase;
537
+ mission.currentSubMission = options.currentSubMission ?? mission.currentSubMission;
538
+ mission.updatedAt = now;
539
+ if (fromPhase !== phase) {
540
+ mission.history.push(this.buildMissionEvent('phase_transition', now, {
541
+ from: fromPhase,
542
+ to: phase,
543
+ reason: options.reason,
544
+ }));
545
+ }
546
+ snapshot.missions[missionId] = mission;
547
+ });
548
+ if (phase !== previousPhase) {
549
+ this.emit('phaseTransition', {
550
+ missionId,
551
+ from: previousPhase,
552
+ to: phase,
553
+ ts: now,
554
+ reason: options.reason,
555
+ });
556
+ }
557
+ this.emit('stateChanged', state);
558
+ if (phase !== previousPhase) {
559
+ const missionState = state.missions[missionId];
560
+ if (missionState) {
561
+ await this.observability.recordEvent({
562
+ missionId,
563
+ category: 'mission',
564
+ type: 'phase_transition',
565
+ status: missionState.status,
566
+ data: {
567
+ from: previousPhase,
568
+ to: missionState.phase,
569
+ reason: options.reason,
570
+ },
571
+ });
572
+ }
573
+ }
574
+ const shouldPropagate = options.autoPropagate ?? this.autoPropagationPhases.has(phase);
575
+ if (shouldPropagate) {
576
+ await this.triggerContextPropagation(missionId);
577
+ }
578
+ return state;
579
+ }
580
+ async beginSubMission(missionId, subMissionId, options = {}) {
581
+ const now = this.nowIso();
582
+ let telemetryContext;
583
+ const guardrailLimit = this.maxActiveSubMissions;
584
+ const state = await this.stateManager.update((snapshot) => {
585
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, now);
586
+ const stack = mission.activeSubMissions ?? (mission.activeSubMissions = []);
587
+ const alreadyActive = stack.some((entry) => entry.id === subMissionId);
588
+ if (alreadyActive) {
589
+ throw new Error(`Sub-mission ${subMissionId} is already active for mission ${missionId}`);
590
+ }
591
+ if (guardrailLimit !== null && stack.length >= guardrailLimit) {
592
+ (0, telemetry_1.emitTelemetryWarning)(this.delegationTelemetrySource, 'sub_mission_guardrail_triggered', {
593
+ missionId,
594
+ attemptedSubMission: subMissionId,
595
+ activeCount: stack.length,
596
+ limit: guardrailLimit,
597
+ });
598
+ throw new Error(`Cannot begin sub-mission ${subMissionId} for mission ${missionId}: active sub-mission limit (${guardrailLimit}) reached.`);
599
+ }
600
+ const parent = mission.currentSubMission;
601
+ const contextSnapshot = mission.lastContext ? cloneState(mission.lastContext) : undefined;
602
+ stack.push({
603
+ id: subMissionId,
604
+ startedAt: now,
605
+ parent: parent ?? undefined,
606
+ objective: options.objective,
607
+ metadata: options.metadata ? { ...options.metadata } : undefined,
608
+ previousContext: contextSnapshot,
609
+ });
610
+ mission.currentSubMission = subMissionId;
611
+ mission.updatedAt = now;
612
+ mission.history.push(this.buildMissionEvent('sub_mission_started', now, {
613
+ subMissionId,
614
+ parent,
615
+ }));
616
+ telemetryContext = {
617
+ missionId,
618
+ subMissionId,
619
+ parent,
620
+ activeCount: stack.length,
621
+ guardrailLimit,
622
+ };
623
+ snapshot.missions[missionId] = mission;
624
+ });
625
+ this.emit('stateChanged', state);
626
+ if (telemetryContext) {
627
+ (0, telemetry_1.emitTelemetryInfo)(this.delegationTelemetrySource, 'sub_mission_started', telemetryContext);
628
+ }
629
+ const missionState = state.missions[missionId];
630
+ if (missionState) {
631
+ await this.observability.recordEvent({
632
+ missionId,
633
+ category: 'sub_mission',
634
+ type: 'sub_mission_started',
635
+ status: missionState.status,
636
+ data: {
637
+ subMissionId,
638
+ parent: telemetryContext?.parent,
639
+ activeCount: missionState.activeSubMissions?.length ?? 0,
640
+ },
641
+ });
642
+ }
643
+ return state;
644
+ }
645
+ async recordSubMissionResult(missionId, result, options = {}) {
646
+ const now = this.nowIso();
647
+ const stored = {
648
+ missionId: result.missionId,
649
+ input: result.input,
650
+ output: result.output,
651
+ status: result.status,
652
+ timestamp: result.timestamp.toISOString(),
653
+ metadata: result.metadata,
654
+ };
655
+ const state = await this.stateManager.update((snapshot) => {
656
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, now);
657
+ const shouldDedupe = options.dedupe !== false;
658
+ if (shouldDedupe) {
659
+ const exists = mission.subMissions.some((entry) => entry.missionId === stored.missionId && entry.timestamp === stored.timestamp);
660
+ if (!exists) {
661
+ mission.subMissions.push(stored);
662
+ }
663
+ }
664
+ else {
665
+ mission.subMissions.push(stored);
666
+ }
667
+ mission.history.push(this.buildMissionEvent('sub_mission_recorded', now, {
668
+ subMissionId: stored.missionId,
669
+ status: stored.status,
670
+ }));
671
+ mission.updatedAt = now;
672
+ snapshot.missions[missionId] = mission;
673
+ });
674
+ this.emit('stateChanged', state);
675
+ if (options.autoPropagate) {
676
+ await this.triggerContextPropagation(missionId);
677
+ }
678
+ return state;
679
+ }
680
+ async completeSubMission(missionId, subMissionId, options) {
681
+ const timestampDate = options.timestamp ?? this.clock();
682
+ const timestamp = timestampDate.toISOString();
683
+ const autoPropagate = options.autoPropagate !== false;
684
+ let completionContext;
685
+ const state = await this.stateManager.update((snapshot) => {
686
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, timestamp);
687
+ const stack = mission.activeSubMissions ?? (mission.activeSubMissions = []);
688
+ const active = stack[stack.length - 1];
689
+ if (!active || active.id !== subMissionId) {
690
+ (0, telemetry_1.emitTelemetryError)(this.delegationTelemetrySource, 'sub_mission_mismatch', {
691
+ missionId,
692
+ subMissionId,
693
+ activeSubMission: active?.id,
694
+ });
695
+ throw new Error(`Sub-mission ${subMissionId} is not active for mission ${missionId}`);
696
+ }
697
+ const stored = {
698
+ missionId: subMissionId,
699
+ input: options.input,
700
+ output: options.output,
701
+ status: options.status,
702
+ timestamp,
703
+ metadata: options.metadata ? { ...options.metadata } : undefined,
704
+ };
705
+ mission.subMissions.push(stored);
706
+ stack.pop();
707
+ mission.currentSubMission = active.parent;
708
+ mission.updatedAt = timestamp;
709
+ mission.history.push(this.buildMissionEvent('sub_mission_recorded', timestamp, {
710
+ subMissionId,
711
+ status: options.status,
712
+ }));
713
+ mission.history.push(this.buildMissionEvent('sub_mission_committed', timestamp, {
714
+ subMissionId,
715
+ status: options.status,
716
+ }));
717
+ const startedMs = Date.parse(active.startedAt);
718
+ const durationMs = Number.isNaN(startedMs)
719
+ ? undefined
720
+ : Math.max(0, Date.parse(timestamp) - startedMs);
721
+ completionContext = {
722
+ missionId,
723
+ subMissionId,
724
+ status: options.status,
725
+ recordedAt: timestamp,
726
+ durationMs,
727
+ remainingActive: stack.length,
728
+ };
729
+ snapshot.missions[missionId] = mission;
730
+ });
731
+ this.emit('stateChanged', state);
732
+ if (completionContext) {
733
+ (0, telemetry_1.emitTelemetryInfo)(this.delegationTelemetrySource, 'sub_mission_completed', completionContext);
734
+ }
735
+ const missionState = state.missions[missionId];
736
+ if (missionState) {
737
+ await this.observability.recordEvent({
738
+ missionId,
739
+ category: 'sub_mission',
740
+ type: 'sub_mission_completed',
741
+ status: options.status,
742
+ data: {
743
+ subMissionId,
744
+ status: options.status,
745
+ durationMs: completionContext?.durationMs,
746
+ remainingActive: missionState.activeSubMissions?.length ?? 0,
747
+ },
748
+ });
749
+ }
750
+ if (autoPropagate) {
751
+ await this.triggerContextPropagation(missionId);
752
+ return this.stateManager.getState();
753
+ }
754
+ return state;
755
+ }
756
+ async rollbackSubMission(missionId, subMissionId, options = {}) {
757
+ const now = this.nowIso();
758
+ const restoreContext = options.restoreContext !== false;
759
+ let rollbackContext;
760
+ const state = await this.stateManager.update((snapshot) => {
761
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, now);
762
+ const stack = mission.activeSubMissions ?? (mission.activeSubMissions = []);
763
+ const active = stack[stack.length - 1];
764
+ if (!active || active.id !== subMissionId) {
765
+ (0, telemetry_1.emitTelemetryError)(this.delegationTelemetrySource, 'sub_mission_mismatch', {
766
+ missionId,
767
+ subMissionId,
768
+ activeSubMission: active?.id,
769
+ phase: 'rollback',
770
+ });
771
+ throw new Error(`Sub-mission ${subMissionId} is not active for mission ${missionId}`);
772
+ }
773
+ stack.pop();
774
+ mission.currentSubMission = active.parent;
775
+ if (restoreContext && active.previousContext) {
776
+ mission.lastContext = cloneState(active.previousContext);
777
+ }
778
+ mission.updatedAt = now;
779
+ mission.history.push(this.buildMissionEvent('sub_mission_rolled_back', now, {
780
+ subMissionId,
781
+ reason: options.reason,
782
+ }));
783
+ rollbackContext = {
784
+ missionId,
785
+ subMissionId,
786
+ reason: options.reason,
787
+ restoredContext: restoreContext && Boolean(active.previousContext),
788
+ remainingActive: stack.length,
789
+ };
790
+ snapshot.missions[missionId] = mission;
791
+ });
792
+ this.emit('stateChanged', state);
793
+ if (rollbackContext) {
794
+ (0, telemetry_1.emitTelemetryWarning)(this.delegationTelemetrySource, 'sub_mission_rolled_back', rollbackContext);
795
+ }
796
+ const missionState = state.missions[missionId];
797
+ if (missionState) {
798
+ await this.observability.recordEvent({
799
+ missionId,
800
+ category: 'sub_mission',
801
+ type: 'sub_mission_rolled_back',
802
+ status: missionState.status,
803
+ data: {
804
+ subMissionId,
805
+ reason: options.reason,
806
+ remainingActive: missionState.activeSubMissions?.length ?? 0,
807
+ },
808
+ });
809
+ }
810
+ return state;
811
+ }
812
+ async completeMission(missionId, options = {}) {
813
+ const now = this.nowIso();
814
+ const previous = await this.stateManager.getMission(missionId);
815
+ const previousPhase = previous?.phase ?? 'idle';
816
+ const previousStatus = previous?.status ?? 'in_progress';
817
+ const activeSubMissions = previous?.activeSubMissions ?? [];
818
+ if (activeSubMissions.length > 0) {
819
+ await this.logMissionCompletionBlocked(missionId, previousStatus, activeSubMissions.map((entry) => entry.id));
820
+ throw new Error(`Mission ${missionId} cannot be completed while sub-missions remain active.`);
821
+ }
822
+ let state;
823
+ try {
824
+ state = await this.stateManager.update((snapshot) => {
825
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, now);
826
+ const fromPhase = mission.phase;
827
+ const remainingActive = mission.activeSubMissions ?? [];
828
+ if (remainingActive.length > 0) {
829
+ throw new Error(`Mission ${missionId} cannot be completed while sub-missions remain active.`);
830
+ }
831
+ mission.phase = 'completed';
832
+ mission.status = 'completed';
833
+ mission.completedAt = now;
834
+ mission.updatedAt = now;
835
+ mission.notes = options.notes ?? mission.notes;
836
+ mission.metadata = options.metadata ?? mission.metadata;
837
+ mission.activeSubMissions = [];
838
+ mission.currentSubMission = undefined;
839
+ mission.history.push(this.buildMissionEvent('mission_completed', now, {
840
+ summary: options.summary,
841
+ }));
842
+ if (fromPhase !== 'completed') {
843
+ mission.history.push(this.buildMissionEvent('phase_transition', now, {
844
+ from: fromPhase,
845
+ to: 'completed',
846
+ reason: 'mission_completed',
847
+ }));
848
+ }
849
+ snapshot.missions[missionId] = mission;
850
+ if (snapshot.workflow.activeMission === missionId) {
851
+ snapshot.workflow.activeMission = undefined;
852
+ }
853
+ snapshot.workflow.completed = ensureUnique(snapshot.workflow.completed, missionId);
854
+ });
855
+ }
856
+ catch (error) {
857
+ if (error instanceof Error && error.message.includes('sub-missions remain active')) {
858
+ const latest = await this.stateManager.getMission(missionId);
859
+ const latestIds = latest?.activeSubMissions?.map((entry) => entry.id) ?? [];
860
+ if (latestIds.length > 0) {
861
+ await this.logMissionCompletionBlocked(missionId, latest?.status ?? previousStatus, latestIds);
862
+ }
863
+ }
864
+ throw error;
865
+ }
866
+ const currentPhase = state.missions[missionId]?.phase ?? previousPhase;
867
+ if (currentPhase !== previousPhase) {
868
+ this.emit('phaseTransition', {
869
+ missionId,
870
+ from: previousPhase,
871
+ to: currentPhase,
872
+ ts: now,
873
+ reason: 'mission_completed',
874
+ });
875
+ }
876
+ this.emit('stateChanged', state);
877
+ const missionState = state.missions[missionId];
878
+ if (missionState) {
879
+ await this.observability.recordEvent({
880
+ missionId,
881
+ category: 'mission',
882
+ type: 'mission_completed',
883
+ status: missionState.status,
884
+ data: {
885
+ summary: options.summary,
886
+ },
887
+ });
888
+ await this.observability.recordQualityGate({
889
+ missionId,
890
+ gate: 'mission_completion',
891
+ status: 'passed',
892
+ detail: 'Mission completed successfully.',
893
+ data: {
894
+ summary: options.summary,
895
+ },
896
+ });
897
+ }
898
+ await this.recordMissionSessionEvent('mission_complete', {
899
+ ts: now,
900
+ mission: missionId,
901
+ action: 'complete',
902
+ status: missionState?.status ?? 'completed',
903
+ agent: options.agent,
904
+ summary: options.summary,
905
+ next_hint: options.nextHint,
906
+ });
907
+ return state;
908
+ }
909
+ async pauseMission(missionId, options = {}) {
910
+ const current = await this.stateManager.getMission(missionId);
911
+ if (!current || current.status === 'paused') {
912
+ return this.stateManager.getState();
913
+ }
914
+ const now = this.nowIso();
915
+ const state = await this.stateManager.update((snapshot) => {
916
+ const mission = snapshot.missions[missionId];
917
+ /* istanbul ignore if -- mission presence guaranteed by pre-check */
918
+ if (!mission) {
919
+ return;
920
+ }
921
+ mission.status = 'paused';
922
+ mission.updatedAt = now;
923
+ mission.history.push(this.buildMissionEvent('mission_paused', now, {
924
+ note: options.note,
925
+ }));
926
+ snapshot.workflow.paused = ensureUnique(snapshot.workflow.paused, missionId);
927
+ if (snapshot.workflow.activeMission === missionId) {
928
+ snapshot.workflow.activeMission = undefined;
929
+ }
930
+ });
931
+ this.emit('missionPaused', { missionId, ts: now, note: options.note });
932
+ this.emit('stateChanged', state);
933
+ return state;
934
+ }
935
+ async resumeMission(missionId) {
936
+ const current = await this.stateManager.getMission(missionId);
937
+ if (!current || current.status !== 'paused') {
938
+ return this.stateManager.getState();
939
+ }
940
+ const now = this.nowIso();
941
+ const state = await this.stateManager.update((snapshot) => {
942
+ const mission = snapshot.missions[missionId];
943
+ /* istanbul ignore if -- mission presence guaranteed by pre-check */
944
+ if (!mission) {
945
+ return;
946
+ }
947
+ mission.status = 'in_progress';
948
+ if (mission.phase === 'idle') {
949
+ mission.phase = 'execution';
950
+ }
951
+ mission.updatedAt = now;
952
+ mission.history.push(this.buildMissionEvent('mission_resumed', now));
953
+ snapshot.workflow.activeMission = missionId;
954
+ snapshot.workflow.paused = removeValue(snapshot.workflow.paused, missionId);
955
+ });
956
+ this.emit('missionResumed', { missionId, ts: now });
957
+ this.emit('stateChanged', state);
958
+ return state;
959
+ }
960
+ async logMissionCompletionBlocked(missionId, status, activeSubMissions) {
961
+ await this.observability.recordEvent({
962
+ missionId,
963
+ category: 'mission',
964
+ type: 'mission_completion_blocked',
965
+ status,
966
+ data: {
967
+ activeSubMissions: activeSubMissions.slice(),
968
+ },
969
+ });
970
+ await this.observability.recordQualityGate({
971
+ missionId,
972
+ gate: 'mission_completion',
973
+ status: 'failed',
974
+ detail: 'Active sub-missions must be completed before mission completion.',
975
+ data: {
976
+ activeSubMissions: activeSubMissions.slice(),
977
+ },
978
+ });
979
+ (0, telemetry_1.emitTelemetryError)(this.governanceTelemetrySource, 'mission_completion_blocked', {
980
+ missionId,
981
+ activeSubMissions,
982
+ });
983
+ }
984
+ async runBoomerangWorkflow(missionId, steps, options = {}) {
985
+ if (!steps || steps.length === 0) {
986
+ throw new Error('Boomerang workflow requires at least one step');
987
+ }
988
+ const workflow = new boomerang_workflow_1.BoomerangWorkflow({
989
+ missionId,
990
+ steps,
991
+ runtimeRoot: options.runtimeRoot ?? this.boomerangRuntimeRoot,
992
+ retentionDays: options.retentionDays ?? this.boomerangRetentionDays,
993
+ maxRetries: options.maxRetries ?? this.boomerangMaxRetries,
994
+ telemetrySource: options.telemetrySource ?? `Boomerang:${missionId}`,
995
+ clock: options.clock ?? this.clock,
996
+ });
997
+ const summary = await workflow.execute(options.initialPayload);
998
+ const state = await this.stateManager.update((snapshot) => {
999
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, summary.startedAt);
1000
+ const previousRuns = mission.boomerangMetrics?.runs ?? 0;
1001
+ mission.boomerangMetrics = {
1002
+ runs: previousRuns + 1,
1003
+ lastRun: {
1004
+ startedAt: summary.startedAt,
1005
+ completedAt: summary.completedAt,
1006
+ status: summary.status,
1007
+ completedSteps: [...summary.completedSteps],
1008
+ failedStep: summary.failedStep,
1009
+ fallbackReason: summary.fallbackReason,
1010
+ diagnostics: { ...summary.diagnostics },
1011
+ lastOutput: summary.lastOutput,
1012
+ },
1013
+ };
1014
+ mission.history.push(this.buildMissionEvent('boomerang_run_completed', summary.completedAt, {
1015
+ status: summary.status,
1016
+ completedSteps: summary.completedSteps,
1017
+ failedStep: summary.failedStep,
1018
+ fallbackReason: summary.fallbackReason,
1019
+ retainedCheckpoints: summary.diagnostics.retainedCheckpoints,
1020
+ }));
1021
+ if (summary.status === 'fallback') {
1022
+ mission.history.push(this.buildMissionEvent('boomerang_fallback_triggered', summary.completedAt, {
1023
+ failedStep: summary.failedStep,
1024
+ fallbackReason: summary.fallbackReason,
1025
+ attempts: summary.diagnostics.attempts,
1026
+ }));
1027
+ }
1028
+ mission.updatedAt = summary.completedAt;
1029
+ snapshot.missions[missionId] = mission;
1030
+ });
1031
+ this.emit('stateChanged', state);
1032
+ await this.observability.recordEvent({
1033
+ missionId,
1034
+ category: 'workflow',
1035
+ type: 'boomerang_run_completed',
1036
+ status: summary.status,
1037
+ data: {
1038
+ completedSteps: summary.completedSteps,
1039
+ failedStep: summary.failedStep,
1040
+ fallbackReason: summary.fallbackReason,
1041
+ retainedCheckpoints: summary.diagnostics.retainedCheckpoints,
1042
+ },
1043
+ });
1044
+ const gateStatus = summary.status === 'success' ? 'passed' : 'failed';
1045
+ const gateDetail = summary.status === 'success'
1046
+ ? 'Boomerang workflow completed successfully.'
1047
+ : summary.status === 'fallback'
1048
+ ? 'Boomerang workflow fallback triggered.'
1049
+ : 'Boomerang workflow failed.';
1050
+ await this.observability.recordQualityGate({
1051
+ missionId,
1052
+ gate: 'boomerang_run_status',
1053
+ status: gateStatus,
1054
+ detail: gateDetail,
1055
+ data: {
1056
+ status: summary.status,
1057
+ failedStep: summary.failedStep,
1058
+ fallbackReason: summary.fallbackReason,
1059
+ },
1060
+ });
1061
+ return summary;
1062
+ }
1063
+ async runSelfImprovementLoop(missionId, handlers, options) {
1064
+ const mergedOptions = {
1065
+ ...(options ?? {}),
1066
+ telemetrySource: options?.telemetrySource ?? `RSIP:${missionId}`,
1067
+ clock: options?.clock ?? this.clock,
1068
+ };
1069
+ const loopSummary = await (0, rsip_loop_1.runRSIPLoop)(handlers, mergedOptions);
1070
+ const state = await this.stateManager.update((snapshot) => {
1071
+ const mission = snapshot.missions[missionId] ?? createMissionState(missionId, loopSummary.startedAt);
1072
+ const previous = mission.rsipMetrics ?? { runs: 0, totalIterations: 0 };
1073
+ mission.rsipMetrics = {
1074
+ runs: previous.runs + 1,
1075
+ totalIterations: previous.totalIterations + loopSummary.iterations.length,
1076
+ lastRun: {
1077
+ startedAt: loopSummary.startedAt,
1078
+ completedAt: loopSummary.completedAt,
1079
+ converged: loopSummary.converged,
1080
+ reason: loopSummary.reason,
1081
+ iterations: loopSummary.iterations.map((iteration, index) => ({
1082
+ index: index + 1,
1083
+ improvementScore: iteration.improvementScore,
1084
+ summary: iteration.summary,
1085
+ })),
1086
+ },
1087
+ };
1088
+ mission.history.push(this.buildMissionEvent('self_improvement_run', loopSummary.completedAt, {
1089
+ iterations: loopSummary.iterations.length,
1090
+ converged: loopSummary.converged,
1091
+ reason: loopSummary.reason,
1092
+ }));
1093
+ mission.updatedAt = loopSummary.completedAt;
1094
+ snapshot.missions[missionId] = mission;
1095
+ });
1096
+ const mission = state.missions[missionId];
1097
+ if (mission?.rsipMetrics?.lastRun) {
1098
+ this.emit('selfImprovementRun', { missionId, summary: mission.rsipMetrics.lastRun });
1099
+ }
1100
+ this.emit('stateChanged', state);
1101
+ await this.observability.recordEvent({
1102
+ missionId,
1103
+ category: 'workflow',
1104
+ type: 'self_improvement_run',
1105
+ status: loopSummary.converged ? 'converged' : (loopSummary.reason ?? 'stopped'),
1106
+ data: {
1107
+ iterations: loopSummary.iterations.length,
1108
+ converged: loopSummary.converged,
1109
+ reason: loopSummary.reason,
1110
+ },
1111
+ });
1112
+ await this.observability.recordQualityGate({
1113
+ missionId,
1114
+ gate: 'self_improvement_convergence',
1115
+ status: loopSummary.converged ? 'passed' : 'warning',
1116
+ detail: loopSummary.converged
1117
+ ? 'RSIP loop converged successfully.'
1118
+ : `RSIP loop ended without convergence (${loopSummary.reason ?? 'unknown'}).`,
1119
+ data: {
1120
+ iterations: loopSummary.iterations.length,
1121
+ converged: loopSummary.converged,
1122
+ reason: loopSummary.reason,
1123
+ },
1124
+ });
1125
+ return loopSummary;
1126
+ }
1127
+ async buildDynamicQuery(missionId, baseQuery, options = {}) {
1128
+ const historyLimit = options.historyLimit ?? this.historyLimit;
1129
+ const events = await this.historyAnalyzer.loadEvents();
1130
+ const relevantEvents = events
1131
+ .filter((event) => event.mission === missionId)
1132
+ .slice(-historyLimit);
1133
+ const state = await this.stateManager.getState();
1134
+ const mission = state.missions[missionId] ?? createMissionState(missionId, this.nowIso());
1135
+ const lines = [];
1136
+ lines.push(`Mission ${missionId} Agentic Query`);
1137
+ if (mission.objective) {
1138
+ lines.push(`Objective: ${mission.objective}`);
1139
+ }
1140
+ lines.push(`Status: ${mission.status}`);
1141
+ lines.push(`Phase: ${mission.phase}`);
1142
+ if (mission.currentSubMission) {
1143
+ lines.push(`Active Sub-Mission: ${mission.currentSubMission}`);
1144
+ }
1145
+ const includeSummary = options.includeContextSummary ?? true;
1146
+ if (includeSummary && mission.lastContext) {
1147
+ lines.push(`Latest Context Summary (${mission.lastContext.generatedAt}):`);
1148
+ lines.push(mission.lastContext.summary.summary);
1149
+ }
1150
+ if ((!includeSummary || !mission.lastContext) && options.supplementalContext) {
1151
+ lines.push('Supplemental Context:');
1152
+ lines.push(options.supplementalContext);
1153
+ }
1154
+ if (relevantEvents.length > 0) {
1155
+ lines.push('Recent Mission History:');
1156
+ for (const event of relevantEvents) {
1157
+ const parts = [`[${event.ts}]`, event.action.toUpperCase()];
1158
+ if (event.status) {
1159
+ parts.push(`(${event.status})`);
1160
+ }
1161
+ if (event.summary) {
1162
+ parts.push(`→ ${event.summary}`);
1163
+ }
1164
+ if (event.next_hint) {
1165
+ parts.push(`next: ${event.next_hint}`);
1166
+ }
1167
+ lines.push(parts.join(' '));
1168
+ }
1169
+ }
1170
+ lines.push('Primary Prompt:');
1171
+ lines.push(baseQuery.trim());
1172
+ const query = lines.join('\n');
1173
+ const generatedAt = this.nowIso();
1174
+ const snapshot = {
1175
+ generatedAt,
1176
+ query,
1177
+ baseQuery,
1178
+ historyEvents: relevantEvents,
1179
+ };
1180
+ const updatedState = await this.stateManager.update((mutable) => {
1181
+ const target = mutable.missions[missionId] ?? createMissionState(missionId, generatedAt);
1182
+ target.lastDynamicQuery = snapshot;
1183
+ target.history.push(this.buildMissionEvent('query_built', generatedAt, {
1184
+ historyCount: relevantEvents.length,
1185
+ }));
1186
+ target.updatedAt = generatedAt;
1187
+ mutable.missions[missionId] = target;
1188
+ });
1189
+ this.emit('queryReady', { missionId, query, baseQuery, generatedAt });
1190
+ this.emit('stateChanged', updatedState);
1191
+ return query;
1192
+ }
1193
+ async triggerContextPropagation(missionId) {
1194
+ const state = await this.stateManager.getState();
1195
+ const mission = state.missions[missionId];
1196
+ /* istanbul ignore if -- mission existence ensured before propagation */
1197
+ if (!mission) {
1198
+ return;
1199
+ }
1200
+ const completedResults = mission.subMissions.map((entry) => ({
1201
+ missionId: entry.missionId,
1202
+ input: entry.input,
1203
+ output: entry.output,
1204
+ status: entry.status,
1205
+ timestamp: new Date(entry.timestamp),
1206
+ metadata: entry.metadata,
1207
+ }));
1208
+ const relatedMissionIds = this.collectRelatedMissionIds(state, missionId);
1209
+ const summary = await this.propagator.propagateContext(mission.objective ?? missionId, completedResults, mission.currentSubMission ?? missionId, {
1210
+ includeHistory: true,
1211
+ relatedMissionIds,
1212
+ });
1213
+ const generatedAt = this.nowIso();
1214
+ const contextSnapshot = {
1215
+ generatedAt,
1216
+ summary,
1217
+ };
1218
+ const updatedState = await this.stateManager.update((mutable) => {
1219
+ const target = mutable.missions[missionId] ?? createMissionState(missionId, generatedAt);
1220
+ target.lastContext = contextSnapshot;
1221
+ target.history.push(this.buildMissionEvent('context_propagated', generatedAt, {
1222
+ strategy: summary.strategy,
1223
+ tokenCount: summary.tokenCount,
1224
+ retrievedChunks: summary.retrievedChunks.length,
1225
+ }));
1226
+ target.updatedAt = generatedAt;
1227
+ mutable.missions[missionId] = target;
1228
+ });
1229
+ this.emit('contextUpdated', { missionId, context: contextSnapshot });
1230
+ this.emit('stateChanged', updatedState);
1231
+ }
1232
+ collectRelatedMissionIds(state, missionId) {
1233
+ const related = [
1234
+ ...state.workflow.completed.slice(-3),
1235
+ ...state.workflow.queue.slice(0, 2),
1236
+ ].filter((id) => id && id !== missionId);
1237
+ return Array.from(new Set(related));
1238
+ }
1239
+ normalizeSyncAutomationOptions(automation) {
1240
+ const triggers = automation?.triggers && automation.triggers.length > 0
1241
+ ? Array.from(new Set(automation.triggers))
1242
+ : [...DEFAULT_CMOS_SYNC_TRIGGERS];
1243
+ return {
1244
+ includeContexts: automation?.includeContexts ?? false,
1245
+ includeSessionEvents: automation?.includeSessionEvents ?? true,
1246
+ direction: automation?.direction,
1247
+ force: automation?.force,
1248
+ triggers,
1249
+ };
1250
+ }
1251
+ buildMissionEvent(type, ts, payload) {
1252
+ return {
1253
+ ts,
1254
+ type,
1255
+ payload,
1256
+ };
1257
+ }
1258
+ async recordMissionSessionEvent(trigger, event) {
1259
+ await this.appendSessionEvent(event);
1260
+ await this.runCmosAutoSync(trigger);
1261
+ }
1262
+ async appendSessionEvent(event) {
1263
+ const targetPath = await (0, workspace_io_1.resolveWorkspacePath)(this.sessionsPath, {
1264
+ allowRelative: true,
1265
+ baseDir: this.cmosProjectRoot,
1266
+ });
1267
+ await (0, fs_2.ensureDir)((0, path_1.dirname)(targetPath));
1268
+ await fs_1.promises.appendFile(targetPath, `${JSON.stringify(event)}\n`, 'utf-8');
1269
+ }
1270
+ async runCmosAutoSync(trigger) {
1271
+ if (!this.cmosSyncService || !this.cmosSyncAutomation) {
1272
+ return;
1273
+ }
1274
+ const triggers = this.cmosSyncAutomation.triggers ?? DEFAULT_CMOS_SYNC_TRIGGERS;
1275
+ if (triggers.length > 0 && !triggers.includes(trigger)) {
1276
+ return;
1277
+ }
1278
+ const includeContexts = this.cmosSyncAutomation.includeContexts ?? false;
1279
+ const includeSessionEvents = this.cmosSyncAutomation.includeSessionEvents ?? true;
1280
+ if (!includeContexts && !includeSessionEvents) {
1281
+ return;
1282
+ }
1283
+ const request = {
1284
+ direction: this.cmosSyncAutomation.direction,
1285
+ force: this.cmosSyncAutomation.force,
1286
+ includeContexts,
1287
+ includeSessionEvents,
1288
+ };
1289
+ try {
1290
+ const result = await this.cmosSyncService.syncAll(request);
1291
+ this.reportCmosSyncResult(trigger, result);
1292
+ }
1293
+ catch (error) {
1294
+ (0, telemetry_1.emitTelemetryWarning)(this.cmosSyncTelemetrySource, 'cmos_sync_failed', {
1295
+ trigger,
1296
+ error: error instanceof Error ? error.message : String(error),
1297
+ });
1298
+ }
1299
+ }
1300
+ reportCmosSyncResult(trigger, result) {
1301
+ const context = {
1302
+ trigger,
1303
+ status: result.status,
1304
+ ok: result.ok,
1305
+ direction: result.direction,
1306
+ durationMs: result.durationMs,
1307
+ sessionEventsInserted: result.sessionEvents.inserted,
1308
+ sessionEventsSkipped: result.sessionEvents.skipped,
1309
+ warnings: result.warnings,
1310
+ errors: result.errors,
1311
+ };
1312
+ if (result.ok) {
1313
+ (0, telemetry_1.emitTelemetryInfo)(this.cmosSyncTelemetrySource, 'cmos_sync_completed', context);
1314
+ }
1315
+ else {
1316
+ (0, telemetry_1.emitTelemetryWarning)(this.cmosSyncTelemetrySource, 'cmos_sync_partial', context);
1317
+ }
1318
+ }
1319
+ emit(event, payload) {
1320
+ this.emitter.emit(event, payload);
1321
+ }
1322
+ runCmosDetection(forceRefresh) {
1323
+ if (!this.cmosIntegrationEnabled) {
1324
+ return Promise.resolve(null);
1325
+ }
1326
+ const execution = this.executeCmosDetection(forceRefresh);
1327
+ const trackedPromise = execution.finally(() => {
1328
+ if (this.cmosDetectionPromise === trackedPromise) {
1329
+ this.cmosDetectionPromise = null;
1330
+ }
1331
+ });
1332
+ this.cmosDetectionPromise = trackedPromise;
1333
+ return trackedPromise;
1334
+ }
1335
+ async executeCmosDetection(forceRefresh) {
1336
+ try {
1337
+ const detector = this.cmosDetector ?? cmos_detector_1.CmosDetector.getInstance();
1338
+ const detectionOptions = this.buildCmosDetectionOptions(forceRefresh);
1339
+ const result = await detector.detect(this.cmosProjectRoot, detectionOptions);
1340
+ this.cmosDetectionResult = result;
1341
+ (0, telemetry_1.emitTelemetryInfo)(this.cmosTelemetrySource, 'cmos_detection_status', {
1342
+ projectRoot: result.projectRoot,
1343
+ cmosDirectory: result.cmosDirectory,
1344
+ hasCmosDirectory: result.hasCmosDirectory,
1345
+ hasDatabase: result.hasDatabase,
1346
+ databasePath: result.databasePath,
1347
+ checkedAt: result.checkedAt,
1348
+ });
1349
+ return result;
1350
+ }
1351
+ catch (error) {
1352
+ this.cmosDetectionResult = null;
1353
+ (0, telemetry_1.emitTelemetryWarning)(this.cmosTelemetrySource, 'cmos_detection_failed', {
1354
+ error: error instanceof Error ? error.message : String(error),
1355
+ });
1356
+ return null;
1357
+ }
1358
+ }
1359
+ buildCmosDetectionOptions(forceRefresh) {
1360
+ const baseOptions = this.cmosDetectionOptions;
1361
+ if (forceRefresh || baseOptions?.forceRefresh) {
1362
+ return {
1363
+ ...(baseOptions ?? {}),
1364
+ forceRefresh: true,
1365
+ };
1366
+ }
1367
+ return baseOptions;
1368
+ }
1369
+ nowIso() {
1370
+ return this.clock().toISOString();
1371
+ }
1372
+ }
1373
+ exports.AgenticController = AgenticController;
1374
+ AgenticController.DEFAULT_MAX_ACTIVE_SUBMISSIONS = 8;
1375
+ AgenticController.DEFAULT_TELEMETRY_SOURCE = 'AgenticDelegation';
1376
+ //# sourceMappingURL=agentic-controller.js.map