@cleocode/core 2026.4.9 → 2026.4.11

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 (903) 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 +2 -2
  42. package/dist/agents/agent-schema.js +82 -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 +344 -0
  63. package/dist/bootstrap.js.map +1 -0
  64. package/dist/caamp/adapter.js +259 -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 +21 -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/cleo.js +322 -0
  73. package/dist/cleo.js.map +1 -0
  74. package/dist/code/index.js +10 -0
  75. package/dist/code/index.js.map +1 -0
  76. package/dist/code/outline.js +165 -0
  77. package/dist/code/outline.js.map +1 -0
  78. package/dist/code/parser.js +295 -0
  79. package/dist/code/parser.js.map +1 -0
  80. package/dist/code/search.js +135 -0
  81. package/dist/code/search.js.map +1 -0
  82. package/dist/code/unfold.js +155 -0
  83. package/dist/code/unfold.js.map +1 -0
  84. package/dist/codebase-map/analyzers/architecture.js +130 -0
  85. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  86. package/dist/codebase-map/analyzers/concerns.js +122 -0
  87. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  88. package/dist/codebase-map/analyzers/conventions.js +149 -0
  89. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  90. package/dist/codebase-map/analyzers/integrations.js +108 -0
  91. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  92. package/dist/codebase-map/analyzers/stack.js +117 -0
  93. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  94. package/dist/codebase-map/analyzers/structure.js +137 -0
  95. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  96. package/dist/codebase-map/analyzers/testing.js +118 -0
  97. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  98. package/dist/codebase-map/index.js +57 -0
  99. package/dist/codebase-map/index.js.map +1 -0
  100. package/dist/codebase-map/store.js +122 -0
  101. package/dist/codebase-map/store.js.map +1 -0
  102. package/dist/codebase-map/summary.js +152 -0
  103. package/dist/codebase-map/summary.js.map +1 -0
  104. package/dist/compliance/index.js +288 -0
  105. package/dist/compliance/index.js.map +1 -0
  106. package/dist/compliance/protocol-enforcement.js +332 -0
  107. package/dist/compliance/protocol-enforcement.js.map +1 -0
  108. package/dist/compliance/protocol-rules.js +786 -0
  109. package/dist/compliance/protocol-rules.js.map +1 -0
  110. package/dist/compliance/protocol-types.js +79 -0
  111. package/dist/compliance/protocol-types.js.map +1 -0
  112. package/dist/compliance/store.js +53 -0
  113. package/dist/compliance/store.js.map +1 -0
  114. package/dist/conduit/conduit-client.js +107 -0
  115. package/dist/conduit/conduit-client.js.map +1 -0
  116. package/dist/conduit/factory.js +52 -0
  117. package/dist/conduit/factory.js.map +1 -0
  118. package/dist/conduit/http-transport.js +155 -0
  119. package/dist/conduit/http-transport.js.map +1 -0
  120. package/dist/conduit/index.js +15 -0
  121. package/dist/conduit/index.js.map +1 -0
  122. package/dist/conduit/local-transport.js +245 -0
  123. package/dist/conduit/local-transport.js.map +1 -0
  124. package/dist/conduit/sse-transport.js +299 -0
  125. package/dist/conduit/sse-transport.js.map +1 -0
  126. package/dist/config/build-config.js +29 -0
  127. package/dist/config/build-config.js.map +1 -0
  128. package/dist/config.js +401 -0
  129. package/dist/config.js.map +1 -0
  130. package/dist/constants.js +18 -0
  131. package/dist/constants.js.map +1 -0
  132. package/dist/context/index.js +137 -0
  133. package/dist/context/index.js.map +1 -0
  134. package/dist/crypto/credentials.js +191 -0
  135. package/dist/crypto/credentials.js.map +1 -0
  136. package/dist/discovery.js +182 -0
  137. package/dist/discovery.js.map +1 -0
  138. package/dist/engine-result.js +12 -0
  139. package/dist/engine-result.js.map +1 -0
  140. package/dist/error-catalog.js +404 -0
  141. package/dist/error-catalog.js.map +1 -0
  142. package/dist/error-registry.js +393 -0
  143. package/dist/error-registry.js.map +1 -0
  144. package/dist/errors.js +167 -0
  145. package/dist/errors.js.map +1 -0
  146. package/dist/hooks/handlers/agent-hooks.js +106 -0
  147. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  148. package/dist/hooks/handlers/context-hooks.js +111 -0
  149. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  150. package/dist/hooks/handlers/error-hooks.js +52 -0
  151. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  152. package/dist/hooks/handlers/file-hooks.js +104 -0
  153. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  154. package/dist/hooks/handlers/handler-helpers.js +61 -0
  155. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  156. package/dist/hooks/handlers/index.js +28 -0
  157. package/dist/hooks/handlers/index.js.map +1 -0
  158. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  159. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  160. package/dist/hooks/handlers/notification-hooks.js +62 -0
  161. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  162. package/dist/hooks/handlers/session-hooks.d.ts +21 -0
  163. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  164. package/dist/hooks/handlers/session-hooks.js +142 -0
  165. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  166. package/dist/hooks/handlers/task-hooks.js +65 -0
  167. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  168. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  169. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  170. package/dist/hooks/index.js +13 -0
  171. package/dist/hooks/index.js.map +1 -0
  172. package/dist/hooks/payload-schemas.d.ts +2 -2
  173. package/dist/hooks/payload-schemas.js +220 -0
  174. package/dist/hooks/payload-schemas.js.map +1 -0
  175. package/dist/hooks/provider-hooks.js +66 -0
  176. package/dist/hooks/provider-hooks.js.map +1 -0
  177. package/dist/hooks/registry.js +229 -0
  178. package/dist/hooks/registry.js.map +1 -0
  179. package/dist/hooks/types.js +66 -0
  180. package/dist/hooks/types.js.map +1 -0
  181. package/dist/hooks.js +136 -0
  182. package/dist/hooks.js.map +1 -0
  183. package/dist/index.js +3361 -3095
  184. package/dist/index.js.map +4 -4
  185. package/dist/init.js +852 -0
  186. package/dist/init.js.map +1 -0
  187. package/dist/inject/index.js +82 -0
  188. package/dist/inject/index.js.map +1 -0
  189. package/dist/injection.js +343 -0
  190. package/dist/injection.js.map +1 -0
  191. package/dist/intelligence/adaptive-validation.js +497 -0
  192. package/dist/intelligence/adaptive-validation.js.map +1 -0
  193. package/dist/intelligence/impact.js +675 -0
  194. package/dist/intelligence/impact.js.map +1 -0
  195. package/dist/intelligence/index.js +22 -0
  196. package/dist/intelligence/index.js.map +1 -0
  197. package/dist/intelligence/patterns.js +492 -0
  198. package/dist/intelligence/patterns.js.map +1 -0
  199. package/dist/intelligence/prediction.js +499 -0
  200. package/dist/intelligence/prediction.js.map +1 -0
  201. package/dist/intelligence/types.js +13 -0
  202. package/dist/intelligence/types.js.map +1 -0
  203. package/dist/internal.d.ts +7 -2
  204. package/dist/internal.d.ts.map +1 -1
  205. package/dist/internal.js +299 -0
  206. package/dist/internal.js.map +1 -0
  207. package/dist/issue/create.js +121 -0
  208. package/dist/issue/create.js.map +1 -0
  209. package/dist/issue/diagnostics.js +59 -0
  210. package/dist/issue/diagnostics.js.map +1 -0
  211. package/dist/issue/index.js +10 -0
  212. package/dist/issue/index.js.map +1 -0
  213. package/dist/issue/template-parser.js +267 -0
  214. package/dist/issue/template-parser.js.map +1 -0
  215. package/dist/json-schema-validator.js +76 -0
  216. package/dist/json-schema-validator.js.map +1 -0
  217. package/dist/lib/index.js +11 -0
  218. package/dist/lib/index.js.map +1 -0
  219. package/dist/lib/retry.js +152 -0
  220. package/dist/lib/retry.js.map +1 -0
  221. package/dist/lib/tree-sitter-languages.js +71 -0
  222. package/dist/lib/tree-sitter-languages.js.map +1 -0
  223. package/dist/lifecycle/chain-composition.js +152 -0
  224. package/dist/lifecycle/chain-composition.js.map +1 -0
  225. package/dist/lifecycle/chain-store.js +246 -0
  226. package/dist/lifecycle/chain-store.js.map +1 -0
  227. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  228. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  229. package/dist/lifecycle/default-chain.js +176 -0
  230. package/dist/lifecycle/default-chain.js.map +1 -0
  231. package/dist/lifecycle/evidence.js +180 -0
  232. package/dist/lifecycle/evidence.js.map +1 -0
  233. package/dist/lifecycle/frontmatter.js +363 -0
  234. package/dist/lifecycle/frontmatter.js.map +1 -0
  235. package/dist/lifecycle/index.js +756 -0
  236. package/dist/lifecycle/index.js.map +1 -0
  237. package/dist/lifecycle/pipeline.js +656 -0
  238. package/dist/lifecycle/pipeline.js.map +1 -0
  239. package/dist/lifecycle/rcasd-index.js +326 -0
  240. package/dist/lifecycle/rcasd-index.js.map +1 -0
  241. package/dist/lifecycle/rcasd-paths.js +220 -0
  242. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  243. package/dist/lifecycle/resume.js +864 -0
  244. package/dist/lifecycle/resume.js.map +1 -0
  245. package/dist/lifecycle/stage-artifacts.js +94 -0
  246. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  247. package/dist/lifecycle/stage-guidance.js +234 -0
  248. package/dist/lifecycle/stage-guidance.js.map +1 -0
  249. package/dist/lifecycle/stages.js +534 -0
  250. package/dist/lifecycle/stages.js.map +1 -0
  251. package/dist/lifecycle/state-machine.js +516 -0
  252. package/dist/lifecycle/state-machine.js.map +1 -0
  253. package/dist/lifecycle/tessera-engine.js +249 -0
  254. package/dist/lifecycle/tessera-engine.js.map +1 -0
  255. package/dist/logger.js +140 -0
  256. package/dist/logger.js.map +1 -0
  257. package/dist/memory/auto-extract.js +177 -0
  258. package/dist/memory/auto-extract.js.map +1 -0
  259. package/dist/memory/brain-embedding.js +66 -0
  260. package/dist/memory/brain-embedding.js.map +1 -0
  261. package/dist/memory/brain-lifecycle.js +298 -0
  262. package/dist/memory/brain-lifecycle.js.map +1 -0
  263. package/dist/memory/brain-links.js +161 -0
  264. package/dist/memory/brain-links.js.map +1 -0
  265. package/dist/memory/brain-maintenance.js +114 -0
  266. package/dist/memory/brain-maintenance.js.map +1 -0
  267. package/dist/memory/brain-migration.js +149 -0
  268. package/dist/memory/brain-migration.js.map +1 -0
  269. package/dist/memory/brain-reasoning.js +215 -0
  270. package/dist/memory/brain-reasoning.js.map +1 -0
  271. package/dist/memory/brain-retrieval.js +542 -0
  272. package/dist/memory/brain-retrieval.js.map +1 -0
  273. package/dist/memory/brain-row-types.js +10 -0
  274. package/dist/memory/brain-row-types.js.map +1 -0
  275. package/dist/memory/brain-search.js +519 -0
  276. package/dist/memory/brain-search.js.map +1 -0
  277. package/dist/memory/brain-similarity.js +145 -0
  278. package/dist/memory/brain-similarity.js.map +1 -0
  279. package/dist/memory/claude-mem-migration.js +277 -0
  280. package/dist/memory/claude-mem-migration.js.map +1 -0
  281. package/dist/memory/decisions.js +162 -0
  282. package/dist/memory/decisions.js.map +1 -0
  283. package/dist/memory/embedding-local.js +97 -0
  284. package/dist/memory/embedding-local.js.map +1 -0
  285. package/dist/memory/embedding-queue.js +271 -0
  286. package/dist/memory/embedding-queue.js.map +1 -0
  287. package/dist/memory/embedding-worker.js +58 -0
  288. package/dist/memory/embedding-worker.js.map +1 -0
  289. package/dist/memory/engine-compat.js +1397 -0
  290. package/dist/memory/engine-compat.js.map +1 -0
  291. package/dist/memory/index.js +1140 -0
  292. package/dist/memory/index.js.map +1 -0
  293. package/dist/memory/learnings.d.ts +4 -4
  294. package/dist/memory/learnings.js +121 -0
  295. package/dist/memory/learnings.js.map +1 -0
  296. package/dist/memory/memory-bridge.js +370 -0
  297. package/dist/memory/memory-bridge.js.map +1 -0
  298. package/dist/memory/patterns.d.ts +6 -6
  299. package/dist/memory/patterns.js +122 -0
  300. package/dist/memory/patterns.js.map +1 -0
  301. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  302. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  303. package/dist/memory/session-memory.js +331 -0
  304. package/dist/memory/session-memory.js.map +1 -0
  305. package/dist/metrics/ab-test.js +260 -0
  306. package/dist/metrics/ab-test.js.map +1 -0
  307. package/dist/metrics/aggregation.js +363 -0
  308. package/dist/metrics/aggregation.js.map +1 -0
  309. package/dist/metrics/common.js +64 -0
  310. package/dist/metrics/common.js.map +1 -0
  311. package/dist/metrics/enums.js +78 -0
  312. package/dist/metrics/enums.js.map +1 -0
  313. package/dist/metrics/index.js +19 -0
  314. package/dist/metrics/index.js.map +1 -0
  315. package/dist/metrics/model-provider-registry.js +88 -0
  316. package/dist/metrics/model-provider-registry.js.map +1 -0
  317. package/dist/metrics/otel-integration.js +263 -0
  318. package/dist/metrics/otel-integration.js.map +1 -0
  319. package/dist/metrics/provider-detection.js +103 -0
  320. package/dist/metrics/provider-detection.js.map +1 -0
  321. package/dist/metrics/token-estimation.js +253 -0
  322. package/dist/metrics/token-estimation.js.map +1 -0
  323. package/dist/metrics/token-service.js +450 -0
  324. package/dist/metrics/token-service.js.map +1 -0
  325. package/dist/migration/agent-outputs.js +316 -0
  326. package/dist/migration/agent-outputs.js.map +1 -0
  327. package/dist/migration/checksum.js +92 -0
  328. package/dist/migration/checksum.js.map +1 -0
  329. package/dist/migration/index.js +282 -0
  330. package/dist/migration/index.js.map +1 -0
  331. package/dist/migration/logger.js +360 -0
  332. package/dist/migration/logger.js.map +1 -0
  333. package/dist/migration/preflight.js +9 -0
  334. package/dist/migration/preflight.js.map +1 -0
  335. package/dist/migration/state.js +421 -0
  336. package/dist/migration/state.js.map +1 -0
  337. package/dist/migration/validate.js +241 -0
  338. package/dist/migration/validate.js.map +1 -0
  339. package/dist/mvi-helpers.js +74 -0
  340. package/dist/mvi-helpers.js.map +1 -0
  341. package/dist/nexus/deps.js +375 -0
  342. package/dist/nexus/deps.js.map +1 -0
  343. package/dist/nexus/discover.js +288 -0
  344. package/dist/nexus/discover.js.map +1 -0
  345. package/dist/nexus/hash.js +10 -0
  346. package/dist/nexus/hash.js.map +1 -0
  347. package/dist/nexus/index.js +40 -0
  348. package/dist/nexus/index.js.map +1 -0
  349. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  350. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  351. package/dist/nexus/permissions.js +105 -0
  352. package/dist/nexus/permissions.js.map +1 -0
  353. package/dist/nexus/query.js +175 -0
  354. package/dist/nexus/query.js.map +1 -0
  355. package/dist/nexus/registry.js +584 -0
  356. package/dist/nexus/registry.js.map +1 -0
  357. package/dist/nexus/sharing/index.js +288 -0
  358. package/dist/nexus/sharing/index.js.map +1 -0
  359. package/dist/nexus/transfer-types.js +8 -0
  360. package/dist/nexus/transfer-types.js.map +1 -0
  361. package/dist/nexus/transfer.js +263 -0
  362. package/dist/nexus/transfer.js.map +1 -0
  363. package/dist/nexus/workspace.js +355 -0
  364. package/dist/nexus/workspace.js.map +1 -0
  365. package/dist/observability/index.js +103 -0
  366. package/dist/observability/index.js.map +1 -0
  367. package/dist/observability/log-filter.js +63 -0
  368. package/dist/observability/log-filter.js.map +1 -0
  369. package/dist/observability/log-parser.js +99 -0
  370. package/dist/observability/log-parser.js.map +1 -0
  371. package/dist/observability/log-reader.js +139 -0
  372. package/dist/observability/log-reader.js.map +1 -0
  373. package/dist/observability/types.js +19 -0
  374. package/dist/observability/types.js.map +1 -0
  375. package/dist/orchestration/analyze.js +107 -0
  376. package/dist/orchestration/analyze.js.map +1 -0
  377. package/dist/orchestration/bootstrap.js +132 -0
  378. package/dist/orchestration/bootstrap.js.map +1 -0
  379. package/dist/orchestration/context.js +56 -0
  380. package/dist/orchestration/context.js.map +1 -0
  381. package/dist/orchestration/critical-path.js +100 -0
  382. package/dist/orchestration/critical-path.js.map +1 -0
  383. package/dist/orchestration/hierarchy.js +183 -0
  384. package/dist/orchestration/hierarchy.js.map +1 -0
  385. package/dist/orchestration/index.js +287 -0
  386. package/dist/orchestration/index.js.map +1 -0
  387. package/dist/orchestration/parallel.js +89 -0
  388. package/dist/orchestration/parallel.js.map +1 -0
  389. package/dist/orchestration/protocol-validators.js +815 -0
  390. package/dist/orchestration/protocol-validators.js.map +1 -0
  391. package/dist/orchestration/skill-ops.js +98 -0
  392. package/dist/orchestration/skill-ops.js.map +1 -0
  393. package/dist/orchestration/status.js +107 -0
  394. package/dist/orchestration/status.js.map +1 -0
  395. package/dist/orchestration/unblock.js +103 -0
  396. package/dist/orchestration/unblock.js.map +1 -0
  397. package/dist/orchestration/validate-spawn.js +67 -0
  398. package/dist/orchestration/validate-spawn.js.map +1 -0
  399. package/dist/orchestration/waves.js +86 -0
  400. package/dist/orchestration/waves.js.map +1 -0
  401. package/dist/otel/index.js +163 -0
  402. package/dist/otel/index.js.map +1 -0
  403. package/dist/output.js +164 -0
  404. package/dist/output.js.map +1 -0
  405. package/dist/pagination.js +64 -0
  406. package/dist/pagination.js.map +1 -0
  407. package/dist/paths.d.ts +39 -9
  408. package/dist/paths.d.ts.map +1 -1
  409. package/dist/paths.js +776 -0
  410. package/dist/paths.js.map +1 -0
  411. package/dist/phases/deps.js +372 -0
  412. package/dist/phases/deps.js.map +1 -0
  413. package/dist/phases/index.js +349 -0
  414. package/dist/phases/index.js.map +1 -0
  415. package/dist/pipeline/index.js +10 -0
  416. package/dist/pipeline/index.js.map +1 -0
  417. package/dist/pipeline/phase.js +45 -0
  418. package/dist/pipeline/phase.js.map +1 -0
  419. package/dist/platform.js +211 -0
  420. package/dist/platform.js.map +1 -0
  421. package/dist/project-info.js +84 -0
  422. package/dist/project-info.js.map +1 -0
  423. package/dist/reconciliation/index.js +10 -0
  424. package/dist/reconciliation/index.js.map +1 -0
  425. package/dist/reconciliation/link-store.js +129 -0
  426. package/dist/reconciliation/link-store.js.map +1 -0
  427. package/dist/reconciliation/reconciliation-engine.js +298 -0
  428. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  429. package/dist/release/artifacts.js +427 -0
  430. package/dist/release/artifacts.js.map +1 -0
  431. package/dist/release/changelog-writer.js +151 -0
  432. package/dist/release/changelog-writer.js.map +1 -0
  433. package/dist/release/channel.js +144 -0
  434. package/dist/release/channel.js.map +1 -0
  435. package/dist/release/ci.js +166 -0
  436. package/dist/release/ci.js.map +1 -0
  437. package/dist/release/github-pr.js +225 -0
  438. package/dist/release/github-pr.js.map +1 -0
  439. package/dist/release/guards.js +116 -0
  440. package/dist/release/guards.js.map +1 -0
  441. package/dist/release/index.js +22 -0
  442. package/dist/release/index.js.map +1 -0
  443. package/dist/release/release-config.js +158 -0
  444. package/dist/release/release-config.js.map +1 -0
  445. package/dist/release/release-manifest.js +1019 -0
  446. package/dist/release/release-manifest.js.map +1 -0
  447. package/dist/release/version-bump.js +255 -0
  448. package/dist/release/version-bump.js.map +1 -0
  449. package/dist/remote/index.js +257 -0
  450. package/dist/remote/index.js.map +1 -0
  451. package/dist/repair.js +130 -0
  452. package/dist/repair.js.map +1 -0
  453. package/dist/research/index.js +2 -0
  454. package/dist/research/index.js.map +1 -0
  455. package/dist/roadmap/index.js +59 -0
  456. package/dist/roadmap/index.js.map +1 -0
  457. package/dist/routing/capability-matrix.js +1556 -0
  458. package/dist/routing/capability-matrix.js.map +1 -0
  459. package/dist/routing/index.js +9 -0
  460. package/dist/routing/index.js.map +1 -0
  461. package/dist/scaffold.d.ts +15 -2
  462. package/dist/scaffold.d.ts.map +1 -1
  463. package/dist/scaffold.js +1759 -0
  464. package/dist/scaffold.js.map +1 -0
  465. package/dist/schema-management.js +295 -0
  466. package/dist/schema-management.js.map +1 -0
  467. package/dist/security/index.js +9 -0
  468. package/dist/security/index.js.map +1 -0
  469. package/dist/security/input-sanitization.js +321 -0
  470. package/dist/security/input-sanitization.js.map +1 -0
  471. package/dist/sequence/index.js +295 -0
  472. package/dist/sequence/index.js.map +1 -0
  473. package/dist/sessions/assumptions.js +54 -0
  474. package/dist/sessions/assumptions.js.map +1 -0
  475. package/dist/sessions/briefing.js +377 -0
  476. package/dist/sessions/briefing.js.map +1 -0
  477. package/dist/sessions/context-alert.js +222 -0
  478. package/dist/sessions/context-alert.js.map +1 -0
  479. package/dist/sessions/context-inject.js +61 -0
  480. package/dist/sessions/context-inject.js.map +1 -0
  481. package/dist/sessions/context-monitor.js +98 -0
  482. package/dist/sessions/context-monitor.js.map +1 -0
  483. package/dist/sessions/decisions.js +65 -0
  484. package/dist/sessions/decisions.js.map +1 -0
  485. package/dist/sessions/find.js +65 -0
  486. package/dist/sessions/find.js.map +1 -0
  487. package/dist/sessions/handoff.js +328 -0
  488. package/dist/sessions/handoff.js.map +1 -0
  489. package/dist/sessions/hitl-warnings.js +254 -0
  490. package/dist/sessions/hitl-warnings.js.map +1 -0
  491. package/dist/sessions/index.js +327 -0
  492. package/dist/sessions/index.js.map +1 -0
  493. package/dist/sessions/session-archive.js +40 -0
  494. package/dist/sessions/session-archive.js.map +1 -0
  495. package/dist/sessions/session-cleanup.js +59 -0
  496. package/dist/sessions/session-cleanup.js.map +1 -0
  497. package/dist/sessions/session-drift.js +134 -0
  498. package/dist/sessions/session-drift.js.map +1 -0
  499. package/dist/sessions/session-enforcement.js +144 -0
  500. package/dist/sessions/session-enforcement.js.map +1 -0
  501. package/dist/sessions/session-grade.js +253 -0
  502. package/dist/sessions/session-grade.js.map +1 -0
  503. package/dist/sessions/session-history.js +42 -0
  504. package/dist/sessions/session-history.js.map +1 -0
  505. package/dist/sessions/session-id.js +81 -0
  506. package/dist/sessions/session-id.js.map +1 -0
  507. package/dist/sessions/session-memory-bridge.js +52 -0
  508. package/dist/sessions/session-memory-bridge.js.map +1 -0
  509. package/dist/sessions/session-show.js +24 -0
  510. package/dist/sessions/session-show.js.map +1 -0
  511. package/dist/sessions/session-stats.js +69 -0
  512. package/dist/sessions/session-stats.js.map +1 -0
  513. package/dist/sessions/session-suspend.js +39 -0
  514. package/dist/sessions/session-suspend.js.map +1 -0
  515. package/dist/sessions/session-switch.js +51 -0
  516. package/dist/sessions/session-switch.js.map +1 -0
  517. package/dist/sessions/session-view.js +76 -0
  518. package/dist/sessions/session-view.js.map +1 -0
  519. package/dist/sessions/snapshot.js +213 -0
  520. package/dist/sessions/snapshot.js.map +1 -0
  521. package/dist/sessions/statusline-setup.js +85 -0
  522. package/dist/sessions/statusline-setup.js.map +1 -0
  523. package/dist/sessions/types.js +8 -0
  524. package/dist/sessions/types.js.map +1 -0
  525. package/dist/skills/agents/config.js +94 -0
  526. package/dist/skills/agents/config.js.map +1 -0
  527. package/dist/skills/agents/install.js +116 -0
  528. package/dist/skills/agents/install.js.map +1 -0
  529. package/dist/skills/agents/registry.js +161 -0
  530. package/dist/skills/agents/registry.js.map +1 -0
  531. package/dist/skills/discovery.js +333 -0
  532. package/dist/skills/discovery.js.map +1 -0
  533. package/dist/skills/dispatch.js +347 -0
  534. package/dist/skills/dispatch.js.map +1 -0
  535. package/dist/skills/dynamic-skill-generator.js +87 -0
  536. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  537. package/dist/skills/index.js +44 -0
  538. package/dist/skills/index.js.map +1 -0
  539. package/dist/skills/injection/subagent.js +195 -0
  540. package/dist/skills/injection/subagent.js.map +1 -0
  541. package/dist/skills/injection/token.js +260 -0
  542. package/dist/skills/injection/token.js.map +1 -0
  543. package/dist/skills/install.js +40 -0
  544. package/dist/skills/install.js.map +1 -0
  545. package/dist/skills/manifests/contribution.js +175 -0
  546. package/dist/skills/manifests/contribution.js.map +1 -0
  547. package/dist/skills/manifests/research.js +281 -0
  548. package/dist/skills/manifests/research.js.map +1 -0
  549. package/dist/skills/manifests/resolver.js +146 -0
  550. package/dist/skills/manifests/resolver.js.map +1 -0
  551. package/dist/skills/marketplace.js +90 -0
  552. package/dist/skills/marketplace.js.map +1 -0
  553. package/dist/skills/orchestrator/spawn.js +178 -0
  554. package/dist/skills/orchestrator/spawn.js.map +1 -0
  555. package/dist/skills/orchestrator/startup.js +451 -0
  556. package/dist/skills/orchestrator/startup.js.map +1 -0
  557. package/dist/skills/orchestrator/validator.js +301 -0
  558. package/dist/skills/orchestrator/validator.js.map +1 -0
  559. package/dist/skills/precedence-integration.js +73 -0
  560. package/dist/skills/precedence-integration.js.map +1 -0
  561. package/dist/skills/precedence-types.js +16 -0
  562. package/dist/skills/precedence-types.js.map +1 -0
  563. package/dist/skills/routing-table.js +63 -0
  564. package/dist/skills/routing-table.js.map +1 -0
  565. package/dist/skills/skill-paths.js +217 -0
  566. package/dist/skills/skill-paths.js.map +1 -0
  567. package/dist/skills/test-utility.js +55 -0
  568. package/dist/skills/test-utility.js.map +1 -0
  569. package/dist/skills/types.js +118 -0
  570. package/dist/skills/types.js.map +1 -0
  571. package/dist/skills/validation.js +183 -0
  572. package/dist/skills/validation.js.map +1 -0
  573. package/dist/skills/version.js +57 -0
  574. package/dist/skills/version.js.map +1 -0
  575. package/dist/snapshot/index.js +188 -0
  576. package/dist/snapshot/index.js.map +1 -0
  577. package/dist/spawn/adapter-registry.js +246 -0
  578. package/dist/spawn/adapter-registry.js.map +1 -0
  579. package/dist/spawn/index.js +10 -0
  580. package/dist/spawn/index.js.map +1 -0
  581. package/dist/stats/index.js +343 -0
  582. package/dist/stats/index.js.map +1 -0
  583. package/dist/stats/workflow-telemetry.js +400 -0
  584. package/dist/stats/workflow-telemetry.js.map +1 -0
  585. package/dist/sticky/archive.js +47 -0
  586. package/dist/sticky/archive.js.map +1 -0
  587. package/dist/sticky/convert.js +235 -0
  588. package/dist/sticky/convert.js.map +1 -0
  589. package/dist/sticky/create.js +48 -0
  590. package/dist/sticky/create.js.map +1 -0
  591. package/dist/sticky/id.js +35 -0
  592. package/dist/sticky/id.js.map +1 -0
  593. package/dist/sticky/index.js +16 -0
  594. package/dist/sticky/index.js.map +1 -0
  595. package/dist/sticky/list.js +44 -0
  596. package/dist/sticky/list.js.map +1 -0
  597. package/dist/sticky/purge.js +45 -0
  598. package/dist/sticky/purge.js.map +1 -0
  599. package/dist/sticky/show.js +42 -0
  600. package/dist/sticky/show.js.map +1 -0
  601. package/dist/sticky/types.js +10 -0
  602. package/dist/sticky/types.js.map +1 -0
  603. package/dist/store/agent-registry-accessor.js +265 -0
  604. package/dist/store/agent-registry-accessor.js.map +1 -0
  605. package/dist/store/atomic.js +167 -0
  606. package/dist/store/atomic.js.map +1 -0
  607. package/dist/store/backup.js +94 -0
  608. package/dist/store/backup.js.map +1 -0
  609. package/dist/store/brain-accessor.js +397 -0
  610. package/dist/store/brain-accessor.js.map +1 -0
  611. package/dist/store/brain-schema.d.ts +8 -8
  612. package/dist/store/brain-schema.js +215 -0
  613. package/dist/store/brain-schema.js.map +1 -0
  614. package/dist/store/brain-sqlite.js +222 -0
  615. package/dist/store/brain-sqlite.js.map +1 -0
  616. package/dist/store/cache.js +168 -0
  617. package/dist/store/cache.js.map +1 -0
  618. package/dist/store/chain-schema.js +51 -0
  619. package/dist/store/chain-schema.js.map +1 -0
  620. package/dist/store/cleanup-legacy.d.ts +128 -0
  621. package/dist/store/cleanup-legacy.d.ts.map +1 -0
  622. package/dist/store/converters.js +124 -0
  623. package/dist/store/converters.js.map +1 -0
  624. package/dist/store/cross-db-cleanup.js +319 -0
  625. package/dist/store/cross-db-cleanup.js.map +1 -0
  626. package/dist/store/data-accessor.js +26 -0
  627. package/dist/store/data-accessor.js.map +1 -0
  628. package/dist/store/data-safety-central.js +269 -0
  629. package/dist/store/data-safety-central.js.map +1 -0
  630. package/dist/store/data-safety.js +274 -0
  631. package/dist/store/data-safety.js.map +1 -0
  632. package/dist/store/db-helpers.js +224 -0
  633. package/dist/store/db-helpers.js.map +1 -0
  634. package/dist/store/export.js +155 -0
  635. package/dist/store/export.js.map +1 -0
  636. package/dist/store/file-utils.js +270 -0
  637. package/dist/store/file-utils.js.map +1 -0
  638. package/dist/store/git-checkpoint.js +365 -0
  639. package/dist/store/git-checkpoint.js.map +1 -0
  640. package/dist/store/import-logging.js +139 -0
  641. package/dist/store/import-logging.js.map +1 -0
  642. package/dist/store/import-remap.js +145 -0
  643. package/dist/store/import-remap.js.map +1 -0
  644. package/dist/store/import-sort.js +121 -0
  645. package/dist/store/import-sort.js.map +1 -0
  646. package/dist/store/index.d.ts +1 -0
  647. package/dist/store/index.d.ts.map +1 -1
  648. package/dist/store/index.js +29 -0
  649. package/dist/store/index.js.map +1 -0
  650. package/dist/store/json.js +208 -0
  651. package/dist/store/json.js.map +1 -0
  652. package/dist/store/lifecycle-store.js +249 -0
  653. package/dist/store/lifecycle-store.js.map +1 -0
  654. package/dist/store/lock.js +70 -0
  655. package/dist/store/lock.js.map +1 -0
  656. package/dist/store/migration-manager.js +151 -0
  657. package/dist/store/migration-manager.js.map +1 -0
  658. package/dist/store/migration-sqlite.js +676 -0
  659. package/dist/store/migration-sqlite.js.map +1 -0
  660. package/dist/store/nexus-schema.js +62 -0
  661. package/dist/store/nexus-schema.js.map +1 -0
  662. package/dist/store/nexus-sqlite.d.ts +14 -2
  663. package/dist/store/nexus-sqlite.d.ts.map +1 -1
  664. package/dist/store/nexus-sqlite.js +217 -0
  665. package/dist/store/nexus-sqlite.js.map +1 -0
  666. package/dist/store/nexus-validation-schemas.js +40 -0
  667. package/dist/store/nexus-validation-schemas.js.map +1 -0
  668. package/dist/store/parsers.js +37 -0
  669. package/dist/store/parsers.js.map +1 -0
  670. package/dist/store/project-detect.js +457 -0
  671. package/dist/store/project-detect.js.map +1 -0
  672. package/dist/store/provider.js +101 -0
  673. package/dist/store/provider.js.map +1 -0
  674. package/dist/store/safety-data-accessor.js +257 -0
  675. package/dist/store/safety-data-accessor.js.map +1 -0
  676. package/dist/store/schema.js +7 -0
  677. package/dist/store/schema.js.map +1 -0
  678. package/dist/store/session-store.js +219 -0
  679. package/dist/store/session-store.js.map +1 -0
  680. package/dist/store/signaldock-sqlite.js +400 -0
  681. package/dist/store/signaldock-sqlite.js.map +1 -0
  682. package/dist/store/sqlite-backup.d.ts +121 -10
  683. package/dist/store/sqlite-backup.d.ts.map +1 -1
  684. package/dist/store/sqlite-backup.js +241 -0
  685. package/dist/store/sqlite-backup.js.map +1 -0
  686. package/dist/store/sqlite-data-accessor.js +787 -0
  687. package/dist/store/sqlite-data-accessor.js.map +1 -0
  688. package/dist/store/sqlite.d.ts.map +1 -1
  689. package/dist/store/sqlite.js +481 -0
  690. package/dist/store/sqlite.js.map +1 -0
  691. package/dist/store/status-registry.js +8 -0
  692. package/dist/store/status-registry.js.map +1 -0
  693. package/dist/store/task-store.js +358 -0
  694. package/dist/store/task-store.js.map +1 -0
  695. package/dist/store/tasks-schema.d.ts +8 -8
  696. package/dist/store/tasks-schema.js +610 -0
  697. package/dist/store/tasks-schema.js.map +1 -0
  698. package/dist/store/typed-query.js +15 -0
  699. package/dist/store/typed-query.js.map +1 -0
  700. package/dist/store/validation-schemas.d.ts +37 -37
  701. package/dist/store/validation-schemas.js +278 -0
  702. package/dist/store/validation-schemas.js.map +1 -0
  703. package/dist/system/archive-analytics.js +277 -0
  704. package/dist/system/archive-analytics.js.map +1 -0
  705. package/dist/system/archive-stats.js +64 -0
  706. package/dist/system/archive-stats.js.map +1 -0
  707. package/dist/system/audit.js +145 -0
  708. package/dist/system/audit.js.map +1 -0
  709. package/dist/system/backup.d.ts +91 -3
  710. package/dist/system/backup.d.ts.map +1 -1
  711. package/dist/system/backup.js +280 -0
  712. package/dist/system/backup.js.map +1 -0
  713. package/dist/system/cleanup.js +134 -0
  714. package/dist/system/cleanup.js.map +1 -0
  715. package/dist/system/health.js +1100 -0
  716. package/dist/system/health.js.map +1 -0
  717. package/dist/system/index.js +18 -0
  718. package/dist/system/index.js.map +1 -0
  719. package/dist/system/inject-generate.js +122 -0
  720. package/dist/system/inject-generate.js.map +1 -0
  721. package/dist/system/labels.js +38 -0
  722. package/dist/system/labels.js.map +1 -0
  723. package/dist/system/metrics.js +61 -0
  724. package/dist/system/metrics.js.map +1 -0
  725. package/dist/system/migrate.js +43 -0
  726. package/dist/system/migrate.js.map +1 -0
  727. package/dist/system/platform-paths.js +80 -0
  728. package/dist/system/platform-paths.js.map +1 -0
  729. package/dist/system/runtime.js +161 -0
  730. package/dist/system/runtime.js.map +1 -0
  731. package/dist/system/safestop.js +99 -0
  732. package/dist/system/safestop.js.map +1 -0
  733. package/dist/system/storage-preflight.js +123 -0
  734. package/dist/system/storage-preflight.js.map +1 -0
  735. package/dist/task-work/index.js +159 -0
  736. package/dist/task-work/index.js.map +1 -0
  737. package/dist/tasks/add.js +661 -0
  738. package/dist/tasks/add.js.map +1 -0
  739. package/dist/tasks/analyze.js +85 -0
  740. package/dist/tasks/analyze.js.map +1 -0
  741. package/dist/tasks/archive.js +90 -0
  742. package/dist/tasks/archive.js.map +1 -0
  743. package/dist/tasks/atomicity.js +83 -0
  744. package/dist/tasks/atomicity.js.map +1 -0
  745. package/dist/tasks/cancel-ops.js +83 -0
  746. package/dist/tasks/cancel-ops.js.map +1 -0
  747. package/dist/tasks/complete.js +211 -0
  748. package/dist/tasks/complete.js.map +1 -0
  749. package/dist/tasks/crossref-extract.js +73 -0
  750. package/dist/tasks/crossref-extract.js.map +1 -0
  751. package/dist/tasks/delete-preview.js +192 -0
  752. package/dist/tasks/delete-preview.js.map +1 -0
  753. package/dist/tasks/delete.js +120 -0
  754. package/dist/tasks/delete.js.map +1 -0
  755. package/dist/tasks/deletion-strategy.js +200 -0
  756. package/dist/tasks/deletion-strategy.js.map +1 -0
  757. package/dist/tasks/dependency-check.js +278 -0
  758. package/dist/tasks/dependency-check.js.map +1 -0
  759. package/dist/tasks/deps-ready.js +32 -0
  760. package/dist/tasks/deps-ready.js.map +1 -0
  761. package/dist/tasks/enforcement.js +86 -0
  762. package/dist/tasks/enforcement.js.map +1 -0
  763. package/dist/tasks/epic-enforcement.js +294 -0
  764. package/dist/tasks/epic-enforcement.js.map +1 -0
  765. package/dist/tasks/find.js +154 -0
  766. package/dist/tasks/find.js.map +1 -0
  767. package/dist/tasks/graph-cache.js +127 -0
  768. package/dist/tasks/graph-cache.js.map +1 -0
  769. package/dist/tasks/graph-ops.js +171 -0
  770. package/dist/tasks/graph-ops.js.map +1 -0
  771. package/dist/tasks/graph-rag.js +328 -0
  772. package/dist/tasks/graph-rag.js.map +1 -0
  773. package/dist/tasks/hierarchy-policy.js +149 -0
  774. package/dist/tasks/hierarchy-policy.js.map +1 -0
  775. package/dist/tasks/hierarchy.js +185 -0
  776. package/dist/tasks/hierarchy.js.map +1 -0
  777. package/dist/tasks/id-generator.js +65 -0
  778. package/dist/tasks/id-generator.js.map +1 -0
  779. package/dist/tasks/index.js +14 -0
  780. package/dist/tasks/index.js.map +1 -0
  781. package/dist/tasks/labels.js +52 -0
  782. package/dist/tasks/labels.js.map +1 -0
  783. package/dist/tasks/list.js +75 -0
  784. package/dist/tasks/list.js.map +1 -0
  785. package/dist/tasks/phase-tracking.js +133 -0
  786. package/dist/tasks/phase-tracking.js.map +1 -0
  787. package/dist/tasks/pipeline-stage.js +248 -0
  788. package/dist/tasks/pipeline-stage.js.map +1 -0
  789. package/dist/tasks/plan.js +268 -0
  790. package/dist/tasks/plan.js.map +1 -0
  791. package/dist/tasks/relates.js +89 -0
  792. package/dist/tasks/relates.js.map +1 -0
  793. package/dist/tasks/show.js +80 -0
  794. package/dist/tasks/show.js.map +1 -0
  795. package/dist/tasks/size-weighting.js +86 -0
  796. package/dist/tasks/size-weighting.js.map +1 -0
  797. package/dist/tasks/staleness.js +86 -0
  798. package/dist/tasks/staleness.js.map +1 -0
  799. package/dist/tasks/task-ops.js +1741 -0
  800. package/dist/tasks/task-ops.js.map +1 -0
  801. package/dist/tasks/update.js +277 -0
  802. package/dist/tasks/update.js.map +1 -0
  803. package/dist/templates/index.js +10 -0
  804. package/dist/templates/index.js.map +1 -0
  805. package/dist/templates/parser.js +254 -0
  806. package/dist/templates/parser.js.map +1 -0
  807. package/dist/ui/aliases.js +153 -0
  808. package/dist/ui/aliases.js.map +1 -0
  809. package/dist/ui/changelog.js +184 -0
  810. package/dist/ui/changelog.js.map +1 -0
  811. package/dist/ui/command-registry.js +168 -0
  812. package/dist/ui/command-registry.js.map +1 -0
  813. package/dist/ui/flags.js +94 -0
  814. package/dist/ui/flags.js.map +1 -0
  815. package/dist/ui/index.js +24 -0
  816. package/dist/ui/index.js.map +1 -0
  817. package/dist/upgrade.js +1148 -0
  818. package/dist/upgrade.js.map +1 -0
  819. package/dist/validation/chain-validation.js +146 -0
  820. package/dist/validation/chain-validation.js.map +1 -0
  821. package/dist/validation/compliance.js +155 -0
  822. package/dist/validation/compliance.js.map +1 -0
  823. package/dist/validation/docs-sync.js +212 -0
  824. package/dist/validation/docs-sync.js.map +1 -0
  825. package/dist/validation/doctor/checks.js +1069 -0
  826. package/dist/validation/doctor/checks.js.map +1 -0
  827. package/dist/validation/doctor/index.js +9 -0
  828. package/dist/validation/doctor/index.js.map +1 -0
  829. package/dist/validation/doctor/project-cache.js +160 -0
  830. package/dist/validation/doctor/project-cache.js.map +1 -0
  831. package/dist/validation/doctor/utils.js +155 -0
  832. package/dist/validation/doctor/utils.js.map +1 -0
  833. package/dist/validation/engine.js +902 -0
  834. package/dist/validation/engine.js.map +1 -0
  835. package/dist/validation/gap-check.js +175 -0
  836. package/dist/validation/gap-check.js.map +1 -0
  837. package/dist/validation/index.js +40 -0
  838. package/dist/validation/index.js.map +1 -0
  839. package/dist/validation/manifest.js +237 -0
  840. package/dist/validation/manifest.js.map +1 -0
  841. package/dist/validation/operation-gate-validators.js +724 -0
  842. package/dist/validation/operation-gate-validators.js.map +1 -0
  843. package/dist/validation/operation-verification-gates.js +532 -0
  844. package/dist/validation/operation-verification-gates.js.map +1 -0
  845. package/dist/validation/param-utils.js +139 -0
  846. package/dist/validation/param-utils.js.map +1 -0
  847. package/dist/validation/protocol-common.js +300 -0
  848. package/dist/validation/protocol-common.js.map +1 -0
  849. package/dist/validation/protocols/_shared.js +75 -0
  850. package/dist/validation/protocols/_shared.js.map +1 -0
  851. package/dist/validation/protocols/architecture-decision.js +31 -0
  852. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  853. package/dist/validation/protocols/artifact-publish.js +28 -0
  854. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  855. package/dist/validation/protocols/consensus.js +41 -0
  856. package/dist/validation/protocols/consensus.js.map +1 -0
  857. package/dist/validation/protocols/contribution.js +27 -0
  858. package/dist/validation/protocols/contribution.js.map +1 -0
  859. package/dist/validation/protocols/decomposition.js +28 -0
  860. package/dist/validation/protocols/decomposition.js.map +1 -0
  861. package/dist/validation/protocols/implementation.js +24 -0
  862. package/dist/validation/protocols/implementation.js.map +1 -0
  863. package/dist/validation/protocols/provenance.js +29 -0
  864. package/dist/validation/protocols/provenance.js.map +1 -0
  865. package/dist/validation/protocols/release.js +29 -0
  866. package/dist/validation/protocols/release.js.map +1 -0
  867. package/dist/validation/protocols/research.js +24 -0
  868. package/dist/validation/protocols/research.js.map +1 -0
  869. package/dist/validation/protocols/specification.js +27 -0
  870. package/dist/validation/protocols/specification.js.map +1 -0
  871. package/dist/validation/protocols/testing.js +30 -0
  872. package/dist/validation/protocols/testing.js.map +1 -0
  873. package/dist/validation/protocols/validation.js +30 -0
  874. package/dist/validation/protocols/validation.js.map +1 -0
  875. package/dist/validation/schema-integrity.js +170 -0
  876. package/dist/validation/schema-integrity.js.map +1 -0
  877. package/dist/validation/schema-validator.js +176 -0
  878. package/dist/validation/schema-validator.js.map +1 -0
  879. package/dist/validation/validate-ops.js +937 -0
  880. package/dist/validation/validate-ops.js.map +1 -0
  881. package/dist/validation/validation-rules.js +226 -0
  882. package/dist/validation/validation-rules.js.map +1 -0
  883. package/dist/validation/verification.js +321 -0
  884. package/dist/validation/verification.js.map +1 -0
  885. package/package.json +10 -8
  886. package/src/__tests__/paths-walkup.test.ts +305 -0
  887. package/src/__tests__/paths.test.ts +61 -17
  888. package/src/hooks/handlers/session-hooks.ts +42 -0
  889. package/src/internal.ts +19 -2
  890. package/src/paths.ts +91 -14
  891. package/src/scaffold.ts +22 -3
  892. package/src/store/__tests__/cleanup-legacy.test.ts +268 -0
  893. package/src/store/__tests__/database-topology-integration.test.ts +504 -0
  894. package/src/store/__tests__/sqlite-backup-global.test.ts +281 -0
  895. package/src/store/__tests__/sqlite-backup.test.ts +118 -10
  896. package/src/store/cleanup-legacy.ts +208 -0
  897. package/src/store/index.ts +7 -0
  898. package/src/store/nexus-sqlite.ts +32 -3
  899. package/src/store/sqlite-backup.ts +368 -37
  900. package/src/store/sqlite.ts +19 -3
  901. package/src/system/__tests__/backup.test.ts +237 -0
  902. package/src/system/backup.ts +248 -28
  903. package/templates/cleo-gitignore +19 -3
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Drizzle ORM schema for WarpChain storage in tasks.db.
3
+ *
4
+ * Tables: warp_chains, warp_chain_instances
5
+ * Stores chain definitions and runtime instances bound to epics.
6
+ *
7
+ * @task T5403
8
+ */
9
+ import { sql } from 'drizzle-orm';
10
+ import { index, integer, sqliteTable, text } from 'drizzle-orm/sqlite-core';
11
+ /** Chain instance status values. */
12
+ export const WARP_CHAIN_INSTANCE_STATUSES = [
13
+ 'pending',
14
+ 'active',
15
+ 'completed',
16
+ 'failed',
17
+ 'cancelled',
18
+ ];
19
+ // === WARP_CHAINS TABLE ===
20
+ /** Stored WarpChain definitions (serialized as JSON). */
21
+ export const warpChains = sqliteTable('warp_chains', {
22
+ id: text('id').primaryKey(),
23
+ name: text('name').notNull(),
24
+ version: text('version').notNull(),
25
+ description: text('description'),
26
+ definition: text('definition').notNull(), // JSON-serialized WarpChain
27
+ validated: integer('validated', { mode: 'boolean' }).default(false),
28
+ createdAt: text('created_at').default(sql `(datetime('now'))`),
29
+ updatedAt: text('updated_at').default(sql `(datetime('now'))`),
30
+ }, (table) => [index('idx_warp_chains_name').on(table.name)]);
31
+ // === WARP_CHAIN_INSTANCES TABLE ===
32
+ /** Runtime chain instances bound to epics. */
33
+ export const warpChainInstances = sqliteTable('warp_chain_instances', {
34
+ id: text('id').primaryKey(),
35
+ chainId: text('chain_id')
36
+ .notNull()
37
+ .references(() => warpChains.id, { onDelete: 'cascade' }),
38
+ epicId: text('epic_id').notNull(),
39
+ variables: text('variables'), // JSON
40
+ stageToTask: text('stage_to_task'), // JSON
41
+ status: text('status').notNull().default('pending'),
42
+ currentStage: text('current_stage'),
43
+ gateResults: text('gate_results'), // JSON array of GateResult
44
+ createdAt: text('created_at').default(sql `(datetime('now'))`),
45
+ updatedAt: text('updated_at').default(sql `(datetime('now'))`),
46
+ }, (table) => [
47
+ index('idx_warp_instances_chain').on(table.chainId),
48
+ index('idx_warp_instances_epic').on(table.epicId),
49
+ index('idx_warp_instances_status').on(table.status),
50
+ ]);
51
+ //# sourceMappingURL=chain-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-schema.js","sourceRoot":"","sources":["../../src/store/chain-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE5E,oCAAoC;AACpC,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,SAAS;IACT,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,WAAW;CACH,CAAC;AAEX,4BAA4B;AAE5B,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CACnC,aAAa,EACb;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;IAChC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,4BAA4B;IACtE,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACnE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAmB,CAAC;IAC7D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAmB,CAAC;CAC9D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;AAEF,qCAAqC;AAErC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAC3C,sBAAsB,EACtB;IACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;SACtB,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC3D,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACjC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO;IACrC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO;IAC3C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACnD,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;IACnC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,2BAA2B;IAC9D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAmB,CAAC;IAC7D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAmB,CAAC;CAC9D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACnD,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACjD,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;CACpD,CACF,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Idempotent cleanup of legacy and stray CLEO database files.
3
+ *
4
+ * Provides two independent cleanup functions:
5
+ *
6
+ * 1. {@link detectAndRemoveLegacyGlobalFiles} — removes stale files left at
7
+ * the global CLEO home directory (`getCleoHome()`) by pre-v2026.4.11
8
+ * naming migrations. Safe to call on repeat invocations — existence-checks
9
+ * guard every deletion.
10
+ *
11
+ * Files targeted (see ADR-036 §Decision/Global-Tier table):
12
+ * - workspace.db (pre-nexus naming relic)
13
+ * - workspace.db.bak-pre-rename (safety copy from a long-landed rename)
14
+ * - workspace.db-shm (SQLite shared-memory sidecar of workspace.db)
15
+ * - workspace.db-shm-wal (SQLite WAL sidecar of workspace.db)
16
+ * - nexus-pre-cleo.db.bak (pre-CLEO backup of nexus — migration complete)
17
+ *
18
+ * Live files (nexus.db, signaldock.db, machine-key, config.json, etc.) are
19
+ * NEVER touched. The function only acts on the explicit LEGACY_FILES list.
20
+ *
21
+ * 2. {@link detectAndRemoveStrayProjectNexus} — removes a stray
22
+ * `{projectRoot}/.cleo/nexus.db` that violates ADR-036's global-only
23
+ * nexus contract. Some pre-v2026.4.11 code path accidentally created a
24
+ * zero-byte nexus.db at project tier; this cleans it up on first run.
25
+ *
26
+ * @task T304
27
+ * @task T307
28
+ * @epic T299
29
+ * @adr ADR-036
30
+ * @why v2026.4.10 left workspace.db and pre-cleo backups at global tier;
31
+ * ADR-036 mandates their deletion to eliminate diagnostic confusion and
32
+ * false impressions of active legacy databases.
33
+ */
34
+ /** Result returned by {@link detectAndRemoveLegacyGlobalFiles}. */
35
+ export interface LegacyCleanupResult {
36
+ /** Filenames (basename only) that were successfully deleted. */
37
+ removed: string[];
38
+ /** Files that could not be deleted, with error messages. */
39
+ errors: Array<{
40
+ file: string;
41
+ error: string;
42
+ }>;
43
+ }
44
+ /**
45
+ * Detect and remove legacy global-tier files from the CLEO home directory.
46
+ *
47
+ * Idempotent: safe to call when some or all files are already absent. Each
48
+ * file is individually existence-checked before attempting deletion. Failures
49
+ * on individual files are captured in `errors` rather than thrown, so the
50
+ * caller receives a complete picture of what was (and was not) cleaned up.
51
+ *
52
+ * Logs each successful deletion at `info` level and each failure at `warn`
53
+ * level via the shared pino logger.
54
+ *
55
+ * @param cleoHomeOverride - Optional directory override for tests. When
56
+ * omitted the canonical `getCleoHome()` path is used. Prefer passing this
57
+ * parameter in test harnesses rather than mutating `CLEO_HOME` environment
58
+ * variables, as it avoids global state contamination between test runs.
59
+ * @returns A {@link LegacyCleanupResult} describing what was removed and any
60
+ * errors encountered.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // Production usage (runs against real global home)
65
+ * const result = detectAndRemoveLegacyGlobalFiles();
66
+ * if (result.removed.length > 0) {
67
+ * // Legacy files were cleaned up
68
+ * }
69
+ *
70
+ * // Test usage (runs against tmp directory)
71
+ * const result = detectAndRemoveLegacyGlobalFiles('/tmp/fake-cleo-home');
72
+ * ```
73
+ *
74
+ * @task T304
75
+ * @epic T299
76
+ */
77
+ export declare function detectAndRemoveLegacyGlobalFiles(cleoHomeOverride?: string): LegacyCleanupResult;
78
+ /** Result returned by {@link detectAndRemoveStrayProjectNexus}. */
79
+ export interface StrayNexusCleanupResult {
80
+ /** Whether a stray nexus.db was found and deleted. */
81
+ removed: boolean;
82
+ /** Absolute path that was checked (and removed if `removed` is true). */
83
+ path: string;
84
+ }
85
+ /**
86
+ * Detect and remove a stray project-tier `.cleo/nexus.db` file.
87
+ *
88
+ * ADR-036 declares nexus.db as **global-only** — it lives exclusively under
89
+ * `getCleoHome()` (e.g. `~/.local/share/cleo/nexus.db` on Linux). A
90
+ * zero-byte stray was discovered at `/mnt/projects/cleocode/.cleo/nexus.db`
91
+ * (created 2026-03-31), likely produced by an early `cleo init` / `cleo
92
+ * nexus init` invocation that ran before the canonical path was fully wired
93
+ * through `getNexusDbPath()`.
94
+ *
95
+ * This function is idempotent: calling it when no stray file exists is a
96
+ * no-op. It is designed to be called once per CLI startup (alongside
97
+ * {@link detectAndRemoveLegacyGlobalFiles}) so that users who upgrade to
98
+ * v2026.4.11 have the stray silently cleaned up on the first `cleo` run.
99
+ *
100
+ * @param projectRoot - Absolute path to the project root directory. When
101
+ * omitted the caller is responsible for supplying the current project
102
+ * root from `getProjectRoot()`. An override parameter is accepted here to
103
+ * keep tests hermetic (avoids reading live `process.cwd()` state).
104
+ * @returns A {@link StrayNexusCleanupResult} indicating whether a file was
105
+ * removed and the absolute path that was checked.
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * // Production usage
110
+ * import { getProjectRoot } from '../paths.js';
111
+ * const result = detectAndRemoveStrayProjectNexus(getProjectRoot());
112
+ * if (result.removed) {
113
+ * // Stray project-tier nexus.db has been cleaned up
114
+ * }
115
+ *
116
+ * // Test usage (hermetic)
117
+ * const result = detectAndRemoveStrayProjectNexus('/tmp/fake-project-root');
118
+ * ```
119
+ *
120
+ * @task T307
121
+ * @epic T299
122
+ * @adr ADR-036
123
+ * @why ADR-036 §Decision/Global-Tier: nexus.db is global-only. A stray
124
+ * project-tier copy was created by pre-v2026.4.11 code and must be removed
125
+ * to prevent diagnostic confusion and guard against future regressions.
126
+ */
127
+ export declare function detectAndRemoveStrayProjectNexus(projectRoot: string): StrayNexusCleanupResult;
128
+ //# sourceMappingURL=cleanup-legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-legacy.d.ts","sourceRoot":"","sources":["../../src/store/cleanup-legacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AA6BH,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4DAA4D;IAC5D,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gCAAgC,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAsB/F;AAMD,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,CAuB7F"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Shared row <-> domain conversion functions for SQLite store modules.
3
+ *
4
+ * Eliminates duplication across sqlite-data-accessor.ts, task-store.ts,
5
+ * and session-store.ts.
6
+ */
7
+ import { safeParseJson, safeParseJsonArray } from './parsers.js';
8
+ /** Convert a database TaskRow to a domain Task object. */
9
+ export function rowToTask(row) {
10
+ return {
11
+ id: row.id,
12
+ title: row.title,
13
+ status: row.status,
14
+ priority: row.priority,
15
+ type: row.type ?? undefined,
16
+ parentId: row.parentId ?? undefined,
17
+ phase: row.phase ?? undefined,
18
+ size: row.size ?? undefined,
19
+ position: row.position ?? undefined,
20
+ positionVersion: row.positionVersion ?? undefined,
21
+ description: row.description ?? '',
22
+ labels: safeParseJsonArray(row.labelsJson),
23
+ notes: safeParseJsonArray(row.notesJson),
24
+ acceptance: safeParseJsonArray(row.acceptanceJson),
25
+ files: safeParseJsonArray(row.filesJson),
26
+ depends: undefined, // Populated separately from task_dependencies
27
+ origin: row.origin ?? undefined,
28
+ blockedBy: row.blockedBy ?? undefined,
29
+ epicLifecycle: row.epicLifecycle ?? undefined,
30
+ noAutoComplete: row.noAutoComplete ?? undefined,
31
+ createdAt: row.createdAt,
32
+ updatedAt: row.updatedAt ?? undefined,
33
+ completedAt: row.completedAt ?? undefined,
34
+ cancelledAt: row.cancelledAt ?? undefined,
35
+ cancellationReason: row.cancellationReason ?? undefined,
36
+ verification: row.verificationJson ? safeParseJson(row.verificationJson) : undefined,
37
+ provenance: row.createdBy || row.modifiedBy || row.sessionId
38
+ ? {
39
+ createdBy: row.createdBy ?? null,
40
+ modifiedBy: row.modifiedBy ?? null,
41
+ sessionId: row.sessionId ?? null,
42
+ }
43
+ : undefined,
44
+ pipelineStage: row.pipelineStage ?? undefined,
45
+ assignee: row.assignee ?? undefined,
46
+ };
47
+ }
48
+ /** Convert a domain Task to a database row for insert/upsert. */
49
+ export function taskToRow(task) {
50
+ return {
51
+ id: task.id,
52
+ title: task.title ?? '',
53
+ description: task.description ?? null,
54
+ status: task.status ?? 'pending',
55
+ priority: task.priority ?? 'medium',
56
+ type: task.type ?? null,
57
+ parentId: task.parentId ?? null,
58
+ phase: task.phase ?? null,
59
+ size: task.size ?? null,
60
+ position: task.position ?? null,
61
+ positionVersion: task.positionVersion ?? 0,
62
+ labelsJson: task.labels ? JSON.stringify(task.labels) : '[]',
63
+ notesJson: task.notes ? JSON.stringify(task.notes) : '[]',
64
+ acceptanceJson: task.acceptance ? JSON.stringify(task.acceptance) : '[]',
65
+ filesJson: task.files ? JSON.stringify(task.files) : '[]',
66
+ origin: task.origin ?? null,
67
+ blockedBy: task.blockedBy ?? null,
68
+ epicLifecycle: task.epicLifecycle ?? null,
69
+ noAutoComplete: task.noAutoComplete ?? null,
70
+ createdAt: task.createdAt ?? new Date().toISOString(),
71
+ updatedAt: task.updatedAt ?? null,
72
+ completedAt: task.completedAt ?? null,
73
+ cancelledAt: task.cancelledAt ?? null,
74
+ cancellationReason: task.cancellationReason ?? null,
75
+ verificationJson: task.verification ? JSON.stringify(task.verification) : null,
76
+ createdBy: task.provenance?.createdBy ?? null,
77
+ modifiedBy: task.provenance?.modifiedBy ?? null,
78
+ sessionId: task.provenance?.sessionId ?? null,
79
+ pipelineStage: task.pipelineStage ?? null,
80
+ assignee: task.assignee ?? null,
81
+ };
82
+ }
83
+ /** Convert a domain Task to a row suitable for archived tasks. */
84
+ export function archivedTaskToRow(task) {
85
+ const row = taskToRow(task);
86
+ row.status = 'archived';
87
+ if (!row['archivedAt']) {
88
+ row['archivedAt'] = task.completedAt ?? new Date().toISOString();
89
+ }
90
+ return row;
91
+ }
92
+ /** Convert a SessionRow to a domain Session. */
93
+ export function rowToSession(row) {
94
+ const taskWork = {
95
+ taskId: row.currentTask ?? null,
96
+ setAt: row.taskStartedAt ?? null,
97
+ };
98
+ return {
99
+ id: row.id,
100
+ name: row.name,
101
+ status: row.status,
102
+ scope: (safeParseJson(row.scopeJson) ?? { type: 'global' }),
103
+ taskWork,
104
+ startedAt: row.startedAt,
105
+ endedAt: row.endedAt ?? undefined,
106
+ agent: row.agent ?? undefined,
107
+ notes: safeParseJsonArray(row.notesJson),
108
+ tasksCompleted: safeParseJsonArray(row.tasksCompletedJson),
109
+ tasksCreated: safeParseJsonArray(row.tasksCreatedJson),
110
+ handoffJson: row.handoffJson ?? null,
111
+ // Session chain fields (T4959)
112
+ previousSessionId: row.previousSessionId ?? null,
113
+ nextSessionId: row.nextSessionId ?? null,
114
+ agentIdentifier: row.agentIdentifier ?? null,
115
+ handoffConsumedAt: row.handoffConsumedAt ?? null,
116
+ handoffConsumedBy: row.handoffConsumedBy ?? null,
117
+ debriefJson: row.debriefJson ?? null,
118
+ // Session stats fields
119
+ stats: row.statsJson ? safeParseJson(row.statsJson) : undefined,
120
+ resumeCount: row.resumeCount ?? undefined,
121
+ gradeMode: row.gradeMode ? Boolean(row.gradeMode) : undefined,
122
+ };
123
+ }
124
+ //# sourceMappingURL=converters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converters.js","sourceRoot":"","sources":["../../src/store/converters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Cross-database cleanup hooks for brain.db → tasks.db soft FK enforcement.
3
+ *
4
+ * SQLite does not support foreign key constraints across database connections.
5
+ * This module provides application-layer guards that maintain referential
6
+ * integrity between brain.db and tasks.db after destructive operations.
7
+ *
8
+ * Implements the recommendations from T030 audit (XFKB-001 through XFKB-005).
9
+ *
10
+ * @task T033
11
+ * @epic T029
12
+ */
13
+ import { and, eq, isNotNull, or } from 'drizzle-orm';
14
+ import * as brainSchema from './brain-schema.js';
15
+ import { getBrainDb } from './brain-sqlite.js';
16
+ /**
17
+ * Clean up brain.db references after a task is deleted from tasks.db.
18
+ *
19
+ * Handles:
20
+ * - XFKB-001/002: Nullify brain_decisions.context_epic_id / context_task_id
21
+ * - XFKB-003: Delete brain_memory_links rows where task_id matches
22
+ * - XFKB-005: Delete brain_page_nodes with id='task:<taskId>' and cascade brain_page_edges
23
+ *
24
+ * This is a best-effort cleanup — brain.db is a cognitive store and minor
25
+ * staleness is preferable to failing task deletions due to brain.db errors.
26
+ *
27
+ * @remarks
28
+ * Best-effort: failures in brain.db cleanup do not propagate to the caller.
29
+ * A background reconciliation pass can clean up any residual stale refs.
30
+ *
31
+ * @param taskId - The ID of the task being deleted from tasks.db
32
+ * @param cwd - Optional working directory
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * await cleanupBrainRefsOnTaskDelete('T042');
37
+ * ```
38
+ */
39
+ export async function cleanupBrainRefsOnTaskDelete(taskId, cwd) {
40
+ let brainDb = null;
41
+ try {
42
+ brainDb = await getBrainDb(cwd);
43
+ }
44
+ catch {
45
+ // brain.db may not be initialized — non-fatal
46
+ return;
47
+ }
48
+ const nodeId = `task:${taskId}`;
49
+ try {
50
+ // XFKB-001/002: Nullify context references in brain_decisions
51
+ await brainDb
52
+ .update(brainSchema.brainDecisions)
53
+ .set({ contextEpicId: null })
54
+ .where(eq(brainSchema.brainDecisions.contextEpicId, taskId));
55
+ await brainDb
56
+ .update(brainSchema.brainDecisions)
57
+ .set({ contextTaskId: null })
58
+ .where(eq(brainSchema.brainDecisions.contextTaskId, taskId));
59
+ // XFKB-003: Delete brain_memory_links rows referencing this task
60
+ await brainDb
61
+ .delete(brainSchema.brainMemoryLinks)
62
+ .where(eq(brainSchema.brainMemoryLinks.taskId, taskId));
63
+ // XFKB-005: Delete brain_page_edges first (FK cascade not available cross-DB),
64
+ // then delete brain_page_nodes for this task
65
+ await brainDb
66
+ .delete(brainSchema.brainPageEdges)
67
+ .where(or(eq(brainSchema.brainPageEdges.fromId, nodeId), eq(brainSchema.brainPageEdges.toId, nodeId)));
68
+ await brainDb
69
+ .delete(brainSchema.brainPageNodes)
70
+ .where(eq(brainSchema.brainPageNodes.id, nodeId));
71
+ }
72
+ catch {
73
+ // Non-fatal: log silently. Brain.db cleanup is best-effort.
74
+ // A background reconciliation pass can clean up any residual stale refs.
75
+ }
76
+ }
77
+ /**
78
+ * Clean up brain.db references after a session is deleted from tasks.db.
79
+ *
80
+ * Handles:
81
+ * - XFKB-004: Nullify brain_observations.source_session_id where it matches
82
+ *
83
+ * @remarks
84
+ * Best-effort: failures do not propagate. brain.db may not be initialised.
85
+ *
86
+ * @param sessionId - The ID of the session being deleted from tasks.db
87
+ * @param cwd - Optional working directory
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * await cleanupBrainRefsOnSessionDelete('ses_20260321_abc');
92
+ * ```
93
+ */
94
+ export async function cleanupBrainRefsOnSessionDelete(sessionId, cwd) {
95
+ let brainDb = null;
96
+ try {
97
+ brainDb = await getBrainDb(cwd);
98
+ }
99
+ catch {
100
+ return;
101
+ }
102
+ try {
103
+ // XFKB-004: Nullify source_session_id in brain_observations
104
+ await brainDb
105
+ .update(brainSchema.brainObservations)
106
+ .set({ sourceSessionId: null })
107
+ .where(eq(brainSchema.brainObservations.sourceSessionId, sessionId));
108
+ }
109
+ catch {
110
+ // Non-fatal best-effort cleanup
111
+ }
112
+ }
113
+ /**
114
+ * Verify a task ID exists in tasks.db before writing a cross-DB reference to brain.db.
115
+ * Returns true if the task exists, false otherwise.
116
+ *
117
+ * Provides write-guard for XFKB-001/002/003 on brain.db insert.
118
+ *
119
+ * @remarks
120
+ * Used as a write-guard before inserting cross-DB references into brain.db.
121
+ *
122
+ * @param taskId - Task ID to verify
123
+ * @param tasksDb - The tasks.db drizzle instance
124
+ * @returns True if the task exists in tasks.db
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * if (await taskExistsInTasksDb('T042', db)) { /* safe to reference *\/ }
129
+ * ```
130
+ */
131
+ export async function taskExistsInTasksDb(taskId, tasksDb) {
132
+ const { tasks } = await import('./tasks-schema.js');
133
+ const { eq: eqOp } = await import('drizzle-orm');
134
+ const result = await tasksDb
135
+ .select({ id: tasks.id })
136
+ .from(tasks)
137
+ .where(eqOp(tasks.id, taskId))
138
+ .all();
139
+ return result.length > 0;
140
+ }
141
+ /**
142
+ * Verify a session ID exists in tasks.db before writing a cross-DB reference to brain.db.
143
+ * Returns true if the session exists, false otherwise.
144
+ *
145
+ * Provides write-guard for XFKB-004 on brain.db insert.
146
+ *
147
+ * @remarks
148
+ * Used as a write-guard before inserting cross-DB references into brain.db.
149
+ *
150
+ * @param sessionId - Session ID to verify
151
+ * @param tasksDb - The tasks.db drizzle instance
152
+ * @returns True if the session exists in tasks.db
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * if (await sessionExistsInTasksDb('ses_abc', db)) { /* safe to reference *\/ }
157
+ * ```
158
+ */
159
+ /**
160
+ * Reconcile orphaned cross-DB references in brain.db.
161
+ *
162
+ * Scans brain.db for references to tasks/sessions that no longer exist in
163
+ * tasks.db and cleans them up:
164
+ * - brain_decisions with stale context_task_id or context_epic_id → nullify
165
+ * - brain_observations with stale source_session_id → nullify
166
+ * - brain_memory_links with stale task_id → delete row
167
+ *
168
+ * This is the background reconciliation pass mentioned in the module doc.
169
+ * Safe to run at any frequency — idempotent.
170
+ *
171
+ * @param cwd - Optional working directory
172
+ * @returns Counts of orphaned references cleaned up
173
+ */
174
+ export async function reconcileOrphanedRefs(cwd) {
175
+ let brainDb = null;
176
+ const result = { decisionsFixed: 0, observationsFixed: 0, linksRemoved: 0 };
177
+ try {
178
+ brainDb = await getBrainDb(cwd);
179
+ }
180
+ catch {
181
+ return result;
182
+ }
183
+ const { getDb } = await import('./sqlite.js');
184
+ let tasksDb;
185
+ try {
186
+ tasksDb = await getDb(cwd);
187
+ }
188
+ catch {
189
+ return result;
190
+ }
191
+ try {
192
+ // 1. Find decisions with stale context_task_id
193
+ const decisionsWithTaskRef = await brainDb
194
+ .select({
195
+ id: brainSchema.brainDecisions.id,
196
+ contextTaskId: brainSchema.brainDecisions.contextTaskId,
197
+ contextEpicId: brainSchema.brainDecisions.contextEpicId,
198
+ })
199
+ .from(brainSchema.brainDecisions)
200
+ .where(or(isNotNull(brainSchema.brainDecisions.contextTaskId), isNotNull(brainSchema.brainDecisions.contextEpicId)))
201
+ .all();
202
+ for (const d of decisionsWithTaskRef) {
203
+ if (d.contextTaskId) {
204
+ const exists = await taskExistsInTasksDb(d.contextTaskId, tasksDb);
205
+ if (!exists) {
206
+ await brainDb
207
+ .update(brainSchema.brainDecisions)
208
+ .set({ contextTaskId: null })
209
+ .where(eq(brainSchema.brainDecisions.id, d.id));
210
+ result.decisionsFixed++;
211
+ }
212
+ }
213
+ if (d.contextEpicId) {
214
+ const exists = await taskExistsInTasksDb(d.contextEpicId, tasksDb);
215
+ if (!exists) {
216
+ await brainDb
217
+ .update(brainSchema.brainDecisions)
218
+ .set({ contextEpicId: null })
219
+ .where(eq(brainSchema.brainDecisions.id, d.id));
220
+ result.decisionsFixed++;
221
+ }
222
+ }
223
+ }
224
+ // 2. Find observations with stale source_session_id
225
+ const obsWithSessionRef = await brainDb
226
+ .select({
227
+ id: brainSchema.brainObservations.id,
228
+ sourceSessionId: brainSchema.brainObservations.sourceSessionId,
229
+ })
230
+ .from(brainSchema.brainObservations)
231
+ .where(isNotNull(brainSchema.brainObservations.sourceSessionId))
232
+ .all();
233
+ for (const o of obsWithSessionRef) {
234
+ {
235
+ const exists = o.sourceSessionId
236
+ ? await sessionExistsInTasksDb(o.sourceSessionId, tasksDb)
237
+ : false;
238
+ if (!exists) {
239
+ await brainDb
240
+ .update(brainSchema.brainObservations)
241
+ .set({ sourceSessionId: null })
242
+ .where(eq(brainSchema.brainObservations.id, o.id));
243
+ result.observationsFixed++;
244
+ }
245
+ }
246
+ }
247
+ // 3. Find memory links with stale task_id
248
+ const allLinks = await brainDb
249
+ .select({
250
+ memoryType: brainSchema.brainMemoryLinks.memoryType,
251
+ memoryId: brainSchema.brainMemoryLinks.memoryId,
252
+ taskId: brainSchema.brainMemoryLinks.taskId,
253
+ linkType: brainSchema.brainMemoryLinks.linkType,
254
+ })
255
+ .from(brainSchema.brainMemoryLinks)
256
+ .all();
257
+ for (const link of allLinks) {
258
+ const exists = await taskExistsInTasksDb(link.taskId, tasksDb);
259
+ if (!exists) {
260
+ await brainDb
261
+ .delete(brainSchema.brainMemoryLinks)
262
+ .where(and(eq(brainSchema.brainMemoryLinks.memoryType, link.memoryType), eq(brainSchema.brainMemoryLinks.memoryId, link.memoryId), eq(brainSchema.brainMemoryLinks.taskId, link.taskId), eq(brainSchema.brainMemoryLinks.linkType, link.linkType)));
263
+ result.linksRemoved++;
264
+ }
265
+ }
266
+ }
267
+ catch {
268
+ // Non-fatal best-effort reconciliation
269
+ }
270
+ return result;
271
+ }
272
+ export async function sessionExistsInTasksDb(sessionId, tasksDb) {
273
+ const { sessions } = await import('./tasks-schema.js');
274
+ const { eq: eqOp } = await import('drizzle-orm');
275
+ const result = await tasksDb
276
+ .select({ id: sessions.id })
277
+ .from(sessions)
278
+ .where(eqOp(sessions.id, sessionId))
279
+ .all();
280
+ return result.length > 0;
281
+ }
282
+ /**
283
+ * Verify an agent exists in signaldock.db before creating cross-DB references.
284
+ * Returns true if the agent_id exists in signaldock.db agents table.
285
+ *
286
+ * Provides write-guard for agent_instances and agent_error_log in tasks.db
287
+ * that reference agents whose identity lives in signaldock.db.
288
+ *
289
+ * @param agentId - Agent slug (e.g. 'cleo-db-lead') to verify
290
+ * @param cwd - Optional working directory
291
+ * @returns True if the agent exists in signaldock.db
292
+ *
293
+ * @task T238
294
+ */
295
+ export async function agentExistsInSignaldockDb(agentId, cwd) {
296
+ try {
297
+ const { getSignaldockDbPath } = await import('./signaldock-sqlite.js');
298
+ const { existsSync } = await import('node:fs');
299
+ const dbPath = getSignaldockDbPath(cwd);
300
+ if (!existsSync(dbPath))
301
+ return false;
302
+ const { createRequire } = await import('node:module');
303
+ const _require = createRequire(import.meta.url);
304
+ const { DatabaseSync } = _require('node:sqlite');
305
+ const db = new DatabaseSync(dbPath);
306
+ try {
307
+ const row = db.prepare('SELECT id FROM agents WHERE agent_id = ?').get(agentId);
308
+ return !!row;
309
+ }
310
+ finally {
311
+ db.close();
312
+ }
313
+ }
314
+ catch {
315
+ // signaldock.db may not exist yet — non-fatal
316
+ return false;
317
+ }
318
+ }
319
+ //# sourceMappingURL=cross-db-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-db-cleanup.js","sourceRoot":"","sources":["../../src/store/cross-db-cleanup.ts"],"names":[],"mappings":"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"}