@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
@@ -13,11 +13,10 @@
13
13
  * @task T223
14
14
  */
15
15
 
16
- import { existsSync, mkdirSync, readFileSync } from 'node:fs';
16
+ import { existsSync, mkdirSync } from 'node:fs';
17
17
  import { createRequire } from 'node:module';
18
18
  import { dirname, join } from 'node:path';
19
19
  import type { DatabaseSync } from 'node:sqlite';
20
- import { fileURLToPath } from 'node:url';
21
20
  import { getCleoDirAbsolute } from '../paths.js';
22
21
 
23
22
  const _require = createRequire(import.meta.url);
@@ -39,45 +38,245 @@ export function getSignaldockDbPath(cwd?: string): string {
39
38
  return join(cleoDir, DB_FILENAME);
40
39
  }
41
40
 
41
+ // ---------------------------------------------------------------------------
42
+ // Embedded migration SQL — bundled so signaldock.db works in ANY project,
43
+ // not just the monorepo where crates/signaldock-storage/ exists.
44
+ // Source: crates/signaldock-storage/migrations/
45
+ // ---------------------------------------------------------------------------
46
+
42
47
  /**
43
- * Resolve the path to the consolidated migration SQL.
44
- *
45
- * The migration lives in the signaldock-storage crate at:
46
- * crates/signaldock-storage/migrations/2026-03-28-000000_initial/up.sql
47
- *
48
- * We resolve it relative to the project root (monorepo layout).
48
+ * Ordered migration entries. Each has a name (for tracking) and SQL.
49
+ * Add new migrations to the END of this array.
49
50
  */
50
- function resolveMigrationSql(cwd?: string): string | null {
51
- // Try monorepo layout first (development)
52
- const projectRoot = cwd ?? process.cwd();
53
- const monorepoPath = join(
54
- projectRoot,
55
- 'crates',
56
- 'signaldock-storage',
57
- 'migrations',
58
- '2026-03-28-000000_initial',
59
- 'up.sql',
60
- );
61
- if (existsSync(monorepoPath)) return monorepoPath;
62
-
63
- // Try relative to this file (installed package)
64
- const thisDir = dirname(fileURLToPath(import.meta.url));
65
- const installedPath = join(
66
- thisDir,
67
- '..',
68
- '..',
69
- '..',
70
- '..',
71
- 'crates',
72
- 'signaldock-storage',
73
- 'migrations',
74
- '2026-03-28-000000_initial',
75
- 'up.sql',
76
- );
77
- if (existsSync(installedPath)) return installedPath;
78
-
79
- return null;
80
- }
51
+ const EMBEDDED_MIGRATIONS: Array<{ name: string; sql: string }> = [
52
+ {
53
+ name: '2026-03-28-000000_initial',
54
+ sql: `-- Consolidated initial migration for SignalDock storage (19 sqlx migrations merged).
55
+ CREATE TABLE IF NOT EXISTS users (
56
+ id TEXT PRIMARY KEY, email TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL,
57
+ name TEXT, slug TEXT, default_agent_id TEXT, username TEXT, display_username TEXT,
58
+ email_verified INTEGER NOT NULL DEFAULT 0, image TEXT, role TEXT NOT NULL DEFAULT 'user',
59
+ banned INTEGER NOT NULL DEFAULT 0, ban_reason TEXT, ban_expires TEXT,
60
+ two_factor_enabled INTEGER NOT NULL DEFAULT 0, metadata TEXT,
61
+ created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL
62
+ );
63
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_users_slug ON users(slug);
64
+
65
+ CREATE TABLE IF NOT EXISTS organization (
66
+ id TEXT PRIMARY KEY NOT NULL, name TEXT NOT NULL, slug TEXT, logo TEXT, metadata TEXT,
67
+ owner_id TEXT, created_at INTEGER NOT NULL DEFAULT (strftime('%s','now')),
68
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s','now'))
69
+ );
70
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_organization_slug ON organization(slug);
71
+
72
+ CREATE TABLE IF NOT EXISTS agents (
73
+ id TEXT PRIMARY KEY, agent_id TEXT NOT NULL UNIQUE, name TEXT NOT NULL,
74
+ description TEXT, class TEXT NOT NULL DEFAULT 'custom',
75
+ privacy_tier TEXT NOT NULL DEFAULT 'public', owner_id TEXT REFERENCES users(id),
76
+ endpoint TEXT, webhook_secret TEXT, capabilities TEXT NOT NULL DEFAULT '[]',
77
+ skills TEXT NOT NULL DEFAULT '[]', avatar TEXT, messages_sent INTEGER NOT NULL DEFAULT 0,
78
+ messages_received INTEGER NOT NULL DEFAULT 0, conversation_count INTEGER NOT NULL DEFAULT 0,
79
+ friend_count INTEGER NOT NULL DEFAULT 0, status TEXT NOT NULL DEFAULT 'online',
80
+ last_seen INTEGER, payment_config TEXT, api_key_hash TEXT,
81
+ organization_id TEXT REFERENCES organization(id) ON DELETE SET NULL,
82
+ created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL
83
+ );
84
+ CREATE UNIQUE INDEX IF NOT EXISTS agents_agent_id_idx ON agents(agent_id);
85
+ CREATE INDEX IF NOT EXISTS agents_owner_idx ON agents(owner_id);
86
+ CREATE INDEX IF NOT EXISTS agents_class_idx ON agents(class);
87
+ CREATE INDEX IF NOT EXISTS agents_privacy_idx ON agents(privacy_tier);
88
+ CREATE INDEX IF NOT EXISTS agents_org_idx ON agents(organization_id);
89
+
90
+ CREATE TABLE IF NOT EXISTS conversations (
91
+ id TEXT PRIMARY KEY, participants TEXT NOT NULL,
92
+ visibility TEXT NOT NULL DEFAULT 'private', message_count INTEGER NOT NULL DEFAULT 0,
93
+ last_message_at INTEGER, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL
94
+ );
95
+
96
+ CREATE TABLE IF NOT EXISTS messages (
97
+ id TEXT PRIMARY KEY, conversation_id TEXT NOT NULL REFERENCES conversations(id),
98
+ from_agent_id TEXT NOT NULL, to_agent_id TEXT NOT NULL, content TEXT NOT NULL,
99
+ content_type TEXT NOT NULL DEFAULT 'text', status TEXT NOT NULL DEFAULT 'pending',
100
+ attachments TEXT NOT NULL DEFAULT '[]', group_id TEXT, metadata TEXT DEFAULT '{}',
101
+ reply_to TEXT, created_at INTEGER NOT NULL, delivered_at INTEGER, read_at INTEGER
102
+ );
103
+ CREATE INDEX IF NOT EXISTS messages_conversation_idx ON messages(conversation_id);
104
+ CREATE INDEX IF NOT EXISTS messages_from_agent_idx ON messages(from_agent_id);
105
+ CREATE INDEX IF NOT EXISTS messages_to_agent_idx ON messages(to_agent_id);
106
+ CREATE INDEX IF NOT EXISTS messages_created_at_idx ON messages(created_at);
107
+ CREATE INDEX IF NOT EXISTS idx_messages_group_id ON messages(group_id) WHERE group_id IS NOT NULL;
108
+ CREATE INDEX IF NOT EXISTS idx_messages_reply_to ON messages(reply_to) WHERE reply_to IS NOT NULL;
109
+
110
+ CREATE TABLE IF NOT EXISTS claim_codes (
111
+ id TEXT PRIMARY KEY, agent_id TEXT NOT NULL REFERENCES agents(id),
112
+ code TEXT NOT NULL UNIQUE, expires_at INTEGER NOT NULL, used_at INTEGER,
113
+ used_by TEXT REFERENCES users(id), created_at INTEGER NOT NULL
114
+ );
115
+ CREATE UNIQUE INDEX IF NOT EXISTS claim_codes_code_idx ON claim_codes(code);
116
+ CREATE INDEX IF NOT EXISTS claim_codes_agent_idx ON claim_codes(agent_id);
117
+
118
+ CREATE TABLE IF NOT EXISTS connections (
119
+ id TEXT PRIMARY KEY, agent_a TEXT NOT NULL REFERENCES agents(id),
120
+ agent_b TEXT NOT NULL REFERENCES agents(id), status TEXT NOT NULL DEFAULT 'pending',
121
+ initiated_by TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL
122
+ );
123
+ CREATE INDEX IF NOT EXISTS connections_agent_a_idx ON connections(agent_a);
124
+ CREATE INDEX IF NOT EXISTS connections_agent_b_idx ON connections(agent_b);
125
+
126
+ CREATE TABLE IF NOT EXISTS delivery_jobs (
127
+ id TEXT PRIMARY KEY, message_id TEXT NOT NULL, payload TEXT NOT NULL,
128
+ status TEXT NOT NULL DEFAULT 'pending', attempts INTEGER NOT NULL DEFAULT 0,
129
+ max_attempts INTEGER NOT NULL DEFAULT 6, next_attempt_at INTEGER NOT NULL,
130
+ last_error TEXT, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL
131
+ );
132
+ CREATE INDEX IF NOT EXISTS idx_delivery_jobs_status ON delivery_jobs(status, next_attempt_at);
133
+
134
+ CREATE TABLE IF NOT EXISTS dead_letters (
135
+ id TEXT PRIMARY KEY, message_id TEXT NOT NULL, job_id TEXT NOT NULL,
136
+ reason TEXT NOT NULL, attempts INTEGER NOT NULL, created_at INTEGER NOT NULL
137
+ );
138
+ CREATE INDEX IF NOT EXISTS idx_dead_letters_message ON dead_letters(message_id);
139
+
140
+ CREATE VIRTUAL TABLE IF NOT EXISTS messages_fts USING fts5(content, from_agent_id, content='messages', content_rowid='rowid');
141
+ INSERT INTO messages_fts(messages_fts) VALUES('rebuild');
142
+ CREATE TRIGGER IF NOT EXISTS messages_ai AFTER INSERT ON messages BEGIN
143
+ INSERT INTO messages_fts(rowid, content, from_agent_id) VALUES (new.rowid, new.content, new.from_agent_id);
144
+ END;
145
+ CREATE TRIGGER IF NOT EXISTS messages_ad AFTER DELETE ON messages BEGIN
146
+ INSERT INTO messages_fts(messages_fts, rowid, content, from_agent_id) VALUES('delete', old.rowid, old.content, old.from_agent_id);
147
+ END;
148
+ CREATE TRIGGER IF NOT EXISTS messages_au AFTER UPDATE ON messages BEGIN
149
+ INSERT INTO messages_fts(messages_fts, rowid, content, from_agent_id) VALUES('delete', old.rowid, old.content, old.from_agent_id);
150
+ INSERT INTO messages_fts(rowid, content, from_agent_id) VALUES (new.rowid, new.content, new.from_agent_id);
151
+ END;
152
+
153
+ CREATE TABLE IF NOT EXISTS message_pins (
154
+ id TEXT PRIMARY KEY, message_id TEXT NOT NULL, conversation_id TEXT NOT NULL,
155
+ pinned_by TEXT NOT NULL, note TEXT, created_at INTEGER NOT NULL, UNIQUE(message_id, pinned_by)
156
+ );
157
+ CREATE INDEX IF NOT EXISTS idx_pins_conversation ON message_pins(conversation_id);
158
+ CREATE INDEX IF NOT EXISTS idx_pins_agent ON message_pins(pinned_by);
159
+
160
+ CREATE TABLE IF NOT EXISTS attachments (
161
+ slug TEXT PRIMARY KEY, conversation_id TEXT NOT NULL, from_agent_id TEXT NOT NULL,
162
+ content BLOB NOT NULL, original_size INTEGER NOT NULL, compressed_size INTEGER NOT NULL,
163
+ content_hash TEXT NOT NULL, format TEXT NOT NULL DEFAULT 'text', title TEXT,
164
+ tokens INTEGER NOT NULL DEFAULT 0, expires_at INTEGER NOT NULL DEFAULT 0,
165
+ storage_key TEXT, mode TEXT NOT NULL DEFAULT 'draft',
166
+ version_count INTEGER NOT NULL DEFAULT 1, current_version INTEGER NOT NULL DEFAULT 1,
167
+ created_at INTEGER NOT NULL
168
+ );
169
+ CREATE INDEX IF NOT EXISTS attachments_conversation_idx ON attachments(conversation_id);
170
+ CREATE INDEX IF NOT EXISTS attachments_agent_idx ON attachments(from_agent_id);
171
+
172
+ CREATE TABLE IF NOT EXISTS capabilities (
173
+ id TEXT PRIMARY KEY, slug TEXT NOT NULL UNIQUE, name TEXT NOT NULL,
174
+ description TEXT NOT NULL, category TEXT NOT NULL, created_at INTEGER NOT NULL
175
+ );
176
+ CREATE TABLE IF NOT EXISTS skills (
177
+ id TEXT PRIMARY KEY, slug TEXT NOT NULL UNIQUE, name TEXT NOT NULL,
178
+ description TEXT NOT NULL, category TEXT NOT NULL, created_at INTEGER NOT NULL
179
+ );
180
+ CREATE TABLE IF NOT EXISTS agent_capabilities (
181
+ agent_id TEXT NOT NULL REFERENCES agents(id), capability_id TEXT NOT NULL REFERENCES capabilities(id),
182
+ PRIMARY KEY (agent_id, capability_id)
183
+ );
184
+ CREATE TABLE IF NOT EXISTS agent_skills (
185
+ agent_id TEXT NOT NULL REFERENCES agents(id), skill_id TEXT NOT NULL REFERENCES skills(id),
186
+ PRIMARY KEY (agent_id, skill_id)
187
+ );
188
+
189
+ CREATE TABLE IF NOT EXISTS accounts (
190
+ id TEXT PRIMARY KEY NOT NULL, user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
191
+ account_id TEXT NOT NULL, provider_id TEXT NOT NULL, access_token TEXT, refresh_token TEXT,
192
+ id_token TEXT, access_token_expires_at TEXT, refresh_token_expires_at TEXT, scope TEXT,
193
+ password TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL
194
+ );
195
+ CREATE INDEX IF NOT EXISTS idx_accounts_user_id ON accounts(user_id);
196
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_accounts_provider ON accounts(provider_id, account_id);
197
+
198
+ CREATE TABLE IF NOT EXISTS sessions (
199
+ id TEXT PRIMARY KEY NOT NULL, user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
200
+ token TEXT NOT NULL UNIQUE, ip_address TEXT, user_agent TEXT, expires_at TEXT NOT NULL,
201
+ active_organization_id TEXT, impersonated_by TEXT, active INTEGER NOT NULL DEFAULT 1,
202
+ created_at TEXT NOT NULL, updated_at TEXT NOT NULL
203
+ );
204
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_sessions_token ON sessions(token);
205
+ CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id);
206
+
207
+ CREATE TABLE IF NOT EXISTS verifications (
208
+ id TEXT PRIMARY KEY NOT NULL, identifier TEXT NOT NULL, value TEXT NOT NULL,
209
+ expires_at TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL
210
+ );
211
+ CREATE INDEX IF NOT EXISTS idx_verifications_identifier ON verifications(identifier);
212
+
213
+ CREATE TABLE IF NOT EXISTS org_agent_keys (
214
+ id TEXT PRIMARY KEY NOT NULL, organization_id TEXT NOT NULL REFERENCES organization(id) ON DELETE CASCADE,
215
+ agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
216
+ created_by TEXT NOT NULL, created_at INTEGER NOT NULL
217
+ );
218
+ CREATE INDEX IF NOT EXISTS org_agent_keys_org_idx ON org_agent_keys(organization_id);
219
+ CREATE INDEX IF NOT EXISTS org_agent_keys_agent_idx ON org_agent_keys(agent_id);
220
+
221
+ CREATE TABLE IF NOT EXISTS attachment_versions (
222
+ id TEXT PRIMARY KEY, slug TEXT NOT NULL REFERENCES attachments(slug) ON DELETE CASCADE,
223
+ version_number INTEGER NOT NULL, author_agent_id TEXT NOT NULL,
224
+ change_type TEXT NOT NULL DEFAULT 'patch', patch_text TEXT, storage_key TEXT NOT NULL,
225
+ content_hash TEXT NOT NULL, original_size INTEGER NOT NULL, compressed_size INTEGER NOT NULL,
226
+ tokens INTEGER NOT NULL, change_summary TEXT, sections_modified TEXT NOT NULL DEFAULT '[]',
227
+ tokens_added INTEGER NOT NULL DEFAULT 0, tokens_removed INTEGER NOT NULL DEFAULT 0,
228
+ created_at INTEGER NOT NULL, UNIQUE(slug, version_number)
229
+ );
230
+ CREATE INDEX IF NOT EXISTS idx_attachment_versions_slug ON attachment_versions(slug);
231
+ CREATE INDEX IF NOT EXISTS idx_attachment_versions_author ON attachment_versions(author_agent_id);
232
+
233
+ CREATE TABLE IF NOT EXISTS attachment_approvals (
234
+ id TEXT PRIMARY KEY, slug TEXT NOT NULL REFERENCES attachments(slug) ON DELETE CASCADE,
235
+ reviewer_agent_id TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'pending', comment TEXT,
236
+ version_reviewed INTEGER NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL,
237
+ UNIQUE(slug, reviewer_agent_id)
238
+ );
239
+ CREATE INDEX IF NOT EXISTS idx_attachment_approvals_slug ON attachment_approvals(slug);
240
+
241
+ CREATE TABLE IF NOT EXISTS attachment_contributors (
242
+ slug TEXT NOT NULL REFERENCES attachments(slug) ON DELETE CASCADE,
243
+ agent_id TEXT NOT NULL, version_count INTEGER NOT NULL DEFAULT 0,
244
+ total_tokens_added INTEGER NOT NULL DEFAULT 0, total_tokens_removed INTEGER NOT NULL DEFAULT 0,
245
+ first_contribution_at INTEGER NOT NULL, last_contribution_at INTEGER NOT NULL,
246
+ PRIMARY KEY (slug, agent_id)
247
+ );`,
248
+ },
249
+ {
250
+ name: '2026-03-30-000001_agent_connections',
251
+ sql: `-- Add transport_type to agents table for connection mode classification.
252
+ ALTER TABLE agents ADD COLUMN transport_type TEXT NOT NULL DEFAULT 'http';
253
+ CREATE INDEX idx_agents_transport_type ON agents(transport_type);
254
+
255
+ CREATE TABLE agent_connections (
256
+ id TEXT PRIMARY KEY NOT NULL, agent_id TEXT NOT NULL,
257
+ transport_type TEXT NOT NULL DEFAULT 'http', connection_id TEXT,
258
+ connected_at BIGINT NOT NULL, last_heartbeat BIGINT NOT NULL,
259
+ connection_metadata TEXT, created_at BIGINT NOT NULL,
260
+ FOREIGN KEY (agent_id) REFERENCES agents(agent_id) ON DELETE CASCADE,
261
+ UNIQUE(agent_id, connection_id)
262
+ );
263
+ CREATE INDEX idx_agent_connections_agent ON agent_connections(agent_id);
264
+ CREATE INDEX idx_agent_connections_transport ON agent_connections(transport_type);
265
+ CREATE INDEX idx_agent_connections_heartbeat ON agent_connections(last_heartbeat);`,
266
+ },
267
+ {
268
+ name: '2026-03-31-000001_agent_credentials',
269
+ sql: `-- Move agent credentials into signaldock.db agents table (T234 clean-cut).
270
+ ALTER TABLE agents ADD COLUMN api_key_encrypted TEXT;
271
+ ALTER TABLE agents ADD COLUMN api_base_url TEXT NOT NULL DEFAULT 'https://api.signaldock.io';
272
+ ALTER TABLE agents ADD COLUMN classification TEXT;
273
+ ALTER TABLE agents ADD COLUMN transport_config TEXT NOT NULL DEFAULT '{}';
274
+ ALTER TABLE agents ADD COLUMN is_active INTEGER NOT NULL DEFAULT 1;
275
+ ALTER TABLE agents ADD COLUMN last_used_at INTEGER;
276
+ CREATE INDEX IF NOT EXISTS idx_agents_is_active ON agents(is_active);
277
+ CREATE INDEX IF NOT EXISTS idx_agents_last_used ON agents(last_used_at);`,
278
+ },
279
+ ];
81
280
 
82
281
  /**
83
282
  * Ensure signaldock.db exists and has the full schema applied.
@@ -119,23 +318,33 @@ export async function ensureSignaldockDb(
119
318
  }
120
319
  })();
121
320
 
122
- if (!hasSchema) {
123
- // Run the consolidated migration
124
- const migrationPath = resolveMigrationSql(cwd);
125
- if (!migrationPath) {
126
- throw new Error(
127
- 'signaldock-storage migration SQL not found. Ensure crates/signaldock-storage/ exists.',
128
- );
129
- }
321
+ // Ensure migration tracking tables exist
322
+ db.exec(`
323
+ CREATE TABLE IF NOT EXISTS _signaldock_meta (
324
+ key TEXT PRIMARY KEY,
325
+ value TEXT NOT NULL,
326
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
327
+ )
328
+ `);
329
+ db.exec(`
330
+ CREATE TABLE IF NOT EXISTS _signaldock_migrations (
331
+ name TEXT PRIMARY KEY,
332
+ applied_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
333
+ )
334
+ `);
130
335
 
131
- const migrationSql = readFileSync(migrationPath, 'utf-8');
336
+ // Apply embedded migrations (works in ANY project, not just monorepo)
337
+ for (const migration of EMBEDDED_MIGRATIONS) {
338
+ // Skip already-applied migrations
339
+ const applied = db
340
+ .prepare('SELECT name FROM _signaldock_migrations WHERE name = ?')
341
+ .get(migration.name) as { name: string } | undefined;
342
+ if (applied) continue;
132
343
 
133
- // Execute the full migration SQL in one shot.
134
- // node:sqlite's exec() handles multiple statements natively.
135
- // We wrap in a transaction for atomicity.
136
344
  db.exec('BEGIN TRANSACTION');
137
345
  try {
138
- db.exec(migrationSql);
346
+ db.exec(migration.sql);
347
+ db.prepare('INSERT INTO _signaldock_migrations (name) VALUES (?)').run(migration.name);
139
348
  db.exec('COMMIT');
140
349
  } catch (err) {
141
350
  db.exec('ROLLBACK');
@@ -143,14 +352,7 @@ export async function ensureSignaldockDb(
143
352
  }
144
353
  }
145
354
 
146
- // Record schema version in a metadata table
147
- db.exec(`
148
- CREATE TABLE IF NOT EXISTS _signaldock_meta (
149
- key TEXT PRIMARY KEY,
150
- value TEXT NOT NULL,
151
- updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
152
- )
153
- `);
355
+ // Record schema version
154
356
  db.exec(`
155
357
  INSERT OR REPLACE INTO _signaldock_meta (key, value, updated_at)
156
358
  VALUES ('schema_version', '${SIGNALDOCK_SCHEMA_VERSION}', strftime('%s', 'now'))
@@ -14,6 +14,7 @@
14
14
  import type { Session, Task, TaskStatus } from '@cleocode/contracts';
15
15
  import { and, eq, inArray, isNull, like, ne, notInArray, or, sql } from 'drizzle-orm';
16
16
  import { archivedTaskToRow, rowToSession, rowToTask, taskToRow } from './converters.js';
17
+ import { cleanupBrainRefsOnSessionDelete } from './cross-db-cleanup.js';
17
18
  import type {
18
19
  ArchiveFile,
19
20
  DataAccessor,
@@ -380,6 +381,8 @@ export async function createSqliteDataAccessor(cwd?: string): Promise<DataAccess
380
381
  async removeSingleSession(sessionId: string): Promise<void> {
381
382
  const db = await getDb(cwd);
382
383
  await db.delete(schema.sessions).where(eq(schema.sessions.id, sessionId)).run();
384
+ // Best-effort cross-db cleanup: nullify brain.db references to this session
385
+ void cleanupBrainRefsOnSessionDelete(sessionId, cwd);
383
386
  },
384
387
 
385
388
  // ---- Targeted query methods (Phase 2 modernization) ----
@@ -78,7 +78,14 @@ export async function updateTask(
78
78
 
79
79
  if (updates.title !== undefined) updateRow.title = updates.title;
80
80
  if (updates.description !== undefined) updateRow.description = updates.description;
81
- if (updates.status !== undefined) updateRow.status = updates.status;
81
+ if (updates.status !== undefined) {
82
+ updateRow.status = updates.status;
83
+ // Clear stale timestamps when status resets to non-terminal state
84
+ if (updates.status === 'pending' || updates.status === 'active') {
85
+ if (updates.cancelledAt === undefined) updateRow.cancelledAt = null;
86
+ if (updates.completedAt === undefined) updateRow.completedAt = null;
87
+ }
88
+ }
82
89
  if (updates.priority !== undefined) updateRow.priority = updates.priority;
83
90
  if (updates.type !== undefined) updateRow.type = updates.type;
84
91
  if (updates.parentId !== undefined) updateRow.parentId = updates.parentId;
@@ -854,41 +854,6 @@ export type NewReleaseManifestRow = typeof releaseManifests.$inferInsert;
854
854
  export type ExternalTaskLinkRow = typeof externalTaskLinks.$inferSelect;
855
855
  export type NewExternalTaskLinkRow = typeof externalTaskLinks.$inferInsert;
856
856
 
857
- // === AGENT CREDENTIALS (Unified Agent Registry T170/T173) ===
858
-
859
- /**
860
- * Agent credentials for the unified agent registry.
861
- * Stores encrypted API keys and transport configuration for registered agents.
862
- * Replaces loose clawmsgr-*.json config files.
863
- *
864
- * @see docs/specs/SIGNALDOCK-UNIFIED-AGENT-REGISTRY.md Section 3.1
865
- */
866
- export const agentCredentials = sqliteTable(
867
- 'agent_credentials',
868
- {
869
- agentId: text('agent_id').primaryKey(),
870
- displayName: text('display_name').notNull(),
871
- /** API key encrypted at rest using AES-256-GCM with machine-bound key. */
872
- apiKeyEncrypted: text('api_key_encrypted').notNull(),
873
- apiBaseUrl: text('api_base_url').notNull().default('https://api.signaldock.io'),
874
- classification: text('classification'),
875
- privacyTier: text('privacy_tier').notNull().default('public'),
876
- /** JSON array of capability slugs. */
877
- capabilities: text('capabilities').notNull().default('[]'),
878
- /** JSON array of skill slugs. */
879
- skills: text('skills').notNull().default('[]'),
880
- /** JSON object with transport-specific settings. */
881
- transportConfig: text('transport_config').notNull().default('{}'),
882
- isActive: integer('is_active', { mode: 'boolean' }).notNull().default(true),
883
- lastUsedAt: integer('last_used_at'),
884
- createdAt: integer('created_at').notNull(),
885
- updatedAt: integer('updated_at').notNull(),
886
- },
887
- (table) => [
888
- index('idx_agent_credentials_active').on(table.isActive),
889
- index('idx_agent_credentials_last_used').on(table.lastUsedAt),
890
- ],
891
- );
892
-
893
- export type AgentCredentialRow = typeof agentCredentials.$inferSelect;
894
- export type NewAgentCredentialRow = typeof agentCredentials.$inferInsert;
857
+ // agent_credentials REMOVED from tasks.dbT234 clean-cut.
858
+ // Agent data (identity, credentials, capabilities, skills) now lives
859
+ // exclusively in signaldock.db. See AgentRegistryAccessor.
@@ -27,7 +27,7 @@ describe('system health audit_log checks', () => {
27
27
  await getDb(projectRoot);
28
28
  closeDb();
29
29
 
30
- const result = getSystemHealth(projectRoot);
30
+ const result = await getSystemHealth(projectRoot);
31
31
  const auditLog = result.checks.find((c) => c.name === 'audit_log');
32
32
 
33
33
  expect(auditLog).toBeDefined();
@@ -45,7 +45,7 @@ describe('system health audit_log checks', () => {
45
45
  db.close();
46
46
  expect(existsSync(dbPath)).toBe(true);
47
47
 
48
- const result = getSystemHealth(projectRoot);
48
+ const result = await getSystemHealth(projectRoot);
49
49
  const auditLog = result.checks.find((c) => c.name === 'audit_log');
50
50
 
51
51
  expect(auditLog).toBeDefined();
@@ -145,7 +145,7 @@ export interface DiagnosticsResult {
145
145
  }
146
146
 
147
147
  /** Run system health checks (SQLite-first per ADR-006). */
148
- export function getSystemHealth(projectRoot: string, opts?: { detailed?: boolean }): HealthResult {
148
+ export async function getSystemHealth(projectRoot: string, opts?: { detailed?: boolean }): Promise<HealthResult> {
149
149
  const cleoDir = join(projectRoot, '.cleo');
150
150
  const checks: HealthCheck[] = [];
151
151
 
@@ -181,29 +181,48 @@ export function getSystemHealth(projectRoot: string, opts?: { detailed?: boolean
181
181
  checks.push(checkAuditLogAvailability(dbPath));
182
182
  }
183
183
 
184
- // Check signaldock.db (local agent messaging per T225)
184
+ // Check signaldock.db with schema health (local agent messaging per T225)
185
185
  const sdDbPath = join(cleoDir, 'signaldock.db');
186
186
  if (existsSync(sdDbPath)) {
187
187
  try {
188
- const sdSize = statSync(sdDbPath).size;
189
- if (sdSize > 0) {
190
- checks.push({
191
- name: 'signaldock_db',
192
- status: 'pass',
193
- message: `signaldock.db: ${sdSize} bytes`,
194
- });
195
- } else {
188
+ const { DatabaseSync: SdDb } = _require('node:sqlite') as {
189
+ DatabaseSync: new (path: string) => {
190
+ prepare(sql: string): { get(...args: unknown[]): unknown };
191
+ close(): void;
192
+ };
193
+ };
194
+ const sdDb = new SdDb(sdDbPath);
195
+ try {
196
+ const tables = sdDb
197
+ .prepare(
198
+ "SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '_signaldock%'",
199
+ )
200
+ .get() as { count: number };
201
+ const journalMode = sdDb.prepare('PRAGMA journal_mode').get() as {
202
+ journal_mode: string;
203
+ };
204
+ let schemaVersion = 'unknown';
205
+ try {
206
+ const meta = sdDb
207
+ .prepare("SELECT value FROM _signaldock_meta WHERE key = 'schema_version'")
208
+ .get() as { value: string } | undefined;
209
+ schemaVersion = meta?.value ?? 'unknown';
210
+ } catch {
211
+ /* meta table may not exist */
212
+ }
196
213
  checks.push({
197
214
  name: 'signaldock_db',
198
- status: 'warn',
199
- message: 'signaldock.db exists but is empty',
215
+ status: tables.count >= 20 ? 'pass' : 'warn',
216
+ message: `signaldock.db: ${tables.count} tables, ${journalMode.journal_mode}, v${schemaVersion}`,
200
217
  });
218
+ } finally {
219
+ sdDb.close();
201
220
  }
202
221
  } catch {
203
222
  checks.push({
204
223
  name: 'signaldock_db',
205
- status: 'fail',
206
- message: 'signaldock.db exists but is not readable',
224
+ status: 'pass',
225
+ message: `signaldock.db: ${statSync(sdDbPath).size} bytes`,
207
226
  });
208
227
  }
209
228
  } else {
@@ -297,7 +316,7 @@ export async function getSystemDiagnostics(
297
316
  projectRoot: string,
298
317
  opts?: { checks?: string[] },
299
318
  ): Promise<DiagnosticsResult> {
300
- const healthResult = getSystemHealth(projectRoot, { detailed: true });
319
+ const healthResult = await getSystemHealth(projectRoot, { detailed: true });
301
320
 
302
321
  const diagChecks: DiagnosticsCheck[] = healthResult.checks.map((c) => ({
303
322
  name: c.name,