@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,687 @@
1
+ "use strict";
2
+ // ABOUTME: Agent-callable key lifecycle — cmos_auth(action=rotate|revoke|list|reissue|login|login_init|login_complete|logout).
3
+ // ABOUTME: Thin dispatcher over DashboardClient + CredentialStore so agents can self-heal credentials.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.cmosAuthToolDefinition = exports.cmosAuthSchema = exports.CMOS_AUTH_ACTIONS = void 0;
6
+ exports.cmosAuth = cmosAuth;
7
+ exports.formatAuthForLLM = formatAuthForLLM;
8
+ /**
9
+ * `cmos_auth` consolidated tool — Sprint 57 m03 + Sprint 58 m01 + Sprint 59 m02/m03/m04.
10
+ *
11
+ * Gives agents self-service credential actions:
12
+ * - `rotate` — mint a new project-scoped key, keep the old one in a
13
+ * local `pendingRevoke` slot until the dashboard-scheduled
14
+ * `revokeAt` timestamp so in-flight requests don't 401.
15
+ * - `revoke` — hard-revoke a specific `keyId` (or the current project
16
+ * key for `projectRoot`). Dashboard invalidates immediately;
17
+ * local row is removed.
18
+ * - `list` — return the dashboard's `GET /api/keys` tree, optionally
19
+ * filtered to "mine only" (keys spawned by a user-scoped
20
+ * credential currently in this MCP's local store).
21
+ * - `reissue` — manual lost-key recovery. Wraps `recoverProjectKey`
22
+ * (same endpoint, exposed as an explicit agent action).
23
+ * - `login` — RFC 8628 device-code bootstrap as a single blocking call.
24
+ * NOTE: The prompt is invisible in IDE MCP hosts (VSCode,
25
+ * Cursor, Claude Desktop) because the tool blocks polling
26
+ * for the full `expiresIn` window and captured-to-response
27
+ * fields only render on tool return. Prefer `login_init`
28
+ * + `login_complete` for agent-driven auth in chat. Kept
29
+ * for terminal callers where stderr is visible, and for
30
+ * scripts/bootstrap-device-code.ts parity.
31
+ * - `login_init` — Sprint 59 m04: first leg of the IDE-safe two-call flow.
32
+ * Calls `/api/auth/device/code`, returns
33
+ * `{deviceCode, userCode, verificationUri, expiresIn,
34
+ * interval}` immediately (no blocking) so the agent can
35
+ * render the prompt to the user before the code expires.
36
+ * - `login_complete` — Sprint 59 m04: second leg. Polls `/api/auth/device/token`
37
+ * within a bounded `maxWaitSeconds` window and returns
38
+ * `{status: 'approved'|'pending'|'expired'|'denied', ...}`.
39
+ * Agent calls this after the user approves in browser
40
+ * (or repeatedly until terminal). On `approved`, persists
41
+ * the minted user-scoped key via CredentialStore.
42
+ * - `logout` — Sprint 59 m03: symmetric counterpart to login. Revokes
43
+ * the current user-scoped key on the dashboard via the
44
+ * unified `revokeKey(keyId)` (m02) and removes the local
45
+ * row. Auto-picks the keyId when exactly one user-scoped
46
+ * key is in the store; requires an explicit `keyId` when
47
+ * there are multiple. Project-scoped children are left
48
+ * alone — they remain valid standalone cmk_ bearers
49
+ * server-side and their local rows stay intact.
50
+ *
51
+ * All return structured results so agents don't need to parse error strings.
52
+ * `rotate` / `revoke` / `reissue` / `login` / `login_complete` are write
53
+ * surfaces — they always persist (or explicitly report why they didn't) before
54
+ * returning success.
55
+ *
56
+ * @module tools/cmos/cmos-auth
57
+ */
58
+ const zod_1 = require("zod");
59
+ const errors_1 = require("./errors");
60
+ const credential_store_1 = require("../../intelligence/credential-store");
61
+ const dashboard_client_1 = require("./dashboard-client");
62
+ const client_1 = require("./client");
63
+ const project_key_capture_1 = require("../../auth/project-key-capture");
64
+ const device_code_1 = require("../../auth/device-code");
65
+ exports.CMOS_AUTH_ACTIONS = [
66
+ 'rotate',
67
+ 'revoke',
68
+ 'list',
69
+ 'reissue',
70
+ 'login',
71
+ 'login_init',
72
+ 'login_complete',
73
+ 'logout',
74
+ ];
75
+ const DEFAULT_LOGIN_COMPLETE_MAX_WAIT_SECONDS = 30;
76
+ const DEFAULT_LOGIN_COMPLETE_INTERVAL_SECONDS = 2;
77
+ exports.cmosAuthSchema = zod_1.z
78
+ .object({
79
+ action: zod_1.z
80
+ .enum(exports.CMOS_AUTH_ACTIONS)
81
+ .describe('Credential action: rotate | revoke | list | reissue | login | login_init | login_complete | logout'),
82
+ projectRoot: zod_1.z
83
+ .string()
84
+ .optional()
85
+ .describe('Project root for rotate/revoke/reissue. Defaults to the caller context when absent.'),
86
+ keyId: zod_1.z
87
+ .string()
88
+ .optional()
89
+ .describe('Specific dashboard-side keyId. revoke: omit to revoke the current project key for projectRoot. logout: omit when there is exactly one user-scoped key in the local store; required when there are multiple.'),
90
+ graceSeconds: zod_1.z
91
+ .number()
92
+ .int()
93
+ .positive()
94
+ .max(86400)
95
+ .optional()
96
+ .describe('Grace window for rotate (default: dashboard-side 300s). Keeps old key live while in-flight requests complete.'),
97
+ mineOnly: zod_1.z
98
+ .boolean()
99
+ .optional()
100
+ .describe('list only: when true (default), filter to keys spawned by a user-scoped key currently in this MCP store.'),
101
+ deviceCode: zod_1.z
102
+ .string()
103
+ .optional()
104
+ .describe('login_complete only: deviceCode from a prior login_init call. The dashboard-side opaque handle for the pending approval.'),
105
+ maxWaitSeconds: zod_1.z
106
+ .number()
107
+ .int()
108
+ .positive()
109
+ .max(600)
110
+ .optional()
111
+ .describe('login_complete only: bound the poll window before returning status=pending (default 30s). Agent can re-call login_complete to keep polling.'),
112
+ pollIntervalSeconds: zod_1.z
113
+ .number()
114
+ .int()
115
+ .positive()
116
+ .max(60)
117
+ .optional()
118
+ .describe('login_complete only: base poll interval (default 2s). Pass the interval from login_init for best behavior; dashboard slow_down responses bump this internally.'),
119
+ })
120
+ .strict();
121
+ exports.cmosAuthToolDefinition = {
122
+ name: 'cmos_auth',
123
+ description: 'Agent-callable credential lifecycle. Actions: login_init (non-blocking — starts RFC 8628 ' +
124
+ 'device-code flow, returns userCode + verificationUri immediately; agent renders them for ' +
125
+ 'user approval) + login_complete (polls within a bounded window; returns status ' +
126
+ "'approved'|'pending'|'expired'|'denied'). Prefer login_init + login_complete for " +
127
+ 'agent-driven auth in chat — a single blocking login is invisible in IDE MCP hosts. ' +
128
+ 'login (legacy single-call blocking flow; kept for terminal callers where stderr is visible). ' +
129
+ 'logout (symmetric to login — revokes the current user-scoped key on the dashboard + clears the local row). ' +
130
+ 'rotate (mint new project key with grace window), revoke (hard-revoke a keyId), ' +
131
+ 'list (view credential tree, mine-only by default), reissue (recover a lost project key). ' +
132
+ 'All writes persist atomically to the local credential store; agents can call these ' +
133
+ 'directly without human intervention.',
134
+ inputSchema: {
135
+ type: 'object',
136
+ properties: {
137
+ action: {
138
+ type: 'string',
139
+ enum: [...exports.CMOS_AUTH_ACTIONS],
140
+ description: 'Credential action: rotate | revoke | list | reissue | login | login_init | login_complete | logout',
141
+ },
142
+ projectRoot: {
143
+ type: 'string',
144
+ description: 'Project root for rotate/revoke/reissue. Defaults to caller context.',
145
+ },
146
+ keyId: {
147
+ type: 'string',
148
+ description: 'Specific dashboard keyId to revoke. Omit to revoke the current project key for projectRoot.',
149
+ },
150
+ graceSeconds: {
151
+ type: 'number',
152
+ minimum: 1,
153
+ maximum: 86400,
154
+ description: 'Rotate grace window (default: 300s dashboard-side).',
155
+ },
156
+ mineOnly: {
157
+ type: 'boolean',
158
+ description: 'list only: default true. When true, filter to keys spawned by a local user-scoped credential.',
159
+ },
160
+ deviceCode: {
161
+ type: 'string',
162
+ description: 'login_complete only: deviceCode from a prior login_init call. Opaque dashboard-side handle.',
163
+ },
164
+ maxWaitSeconds: {
165
+ type: 'number',
166
+ minimum: 1,
167
+ maximum: 600,
168
+ description: 'login_complete only: bound the poll window before returning status=pending (default 30s).',
169
+ },
170
+ pollIntervalSeconds: {
171
+ type: 'number',
172
+ minimum: 1,
173
+ maximum: 60,
174
+ description: 'login_complete only: base poll interval (default 2s). Use the interval from login_init for best behavior.',
175
+ },
176
+ },
177
+ required: ['action'],
178
+ additionalProperties: false,
179
+ },
180
+ };
181
+ const defaultDashboardClientResolver = async (projectRoot) => {
182
+ const result = await dashboard_client_1.DashboardClient.fromEnvForProject(projectRoot);
183
+ if (!result.success || !result.data)
184
+ return null;
185
+ return result.data.client;
186
+ };
187
+ const defaultDashboardProjectIdReader = async (projectRoot) => {
188
+ try {
189
+ const result = await (0, client_1.withClientAsync)(async (client) => {
190
+ const row = client.getOne(`SELECT value FROM metadata WHERE key = 'dashboard_project_id'`);
191
+ const registered = client.getOne(`SELECT value FROM metadata WHERE key = 'dashboard_registered'`);
192
+ const isRegistered = registered.success && registered.data?.value === 'true';
193
+ const id = (row.success && row.data?.value) || null;
194
+ return { success: true, data: isRegistered ? id : null };
195
+ }, { projectRoot });
196
+ if (!result.success)
197
+ return null;
198
+ return result.data ?? null;
199
+ }
200
+ catch {
201
+ return null;
202
+ }
203
+ };
204
+ // ─── Handler ─────────────────────────────────────────────────────────────────
205
+ function isAction(value) {
206
+ return exports.CMOS_AUTH_ACTIONS.includes(value);
207
+ }
208
+ async function cmosAuth(params, deps = {}) {
209
+ const actionValue = typeof params.action === 'string' ? params.action : '';
210
+ if (!isAction(actionValue)) {
211
+ return (0, errors_1.createError)(errors_1.CmosErrors.invalidAction('cmos_auth', actionValue, exports.CMOS_AUTH_ACTIONS));
212
+ }
213
+ const store = deps.store ?? (await credential_store_1.CredentialStore.create());
214
+ const clientResolver = deps.clientResolver ?? defaultDashboardClientResolver;
215
+ const projectIdReader = deps.projectIdReader ?? defaultDashboardProjectIdReader;
216
+ const deviceCodeFlow = deps.deviceCodeFlow ?? device_code_1.runDeviceCodeFlow;
217
+ const deviceCodeRequester = deps.deviceCodeRequester ?? (({ baseUrl, userAgent }) => (0, device_code_1.requestDeviceCode)(baseUrl, userAgent));
218
+ const tokenPoller = deps.tokenPoller ?? device_code_1.pollForTokenBounded;
219
+ const dashboardBaseUrl = deps.dashboardBaseUrl !== undefined
220
+ ? deps.dashboardBaseUrl
221
+ : process.env[dashboard_client_1.CMOS_DASHBOARD_URL_ENV];
222
+ switch (actionValue) {
223
+ case 'rotate':
224
+ return handleRotate(params, store, clientResolver, projectIdReader);
225
+ case 'revoke':
226
+ return handleRevoke(params, store, clientResolver);
227
+ case 'list':
228
+ return handleList(params, store, clientResolver);
229
+ case 'reissue':
230
+ return handleReissue(params, store, clientResolver, projectIdReader);
231
+ case 'login':
232
+ return handleLogin(store, deviceCodeFlow, dashboardBaseUrl);
233
+ case 'login_init':
234
+ return handleLoginInit(deviceCodeRequester, dashboardBaseUrl);
235
+ case 'login_complete':
236
+ return handleLoginComplete(params, store, tokenPoller, dashboardBaseUrl);
237
+ case 'logout':
238
+ return handleLogout(params, store, clientResolver);
239
+ }
240
+ }
241
+ async function handleRotate(params, store, clientResolver, projectIdReader) {
242
+ if (!params.projectRoot) {
243
+ return (0, errors_1.createError)(errors_1.CmosErrors.missingParameter('projectRoot'));
244
+ }
245
+ const existing = await store.getProjectKey(params.projectRoot);
246
+ if (!existing) {
247
+ return (0, errors_1.createError)({
248
+ code: 'CREDENTIAL_NOT_FOUND',
249
+ message: `No project-scoped key found locally for ${params.projectRoot}`,
250
+ suggestion: 'Run registration or cmos_auth(action=reissue) to populate the local project key first.',
251
+ });
252
+ }
253
+ const projectId = await projectIdReader(params.projectRoot);
254
+ if (!projectId) {
255
+ return (0, errors_1.createError)({
256
+ code: 'PROJECT_NOT_REGISTERED',
257
+ message: `No dashboard_project_id recorded for ${params.projectRoot}`,
258
+ suggestion: 'The project must be registered with the dashboard before keys can be rotated.',
259
+ });
260
+ }
261
+ const client = await clientResolver(params.projectRoot);
262
+ if (!client) {
263
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
264
+ }
265
+ const rotate = await client.rotateProjectKey(projectId, params.graceSeconds !== undefined ? { graceSeconds: params.graceSeconds } : {});
266
+ if (!rotate.success || !rotate.data) {
267
+ return (0, errors_1.createError)(rotate.error ?? errors_1.CmosErrors.dashboardError('rotate returned no data'));
268
+ }
269
+ const now = new Date().toISOString();
270
+ const next = {
271
+ key: rotate.data.newKey,
272
+ keyId: rotate.data.newKeyId,
273
+ parentKeyId: existing.parentKeyId,
274
+ label: rotate.data.label ?? existing.label,
275
+ issuedAt: now,
276
+ lastUsedAt: now,
277
+ };
278
+ await store.swapProjectKey(params.projectRoot, next, {
279
+ key: existing.key,
280
+ keyId: rotate.data.oldKeyId,
281
+ revokeAt: rotate.data.revokeAt,
282
+ });
283
+ return (0, errors_1.createSuccess)({
284
+ action: 'rotate',
285
+ projectId,
286
+ newKeyId: rotate.data.newKeyId,
287
+ oldKeyId: rotate.data.oldKeyId,
288
+ revokeAt: rotate.data.revokeAt,
289
+ graceSeconds: params.graceSeconds ?? null,
290
+ });
291
+ }
292
+ async function handleRevoke(params, store, clientResolver) {
293
+ // Sprint 59 m02 — unified scope-aware revoke. Accepts either an explicit
294
+ // keyId or a projectRoot (to derive the keyId from the local project key).
295
+ // The dashboard infers scope from the key row and enforces ownership, so
296
+ // the tool no longer needs `projectId` to build the URL.
297
+ let targetKeyId = params.keyId;
298
+ if (!targetKeyId) {
299
+ if (!params.projectRoot) {
300
+ return (0, errors_1.createError)({
301
+ code: 'MISSING_PARAMETER',
302
+ message: 'revoke requires either keyId or projectRoot.',
303
+ suggestion: 'Pass keyId to revoke a specific key, or projectRoot to revoke that project’s local project-scoped key.',
304
+ });
305
+ }
306
+ const existing = await store.getProjectKey(params.projectRoot);
307
+ if (!existing) {
308
+ return (0, errors_1.createError)({
309
+ code: 'CREDENTIAL_NOT_FOUND',
310
+ message: `No project-scoped key found locally for ${params.projectRoot}, and no explicit keyId was supplied.`,
311
+ suggestion: 'Pass keyId to revoke a specific dashboard key.',
312
+ });
313
+ }
314
+ targetKeyId = existing.keyId;
315
+ }
316
+ // Determine scope locally from credential store BEFORE calling revoke.
317
+ // Dashboard message 335c3a34 (2026-04-23) confirmed the shipped response
318
+ // envelope is {keyId, revokedAt} — scope is inferred server-side but NOT
319
+ // echoed back. Local inference drives cleanup routing.
320
+ const userScopedKeys = await store.listUserScopedKeys();
321
+ const allProjects = await store.listProjectKeys();
322
+ let scope;
323
+ if (userScopedKeys[targetKeyId]) {
324
+ scope = 'user';
325
+ }
326
+ else {
327
+ const hasProjectMatch = Object.values(allProjects).some((record) => record.keyId === targetKeyId || record.pendingRevoke?.keyId === targetKeyId);
328
+ scope = hasProjectMatch ? 'project' : 'unknown';
329
+ }
330
+ const client = await clientResolver(params.projectRoot);
331
+ if (!client) {
332
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
333
+ }
334
+ const result = await client.revokeKey(targetKeyId);
335
+ if (!result.success || !result.data) {
336
+ return (0, errors_1.createError)(result.error ?? errors_1.CmosErrors.dashboardError('revoke returned no data'));
337
+ }
338
+ // Local cleanup per inferred scope. 'unknown' → no local row to clean.
339
+ if (scope === 'user') {
340
+ await store.removeUserScopedKey(targetKeyId);
341
+ }
342
+ else if (scope === 'project') {
343
+ for (const [projectRoot, record] of Object.entries(allProjects)) {
344
+ if (record.keyId === targetKeyId) {
345
+ await store.removeProjectKey(projectRoot);
346
+ }
347
+ else if (record.pendingRevoke?.keyId === targetKeyId) {
348
+ await store.clearPendingRevoke(projectRoot);
349
+ }
350
+ }
351
+ }
352
+ return (0, errors_1.createSuccess)({
353
+ action: 'revoke',
354
+ keyId: targetKeyId,
355
+ scope,
356
+ revokedAt: result.data.revokedAt,
357
+ });
358
+ }
359
+ async function handleList(params, store, clientResolver) {
360
+ const client = await clientResolver(params.projectRoot);
361
+ if (!client) {
362
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
363
+ }
364
+ const listResult = await client.listKeys();
365
+ if (!listResult.success || !listResult.data) {
366
+ return (0, errors_1.createError)(listResult.error ?? errors_1.CmosErrors.dashboardError('list returned no data'));
367
+ }
368
+ const mineOnly = params.mineOnly !== false; // default true
369
+ const localUserScopedKeys = await store.listUserScopedKeys();
370
+ const mineKeyIds = new Set(Object.keys(localUserScopedKeys));
371
+ const userScoped = [];
372
+ const projectScoped = [];
373
+ let filteredOut = 0;
374
+ for (const key of listResult.data.keys) {
375
+ const isUserScoped = !key.projectId;
376
+ if (mineOnly) {
377
+ const belongsToMe = isUserScoped
378
+ ? mineKeyIds.has(key.id)
379
+ : key.parentKeyId !== null && mineKeyIds.has(key.parentKeyId);
380
+ if (!belongsToMe) {
381
+ filteredOut += 1;
382
+ continue;
383
+ }
384
+ }
385
+ if (isUserScoped) {
386
+ userScoped.push(key);
387
+ }
388
+ else {
389
+ projectScoped.push(key);
390
+ }
391
+ }
392
+ return (0, errors_1.createSuccess)({
393
+ action: 'list',
394
+ mineOnly,
395
+ userScoped,
396
+ projectScoped,
397
+ filteredOut,
398
+ });
399
+ }
400
+ async function handleReissue(params, store, clientResolver, projectIdReader) {
401
+ if (!params.projectRoot) {
402
+ return (0, errors_1.createError)(errors_1.CmosErrors.missingParameter('projectRoot'));
403
+ }
404
+ const projectId = await projectIdReader(params.projectRoot);
405
+ if (!projectId) {
406
+ return (0, errors_1.createError)({
407
+ code: 'PROJECT_NOT_REGISTERED',
408
+ message: `No dashboard_project_id recorded for ${params.projectRoot}`,
409
+ suggestion: 'Project must be registered before a key can be reissued.',
410
+ });
411
+ }
412
+ const client = await clientResolver(params.projectRoot);
413
+ if (!client) {
414
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
415
+ }
416
+ // recoverProjectKey no-ops when a local key already exists; reissue should
417
+ // force a fresh key even when something is present, so drop any existing
418
+ // row first.
419
+ await store.removeProjectKey(params.projectRoot);
420
+ const recovery = await (0, project_key_capture_1.recoverProjectKey)({
421
+ projectRoot: params.projectRoot,
422
+ projectId,
423
+ client,
424
+ store,
425
+ });
426
+ if (recovery.kind === 'recovered') {
427
+ return (0, errors_1.createSuccess)({
428
+ action: 'reissue',
429
+ projectId,
430
+ newKeyId: recovery.record.keyId,
431
+ revokedKeyIds: [],
432
+ });
433
+ }
434
+ if (recovery.kind === 'missing-parent-key-id') {
435
+ return (0, errors_1.createError)({
436
+ code: 'DEVICE_CODE_REQUIRED',
437
+ message: 'Dashboard client has no authenticatingKeyId — device code flow must be run before reissue',
438
+ suggestion: 'Run the device code bootstrap (s57-m01) so the credential store has at least one user-scoped key.',
439
+ });
440
+ }
441
+ if (recovery.kind === 'reissue-failed') {
442
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardError(recovery.error));
443
+ }
444
+ // 'no-op-already-present' can't happen — we removed the existing row above.
445
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardError('reissue recovery returned an unexpected state'));
446
+ }
447
+ async function handleLogin(store, deviceCodeFlow, dashboardBaseUrl) {
448
+ if (!dashboardBaseUrl) {
449
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
450
+ }
451
+ let captured;
452
+ try {
453
+ const token = await deviceCodeFlow({
454
+ baseUrl: dashboardBaseUrl,
455
+ credentialStore: store,
456
+ prompter: (response) => {
457
+ // Dual-emit: (a) capture into the response payload so IDE MCP hosts
458
+ // (which swallow stderr) can render verificationUri/userCode to the
459
+ // user/agent, (b) print to stderr so terminal callers and live
460
+ // integration tests see the prompt immediately instead of after the
461
+ // poll loop completes.
462
+ captured = response;
463
+ (0, device_code_1.defaultPrompter)(response);
464
+ },
465
+ });
466
+ if (!captured) {
467
+ // The default flow always invokes the prompter before polling; this
468
+ // only triggers if a test double omits it.
469
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardError('device code flow produced no prompt response'));
470
+ }
471
+ return (0, errors_1.createSuccess)({
472
+ action: 'login',
473
+ verificationUri: captured.verificationUri,
474
+ userCode: captured.userCode,
475
+ expiresIn: captured.expiresIn,
476
+ interval: captured.interval,
477
+ keyId: token.keyId,
478
+ label: token.label,
479
+ });
480
+ }
481
+ catch (err) {
482
+ if (err instanceof device_code_1.DeviceCodeError) {
483
+ return (0, errors_1.createError)(mapDeviceCodeError(err));
484
+ }
485
+ throw err;
486
+ }
487
+ }
488
+ async function handleLoginInit(deviceCodeRequester, dashboardBaseUrl) {
489
+ if (!dashboardBaseUrl) {
490
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
491
+ }
492
+ const version = await (0, device_code_1.readPackageVersion)();
493
+ const userAgent = (0, device_code_1.buildUserAgent)(version);
494
+ try {
495
+ const response = await deviceCodeRequester({ baseUrl: dashboardBaseUrl, userAgent });
496
+ return (0, errors_1.createSuccess)({
497
+ action: 'login_init',
498
+ deviceCode: response.deviceCode,
499
+ userCode: response.userCode,
500
+ verificationUri: response.verificationUri,
501
+ expiresIn: response.expiresIn,
502
+ interval: response.interval,
503
+ });
504
+ }
505
+ catch (err) {
506
+ if (err instanceof device_code_1.DeviceCodeError) {
507
+ return (0, errors_1.createError)(mapDeviceCodeError(err));
508
+ }
509
+ throw err;
510
+ }
511
+ }
512
+ async function handleLoginComplete(params, store, tokenPoller, dashboardBaseUrl) {
513
+ if (!dashboardBaseUrl) {
514
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
515
+ }
516
+ if (!params.deviceCode) {
517
+ return (0, errors_1.createError)(errors_1.CmosErrors.missingParameter('deviceCode'));
518
+ }
519
+ const maxWaitSeconds = params.maxWaitSeconds ?? DEFAULT_LOGIN_COMPLETE_MAX_WAIT_SECONDS;
520
+ const intervalSeconds = params.pollIntervalSeconds ?? DEFAULT_LOGIN_COMPLETE_INTERVAL_SECONDS;
521
+ const version = await (0, device_code_1.readPackageVersion)();
522
+ const userAgent = (0, device_code_1.buildUserAgent)(version);
523
+ try {
524
+ const poll = await tokenPoller({
525
+ baseUrl: dashboardBaseUrl,
526
+ deviceCode: params.deviceCode,
527
+ userAgent,
528
+ intervalSeconds,
529
+ maxWaitSeconds,
530
+ });
531
+ switch (poll.status) {
532
+ case 'approved': {
533
+ const now = new Date().toISOString();
534
+ const record = {
535
+ key: poll.key,
536
+ label: poll.label,
537
+ issuedAt: now,
538
+ lastUsedAt: now,
539
+ };
540
+ await store.upsertUserScopedKey(poll.keyId, record);
541
+ return (0, errors_1.createSuccess)({
542
+ action: 'login_complete',
543
+ status: 'approved',
544
+ keyId: poll.keyId,
545
+ label: poll.label,
546
+ intervalSeconds: poll.intervalSeconds,
547
+ });
548
+ }
549
+ case 'pending':
550
+ return (0, errors_1.createSuccess)({
551
+ action: 'login_complete',
552
+ status: 'pending',
553
+ intervalSeconds: poll.intervalSeconds,
554
+ });
555
+ case 'expired':
556
+ return (0, errors_1.createSuccess)({
557
+ action: 'login_complete',
558
+ status: 'expired',
559
+ });
560
+ case 'denied':
561
+ return (0, errors_1.createSuccess)({
562
+ action: 'login_complete',
563
+ status: 'denied',
564
+ ...(poll.description !== undefined ? { description: poll.description } : {}),
565
+ });
566
+ }
567
+ }
568
+ catch (err) {
569
+ if (err instanceof device_code_1.DeviceCodeError) {
570
+ return (0, errors_1.createError)(mapDeviceCodeError(err));
571
+ }
572
+ throw err;
573
+ }
574
+ }
575
+ async function handleLogout(params, store, clientResolver) {
576
+ const userScopedKeys = await store.listUserScopedKeys();
577
+ const localKeyIds = Object.keys(userScopedKeys);
578
+ let targetKeyId;
579
+ if (params.keyId) {
580
+ if (!userScopedKeys[params.keyId]) {
581
+ return (0, errors_1.createError)({
582
+ code: 'CREDENTIAL_NOT_FOUND',
583
+ message: `keyId ${params.keyId} is not a user-scoped key in the local credential store.`,
584
+ suggestion: 'logout specifically targets user-scoped login sessions. For project-scoped revocation use cmos_auth(action="revoke", keyId=...).',
585
+ });
586
+ }
587
+ targetKeyId = params.keyId;
588
+ }
589
+ else if (localKeyIds.length === 0) {
590
+ return (0, errors_1.createError)({
591
+ code: 'CREDENTIAL_NOT_FOUND',
592
+ message: 'No user-scoped key in the local credential store to logout.',
593
+ suggestion: 'Run cmos_auth(action="login_init") then login_complete to bootstrap a credential first.',
594
+ });
595
+ }
596
+ else if (localKeyIds.length === 1) {
597
+ targetKeyId = localKeyIds[0];
598
+ }
599
+ else {
600
+ return (0, errors_1.createError)({
601
+ code: 'MISSING_PARAMETER',
602
+ message: `Multiple user-scoped keys (${localKeyIds.length}) in the local store — pass an explicit keyId to logout a specific one.`,
603
+ suggestion: 'cmos_auth(action="list", mineOnly=true) lists your user-scoped keys; pass the target as keyId.',
604
+ });
605
+ }
606
+ const client = await clientResolver(params.projectRoot);
607
+ if (!client) {
608
+ return (0, errors_1.createError)(errors_1.CmosErrors.dashboardNotConfigured());
609
+ }
610
+ const result = await client.revokeKey(targetKeyId);
611
+ if (!result.success || !result.data) {
612
+ return (0, errors_1.createError)(result.error ?? errors_1.CmosErrors.dashboardError('logout revokeKey returned no data'));
613
+ }
614
+ // Remove the local user-scoped row. Project-scoped children are left alone
615
+ // — they keep working server-side as standalone cmk_ bearers; if the user
616
+ // wants to clean them up they can revoke each individually.
617
+ await store.removeUserScopedKey(targetKeyId);
618
+ return (0, errors_1.createSuccess)({
619
+ action: 'logout',
620
+ keyId: targetKeyId,
621
+ revokedAt: result.data.revokedAt,
622
+ });
623
+ }
624
+ function mapDeviceCodeError(err) {
625
+ switch (err.code) {
626
+ case 'expired_token':
627
+ return {
628
+ code: 'DEVICE_CODE_EXPIRED',
629
+ message: err.description
630
+ ? `Device code expired before authorization completed: ${err.description}`
631
+ : 'Device code expired before authorization completed',
632
+ suggestion: 'Re-run cmos_auth(action="login") to request a fresh code, then approve it at the verificationUri before it expires.',
633
+ };
634
+ case 'access_denied':
635
+ return {
636
+ code: 'DEVICE_CODE_ACCESS_DENIED',
637
+ message: err.description
638
+ ? `Authorization was denied: ${err.description}`
639
+ : 'Authorization was denied at the dashboard',
640
+ suggestion: 'Approve the device code at the verificationUri when re-running cmos_auth(action="login").',
641
+ };
642
+ case 'request_failed':
643
+ case 'malformed_response':
644
+ default:
645
+ return {
646
+ code: 'DASHBOARD_ERROR',
647
+ message: `Dashboard error: ${err.message}`,
648
+ suggestion: 'Check the dashboard is reachable and the device-code endpoints are healthy.',
649
+ };
650
+ }
651
+ }
652
+ function formatAuthForLLM(action, result) {
653
+ if (!result.success || !result.data) {
654
+ return `cmos_auth ${action} failed: ${result.error?.message ?? 'unknown error'}`;
655
+ }
656
+ const d = result.data;
657
+ switch (d.action) {
658
+ case 'rotate':
659
+ return `Rotated project key on ${d.projectId}: new=${d.newKeyId}, old=${d.oldKeyId} revokes at ${d.revokeAt}.`;
660
+ case 'revoke':
661
+ return `Revoked ${d.scope}-scoped key ${d.keyId}.`;
662
+ case 'list':
663
+ return `Listed ${d.userScoped.length} user-scoped + ${d.projectScoped.length} project-scoped keys (mineOnly=${d.mineOnly}, filteredOut=${d.filteredOut}).`;
664
+ case 'reissue':
665
+ return `Reissued project key on ${d.projectId}: new keyId=${d.newKeyId}.`;
666
+ case 'login':
667
+ return `Logged in via device code (keyId=${d.keyId}, label="${d.label}"). Open ${d.verificationUri} and enter ${d.userCode} if you haven't already — this key is now persisted locally.`;
668
+ case 'login_init':
669
+ return `Device code issued. Open ${d.verificationUri} and enter ${d.userCode} (expires in ${d.expiresIn}s). Then call cmos_auth(action="login_complete", deviceCode, pollIntervalSeconds=${d.interval}).`;
670
+ case 'login_complete': {
671
+ switch (d.status) {
672
+ case 'approved':
673
+ return `Login approved. keyId=${d.keyId ?? 'unknown'}, label="${d.label ?? ''}" persisted locally.`;
674
+ case 'pending':
675
+ return `Login still pending approval. Call cmos_auth(action="login_complete") again (pollIntervalSeconds=${d.intervalSeconds ?? '?'}).`;
676
+ case 'expired':
677
+ return `Device code expired before approval. Re-run cmos_auth(action="login_init") to request a fresh code.`;
678
+ case 'denied':
679
+ return `Login denied at the dashboard${d.description ? `: ${d.description}` : ''}.`;
680
+ }
681
+ return `login_complete ${String(d.status)}`;
682
+ }
683
+ case 'logout':
684
+ return `Logged out user-scoped key ${d.keyId} (revoked at ${d.revokedAt}). Local row cleared.`;
685
+ }
686
+ }
687
+ //# sourceMappingURL=cmos-auth.js.map