@cleocode/core 2026.3.76 → 2026.4.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 (957) hide show
  1. package/dist/adapters/adapter-registry.js +64 -0
  2. package/dist/adapters/adapter-registry.js.map +1 -0
  3. package/dist/adapters/discovery.js +83 -0
  4. package/dist/adapters/discovery.js.map +1 -0
  5. package/dist/adapters/index.js +9 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/manager.js +260 -0
  8. package/dist/adapters/manager.js.map +1 -0
  9. package/dist/admin/export-tasks.js +171 -0
  10. package/dist/admin/export-tasks.js.map +1 -0
  11. package/dist/admin/export.js +103 -0
  12. package/dist/admin/export.js.map +1 -0
  13. package/dist/admin/help.js +106 -0
  14. package/dist/admin/help.js.map +1 -0
  15. package/dist/admin/import-tasks.js +182 -0
  16. package/dist/admin/import-tasks.js.map +1 -0
  17. package/dist/admin/import.js +129 -0
  18. package/dist/admin/import.js.map +1 -0
  19. package/dist/admin/index.js +13 -0
  20. package/dist/admin/index.js.map +1 -0
  21. package/dist/adrs/find.js +134 -0
  22. package/dist/adrs/find.js.map +1 -0
  23. package/dist/adrs/index.js +15 -0
  24. package/dist/adrs/index.js.map +1 -0
  25. package/dist/adrs/link-pipeline.js +160 -0
  26. package/dist/adrs/link-pipeline.js.map +1 -0
  27. package/dist/adrs/list.js +43 -0
  28. package/dist/adrs/list.js.map +1 -0
  29. package/dist/adrs/parse.js +51 -0
  30. package/dist/adrs/parse.js.map +1 -0
  31. package/dist/adrs/show.js +22 -0
  32. package/dist/adrs/show.js.map +1 -0
  33. package/dist/adrs/sync.js +188 -0
  34. package/dist/adrs/sync.js.map +1 -0
  35. package/dist/adrs/types.js +9 -0
  36. package/dist/adrs/types.js.map +1 -0
  37. package/dist/adrs/validate.js +57 -0
  38. package/dist/adrs/validate.js.map +1 -0
  39. package/dist/agents/agent-registry.js +288 -0
  40. package/dist/agents/agent-registry.js.map +1 -0
  41. package/dist/agents/agent-schema.d.ts.map +1 -1
  42. package/dist/agents/agent-schema.js +85 -0
  43. package/dist/agents/agent-schema.js.map +1 -0
  44. package/dist/agents/capacity.js +116 -0
  45. package/dist/agents/capacity.js.map +1 -0
  46. package/dist/agents/execution-learning.js +474 -0
  47. package/dist/agents/execution-learning.js.map +1 -0
  48. package/dist/agents/health-monitor.js +217 -0
  49. package/dist/agents/health-monitor.js.map +1 -0
  50. package/dist/agents/index.js +29 -0
  51. package/dist/agents/index.js.map +1 -0
  52. package/dist/agents/registry.js +314 -0
  53. package/dist/agents/registry.js.map +1 -0
  54. package/dist/agents/retry.js +215 -0
  55. package/dist/agents/retry.js.map +1 -0
  56. package/dist/audit-prune.js +94 -0
  57. package/dist/audit-prune.js.map +1 -0
  58. package/dist/audit.js +68 -0
  59. package/dist/audit.js.map +1 -0
  60. package/dist/backfill/index.js +229 -0
  61. package/dist/backfill/index.js.map +1 -0
  62. package/dist/bootstrap.js +367 -0
  63. package/dist/bootstrap.js.map +1 -0
  64. package/dist/caamp/adapter.js +434 -0
  65. package/dist/caamp/adapter.js.map +1 -0
  66. package/dist/caamp/capability-check.js +38 -0
  67. package/dist/caamp/capability-check.js.map +1 -0
  68. package/dist/caamp/index.js +23 -0
  69. package/dist/caamp/index.js.map +1 -0
  70. package/dist/caamp-init.js +16 -0
  71. package/dist/caamp-init.js.map +1 -0
  72. package/dist/cant/approval.js +185 -0
  73. package/dist/cant/approval.js.map +1 -0
  74. package/dist/cant/context-builder.js +117 -0
  75. package/dist/cant/context-builder.js.map +1 -0
  76. package/dist/cant/discretion.js +116 -0
  77. package/dist/cant/discretion.js.map +1 -0
  78. package/dist/cant/index.js +23 -0
  79. package/dist/cant/index.js.map +1 -0
  80. package/dist/cant/parallel-runner.js +173 -0
  81. package/dist/cant/parallel-runner.js.map +1 -0
  82. package/dist/cant/types.js +11 -0
  83. package/dist/cant/types.js.map +1 -0
  84. package/dist/cant/workflow-executor.js +440 -0
  85. package/dist/cant/workflow-executor.js.map +1 -0
  86. package/dist/cleo.js +322 -0
  87. package/dist/cleo.js.map +1 -0
  88. package/dist/code/index.d.ts +10 -0
  89. package/dist/code/index.d.ts.map +1 -0
  90. package/dist/code/outline.d.ts +51 -0
  91. package/dist/code/outline.d.ts.map +1 -0
  92. package/dist/code/parser.d.ts +30 -0
  93. package/dist/code/parser.d.ts.map +1 -0
  94. package/dist/code/search.d.ts +42 -0
  95. package/dist/code/search.d.ts.map +1 -0
  96. package/dist/code/unfold.d.ts +44 -0
  97. package/dist/code/unfold.d.ts.map +1 -0
  98. package/dist/codebase-map/analyzers/architecture.js +130 -0
  99. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  100. package/dist/codebase-map/analyzers/concerns.js +122 -0
  101. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  102. package/dist/codebase-map/analyzers/conventions.js +149 -0
  103. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  104. package/dist/codebase-map/analyzers/integrations.js +108 -0
  105. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  106. package/dist/codebase-map/analyzers/stack.js +117 -0
  107. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  108. package/dist/codebase-map/analyzers/structure.js +137 -0
  109. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  110. package/dist/codebase-map/analyzers/testing.js +118 -0
  111. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  112. package/dist/codebase-map/index.js +57 -0
  113. package/dist/codebase-map/index.js.map +1 -0
  114. package/dist/codebase-map/store.js +122 -0
  115. package/dist/codebase-map/store.js.map +1 -0
  116. package/dist/codebase-map/summary.js +152 -0
  117. package/dist/codebase-map/summary.js.map +1 -0
  118. package/dist/compliance/index.js +288 -0
  119. package/dist/compliance/index.js.map +1 -0
  120. package/dist/compliance/protocol-enforcement.js +332 -0
  121. package/dist/compliance/protocol-enforcement.js.map +1 -0
  122. package/dist/compliance/protocol-rules.js +786 -0
  123. package/dist/compliance/protocol-rules.js.map +1 -0
  124. package/dist/compliance/protocol-types.js +80 -0
  125. package/dist/compliance/protocol-types.js.map +1 -0
  126. package/dist/compliance/store.js +53 -0
  127. package/dist/compliance/store.js.map +1 -0
  128. package/dist/conduit/conduit-client.d.ts +9 -0
  129. package/dist/conduit/conduit-client.d.ts.map +1 -1
  130. package/dist/conduit/conduit-client.js +94 -0
  131. package/dist/conduit/conduit-client.js.map +1 -0
  132. package/dist/conduit/factory.d.ts +3 -1
  133. package/dist/conduit/factory.d.ts.map +1 -1
  134. package/dist/conduit/factory.js +35 -0
  135. package/dist/conduit/factory.js.map +1 -0
  136. package/dist/conduit/http-transport.d.ts +17 -5
  137. package/dist/conduit/http-transport.d.ts.map +1 -1
  138. package/dist/conduit/http-transport.js +165 -0
  139. package/dist/conduit/http-transport.js.map +1 -0
  140. package/dist/conduit/index.d.ts +5 -2
  141. package/dist/conduit/index.d.ts.map +1 -1
  142. package/dist/conduit/index.js +12 -0
  143. package/dist/conduit/index.js.map +1 -0
  144. package/dist/conduit/local-transport.d.ts +91 -0
  145. package/dist/conduit/local-transport.d.ts.map +1 -0
  146. package/dist/conduit/sse-transport.d.ts +68 -0
  147. package/dist/conduit/sse-transport.d.ts.map +1 -0
  148. package/dist/config/build-config.js +29 -0
  149. package/dist/config/build-config.js.map +1 -0
  150. package/dist/config.js +401 -0
  151. package/dist/config.js.map +1 -0
  152. package/dist/constants.js +18 -0
  153. package/dist/constants.js.map +1 -0
  154. package/dist/context/index.js +137 -0
  155. package/dist/context/index.js.map +1 -0
  156. package/dist/crypto/credentials.js +144 -0
  157. package/dist/crypto/credentials.js.map +1 -0
  158. package/dist/engine-result.js +12 -0
  159. package/dist/engine-result.js.map +1 -0
  160. package/dist/error-catalog.js +404 -0
  161. package/dist/error-catalog.js.map +1 -0
  162. package/dist/error-registry.js +393 -0
  163. package/dist/error-registry.js.map +1 -0
  164. package/dist/errors.js +167 -0
  165. package/dist/errors.js.map +1 -0
  166. package/dist/hooks/handlers/agent-hooks.js +106 -0
  167. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  168. package/dist/hooks/handlers/context-hooks.js +111 -0
  169. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  170. package/dist/hooks/handlers/error-hooks.js +52 -0
  171. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  172. package/dist/hooks/handlers/file-hooks.js +104 -0
  173. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  174. package/dist/hooks/handlers/handler-helpers.js +61 -0
  175. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  176. package/dist/hooks/handlers/index.js +28 -0
  177. package/dist/hooks/handlers/index.js.map +1 -0
  178. package/dist/hooks/handlers/mcp-hooks.js +147 -0
  179. package/dist/hooks/handlers/mcp-hooks.js.map +1 -0
  180. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  181. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  182. package/dist/hooks/handlers/session-hooks.js +104 -0
  183. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  184. package/dist/hooks/handlers/task-hooks.js +65 -0
  185. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  186. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  187. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  188. package/dist/hooks/index.js +13 -0
  189. package/dist/hooks/index.js.map +1 -0
  190. package/dist/hooks/payload-schemas.js +220 -0
  191. package/dist/hooks/payload-schemas.js.map +1 -0
  192. package/dist/hooks/provider-hooks.js +66 -0
  193. package/dist/hooks/provider-hooks.js.map +1 -0
  194. package/dist/hooks/registry.js +229 -0
  195. package/dist/hooks/registry.js.map +1 -0
  196. package/dist/hooks/types.js +66 -0
  197. package/dist/hooks/types.js.map +1 -0
  198. package/dist/hooks.js +136 -0
  199. package/dist/hooks.js.map +1 -0
  200. package/dist/index.d.ts +1 -0
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +4605 -3042
  203. package/dist/index.js.map +4 -4
  204. package/dist/init.js +723 -0
  205. package/dist/init.js.map +1 -0
  206. package/dist/inject/index.js +82 -0
  207. package/dist/inject/index.js.map +1 -0
  208. package/dist/injection.js +343 -0
  209. package/dist/injection.js.map +1 -0
  210. package/dist/intelligence/adaptive-validation.js +497 -0
  211. package/dist/intelligence/adaptive-validation.js.map +1 -0
  212. package/dist/intelligence/impact.js +675 -0
  213. package/dist/intelligence/impact.js.map +1 -0
  214. package/dist/intelligence/index.js +22 -0
  215. package/dist/intelligence/index.js.map +1 -0
  216. package/dist/intelligence/patterns.js +492 -0
  217. package/dist/intelligence/patterns.js.map +1 -0
  218. package/dist/intelligence/prediction.js +499 -0
  219. package/dist/intelligence/prediction.js.map +1 -0
  220. package/dist/intelligence/types.js +13 -0
  221. package/dist/intelligence/types.js.map +1 -0
  222. package/dist/internal.d.ts +5 -2
  223. package/dist/internal.d.ts.map +1 -1
  224. package/dist/internal.js +286 -0
  225. package/dist/internal.js.map +1 -0
  226. package/dist/issue/create.js +121 -0
  227. package/dist/issue/create.js.map +1 -0
  228. package/dist/issue/diagnostics.js +59 -0
  229. package/dist/issue/diagnostics.js.map +1 -0
  230. package/dist/issue/index.js +10 -0
  231. package/dist/issue/index.js.map +1 -0
  232. package/dist/issue/template-parser.js +267 -0
  233. package/dist/issue/template-parser.js.map +1 -0
  234. package/dist/json-schema-validator.js +76 -0
  235. package/dist/json-schema-validator.js.map +1 -0
  236. package/dist/lib/index.d.ts +1 -0
  237. package/dist/lib/index.d.ts.map +1 -1
  238. package/dist/lib/index.js +10 -0
  239. package/dist/lib/index.js.map +1 -0
  240. package/dist/lib/retry.js +152 -0
  241. package/dist/lib/retry.js.map +1 -0
  242. package/dist/lib/tree-sitter-languages.d.ts +29 -0
  243. package/dist/lib/tree-sitter-languages.d.ts.map +1 -0
  244. package/dist/lifecycle/chain-composition.js +152 -0
  245. package/dist/lifecycle/chain-composition.js.map +1 -0
  246. package/dist/lifecycle/chain-store.js +246 -0
  247. package/dist/lifecycle/chain-store.js.map +1 -0
  248. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  249. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  250. package/dist/lifecycle/default-chain.js +167 -0
  251. package/dist/lifecycle/default-chain.js.map +1 -0
  252. package/dist/lifecycle/evidence.js +180 -0
  253. package/dist/lifecycle/evidence.js.map +1 -0
  254. package/dist/lifecycle/frontmatter.js +363 -0
  255. package/dist/lifecycle/frontmatter.js.map +1 -0
  256. package/dist/lifecycle/index.js +753 -0
  257. package/dist/lifecycle/index.js.map +1 -0
  258. package/dist/lifecycle/pipeline.js +656 -0
  259. package/dist/lifecycle/pipeline.js.map +1 -0
  260. package/dist/lifecycle/rcasd-index.js +326 -0
  261. package/dist/lifecycle/rcasd-index.js.map +1 -0
  262. package/dist/lifecycle/rcasd-paths.js +220 -0
  263. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  264. package/dist/lifecycle/resume.js +864 -0
  265. package/dist/lifecycle/resume.js.map +1 -0
  266. package/dist/lifecycle/stage-artifacts.js +94 -0
  267. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  268. package/dist/lifecycle/stages.js +534 -0
  269. package/dist/lifecycle/stages.js.map +1 -0
  270. package/dist/lifecycle/state-machine.js +516 -0
  271. package/dist/lifecycle/state-machine.js.map +1 -0
  272. package/dist/lifecycle/tessera-engine.js +249 -0
  273. package/dist/lifecycle/tessera-engine.js.map +1 -0
  274. package/dist/logger.js +140 -0
  275. package/dist/logger.js.map +1 -0
  276. package/dist/mcp/index.js +146 -0
  277. package/dist/mcp/index.js.map +1 -0
  278. package/dist/memory/auto-extract.js +177 -0
  279. package/dist/memory/auto-extract.js.map +1 -0
  280. package/dist/memory/brain-embedding.js +66 -0
  281. package/dist/memory/brain-embedding.js.map +1 -0
  282. package/dist/memory/brain-lifecycle.js +298 -0
  283. package/dist/memory/brain-lifecycle.js.map +1 -0
  284. package/dist/memory/brain-links.d.ts.map +1 -1
  285. package/dist/memory/brain-links.js +148 -0
  286. package/dist/memory/brain-links.js.map +1 -0
  287. package/dist/memory/brain-maintenance.d.ts +13 -0
  288. package/dist/memory/brain-maintenance.d.ts.map +1 -1
  289. package/dist/memory/brain-maintenance.js +98 -0
  290. package/dist/memory/brain-maintenance.js.map +1 -0
  291. package/dist/memory/brain-migration.js +149 -0
  292. package/dist/memory/brain-migration.js.map +1 -0
  293. package/dist/memory/brain-reasoning.js +215 -0
  294. package/dist/memory/brain-reasoning.js.map +1 -0
  295. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  296. package/dist/memory/brain-retrieval.js +526 -0
  297. package/dist/memory/brain-retrieval.js.map +1 -0
  298. package/dist/memory/brain-row-types.js +10 -0
  299. package/dist/memory/brain-row-types.js.map +1 -0
  300. package/dist/memory/brain-search.js +519 -0
  301. package/dist/memory/brain-search.js.map +1 -0
  302. package/dist/memory/brain-similarity.js +145 -0
  303. package/dist/memory/brain-similarity.js.map +1 -0
  304. package/dist/memory/claude-mem-migration.js +277 -0
  305. package/dist/memory/claude-mem-migration.js.map +1 -0
  306. package/dist/memory/decisions.d.ts.map +1 -1
  307. package/dist/memory/decisions.js +148 -0
  308. package/dist/memory/decisions.js.map +1 -0
  309. package/dist/memory/embedding-local.js +97 -0
  310. package/dist/memory/embedding-local.js.map +1 -0
  311. package/dist/memory/embedding-queue.js +271 -0
  312. package/dist/memory/embedding-queue.js.map +1 -0
  313. package/dist/memory/embedding-worker.js +58 -0
  314. package/dist/memory/embedding-worker.js.map +1 -0
  315. package/dist/memory/engine-compat.js +1030 -0
  316. package/dist/memory/engine-compat.js.map +1 -0
  317. package/dist/memory/index.js +773 -0
  318. package/dist/memory/index.js.map +1 -0
  319. package/dist/memory/learnings.js +121 -0
  320. package/dist/memory/learnings.js.map +1 -0
  321. package/dist/memory/memory-bridge.js +370 -0
  322. package/dist/memory/memory-bridge.js.map +1 -0
  323. package/dist/memory/patterns.js +122 -0
  324. package/dist/memory/patterns.js.map +1 -0
  325. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  326. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  327. package/dist/memory/session-memory.js +331 -0
  328. package/dist/memory/session-memory.js.map +1 -0
  329. package/dist/metrics/ab-test.js +260 -0
  330. package/dist/metrics/ab-test.js.map +1 -0
  331. package/dist/metrics/aggregation.js +363 -0
  332. package/dist/metrics/aggregation.js.map +1 -0
  333. package/dist/metrics/common.js +64 -0
  334. package/dist/metrics/common.js.map +1 -0
  335. package/dist/metrics/enums.js +78 -0
  336. package/dist/metrics/enums.js.map +1 -0
  337. package/dist/metrics/index.js +19 -0
  338. package/dist/metrics/index.js.map +1 -0
  339. package/dist/metrics/model-provider-registry.js +88 -0
  340. package/dist/metrics/model-provider-registry.js.map +1 -0
  341. package/dist/metrics/otel-integration.js +263 -0
  342. package/dist/metrics/otel-integration.js.map +1 -0
  343. package/dist/metrics/provider-detection.js +103 -0
  344. package/dist/metrics/provider-detection.js.map +1 -0
  345. package/dist/metrics/token-estimation.js +253 -0
  346. package/dist/metrics/token-estimation.js.map +1 -0
  347. package/dist/metrics/token-service.js +450 -0
  348. package/dist/metrics/token-service.js.map +1 -0
  349. package/dist/migration/agent-outputs.js +316 -0
  350. package/dist/migration/agent-outputs.js.map +1 -0
  351. package/dist/migration/checksum.js +92 -0
  352. package/dist/migration/checksum.js.map +1 -0
  353. package/dist/migration/index.js +282 -0
  354. package/dist/migration/index.js.map +1 -0
  355. package/dist/migration/logger.js +360 -0
  356. package/dist/migration/logger.js.map +1 -0
  357. package/dist/migration/preflight.js +9 -0
  358. package/dist/migration/preflight.js.map +1 -0
  359. package/dist/migration/state.js +421 -0
  360. package/dist/migration/state.js.map +1 -0
  361. package/dist/migration/validate.js +241 -0
  362. package/dist/migration/validate.js.map +1 -0
  363. package/dist/mvi-helpers.js +74 -0
  364. package/dist/mvi-helpers.js.map +1 -0
  365. package/dist/nexus/deps.js +375 -0
  366. package/dist/nexus/deps.js.map +1 -0
  367. package/dist/nexus/discover.js +288 -0
  368. package/dist/nexus/discover.js.map +1 -0
  369. package/dist/nexus/hash.js +10 -0
  370. package/dist/nexus/hash.js.map +1 -0
  371. package/dist/nexus/index.js +40 -0
  372. package/dist/nexus/index.js.map +1 -0
  373. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  374. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  375. package/dist/nexus/permissions.js +105 -0
  376. package/dist/nexus/permissions.js.map +1 -0
  377. package/dist/nexus/query.js +175 -0
  378. package/dist/nexus/query.js.map +1 -0
  379. package/dist/nexus/registry.js +584 -0
  380. package/dist/nexus/registry.js.map +1 -0
  381. package/dist/nexus/sharing/index.js +288 -0
  382. package/dist/nexus/sharing/index.js.map +1 -0
  383. package/dist/nexus/transfer-types.js +8 -0
  384. package/dist/nexus/transfer-types.js.map +1 -0
  385. package/dist/nexus/transfer.js +263 -0
  386. package/dist/nexus/transfer.js.map +1 -0
  387. package/dist/nexus/workspace.js +355 -0
  388. package/dist/nexus/workspace.js.map +1 -0
  389. package/dist/observability/index.js +103 -0
  390. package/dist/observability/index.js.map +1 -0
  391. package/dist/observability/log-filter.js +63 -0
  392. package/dist/observability/log-filter.js.map +1 -0
  393. package/dist/observability/log-parser.js +99 -0
  394. package/dist/observability/log-parser.js.map +1 -0
  395. package/dist/observability/log-reader.js +139 -0
  396. package/dist/observability/log-reader.js.map +1 -0
  397. package/dist/observability/types.js +19 -0
  398. package/dist/observability/types.js.map +1 -0
  399. package/dist/orchestration/analyze.js +107 -0
  400. package/dist/orchestration/analyze.js.map +1 -0
  401. package/dist/orchestration/bootstrap.js +132 -0
  402. package/dist/orchestration/bootstrap.js.map +1 -0
  403. package/dist/orchestration/context.js +56 -0
  404. package/dist/orchestration/context.js.map +1 -0
  405. package/dist/orchestration/critical-path.js +100 -0
  406. package/dist/orchestration/critical-path.js.map +1 -0
  407. package/dist/orchestration/hierarchy.d.ts +32 -0
  408. package/dist/orchestration/hierarchy.d.ts.map +1 -0
  409. package/dist/orchestration/index.d.ts +1 -0
  410. package/dist/orchestration/index.d.ts.map +1 -1
  411. package/dist/orchestration/index.js +286 -0
  412. package/dist/orchestration/index.js.map +1 -0
  413. package/dist/orchestration/parallel.js +89 -0
  414. package/dist/orchestration/parallel.js.map +1 -0
  415. package/dist/orchestration/protocol-validators.js +524 -0
  416. package/dist/orchestration/protocol-validators.js.map +1 -0
  417. package/dist/orchestration/skill-ops.js +98 -0
  418. package/dist/orchestration/skill-ops.js.map +1 -0
  419. package/dist/orchestration/status.js +107 -0
  420. package/dist/orchestration/status.js.map +1 -0
  421. package/dist/orchestration/unblock.js +103 -0
  422. package/dist/orchestration/unblock.js.map +1 -0
  423. package/dist/orchestration/validate-spawn.js +67 -0
  424. package/dist/orchestration/validate-spawn.js.map +1 -0
  425. package/dist/orchestration/waves.js +86 -0
  426. package/dist/orchestration/waves.js.map +1 -0
  427. package/dist/otel/index.js +163 -0
  428. package/dist/otel/index.js.map +1 -0
  429. package/dist/output.js +164 -0
  430. package/dist/output.js.map +1 -0
  431. package/dist/pagination.js +64 -0
  432. package/dist/pagination.js.map +1 -0
  433. package/dist/paths.js +337 -0
  434. package/dist/paths.js.map +1 -0
  435. package/dist/phases/deps.js +372 -0
  436. package/dist/phases/deps.js.map +1 -0
  437. package/dist/phases/index.js +349 -0
  438. package/dist/phases/index.js.map +1 -0
  439. package/dist/pipeline/index.js +10 -0
  440. package/dist/pipeline/index.js.map +1 -0
  441. package/dist/pipeline/phase.js +45 -0
  442. package/dist/pipeline/phase.js.map +1 -0
  443. package/dist/platform.js +211 -0
  444. package/dist/platform.js.map +1 -0
  445. package/dist/project-info.js +84 -0
  446. package/dist/project-info.js.map +1 -0
  447. package/dist/reconciliation/index.js +10 -0
  448. package/dist/reconciliation/index.js.map +1 -0
  449. package/dist/reconciliation/link-store.js +129 -0
  450. package/dist/reconciliation/link-store.js.map +1 -0
  451. package/dist/reconciliation/reconciliation-engine.js +298 -0
  452. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  453. package/dist/release/artifacts.js +427 -0
  454. package/dist/release/artifacts.js.map +1 -0
  455. package/dist/release/changelog-writer.js +151 -0
  456. package/dist/release/changelog-writer.js.map +1 -0
  457. package/dist/release/channel.js +144 -0
  458. package/dist/release/channel.js.map +1 -0
  459. package/dist/release/ci.js +166 -0
  460. package/dist/release/ci.js.map +1 -0
  461. package/dist/release/github-pr.js +225 -0
  462. package/dist/release/github-pr.js.map +1 -0
  463. package/dist/release/guards.js +116 -0
  464. package/dist/release/guards.js.map +1 -0
  465. package/dist/release/index.js +22 -0
  466. package/dist/release/index.js.map +1 -0
  467. package/dist/release/release-config.js +158 -0
  468. package/dist/release/release-config.js.map +1 -0
  469. package/dist/release/release-manifest.js +1019 -0
  470. package/dist/release/release-manifest.js.map +1 -0
  471. package/dist/release/version-bump.js +255 -0
  472. package/dist/release/version-bump.js.map +1 -0
  473. package/dist/remote/index.js +257 -0
  474. package/dist/remote/index.js.map +1 -0
  475. package/dist/repair.js +130 -0
  476. package/dist/repair.js.map +1 -0
  477. package/dist/research/index.js +2 -0
  478. package/dist/research/index.js.map +1 -0
  479. package/dist/roadmap/index.js +59 -0
  480. package/dist/roadmap/index.js.map +1 -0
  481. package/dist/routing/capability-matrix.js +1557 -0
  482. package/dist/routing/capability-matrix.js.map +1 -0
  483. package/dist/routing/index.js +9 -0
  484. package/dist/routing/index.js.map +1 -0
  485. package/dist/scaffold.js +1178 -0
  486. package/dist/scaffold.js.map +1 -0
  487. package/dist/schema-management.js +295 -0
  488. package/dist/schema-management.js.map +1 -0
  489. package/dist/security/index.js +9 -0
  490. package/dist/security/index.js.map +1 -0
  491. package/dist/security/input-sanitization.js +321 -0
  492. package/dist/security/input-sanitization.js.map +1 -0
  493. package/dist/sequence/index.js +295 -0
  494. package/dist/sequence/index.js.map +1 -0
  495. package/dist/sessions/assumptions.js +54 -0
  496. package/dist/sessions/assumptions.js.map +1 -0
  497. package/dist/sessions/briefing.js +377 -0
  498. package/dist/sessions/briefing.js.map +1 -0
  499. package/dist/sessions/context-alert.js +222 -0
  500. package/dist/sessions/context-alert.js.map +1 -0
  501. package/dist/sessions/context-inject.js +61 -0
  502. package/dist/sessions/context-inject.js.map +1 -0
  503. package/dist/sessions/context-monitor.js +98 -0
  504. package/dist/sessions/context-monitor.js.map +1 -0
  505. package/dist/sessions/decisions.js +65 -0
  506. package/dist/sessions/decisions.js.map +1 -0
  507. package/dist/sessions/find.js +65 -0
  508. package/dist/sessions/find.js.map +1 -0
  509. package/dist/sessions/handoff.js +328 -0
  510. package/dist/sessions/handoff.js.map +1 -0
  511. package/dist/sessions/hitl-warnings.js +254 -0
  512. package/dist/sessions/hitl-warnings.js.map +1 -0
  513. package/dist/sessions/index.js +321 -0
  514. package/dist/sessions/index.js.map +1 -0
  515. package/dist/sessions/session-archive.js +40 -0
  516. package/dist/sessions/session-archive.js.map +1 -0
  517. package/dist/sessions/session-cleanup.js +59 -0
  518. package/dist/sessions/session-cleanup.js.map +1 -0
  519. package/dist/sessions/session-drift.js +134 -0
  520. package/dist/sessions/session-drift.js.map +1 -0
  521. package/dist/sessions/session-enforcement.js +144 -0
  522. package/dist/sessions/session-enforcement.js.map +1 -0
  523. package/dist/sessions/session-grade.js +253 -0
  524. package/dist/sessions/session-grade.js.map +1 -0
  525. package/dist/sessions/session-history.js +42 -0
  526. package/dist/sessions/session-history.js.map +1 -0
  527. package/dist/sessions/session-id.js +81 -0
  528. package/dist/sessions/session-id.js.map +1 -0
  529. package/dist/sessions/session-memory-bridge.js +52 -0
  530. package/dist/sessions/session-memory-bridge.js.map +1 -0
  531. package/dist/sessions/session-show.js +24 -0
  532. package/dist/sessions/session-show.js.map +1 -0
  533. package/dist/sessions/session-stats.js +69 -0
  534. package/dist/sessions/session-stats.js.map +1 -0
  535. package/dist/sessions/session-suspend.js +39 -0
  536. package/dist/sessions/session-suspend.js.map +1 -0
  537. package/dist/sessions/session-switch.js +51 -0
  538. package/dist/sessions/session-switch.js.map +1 -0
  539. package/dist/sessions/session-view.js +76 -0
  540. package/dist/sessions/session-view.js.map +1 -0
  541. package/dist/sessions/snapshot.js +213 -0
  542. package/dist/sessions/snapshot.js.map +1 -0
  543. package/dist/sessions/statusline-setup.js +85 -0
  544. package/dist/sessions/statusline-setup.js.map +1 -0
  545. package/dist/sessions/types.js +8 -0
  546. package/dist/sessions/types.js.map +1 -0
  547. package/dist/signaldock/claude-code-transport.d.ts +34 -0
  548. package/dist/signaldock/claude-code-transport.d.ts.map +1 -0
  549. package/dist/signaldock/claude-code-transport.js +107 -0
  550. package/dist/signaldock/claude-code-transport.js.map +1 -0
  551. package/dist/signaldock/factory.d.ts +22 -0
  552. package/dist/signaldock/factory.d.ts.map +1 -0
  553. package/dist/signaldock/factory.js +25 -0
  554. package/dist/signaldock/factory.js.map +1 -0
  555. package/dist/signaldock/index.d.ts +13 -0
  556. package/dist/signaldock/index.d.ts.map +1 -0
  557. package/dist/signaldock/index.js +9 -0
  558. package/dist/signaldock/index.js.map +1 -0
  559. package/dist/signaldock/signaldock-transport.d.ts +45 -0
  560. package/dist/signaldock/signaldock-transport.d.ts.map +1 -0
  561. package/dist/signaldock/signaldock-transport.js +122 -0
  562. package/dist/signaldock/signaldock-transport.js.map +1 -0
  563. package/dist/signaldock/transport.d.ts +49 -0
  564. package/dist/signaldock/transport.d.ts.map +1 -0
  565. package/dist/signaldock/transport.js +11 -0
  566. package/dist/signaldock/transport.js.map +1 -0
  567. package/dist/signaldock/types.d.ts +88 -0
  568. package/dist/signaldock/types.d.ts.map +1 -0
  569. package/dist/signaldock/types.js +11 -0
  570. package/dist/signaldock/types.js.map +1 -0
  571. package/dist/skills/agents/config.js +94 -0
  572. package/dist/skills/agents/config.js.map +1 -0
  573. package/dist/skills/agents/install.js +116 -0
  574. package/dist/skills/agents/install.js.map +1 -0
  575. package/dist/skills/agents/registry.js +161 -0
  576. package/dist/skills/agents/registry.js.map +1 -0
  577. package/dist/skills/discovery.js +333 -0
  578. package/dist/skills/discovery.js.map +1 -0
  579. package/dist/skills/dispatch.js +347 -0
  580. package/dist/skills/dispatch.js.map +1 -0
  581. package/dist/skills/dynamic-skill-generator.js +100 -0
  582. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  583. package/dist/skills/index.js +44 -0
  584. package/dist/skills/index.js.map +1 -0
  585. package/dist/skills/injection/subagent.js +195 -0
  586. package/dist/skills/injection/subagent.js.map +1 -0
  587. package/dist/skills/injection/token.js +260 -0
  588. package/dist/skills/injection/token.js.map +1 -0
  589. package/dist/skills/install.js +40 -0
  590. package/dist/skills/install.js.map +1 -0
  591. package/dist/skills/manifests/contribution.js +175 -0
  592. package/dist/skills/manifests/contribution.js.map +1 -0
  593. package/dist/skills/manifests/research.js +281 -0
  594. package/dist/skills/manifests/research.js.map +1 -0
  595. package/dist/skills/manifests/resolver.js +146 -0
  596. package/dist/skills/manifests/resolver.js.map +1 -0
  597. package/dist/skills/marketplace.js +90 -0
  598. package/dist/skills/marketplace.js.map +1 -0
  599. package/dist/skills/orchestrator/spawn.js +178 -0
  600. package/dist/skills/orchestrator/spawn.js.map +1 -0
  601. package/dist/skills/orchestrator/startup.js +451 -0
  602. package/dist/skills/orchestrator/startup.js.map +1 -0
  603. package/dist/skills/orchestrator/validator.js +301 -0
  604. package/dist/skills/orchestrator/validator.js.map +1 -0
  605. package/dist/skills/precedence-integration.js +73 -0
  606. package/dist/skills/precedence-integration.js.map +1 -0
  607. package/dist/skills/precedence-types.js +16 -0
  608. package/dist/skills/precedence-types.js.map +1 -0
  609. package/dist/skills/routing-table.js +63 -0
  610. package/dist/skills/routing-table.js.map +1 -0
  611. package/dist/skills/skill-paths.js +220 -0
  612. package/dist/skills/skill-paths.js.map +1 -0
  613. package/dist/skills/test-utility.js +55 -0
  614. package/dist/skills/test-utility.js.map +1 -0
  615. package/dist/skills/types.js +118 -0
  616. package/dist/skills/types.js.map +1 -0
  617. package/dist/skills/validation.js +183 -0
  618. package/dist/skills/validation.js.map +1 -0
  619. package/dist/skills/version.js +57 -0
  620. package/dist/skills/version.js.map +1 -0
  621. package/dist/snapshot/index.js +188 -0
  622. package/dist/snapshot/index.js.map +1 -0
  623. package/dist/spawn/adapter-registry.js +246 -0
  624. package/dist/spawn/adapter-registry.js.map +1 -0
  625. package/dist/spawn/index.js +10 -0
  626. package/dist/spawn/index.js.map +1 -0
  627. package/dist/stats/index.js +343 -0
  628. package/dist/stats/index.js.map +1 -0
  629. package/dist/stats/workflow-telemetry.js +400 -0
  630. package/dist/stats/workflow-telemetry.js.map +1 -0
  631. package/dist/sticky/archive.js +47 -0
  632. package/dist/sticky/archive.js.map +1 -0
  633. package/dist/sticky/convert.js +235 -0
  634. package/dist/sticky/convert.js.map +1 -0
  635. package/dist/sticky/create.js +48 -0
  636. package/dist/sticky/create.js.map +1 -0
  637. package/dist/sticky/id.js +35 -0
  638. package/dist/sticky/id.js.map +1 -0
  639. package/dist/sticky/index.js +16 -0
  640. package/dist/sticky/index.js.map +1 -0
  641. package/dist/sticky/list.js +44 -0
  642. package/dist/sticky/list.js.map +1 -0
  643. package/dist/sticky/purge.js +45 -0
  644. package/dist/sticky/purge.js.map +1 -0
  645. package/dist/sticky/show.js +42 -0
  646. package/dist/sticky/show.js.map +1 -0
  647. package/dist/sticky/types.js +10 -0
  648. package/dist/sticky/types.js.map +1 -0
  649. package/dist/store/agent-registry-accessor.d.ts +10 -433
  650. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  651. package/dist/store/agent-registry-accessor.js +169 -0
  652. package/dist/store/agent-registry-accessor.js.map +1 -0
  653. package/dist/store/atomic.js +167 -0
  654. package/dist/store/atomic.js.map +1 -0
  655. package/dist/store/backup.js +94 -0
  656. package/dist/store/backup.js.map +1 -0
  657. package/dist/store/brain-accessor.js +397 -0
  658. package/dist/store/brain-accessor.js.map +1 -0
  659. package/dist/store/brain-schema.js +215 -0
  660. package/dist/store/brain-schema.js.map +1 -0
  661. package/dist/store/brain-sqlite.js +222 -0
  662. package/dist/store/brain-sqlite.js.map +1 -0
  663. package/dist/store/cache.js +168 -0
  664. package/dist/store/cache.js.map +1 -0
  665. package/dist/store/chain-schema.js +51 -0
  666. package/dist/store/chain-schema.js.map +1 -0
  667. package/dist/store/converters.js +124 -0
  668. package/dist/store/converters.js.map +1 -0
  669. package/dist/store/cross-db-cleanup.d.ts +34 -0
  670. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  671. package/dist/store/cross-db-cleanup.js +169 -0
  672. package/dist/store/cross-db-cleanup.js.map +1 -0
  673. package/dist/store/data-accessor.js +26 -0
  674. package/dist/store/data-accessor.js.map +1 -0
  675. package/dist/store/data-safety-central.js +269 -0
  676. package/dist/store/data-safety-central.js.map +1 -0
  677. package/dist/store/data-safety.js +274 -0
  678. package/dist/store/data-safety.js.map +1 -0
  679. package/dist/store/db-helpers.js +224 -0
  680. package/dist/store/db-helpers.js.map +1 -0
  681. package/dist/store/export.js +155 -0
  682. package/dist/store/export.js.map +1 -0
  683. package/dist/store/file-utils.js +270 -0
  684. package/dist/store/file-utils.js.map +1 -0
  685. package/dist/store/git-checkpoint.js +365 -0
  686. package/dist/store/git-checkpoint.js.map +1 -0
  687. package/dist/store/import-logging.js +139 -0
  688. package/dist/store/import-logging.js.map +1 -0
  689. package/dist/store/import-remap.js +145 -0
  690. package/dist/store/import-remap.js.map +1 -0
  691. package/dist/store/import-sort.js +121 -0
  692. package/dist/store/import-sort.js.map +1 -0
  693. package/dist/store/index.js +28 -0
  694. package/dist/store/index.js.map +1 -0
  695. package/dist/store/json.js +208 -0
  696. package/dist/store/json.js.map +1 -0
  697. package/dist/store/lifecycle-store.js +249 -0
  698. package/dist/store/lifecycle-store.js.map +1 -0
  699. package/dist/store/lock.js +70 -0
  700. package/dist/store/lock.js.map +1 -0
  701. package/dist/store/migration-manager.js +151 -0
  702. package/dist/store/migration-manager.js.map +1 -0
  703. package/dist/store/migration-sqlite.js +676 -0
  704. package/dist/store/migration-sqlite.js.map +1 -0
  705. package/dist/store/nexus-schema.js +62 -0
  706. package/dist/store/nexus-schema.js.map +1 -0
  707. package/dist/store/nexus-sqlite.js +217 -0
  708. package/dist/store/nexus-sqlite.js.map +1 -0
  709. package/dist/store/nexus-validation-schemas.js +40 -0
  710. package/dist/store/nexus-validation-schemas.js.map +1 -0
  711. package/dist/store/parsers.js +37 -0
  712. package/dist/store/parsers.js.map +1 -0
  713. package/dist/store/project-detect.js +457 -0
  714. package/dist/store/project-detect.js.map +1 -0
  715. package/dist/store/provider.js +101 -0
  716. package/dist/store/provider.js.map +1 -0
  717. package/dist/store/safety-data-accessor.js +257 -0
  718. package/dist/store/safety-data-accessor.js.map +1 -0
  719. package/dist/store/schema.js +7 -0
  720. package/dist/store/schema.js.map +1 -0
  721. package/dist/store/session-store.js +219 -0
  722. package/dist/store/session-store.js.map +1 -0
  723. package/dist/store/signaldock-sqlite.d.ts.map +1 -1
  724. package/dist/store/signaldock-sqlite.js +178 -0
  725. package/dist/store/signaldock-sqlite.js.map +1 -0
  726. package/dist/store/sqlite-backup.js +105 -0
  727. package/dist/store/sqlite-backup.js.map +1 -0
  728. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  729. package/dist/store/sqlite-data-accessor.js +784 -0
  730. package/dist/store/sqlite-data-accessor.js.map +1 -0
  731. package/dist/store/sqlite.js +465 -0
  732. package/dist/store/sqlite.js.map +1 -0
  733. package/dist/store/status-registry.js +8 -0
  734. package/dist/store/status-registry.js.map +1 -0
  735. package/dist/store/task-store.d.ts.map +1 -1
  736. package/dist/store/task-store.js +350 -0
  737. package/dist/store/task-store.js.map +1 -0
  738. package/dist/store/tasks-schema.d.ts +0 -224
  739. package/dist/store/tasks-schema.d.ts.map +1 -1
  740. package/dist/store/tasks-schema.js +637 -0
  741. package/dist/store/tasks-schema.js.map +1 -0
  742. package/dist/store/typed-query.js +15 -0
  743. package/dist/store/typed-query.js.map +1 -0
  744. package/dist/store/validation-schemas.js +278 -0
  745. package/dist/store/validation-schemas.js.map +1 -0
  746. package/dist/system/archive-analytics.js +277 -0
  747. package/dist/system/archive-analytics.js.map +1 -0
  748. package/dist/system/archive-stats.js +64 -0
  749. package/dist/system/archive-stats.js.map +1 -0
  750. package/dist/system/audit.js +145 -0
  751. package/dist/system/audit.js.map +1 -0
  752. package/dist/system/backup.js +141 -0
  753. package/dist/system/backup.js.map +1 -0
  754. package/dist/system/cleanup.js +134 -0
  755. package/dist/system/cleanup.js.map +1 -0
  756. package/dist/system/health.d.ts +1 -1
  757. package/dist/system/health.d.ts.map +1 -1
  758. package/dist/system/health.js +1089 -0
  759. package/dist/system/health.js.map +1 -0
  760. package/dist/system/index.js +18 -0
  761. package/dist/system/index.js.map +1 -0
  762. package/dist/system/inject-generate.js +122 -0
  763. package/dist/system/inject-generate.js.map +1 -0
  764. package/dist/system/labels.js +38 -0
  765. package/dist/system/labels.js.map +1 -0
  766. package/dist/system/metrics.js +61 -0
  767. package/dist/system/metrics.js.map +1 -0
  768. package/dist/system/migrate.js +43 -0
  769. package/dist/system/migrate.js.map +1 -0
  770. package/dist/system/platform-paths.js +80 -0
  771. package/dist/system/platform-paths.js.map +1 -0
  772. package/dist/system/runtime.js +161 -0
  773. package/dist/system/runtime.js.map +1 -0
  774. package/dist/system/safestop.js +99 -0
  775. package/dist/system/safestop.js.map +1 -0
  776. package/dist/system/storage-preflight.js +123 -0
  777. package/dist/system/storage-preflight.js.map +1 -0
  778. package/dist/task-work/index.js +159 -0
  779. package/dist/task-work/index.js.map +1 -0
  780. package/dist/tasks/add.js +661 -0
  781. package/dist/tasks/add.js.map +1 -0
  782. package/dist/tasks/analyze.js +85 -0
  783. package/dist/tasks/analyze.js.map +1 -0
  784. package/dist/tasks/archive.js +90 -0
  785. package/dist/tasks/archive.js.map +1 -0
  786. package/dist/tasks/atomicity.js +83 -0
  787. package/dist/tasks/atomicity.js.map +1 -0
  788. package/dist/tasks/cancel-ops.js +83 -0
  789. package/dist/tasks/cancel-ops.js.map +1 -0
  790. package/dist/tasks/complete.js +211 -0
  791. package/dist/tasks/complete.js.map +1 -0
  792. package/dist/tasks/crossref-extract.js +73 -0
  793. package/dist/tasks/crossref-extract.js.map +1 -0
  794. package/dist/tasks/delete-preview.js +192 -0
  795. package/dist/tasks/delete-preview.js.map +1 -0
  796. package/dist/tasks/delete.js +120 -0
  797. package/dist/tasks/delete.js.map +1 -0
  798. package/dist/tasks/deletion-strategy.js +200 -0
  799. package/dist/tasks/deletion-strategy.js.map +1 -0
  800. package/dist/tasks/dependency-check.js +278 -0
  801. package/dist/tasks/dependency-check.js.map +1 -0
  802. package/dist/tasks/deps-ready.js +32 -0
  803. package/dist/tasks/deps-ready.js.map +1 -0
  804. package/dist/tasks/enforcement.js +86 -0
  805. package/dist/tasks/enforcement.js.map +1 -0
  806. package/dist/tasks/epic-enforcement.js +294 -0
  807. package/dist/tasks/epic-enforcement.js.map +1 -0
  808. package/dist/tasks/find.js +154 -0
  809. package/dist/tasks/find.js.map +1 -0
  810. package/dist/tasks/graph-cache.js +127 -0
  811. package/dist/tasks/graph-cache.js.map +1 -0
  812. package/dist/tasks/graph-ops.js +171 -0
  813. package/dist/tasks/graph-ops.js.map +1 -0
  814. package/dist/tasks/graph-rag.js +328 -0
  815. package/dist/tasks/graph-rag.js.map +1 -0
  816. package/dist/tasks/hierarchy-policy.js +149 -0
  817. package/dist/tasks/hierarchy-policy.js.map +1 -0
  818. package/dist/tasks/hierarchy.js +185 -0
  819. package/dist/tasks/hierarchy.js.map +1 -0
  820. package/dist/tasks/id-generator.js +65 -0
  821. package/dist/tasks/id-generator.js.map +1 -0
  822. package/dist/tasks/index.js +14 -0
  823. package/dist/tasks/index.js.map +1 -0
  824. package/dist/tasks/labels.js +52 -0
  825. package/dist/tasks/labels.js.map +1 -0
  826. package/dist/tasks/list.js +75 -0
  827. package/dist/tasks/list.js.map +1 -0
  828. package/dist/tasks/phase-tracking.js +133 -0
  829. package/dist/tasks/phase-tracking.js.map +1 -0
  830. package/dist/tasks/pipeline-stage.js +248 -0
  831. package/dist/tasks/pipeline-stage.js.map +1 -0
  832. package/dist/tasks/plan.js +268 -0
  833. package/dist/tasks/plan.js.map +1 -0
  834. package/dist/tasks/relates.js +89 -0
  835. package/dist/tasks/relates.js.map +1 -0
  836. package/dist/tasks/show.js +80 -0
  837. package/dist/tasks/show.js.map +1 -0
  838. package/dist/tasks/size-weighting.js +86 -0
  839. package/dist/tasks/size-weighting.js.map +1 -0
  840. package/dist/tasks/staleness.js +86 -0
  841. package/dist/tasks/staleness.js.map +1 -0
  842. package/dist/tasks/task-ops.js +1340 -0
  843. package/dist/tasks/task-ops.js.map +1 -0
  844. package/dist/tasks/update.js +271 -0
  845. package/dist/tasks/update.js.map +1 -0
  846. package/dist/templates/index.js +10 -0
  847. package/dist/templates/index.js.map +1 -0
  848. package/dist/templates/parser.js +254 -0
  849. package/dist/templates/parser.js.map +1 -0
  850. package/dist/ui/aliases.js +153 -0
  851. package/dist/ui/aliases.js.map +1 -0
  852. package/dist/ui/changelog.js +184 -0
  853. package/dist/ui/changelog.js.map +1 -0
  854. package/dist/ui/command-registry.js +168 -0
  855. package/dist/ui/command-registry.js.map +1 -0
  856. package/dist/ui/flags.js +94 -0
  857. package/dist/ui/flags.js.map +1 -0
  858. package/dist/ui/index.js +24 -0
  859. package/dist/ui/index.js.map +1 -0
  860. package/dist/upgrade.js +1159 -0
  861. package/dist/upgrade.js.map +1 -0
  862. package/dist/validation/chain-validation.js +146 -0
  863. package/dist/validation/chain-validation.js.map +1 -0
  864. package/dist/validation/compliance.js +155 -0
  865. package/dist/validation/compliance.js.map +1 -0
  866. package/dist/validation/docs-sync.js +212 -0
  867. package/dist/validation/docs-sync.js.map +1 -0
  868. package/dist/validation/doctor/checks.js +1069 -0
  869. package/dist/validation/doctor/checks.js.map +1 -0
  870. package/dist/validation/doctor/index.js +9 -0
  871. package/dist/validation/doctor/index.js.map +1 -0
  872. package/dist/validation/doctor/project-cache.js +160 -0
  873. package/dist/validation/doctor/project-cache.js.map +1 -0
  874. package/dist/validation/doctor/utils.js +155 -0
  875. package/dist/validation/doctor/utils.js.map +1 -0
  876. package/dist/validation/engine.js +902 -0
  877. package/dist/validation/engine.js.map +1 -0
  878. package/dist/validation/gap-check.js +175 -0
  879. package/dist/validation/gap-check.js.map +1 -0
  880. package/dist/validation/index.js +40 -0
  881. package/dist/validation/index.js.map +1 -0
  882. package/dist/validation/manifest.js +237 -0
  883. package/dist/validation/manifest.js.map +1 -0
  884. package/dist/validation/operation-gate-validators.js +724 -0
  885. package/dist/validation/operation-gate-validators.js.map +1 -0
  886. package/dist/validation/operation-verification-gates.js +532 -0
  887. package/dist/validation/operation-verification-gates.js.map +1 -0
  888. package/dist/validation/param-utils.js +139 -0
  889. package/dist/validation/param-utils.js.map +1 -0
  890. package/dist/validation/protocol-common.js +300 -0
  891. package/dist/validation/protocol-common.js.map +1 -0
  892. package/dist/validation/protocols/consensus.js +71 -0
  893. package/dist/validation/protocols/consensus.js.map +1 -0
  894. package/dist/validation/protocols/contribution.js +59 -0
  895. package/dist/validation/protocols/contribution.js.map +1 -0
  896. package/dist/validation/protocols/decomposition.js +59 -0
  897. package/dist/validation/protocols/decomposition.js.map +1 -0
  898. package/dist/validation/protocols/implementation.js +59 -0
  899. package/dist/validation/protocols/implementation.js.map +1 -0
  900. package/dist/validation/protocols/release-protocol.js +60 -0
  901. package/dist/validation/protocols/release-protocol.js.map +1 -0
  902. package/dist/validation/protocols/research.js +77 -0
  903. package/dist/validation/protocols/research.js.map +1 -0
  904. package/dist/validation/protocols/specification.js +84 -0
  905. package/dist/validation/protocols/specification.js.map +1 -0
  906. package/dist/validation/protocols/testing-protocol.js +70 -0
  907. package/dist/validation/protocols/testing-protocol.js.map +1 -0
  908. package/dist/validation/protocols/validation-protocol.js +70 -0
  909. package/dist/validation/protocols/validation-protocol.js.map +1 -0
  910. package/dist/validation/schema-integrity.js +170 -0
  911. package/dist/validation/schema-integrity.js.map +1 -0
  912. package/dist/validation/schema-validator.js +176 -0
  913. package/dist/validation/schema-validator.js.map +1 -0
  914. package/dist/validation/validate-ops.js +937 -0
  915. package/dist/validation/validate-ops.js.map +1 -0
  916. package/dist/validation/validation-rules.js +226 -0
  917. package/dist/validation/validation-rules.js.map +1 -0
  918. package/dist/validation/verification.js +321 -0
  919. package/dist/validation/verification.js.map +1 -0
  920. package/package.json +17 -7
  921. package/src/agents/agent-schema.ts +2 -5
  922. package/src/code/index.ts +10 -0
  923. package/src/code/outline.ts +214 -0
  924. package/src/code/parser.ts +299 -0
  925. package/src/code/search.ts +173 -0
  926. package/src/code/unfold.ts +204 -0
  927. package/src/conduit/__tests__/dual-api-e2e.test.ts +212 -0
  928. package/src/conduit/__tests__/local-credential-flow.test.ts +230 -0
  929. package/src/conduit/__tests__/local-transport.test.ts +320 -0
  930. package/src/conduit/__tests__/sse-transport.test.ts +344 -0
  931. package/src/conduit/conduit-client.ts +9 -0
  932. package/src/conduit/factory.ts +9 -5
  933. package/src/conduit/http-transport.ts +76 -15
  934. package/src/conduit/index.ts +5 -2
  935. package/src/conduit/local-transport.ts +309 -0
  936. package/src/conduit/sse-transport.ts +382 -0
  937. package/src/index.ts +1 -0
  938. package/src/internal.ts +6 -1
  939. package/src/lib/index.ts +8 -0
  940. package/src/lib/tree-sitter-languages.ts +88 -0
  941. package/src/memory/__tests__/brain-links.test.ts +14 -0
  942. package/src/memory/__tests__/brain-retrieval.test.ts +10 -0
  943. package/src/memory/__tests__/session-memory.test.ts +17 -0
  944. package/src/memory/brain-links.ts +17 -0
  945. package/src/memory/brain-maintenance.ts +33 -1
  946. package/src/memory/brain-retrieval.ts +18 -2
  947. package/src/memory/decisions.ts +18 -2
  948. package/src/orchestration/hierarchy.ts +202 -0
  949. package/src/orchestration/index.ts +1 -0
  950. package/src/store/agent-registry-accessor.ts +284 -108
  951. package/src/store/cross-db-cleanup.ts +175 -1
  952. package/src/store/signaldock-sqlite.ts +262 -60
  953. package/src/store/sqlite-data-accessor.ts +3 -0
  954. package/src/store/task-store.ts +8 -1
  955. package/src/store/tasks-schema.ts +3 -38
  956. package/src/system/__tests__/health.test.ts +2 -2
  957. package/src/system/health.ts +34 -15
package/src/internal.ts CHANGED
@@ -43,6 +43,11 @@ export {
43
43
  installMcpToProviders,
44
44
  installSkillsGlobally,
45
45
  } from './bootstrap.js';
46
+ export { smartOutline } from './code/outline.js';
47
+ // Code analysis (Smart Explore)
48
+ export { batchParse, parseFile } from './code/parser.js';
49
+ export { smartSearch } from './code/search.js';
50
+ export { smartUnfold } from './code/unfold.js';
46
51
  export type { ViolationLogEntry } from './compliance/protocol-enforcement.js';
47
52
  // Compliance
48
53
  export { ProtocolEnforcer, protocolEnforcer } from './compliance/protocol-enforcement.js';
@@ -144,6 +149,7 @@ export type {
144
149
  BrainMaintenanceDecayResult,
145
150
  BrainMaintenanceEmbeddingsResult,
146
151
  BrainMaintenanceOptions,
152
+ BrainMaintenanceReconciliationResult,
147
153
  BrainMaintenanceResult,
148
154
  } from './memory/brain-maintenance.js';
149
155
  export { runBrainMaintenance } from './memory/brain-maintenance.js';
@@ -805,4 +811,3 @@ export { createConduit } from './conduit/factory.js';
805
811
  export { HttpTransport } from './conduit/http-transport.js';
806
812
  export { decrypt, encrypt } from './crypto/credentials.js';
807
813
  export { AgentRegistryAccessor } from './store/agent-registry-accessor.js';
808
- export { agentCredentials } from './store/tasks-schema.js';
package/src/lib/index.ts CHANGED
@@ -14,3 +14,11 @@ export {
14
14
  type RetryOptions,
15
15
  withRetry,
16
16
  } from './retry.js';
17
+
18
+ export {
19
+ detectLanguage,
20
+ grammarPackage,
21
+ SUPPORTED_EXTENSIONS,
22
+ SUPPORTED_LANGUAGES,
23
+ type TreeSitterLanguage,
24
+ } from './tree-sitter-languages.js';
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Tree-sitter language detection and grammar resolution.
3
+ *
4
+ * Maps file extensions to tree-sitter grammar packages for use by
5
+ * the Smart Explore code analysis pipeline.
6
+ *
7
+ * @task T148
8
+ */
9
+
10
+ /** Supported tree-sitter language identifiers. */
11
+ export type TreeSitterLanguage =
12
+ | 'typescript'
13
+ | 'tsx'
14
+ | 'javascript'
15
+ | 'python'
16
+ | 'go'
17
+ | 'rust'
18
+ | 'java'
19
+ | 'c'
20
+ | 'cpp'
21
+ | 'ruby';
22
+
23
+ /** Map from file extension (without dot) to tree-sitter language. */
24
+ const EXTENSION_MAP: Record<string, TreeSitterLanguage> = {
25
+ ts: 'typescript',
26
+ tsx: 'tsx',
27
+ mts: 'typescript',
28
+ cts: 'typescript',
29
+ js: 'javascript',
30
+ jsx: 'javascript',
31
+ mjs: 'javascript',
32
+ cjs: 'javascript',
33
+ py: 'python',
34
+ pyi: 'python',
35
+ go: 'go',
36
+ rs: 'rust',
37
+ java: 'java',
38
+ c: 'c',
39
+ h: 'c',
40
+ cpp: 'cpp',
41
+ cc: 'cpp',
42
+ cxx: 'cpp',
43
+ hpp: 'cpp',
44
+ hh: 'cpp',
45
+ rb: 'ruby',
46
+ };
47
+
48
+ /** Map from language to its npm grammar package name. */
49
+ const GRAMMAR_PACKAGE_MAP: Record<TreeSitterLanguage, string> = {
50
+ typescript: 'tree-sitter-typescript',
51
+ tsx: 'tree-sitter-typescript',
52
+ javascript: 'tree-sitter-javascript',
53
+ python: 'tree-sitter-python',
54
+ go: 'tree-sitter-go',
55
+ rust: 'tree-sitter-rust',
56
+ java: 'tree-sitter-java',
57
+ c: 'tree-sitter-c',
58
+ cpp: 'tree-sitter-cpp',
59
+ ruby: 'tree-sitter-ruby',
60
+ };
61
+
62
+ /**
63
+ * Detect tree-sitter language from a file path.
64
+ *
65
+ * @param filePath - Path to a source file
66
+ * @returns The detected language, or undefined if unsupported
67
+ */
68
+ export function detectLanguage(filePath: string): TreeSitterLanguage | undefined {
69
+ const ext = filePath.split('.').pop()?.toLowerCase();
70
+ if (!ext) return undefined;
71
+ return EXTENSION_MAP[ext];
72
+ }
73
+
74
+ /**
75
+ * Get the npm grammar package name for a language.
76
+ *
77
+ * @param language - A tree-sitter language identifier
78
+ * @returns The npm package name containing the grammar
79
+ */
80
+ export function grammarPackage(language: TreeSitterLanguage): string {
81
+ return GRAMMAR_PACKAGE_MAP[language];
82
+ }
83
+
84
+ /** All supported file extensions. */
85
+ export const SUPPORTED_EXTENSIONS = Object.keys(EXTENSION_MAP);
86
+
87
+ /** All supported languages. */
88
+ export const SUPPORTED_LANGUAGES: TreeSitterLanguage[] = [...new Set(Object.values(EXTENSION_MAP))];
@@ -19,11 +19,25 @@ describe('Brain Memory Links', () => {
19
19
  cleoDir = join(tempDir, '.cleo');
20
20
  await mkdir(cleoDir, { recursive: true });
21
21
  process.env['CLEO_DIR'] = cleoDir;
22
+
23
+ // Initialize tasks.db with test task IDs for cross-db write-guard validation
24
+ const { getDb } = await import('../../store/sqlite.js');
25
+ const { tasks } = await import('../../store/tasks-schema.js');
26
+ const db = await getDb(tempDir);
27
+ for (const id of ['T1000', 'T2000', 'T9999']) {
28
+ await db
29
+ .insert(tasks)
30
+ .values({ id, title: `Test task ${id}`, status: 'pending', type: 'task', position: 0 })
31
+ .onConflictDoNothing()
32
+ .run();
33
+ }
22
34
  });
23
35
 
24
36
  afterEach(async () => {
25
37
  const { closeBrainDb } = await import('../../store/brain-sqlite.js');
38
+ const { resetDbState } = await import('../../store/sqlite.js');
26
39
  closeBrainDb();
40
+ resetDbState();
27
41
  delete process.env['CLEO_DIR'];
28
42
  await rm(tempDir, { recursive: true, force: true });
29
43
  });
@@ -21,6 +21,16 @@ describe('Brain Retrieval', () => {
21
21
  cleoDir = join(tempDir, '.cleo');
22
22
  await mkdir(cleoDir, { recursive: true });
23
23
  process.env['CLEO_DIR'] = cleoDir;
24
+
25
+ // Initialize tasks.db with test session for cross-db write-guard validation
26
+ const { getDb } = await import('../../store/sqlite.js');
27
+ const { sessions } = await import('../../store/tasks-schema.js');
28
+ const db = await getDb(tempDir);
29
+ await db
30
+ .insert(sessions)
31
+ .values({ id: 'S-123', name: 'test-session', status: 'active' })
32
+ .onConflictDoNothing()
33
+ .run();
24
34
  });
25
35
 
26
36
  afterEach(async () => {
@@ -56,6 +56,23 @@ describe('Session Memory', () => {
56
56
  cleoDir = join(tempDir, '.cleo');
57
57
  await mkdir(cleoDir, { recursive: true });
58
58
  process.env['CLEO_DIR'] = cleoDir;
59
+
60
+ // Initialize tasks.db with test task IDs and session for cross-db write-guard validation
61
+ const { getDb } = await import('../../store/sqlite.js');
62
+ const { tasks, sessions } = await import('../../store/tasks-schema.js');
63
+ const db = await getDb(tempDir);
64
+ for (const id of ['T100', 'T101']) {
65
+ await db
66
+ .insert(tasks)
67
+ .values({ id, title: `Test task ${id}`, status: 'pending', type: 'task', position: 0 })
68
+ .onConflictDoNothing()
69
+ .run();
70
+ }
71
+ await db
72
+ .insert(sessions)
73
+ .values({ id: 'S-001', name: 'test-session', status: 'active' })
74
+ .onConflictDoNothing()
75
+ .run();
59
76
  });
60
77
 
61
78
  afterEach(async () => {
@@ -17,6 +17,8 @@ import type {
17
17
  BrainMemoryLinkRow,
18
18
  BrainPatternRow,
19
19
  } from '../store/brain-schema.js';
20
+ import { taskExistsInTasksDb } from '../store/cross-db-cleanup.js';
21
+ import { getDb } from '../store/sqlite.js';
20
22
 
21
23
  type MemoryType = (typeof BRAIN_MEMORY_TYPES)[number];
22
24
  type LinkType = (typeof BRAIN_LINK_TYPES)[number];
@@ -45,6 +47,14 @@ export async function linkMemoryToTask(
45
47
  throw new Error('memoryId and taskId are required');
46
48
  }
47
49
 
50
+ // Write-guard: reject stale task IDs before creating cross-db reference
51
+ const tasksDb = await getDb(projectRoot);
52
+ if (!(await taskExistsInTasksDb(taskId, tasksDb))) {
53
+ throw new Error(
54
+ `Write-guard: task ${taskId} does not exist in tasks.db — refusing to create brain link`,
55
+ );
56
+ }
57
+
48
58
  const accessor = await getBrainAccessor(projectRoot);
49
59
 
50
60
  // Check if link already exists
@@ -120,10 +130,17 @@ export async function bulkLink(
120
130
  links: BulkLinkEntry[],
121
131
  ): Promise<{ created: number; skipped: number }> {
122
132
  const accessor = await getBrainAccessor(projectRoot);
133
+ const tasksDb = await getDb(projectRoot);
123
134
  let created = 0;
124
135
  let skipped = 0;
125
136
 
126
137
  for (const link of links) {
138
+ // Write-guard: reject stale task IDs before creating cross-db reference
139
+ if (!(await taskExistsInTasksDb(link.taskId, tasksDb))) {
140
+ skipped++;
141
+ continue;
142
+ }
143
+
127
144
  // Check for duplicate
128
145
  const existing = await accessor.getLinksForMemory(link.memoryType, link.memoryId);
129
146
  const duplicate = existing.find(
@@ -19,6 +19,7 @@
19
19
  * @what Combined maintenance runner with CLI command and progress reporting
20
20
  */
21
21
 
22
+ import { reconcileOrphanedRefs } from '../store/cross-db-cleanup.js';
22
23
  import { applyTemporalDecay, consolidateMemories } from './brain-lifecycle.js';
23
24
  import { populateEmbeddings } from './brain-retrieval.js';
24
25
 
@@ -40,6 +41,16 @@ export interface BrainMaintenanceConsolidationResult {
40
41
  removed: number;
41
42
  }
42
43
 
44
+ /** Orphaned reference reconciliation step result. */
45
+ export interface BrainMaintenanceReconciliationResult {
46
+ /** Decisions with stale task/epic references fixed. */
47
+ decisionsFixed: number;
48
+ /** Observations with stale session references fixed. */
49
+ observationsFixed: number;
50
+ /** Memory links with stale task references removed. */
51
+ linksRemoved: number;
52
+ }
53
+
43
54
  /** Embedding backfill step result. */
44
55
  export interface BrainMaintenanceEmbeddingsResult {
45
56
  /** Observations successfully embedded. */
@@ -61,6 +72,8 @@ export interface BrainMaintenanceResult {
61
72
  decay: BrainMaintenanceDecayResult;
62
73
  /** Results from the memory consolidation step. */
63
74
  consolidation: BrainMaintenanceConsolidationResult;
75
+ /** Results from the cross-DB orphaned reference reconciliation step. */
76
+ reconciliation: BrainMaintenanceReconciliationResult;
64
77
  /** Results from the embedding backfill step. */
65
78
  embeddings: BrainMaintenanceEmbeddingsResult;
66
79
  /** Total wall-clock duration of the maintenance run in milliseconds. */
@@ -78,6 +91,8 @@ export interface BrainMaintenanceOptions {
78
91
  skipDecay?: boolean;
79
92
  /** Skip the memory consolidation step. Default: false. */
80
93
  skipConsolidation?: boolean;
94
+ /** Skip the cross-DB orphaned reference reconciliation step. Default: false. */
95
+ skipReconciliation?: boolean;
81
96
  /** Skip the embedding backfill step. Default: false. */
82
97
  skipEmbeddings?: boolean;
83
98
  /**
@@ -130,6 +145,7 @@ export async function runBrainMaintenance(
130
145
  const {
131
146
  skipDecay = false,
132
147
  skipConsolidation = false,
148
+ skipReconciliation = false,
133
149
  skipEmbeddings = false,
134
150
  onProgress,
135
151
  } = options ?? {};
@@ -139,6 +155,11 @@ export async function runBrainMaintenance(
139
155
  // Default zero values for each step (used when step is skipped).
140
156
  const decayResult: BrainMaintenanceDecayResult = { affected: 0 };
141
157
  const consolidationResult: BrainMaintenanceConsolidationResult = { merged: 0, removed: 0 };
158
+ const reconciliationResult: BrainMaintenanceReconciliationResult = {
159
+ decisionsFixed: 0,
160
+ observationsFixed: 0,
161
+ linksRemoved: 0,
162
+ };
142
163
  const embeddingsResult: BrainMaintenanceEmbeddingsResult = {
143
164
  processed: 0,
144
165
  skipped: 0,
@@ -162,7 +183,17 @@ export async function runBrainMaintenance(
162
183
  onProgress?.('consolidation', 1, 1);
163
184
  }
164
185
 
165
- // Step 3: Embedding backfill (with per-item progress relay)
186
+ // Step 3: Cross-DB orphaned reference reconciliation
187
+ if (!skipReconciliation) {
188
+ onProgress?.('reconciliation', 0, 1);
189
+ const raw = await reconcileOrphanedRefs(projectRoot);
190
+ reconciliationResult.decisionsFixed = raw.decisionsFixed;
191
+ reconciliationResult.observationsFixed = raw.observationsFixed;
192
+ reconciliationResult.linksRemoved = raw.linksRemoved;
193
+ onProgress?.('reconciliation', 1, 1);
194
+ }
195
+
196
+ // Step 4: Embedding backfill (with per-item progress relay)
166
197
  if (!skipEmbeddings) {
167
198
  const raw = await populateEmbeddings(projectRoot, {
168
199
  onProgress: (current, total) => {
@@ -177,6 +208,7 @@ export async function runBrainMaintenance(
177
208
  return {
178
209
  decay: decayResult,
179
210
  consolidation: consolidationResult,
211
+ reconciliation: reconciliationResult,
180
212
  embeddings: embeddingsResult,
181
213
  duration: Date.now() - startTime,
182
214
  };
@@ -24,6 +24,8 @@ import type {
24
24
  BRAIN_OBSERVATION_SOURCE_TYPES,
25
25
  BRAIN_OBSERVATION_TYPES,
26
26
  } from '../store/brain-schema.js';
27
+ import { sessionExistsInTasksDb } from '../store/cross-db-cleanup.js';
28
+ import { getDb } from '../store/sqlite.js';
27
29
  import { typedAll } from '../store/typed-query.js';
28
30
  import { embedText, isEmbeddingAvailable } from './brain-embedding.js';
29
31
  import type {
@@ -560,6 +562,20 @@ export async function observeBrain(
560
562
  }
561
563
  }
562
564
 
565
+ // Write-guard: validate cross-db session reference before inserting
566
+ let validSessionId = sourceSessionId ?? null;
567
+ if (validSessionId) {
568
+ try {
569
+ const tasksDb = await getDb(projectRoot);
570
+ if (!(await sessionExistsInTasksDb(validSessionId, tasksDb))) {
571
+ validSessionId = null;
572
+ }
573
+ } catch {
574
+ // Best-effort: if tasks.db unavailable, null out the reference
575
+ validSessionId = null;
576
+ }
577
+ }
578
+
563
579
  const id = `O-${Date.now().toString(36)}-${(observeSeq++ % 1000).toString(36)}`;
564
580
  const accessor = await getBrainAccessor(projectRoot);
565
581
 
@@ -570,7 +586,7 @@ export async function observeBrain(
570
586
  narrative: text,
571
587
  contentHash,
572
588
  project: project ?? null,
573
- sourceSessionId: sourceSessionId ?? null,
589
+ sourceSessionId: validSessionId,
574
590
  sourceType: sourceType ?? 'agent',
575
591
  createdAt: now,
576
592
  });
@@ -607,7 +623,7 @@ export async function observeBrain(
607
623
 
608
624
  // Auto-link observation to the currently focused task when a session is active. (T141)
609
625
  // This is a fire-and-forget side effect — linking failure MUST NOT block the return.
610
- if (sourceSessionId) {
626
+ if (validSessionId) {
611
627
  autoLinkObservationToTask(projectRoot, row.id, accessor).catch(() => {
612
628
  /* Auto-linking is best-effort */
613
629
  });
@@ -11,6 +11,8 @@
11
11
 
12
12
  import { getBrainAccessor } from '../store/brain-accessor.js';
13
13
  import type { BrainDecisionRow, NewBrainDecisionRow } from '../store/brain-schema.js';
14
+ import { taskExistsInTasksDb } from '../store/cross-db-cleanup.js';
15
+ import { getDb } from '../store/sqlite.js';
14
16
 
15
17
  /** Parameters for storing a new decision. */
16
18
  export interface StoreDecisionParams {
@@ -110,6 +112,20 @@ export async function storeDecision(
110
112
 
111
113
  // Create new decision with sequential ID
112
114
  const id = await nextDecisionId(projectRoot);
115
+
116
+ // Write-guard: validate cross-db task references before inserting
117
+ let validEpicId = params.contextEpicId;
118
+ let validTaskId = params.contextTaskId;
119
+ if (validEpicId || validTaskId) {
120
+ const tasksDb = await getDb(projectRoot);
121
+ if (validEpicId && !(await taskExistsInTasksDb(validEpicId, tasksDb))) {
122
+ validEpicId = undefined;
123
+ }
124
+ if (validTaskId && !(await taskExistsInTasksDb(validTaskId, tasksDb))) {
125
+ validTaskId = undefined;
126
+ }
127
+ }
128
+
113
129
  const row: NewBrainDecisionRow = {
114
130
  id,
115
131
  type: params.type,
@@ -118,8 +134,8 @@ export async function storeDecision(
118
134
  confidence: params.confidence,
119
135
  outcome: params.outcome,
120
136
  alternativesJson: params.alternatives ? JSON.stringify(params.alternatives) : undefined,
121
- contextEpicId: params.contextEpicId,
122
- contextTaskId: params.contextTaskId,
137
+ contextEpicId: validEpicId,
138
+ contextTaskId: validTaskId,
123
139
  contextPhase: params.contextPhase,
124
140
  };
125
141
 
@@ -0,0 +1,202 @@
1
+ /**
2
+ * OrchestrationHierarchyImpl — Concrete implementation of the 5-level hierarchy.
3
+ *
4
+ * Loads the agent matrix from agent-matrix.json (if available) or uses
5
+ * the built-in default matrix. Provides escalation chain resolution,
6
+ * authority checks, and project scoping.
7
+ *
8
+ * @see docs/specs/CLEO-ORCH-PLAN.md
9
+ * @task T217
10
+ */
11
+
12
+ import type {
13
+ AgentHierarchy,
14
+ AgentHierarchyEntry,
15
+ EscalationChain,
16
+ OrchestrationHierarchyAPI,
17
+ } from '@cleocode/contracts';
18
+ import { OrchestrationLevel } from '@cleocode/contracts';
19
+
20
+ /**
21
+ * Default agent hierarchy matching PRIME's agent matrix (Agenda 10).
22
+ *
23
+ * This is the canonical hierarchy as of 2026-03-30:
24
+ * Owner (HITL)
25
+ * └── cleoos-opus-orchestrator (PRIME)
26
+ * ├── cleo-rust-lead → cleo-dev
27
+ * ├── cleo-db-lead → signaldock-backend
28
+ * ├── cleo-historian
29
+ * └── signaldock-core-agent → signaldock-backend, signaldock-dev, signaldock-frontend
30
+ */
31
+ function buildDefaultHierarchy(): AgentHierarchy {
32
+ const agents: Record<string, AgentHierarchyEntry> = {
33
+ owner: {
34
+ agentId: 'owner',
35
+ displayName: 'Owner (HITL)',
36
+ level: OrchestrationLevel.HITL,
37
+ reportsTo: null,
38
+ manages: ['cleoos-opus-orchestrator'],
39
+ projectId: null,
40
+ teamId: null,
41
+ canSpawn: false,
42
+ },
43
+ 'cleoos-opus-orchestrator': {
44
+ agentId: 'cleoos-opus-orchestrator',
45
+ displayName: 'PRIME Orchestrator',
46
+ level: OrchestrationLevel.Prime,
47
+ reportsTo: 'owner',
48
+ manages: ['cleo-rust-lead', 'cleo-db-lead', 'cleo-historian', 'signaldock-core-agent'],
49
+ projectId: null,
50
+ teamId: null,
51
+ canSpawn: true,
52
+ },
53
+ 'cleo-rust-lead': {
54
+ agentId: 'cleo-rust-lead',
55
+ displayName: 'Cleo Rust Lead',
56
+ level: OrchestrationLevel.ProjectLead,
57
+ reportsTo: 'cleoos-opus-orchestrator',
58
+ manages: ['cleo-dev'],
59
+ projectId: 'cleocode',
60
+ teamId: 'cleocode',
61
+ canSpawn: true,
62
+ },
63
+ 'cleo-db-lead': {
64
+ agentId: 'cleo-db-lead',
65
+ displayName: 'Cleo DB Lead',
66
+ level: OrchestrationLevel.ProjectLead,
67
+ reportsTo: 'cleoos-opus-orchestrator',
68
+ manages: ['signaldock-backend'],
69
+ projectId: 'cleocode',
70
+ teamId: 'cleocode',
71
+ canSpawn: true,
72
+ },
73
+ 'cleo-historian': {
74
+ agentId: 'cleo-historian',
75
+ displayName: 'Cleo Historian',
76
+ level: OrchestrationLevel.TeamLead,
77
+ reportsTo: 'cleoos-opus-orchestrator',
78
+ manages: [],
79
+ projectId: 'cleocode',
80
+ teamId: 'cleocode',
81
+ canSpawn: false,
82
+ },
83
+ 'cleo-dev': {
84
+ agentId: 'cleo-dev',
85
+ displayName: 'Cleo Dev',
86
+ level: OrchestrationLevel.TeamLead,
87
+ reportsTo: 'cleo-rust-lead',
88
+ manages: [],
89
+ projectId: 'cleocode',
90
+ teamId: 'cleocode',
91
+ canSpawn: true,
92
+ },
93
+ 'signaldock-core-agent': {
94
+ agentId: 'signaldock-core-agent',
95
+ displayName: 'SignalDock Core Agent',
96
+ level: OrchestrationLevel.ProjectLead,
97
+ reportsTo: 'cleoos-opus-orchestrator',
98
+ manages: ['signaldock-backend', 'signaldock-dev', 'signaldock-frontend'],
99
+ projectId: 'signaldock',
100
+ teamId: 'signaldock',
101
+ canSpawn: true,
102
+ },
103
+ 'signaldock-backend': {
104
+ agentId: 'signaldock-backend',
105
+ displayName: 'SignalDock Backend',
106
+ level: OrchestrationLevel.TeamLead,
107
+ reportsTo: 'signaldock-core-agent',
108
+ manages: [],
109
+ projectId: 'signaldock',
110
+ teamId: 'signaldock',
111
+ canSpawn: false,
112
+ },
113
+ 'signaldock-dev': {
114
+ agentId: 'signaldock-dev',
115
+ displayName: 'SignalDock Dev',
116
+ level: OrchestrationLevel.TeamLead,
117
+ reportsTo: 'signaldock-core-agent',
118
+ manages: [],
119
+ projectId: 'signaldock',
120
+ teamId: 'signaldock',
121
+ canSpawn: false,
122
+ },
123
+ 'signaldock-frontend': {
124
+ agentId: 'signaldock-frontend',
125
+ displayName: 'SignalDock Frontend',
126
+ level: OrchestrationLevel.TeamLead,
127
+ reportsTo: 'signaldock-core-agent',
128
+ manages: [],
129
+ projectId: 'signaldock',
130
+ teamId: 'signaldock',
131
+ canSpawn: false,
132
+ },
133
+ };
134
+
135
+ return {
136
+ agents,
137
+ primeId: 'cleoos-opus-orchestrator',
138
+ projectIds: ['cleocode', 'signaldock'],
139
+ };
140
+ }
141
+
142
+ /** Concrete implementation of OrchestrationHierarchyAPI. */
143
+ export class OrchestrationHierarchyImpl implements OrchestrationHierarchyAPI {
144
+ private hierarchy: AgentHierarchy;
145
+
146
+ constructor(hierarchy?: AgentHierarchy) {
147
+ this.hierarchy = hierarchy ?? buildDefaultHierarchy();
148
+ }
149
+
150
+ /** Get the full hierarchy. */
151
+ getHierarchy(): AgentHierarchy {
152
+ return this.hierarchy;
153
+ }
154
+
155
+ /** Get a single agent's hierarchy entry. */
156
+ getAgent(agentId: string): AgentHierarchyEntry | null {
157
+ return this.hierarchy.agents[agentId] ?? null;
158
+ }
159
+
160
+ /** Get all agents at a specific level. */
161
+ getAgentsAtLevel(level: OrchestrationLevel): AgentHierarchyEntry[] {
162
+ return Object.values(this.hierarchy.agents).filter((a) => a.level === level);
163
+ }
164
+
165
+ /** Get the escalation chain for an agent (nearest authority first). */
166
+ getEscalationChain(agentId: string): EscalationChain {
167
+ const chain: string[] = [];
168
+ let current = this.hierarchy.agents[agentId];
169
+
170
+ while (current?.reportsTo) {
171
+ chain.push(current.reportsTo);
172
+ current = this.hierarchy.agents[current.reportsTo];
173
+ }
174
+
175
+ return {
176
+ fromAgentId: agentId,
177
+ chain,
178
+ finalAuthority: chain.length > 0 ? chain[chain.length - 1]! : agentId,
179
+ };
180
+ }
181
+
182
+ /** Get all agents directly managed by a specific agent. */
183
+ getDirectReports(agentId: string): AgentHierarchyEntry[] {
184
+ const agent = this.hierarchy.agents[agentId];
185
+ if (!agent) return [];
186
+
187
+ return agent.manages
188
+ .map((id) => this.hierarchy.agents[id])
189
+ .filter((a): a is AgentHierarchyEntry => a !== undefined);
190
+ }
191
+
192
+ /** Check if agent A has authority over agent B (A is in B's escalation chain). */
193
+ hasAuthority(agentIdA: string, agentIdB: string): boolean {
194
+ const chain = this.getEscalationChain(agentIdB);
195
+ return chain.chain.includes(agentIdA);
196
+ }
197
+
198
+ /** Get all agents scoped to a project. */
199
+ getProjectAgents(projectId: string): AgentHierarchyEntry[] {
200
+ return Object.values(this.hierarchy.agents).filter((a) => a.projectId === projectId);
201
+ }
202
+ }
@@ -20,6 +20,7 @@ export {
20
20
  } from './analyze.js';
21
21
  export type { ContextEstimation } from './context.js';
22
22
  export { countManifestEntries, estimateContext } from './context.js';
23
+ export { OrchestrationHierarchyImpl } from './hierarchy.js';
23
24
  export type {
24
25
  EpicStatus,
25
26
  OverallStatus,