@cleocode/core 2026.4.9 → 2026.4.12

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 (1011) 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.d.ts.map +1 -1
  85. package/dist/codebase-map/analyzers/architecture.js +129 -0
  86. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  87. package/dist/codebase-map/analyzers/concerns.js +122 -0
  88. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  89. package/dist/codebase-map/analyzers/conventions.js +149 -0
  90. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  91. package/dist/codebase-map/analyzers/integrations.js +108 -0
  92. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  93. package/dist/codebase-map/analyzers/stack.js +117 -0
  94. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  95. package/dist/codebase-map/analyzers/structure.js +137 -0
  96. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  97. package/dist/codebase-map/analyzers/testing.js +118 -0
  98. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  99. package/dist/codebase-map/index.js +57 -0
  100. package/dist/codebase-map/index.js.map +1 -0
  101. package/dist/codebase-map/store.js +122 -0
  102. package/dist/codebase-map/store.js.map +1 -0
  103. package/dist/codebase-map/summary.js +152 -0
  104. package/dist/codebase-map/summary.js.map +1 -0
  105. package/dist/compliance/index.js +288 -0
  106. package/dist/compliance/index.js.map +1 -0
  107. package/dist/compliance/protocol-enforcement.js +332 -0
  108. package/dist/compliance/protocol-enforcement.js.map +1 -0
  109. package/dist/compliance/protocol-rules.js +786 -0
  110. package/dist/compliance/protocol-rules.js.map +1 -0
  111. package/dist/compliance/protocol-types.js +79 -0
  112. package/dist/compliance/protocol-types.js.map +1 -0
  113. package/dist/compliance/store.js +53 -0
  114. package/dist/compliance/store.js.map +1 -0
  115. package/dist/conduit/conduit-client.js +107 -0
  116. package/dist/conduit/conduit-client.js.map +1 -0
  117. package/dist/conduit/factory.js +52 -0
  118. package/dist/conduit/factory.js.map +1 -0
  119. package/dist/conduit/http-transport.js +155 -0
  120. package/dist/conduit/http-transport.js.map +1 -0
  121. package/dist/conduit/index.js +15 -0
  122. package/dist/conduit/index.js.map +1 -0
  123. package/dist/conduit/local-transport.d.ts +18 -8
  124. package/dist/conduit/local-transport.d.ts.map +1 -1
  125. package/dist/conduit/local-transport.js +255 -0
  126. package/dist/conduit/local-transport.js.map +1 -0
  127. package/dist/conduit/sse-transport.js +299 -0
  128. package/dist/conduit/sse-transport.js.map +1 -0
  129. package/dist/config/build-config.js +29 -0
  130. package/dist/config/build-config.js.map +1 -0
  131. package/dist/config.d.ts.map +1 -1
  132. package/dist/config.js +400 -0
  133. package/dist/config.js.map +1 -0
  134. package/dist/constants.js +18 -0
  135. package/dist/constants.js.map +1 -0
  136. package/dist/context/index.js +137 -0
  137. package/dist/context/index.js.map +1 -0
  138. package/dist/crypto/credentials.js +191 -0
  139. package/dist/crypto/credentials.js.map +1 -0
  140. package/dist/discovery.js +182 -0
  141. package/dist/discovery.js.map +1 -0
  142. package/dist/engine-result.js +12 -0
  143. package/dist/engine-result.js.map +1 -0
  144. package/dist/error-catalog.js +404 -0
  145. package/dist/error-catalog.js.map +1 -0
  146. package/dist/error-registry.js +393 -0
  147. package/dist/error-registry.js.map +1 -0
  148. package/dist/errors.d.ts +19 -0
  149. package/dist/errors.d.ts.map +1 -1
  150. package/dist/errors.js +173 -0
  151. package/dist/errors.js.map +1 -0
  152. package/dist/hooks/handlers/agent-hooks.js +106 -0
  153. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  154. package/dist/hooks/handlers/context-hooks.js +111 -0
  155. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  156. package/dist/hooks/handlers/error-hooks.js +52 -0
  157. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  158. package/dist/hooks/handlers/file-hooks.js +104 -0
  159. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  160. package/dist/hooks/handlers/handler-helpers.js +61 -0
  161. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  162. package/dist/hooks/handlers/index.js +28 -0
  163. package/dist/hooks/handlers/index.js.map +1 -0
  164. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  165. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  166. package/dist/hooks/handlers/notification-hooks.js +62 -0
  167. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  168. package/dist/hooks/handlers/session-hooks.d.ts +21 -0
  169. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  170. package/dist/hooks/handlers/session-hooks.js +142 -0
  171. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  172. package/dist/hooks/handlers/task-hooks.js +65 -0
  173. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  174. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  175. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  176. package/dist/hooks/index.js +13 -0
  177. package/dist/hooks/index.js.map +1 -0
  178. package/dist/hooks/payload-schemas.d.ts +2 -2
  179. package/dist/hooks/payload-schemas.js +220 -0
  180. package/dist/hooks/payload-schemas.js.map +1 -0
  181. package/dist/hooks/provider-hooks.js +66 -0
  182. package/dist/hooks/provider-hooks.js.map +1 -0
  183. package/dist/hooks/registry.js +229 -0
  184. package/dist/hooks/registry.js.map +1 -0
  185. package/dist/hooks/types.js +66 -0
  186. package/dist/hooks/types.js.map +1 -0
  187. package/dist/hooks.js +136 -0
  188. package/dist/hooks.js.map +1 -0
  189. package/dist/index.js +175 -68684
  190. package/dist/index.js.map +1 -7
  191. package/dist/init.d.ts +1 -2
  192. package/dist/init.d.ts.map +1 -1
  193. package/dist/init.js +851 -0
  194. package/dist/init.js.map +1 -0
  195. package/dist/inject/index.js +82 -0
  196. package/dist/inject/index.js.map +1 -0
  197. package/dist/injection.js +343 -0
  198. package/dist/injection.js.map +1 -0
  199. package/dist/intelligence/adaptive-validation.js +497 -0
  200. package/dist/intelligence/adaptive-validation.js.map +1 -0
  201. package/dist/intelligence/impact.js +675 -0
  202. package/dist/intelligence/impact.js.map +1 -0
  203. package/dist/intelligence/index.js +22 -0
  204. package/dist/intelligence/index.js.map +1 -0
  205. package/dist/intelligence/patterns.js +492 -0
  206. package/dist/intelligence/patterns.js.map +1 -0
  207. package/dist/intelligence/prediction.js +499 -0
  208. package/dist/intelligence/prediction.js.map +1 -0
  209. package/dist/intelligence/types.js +13 -0
  210. package/dist/intelligence/types.js.map +1 -0
  211. package/dist/internal.d.ts +15 -5
  212. package/dist/internal.d.ts.map +1 -1
  213. package/dist/internal.js +306 -0
  214. package/dist/internal.js.map +1 -0
  215. package/dist/issue/create.js +121 -0
  216. package/dist/issue/create.js.map +1 -0
  217. package/dist/issue/diagnostics.js +59 -0
  218. package/dist/issue/diagnostics.js.map +1 -0
  219. package/dist/issue/index.js +10 -0
  220. package/dist/issue/index.js.map +1 -0
  221. package/dist/issue/template-parser.js +267 -0
  222. package/dist/issue/template-parser.js.map +1 -0
  223. package/dist/json-schema-validator.js +76 -0
  224. package/dist/json-schema-validator.js.map +1 -0
  225. package/dist/lib/index.js +11 -0
  226. package/dist/lib/index.js.map +1 -0
  227. package/dist/lib/retry.js +152 -0
  228. package/dist/lib/retry.js.map +1 -0
  229. package/dist/lib/tree-sitter-languages.js +71 -0
  230. package/dist/lib/tree-sitter-languages.js.map +1 -0
  231. package/dist/lifecycle/chain-composition.js +152 -0
  232. package/dist/lifecycle/chain-composition.js.map +1 -0
  233. package/dist/lifecycle/chain-store.js +246 -0
  234. package/dist/lifecycle/chain-store.js.map +1 -0
  235. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  236. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  237. package/dist/lifecycle/default-chain.js +176 -0
  238. package/dist/lifecycle/default-chain.js.map +1 -0
  239. package/dist/lifecycle/evidence.js +180 -0
  240. package/dist/lifecycle/evidence.js.map +1 -0
  241. package/dist/lifecycle/frontmatter.js +363 -0
  242. package/dist/lifecycle/frontmatter.js.map +1 -0
  243. package/dist/lifecycle/index.js +756 -0
  244. package/dist/lifecycle/index.js.map +1 -0
  245. package/dist/lifecycle/pipeline.js +656 -0
  246. package/dist/lifecycle/pipeline.js.map +1 -0
  247. package/dist/lifecycle/rcasd-index.js +326 -0
  248. package/dist/lifecycle/rcasd-index.js.map +1 -0
  249. package/dist/lifecycle/rcasd-paths.js +220 -0
  250. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  251. package/dist/lifecycle/resume.js +864 -0
  252. package/dist/lifecycle/resume.js.map +1 -0
  253. package/dist/lifecycle/stage-artifacts.js +94 -0
  254. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  255. package/dist/lifecycle/stage-guidance.js +234 -0
  256. package/dist/lifecycle/stage-guidance.js.map +1 -0
  257. package/dist/lifecycle/stages.js +534 -0
  258. package/dist/lifecycle/stages.js.map +1 -0
  259. package/dist/lifecycle/state-machine.js +516 -0
  260. package/dist/lifecycle/state-machine.js.map +1 -0
  261. package/dist/lifecycle/tessera-engine.js +249 -0
  262. package/dist/lifecycle/tessera-engine.js.map +1 -0
  263. package/dist/logger.js +140 -0
  264. package/dist/logger.js.map +1 -0
  265. package/dist/memory/auto-extract.js +177 -0
  266. package/dist/memory/auto-extract.js.map +1 -0
  267. package/dist/memory/brain-embedding.js +66 -0
  268. package/dist/memory/brain-embedding.js.map +1 -0
  269. package/dist/memory/brain-lifecycle.js +298 -0
  270. package/dist/memory/brain-lifecycle.js.map +1 -0
  271. package/dist/memory/brain-links.js +161 -0
  272. package/dist/memory/brain-links.js.map +1 -0
  273. package/dist/memory/brain-maintenance.js +114 -0
  274. package/dist/memory/brain-maintenance.js.map +1 -0
  275. package/dist/memory/brain-migration.js +149 -0
  276. package/dist/memory/brain-migration.js.map +1 -0
  277. package/dist/memory/brain-reasoning.js +215 -0
  278. package/dist/memory/brain-reasoning.js.map +1 -0
  279. package/dist/memory/brain-retrieval.js +542 -0
  280. package/dist/memory/brain-retrieval.js.map +1 -0
  281. package/dist/memory/brain-row-types.js +10 -0
  282. package/dist/memory/brain-row-types.js.map +1 -0
  283. package/dist/memory/brain-search.js +519 -0
  284. package/dist/memory/brain-search.js.map +1 -0
  285. package/dist/memory/brain-similarity.js +145 -0
  286. package/dist/memory/brain-similarity.js.map +1 -0
  287. package/dist/memory/claude-mem-migration.js +277 -0
  288. package/dist/memory/claude-mem-migration.js.map +1 -0
  289. package/dist/memory/decisions.js +162 -0
  290. package/dist/memory/decisions.js.map +1 -0
  291. package/dist/memory/embedding-local.js +97 -0
  292. package/dist/memory/embedding-local.js.map +1 -0
  293. package/dist/memory/embedding-queue.js +271 -0
  294. package/dist/memory/embedding-queue.js.map +1 -0
  295. package/dist/memory/embedding-worker.js +58 -0
  296. package/dist/memory/embedding-worker.js.map +1 -0
  297. package/dist/memory/engine-compat.js +1397 -0
  298. package/dist/memory/engine-compat.js.map +1 -0
  299. package/dist/memory/index.js +1140 -0
  300. package/dist/memory/index.js.map +1 -0
  301. package/dist/memory/learnings.d.ts +2 -2
  302. package/dist/memory/learnings.js +121 -0
  303. package/dist/memory/learnings.js.map +1 -0
  304. package/dist/memory/memory-bridge.js +370 -0
  305. package/dist/memory/memory-bridge.js.map +1 -0
  306. package/dist/memory/patterns.d.ts +4 -4
  307. package/dist/memory/patterns.js +122 -0
  308. package/dist/memory/patterns.js.map +1 -0
  309. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  310. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  311. package/dist/memory/session-memory.js +331 -0
  312. package/dist/memory/session-memory.js.map +1 -0
  313. package/dist/metrics/ab-test.js +260 -0
  314. package/dist/metrics/ab-test.js.map +1 -0
  315. package/dist/metrics/aggregation.js +363 -0
  316. package/dist/metrics/aggregation.js.map +1 -0
  317. package/dist/metrics/common.js +64 -0
  318. package/dist/metrics/common.js.map +1 -0
  319. package/dist/metrics/enums.js +78 -0
  320. package/dist/metrics/enums.js.map +1 -0
  321. package/dist/metrics/index.js +19 -0
  322. package/dist/metrics/index.js.map +1 -0
  323. package/dist/metrics/model-provider-registry.js +88 -0
  324. package/dist/metrics/model-provider-registry.js.map +1 -0
  325. package/dist/metrics/otel-integration.js +263 -0
  326. package/dist/metrics/otel-integration.js.map +1 -0
  327. package/dist/metrics/provider-detection.js +103 -0
  328. package/dist/metrics/provider-detection.js.map +1 -0
  329. package/dist/metrics/token-estimation.js +253 -0
  330. package/dist/metrics/token-estimation.js.map +1 -0
  331. package/dist/metrics/token-service.js +450 -0
  332. package/dist/metrics/token-service.js.map +1 -0
  333. package/dist/migration/agent-outputs.js +316 -0
  334. package/dist/migration/agent-outputs.js.map +1 -0
  335. package/dist/migration/checksum.js +92 -0
  336. package/dist/migration/checksum.js.map +1 -0
  337. package/dist/migration/index.js +282 -0
  338. package/dist/migration/index.js.map +1 -0
  339. package/dist/migration/logger.js +360 -0
  340. package/dist/migration/logger.js.map +1 -0
  341. package/dist/migration/preflight.js +9 -0
  342. package/dist/migration/preflight.js.map +1 -0
  343. package/dist/migration/state.js +421 -0
  344. package/dist/migration/state.js.map +1 -0
  345. package/dist/migration/validate.js +241 -0
  346. package/dist/migration/validate.js.map +1 -0
  347. package/dist/mvi-helpers.js +74 -0
  348. package/dist/mvi-helpers.js.map +1 -0
  349. package/dist/nexus/deps.js +375 -0
  350. package/dist/nexus/deps.js.map +1 -0
  351. package/dist/nexus/discover.js +288 -0
  352. package/dist/nexus/discover.js.map +1 -0
  353. package/dist/nexus/hash.js +10 -0
  354. package/dist/nexus/hash.js.map +1 -0
  355. package/dist/nexus/index.js +40 -0
  356. package/dist/nexus/index.js.map +1 -0
  357. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  358. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  359. package/dist/nexus/permissions.js +105 -0
  360. package/dist/nexus/permissions.js.map +1 -0
  361. package/dist/nexus/query.js +175 -0
  362. package/dist/nexus/query.js.map +1 -0
  363. package/dist/nexus/registry.js +584 -0
  364. package/dist/nexus/registry.js.map +1 -0
  365. package/dist/nexus/sharing/index.js +288 -0
  366. package/dist/nexus/sharing/index.js.map +1 -0
  367. package/dist/nexus/transfer-types.js +8 -0
  368. package/dist/nexus/transfer-types.js.map +1 -0
  369. package/dist/nexus/transfer.js +263 -0
  370. package/dist/nexus/transfer.js.map +1 -0
  371. package/dist/nexus/workspace.js +355 -0
  372. package/dist/nexus/workspace.js.map +1 -0
  373. package/dist/observability/index.js +103 -0
  374. package/dist/observability/index.js.map +1 -0
  375. package/dist/observability/log-filter.js +63 -0
  376. package/dist/observability/log-filter.js.map +1 -0
  377. package/dist/observability/log-parser.js +99 -0
  378. package/dist/observability/log-parser.js.map +1 -0
  379. package/dist/observability/log-reader.js +139 -0
  380. package/dist/observability/log-reader.js.map +1 -0
  381. package/dist/observability/types.js +19 -0
  382. package/dist/observability/types.js.map +1 -0
  383. package/dist/orchestration/analyze.js +107 -0
  384. package/dist/orchestration/analyze.js.map +1 -0
  385. package/dist/orchestration/bootstrap.js +132 -0
  386. package/dist/orchestration/bootstrap.js.map +1 -0
  387. package/dist/orchestration/context.js +56 -0
  388. package/dist/orchestration/context.js.map +1 -0
  389. package/dist/orchestration/critical-path.js +100 -0
  390. package/dist/orchestration/critical-path.js.map +1 -0
  391. package/dist/orchestration/hierarchy.js +183 -0
  392. package/dist/orchestration/hierarchy.js.map +1 -0
  393. package/dist/orchestration/index.js +287 -0
  394. package/dist/orchestration/index.js.map +1 -0
  395. package/dist/orchestration/parallel.js +89 -0
  396. package/dist/orchestration/parallel.js.map +1 -0
  397. package/dist/orchestration/protocol-validators.js +815 -0
  398. package/dist/orchestration/protocol-validators.js.map +1 -0
  399. package/dist/orchestration/skill-ops.js +98 -0
  400. package/dist/orchestration/skill-ops.js.map +1 -0
  401. package/dist/orchestration/status.js +107 -0
  402. package/dist/orchestration/status.js.map +1 -0
  403. package/dist/orchestration/unblock.js +103 -0
  404. package/dist/orchestration/unblock.js.map +1 -0
  405. package/dist/orchestration/validate-spawn.js +67 -0
  406. package/dist/orchestration/validate-spawn.js.map +1 -0
  407. package/dist/orchestration/waves.js +86 -0
  408. package/dist/orchestration/waves.js.map +1 -0
  409. package/dist/otel/index.js +163 -0
  410. package/dist/otel/index.js.map +1 -0
  411. package/dist/output.d.ts +32 -11
  412. package/dist/output.d.ts.map +1 -1
  413. package/dist/output.js +164 -0
  414. package/dist/output.js.map +1 -0
  415. package/dist/pagination.js +64 -0
  416. package/dist/pagination.js.map +1 -0
  417. package/dist/paths.d.ts +39 -9
  418. package/dist/paths.d.ts.map +1 -1
  419. package/dist/paths.js +842 -0
  420. package/dist/paths.js.map +1 -0
  421. package/dist/phases/deps.js +372 -0
  422. package/dist/phases/deps.js.map +1 -0
  423. package/dist/phases/index.js +349 -0
  424. package/dist/phases/index.js.map +1 -0
  425. package/dist/pipeline/index.js +10 -0
  426. package/dist/pipeline/index.js.map +1 -0
  427. package/dist/pipeline/phase.js +45 -0
  428. package/dist/pipeline/phase.js.map +1 -0
  429. package/dist/platform.js +211 -0
  430. package/dist/platform.js.map +1 -0
  431. package/dist/project-info.js +84 -0
  432. package/dist/project-info.js.map +1 -0
  433. package/dist/reconciliation/index.js +10 -0
  434. package/dist/reconciliation/index.js.map +1 -0
  435. package/dist/reconciliation/link-store.js +129 -0
  436. package/dist/reconciliation/link-store.js.map +1 -0
  437. package/dist/reconciliation/reconciliation-engine.js +298 -0
  438. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  439. package/dist/release/artifacts.js +427 -0
  440. package/dist/release/artifacts.js.map +1 -0
  441. package/dist/release/changelog-writer.js +151 -0
  442. package/dist/release/changelog-writer.js.map +1 -0
  443. package/dist/release/channel.js +144 -0
  444. package/dist/release/channel.js.map +1 -0
  445. package/dist/release/ci.js +166 -0
  446. package/dist/release/ci.js.map +1 -0
  447. package/dist/release/github-pr.js +225 -0
  448. package/dist/release/github-pr.js.map +1 -0
  449. package/dist/release/guards.js +116 -0
  450. package/dist/release/guards.js.map +1 -0
  451. package/dist/release/index.js +22 -0
  452. package/dist/release/index.js.map +1 -0
  453. package/dist/release/release-config.js +158 -0
  454. package/dist/release/release-config.js.map +1 -0
  455. package/dist/release/release-manifest.js +1019 -0
  456. package/dist/release/release-manifest.js.map +1 -0
  457. package/dist/release/version-bump.js +255 -0
  458. package/dist/release/version-bump.js.map +1 -0
  459. package/dist/remote/index.js +257 -0
  460. package/dist/remote/index.js.map +1 -0
  461. package/dist/repair.js +130 -0
  462. package/dist/repair.js.map +1 -0
  463. package/dist/research/index.js +2 -0
  464. package/dist/research/index.js.map +1 -0
  465. package/dist/roadmap/index.js +59 -0
  466. package/dist/roadmap/index.js.map +1 -0
  467. package/dist/routing/capability-matrix.js +1556 -0
  468. package/dist/routing/capability-matrix.js.map +1 -0
  469. package/dist/routing/index.js +9 -0
  470. package/dist/routing/index.js.map +1 -0
  471. package/dist/scaffold.d.ts +15 -2
  472. package/dist/scaffold.d.ts.map +1 -1
  473. package/dist/scaffold.js +1759 -0
  474. package/dist/scaffold.js.map +1 -0
  475. package/dist/schema-management.js +295 -0
  476. package/dist/schema-management.js.map +1 -0
  477. package/dist/security/index.js +9 -0
  478. package/dist/security/index.js.map +1 -0
  479. package/dist/security/input-sanitization.js +321 -0
  480. package/dist/security/input-sanitization.js.map +1 -0
  481. package/dist/sequence/index.js +295 -0
  482. package/dist/sequence/index.js.map +1 -0
  483. package/dist/sessions/assumptions.js +54 -0
  484. package/dist/sessions/assumptions.js.map +1 -0
  485. package/dist/sessions/briefing.js +377 -0
  486. package/dist/sessions/briefing.js.map +1 -0
  487. package/dist/sessions/context-alert.js +222 -0
  488. package/dist/sessions/context-alert.js.map +1 -0
  489. package/dist/sessions/context-inject.js +61 -0
  490. package/dist/sessions/context-inject.js.map +1 -0
  491. package/dist/sessions/context-monitor.js +98 -0
  492. package/dist/sessions/context-monitor.js.map +1 -0
  493. package/dist/sessions/decisions.js +65 -0
  494. package/dist/sessions/decisions.js.map +1 -0
  495. package/dist/sessions/find.js +65 -0
  496. package/dist/sessions/find.js.map +1 -0
  497. package/dist/sessions/handoff.js +328 -0
  498. package/dist/sessions/handoff.js.map +1 -0
  499. package/dist/sessions/hitl-warnings.js +254 -0
  500. package/dist/sessions/hitl-warnings.js.map +1 -0
  501. package/dist/sessions/index.js +327 -0
  502. package/dist/sessions/index.js.map +1 -0
  503. package/dist/sessions/session-archive.js +40 -0
  504. package/dist/sessions/session-archive.js.map +1 -0
  505. package/dist/sessions/session-cleanup.js +59 -0
  506. package/dist/sessions/session-cleanup.js.map +1 -0
  507. package/dist/sessions/session-drift.js +134 -0
  508. package/dist/sessions/session-drift.js.map +1 -0
  509. package/dist/sessions/session-enforcement.js +144 -0
  510. package/dist/sessions/session-enforcement.js.map +1 -0
  511. package/dist/sessions/session-grade.js +253 -0
  512. package/dist/sessions/session-grade.js.map +1 -0
  513. package/dist/sessions/session-history.js +42 -0
  514. package/dist/sessions/session-history.js.map +1 -0
  515. package/dist/sessions/session-id.js +81 -0
  516. package/dist/sessions/session-id.js.map +1 -0
  517. package/dist/sessions/session-memory-bridge.js +52 -0
  518. package/dist/sessions/session-memory-bridge.js.map +1 -0
  519. package/dist/sessions/session-show.js +24 -0
  520. package/dist/sessions/session-show.js.map +1 -0
  521. package/dist/sessions/session-stats.js +69 -0
  522. package/dist/sessions/session-stats.js.map +1 -0
  523. package/dist/sessions/session-suspend.js +39 -0
  524. package/dist/sessions/session-suspend.js.map +1 -0
  525. package/dist/sessions/session-switch.js +51 -0
  526. package/dist/sessions/session-switch.js.map +1 -0
  527. package/dist/sessions/session-view.js +76 -0
  528. package/dist/sessions/session-view.js.map +1 -0
  529. package/dist/sessions/snapshot.js +213 -0
  530. package/dist/sessions/snapshot.js.map +1 -0
  531. package/dist/sessions/statusline-setup.js +85 -0
  532. package/dist/sessions/statusline-setup.js.map +1 -0
  533. package/dist/sessions/types.js +8 -0
  534. package/dist/sessions/types.js.map +1 -0
  535. package/dist/skills/agents/config.js +94 -0
  536. package/dist/skills/agents/config.js.map +1 -0
  537. package/dist/skills/agents/install.js +116 -0
  538. package/dist/skills/agents/install.js.map +1 -0
  539. package/dist/skills/agents/registry.js +161 -0
  540. package/dist/skills/agents/registry.js.map +1 -0
  541. package/dist/skills/discovery.js +333 -0
  542. package/dist/skills/discovery.js.map +1 -0
  543. package/dist/skills/dispatch.js +347 -0
  544. package/dist/skills/dispatch.js.map +1 -0
  545. package/dist/skills/dynamic-skill-generator.d.ts +0 -2
  546. package/dist/skills/dynamic-skill-generator.d.ts.map +1 -1
  547. package/dist/skills/dynamic-skill-generator.js +87 -0
  548. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  549. package/dist/skills/index.js +44 -0
  550. package/dist/skills/index.js.map +1 -0
  551. package/dist/skills/injection/subagent.js +195 -0
  552. package/dist/skills/injection/subagent.js.map +1 -0
  553. package/dist/skills/injection/token.js +260 -0
  554. package/dist/skills/injection/token.js.map +1 -0
  555. package/dist/skills/install.js +40 -0
  556. package/dist/skills/install.js.map +1 -0
  557. package/dist/skills/manifests/contribution.js +175 -0
  558. package/dist/skills/manifests/contribution.js.map +1 -0
  559. package/dist/skills/manifests/research.js +281 -0
  560. package/dist/skills/manifests/research.js.map +1 -0
  561. package/dist/skills/manifests/resolver.js +146 -0
  562. package/dist/skills/manifests/resolver.js.map +1 -0
  563. package/dist/skills/marketplace.js +90 -0
  564. package/dist/skills/marketplace.js.map +1 -0
  565. package/dist/skills/orchestrator/spawn.js +178 -0
  566. package/dist/skills/orchestrator/spawn.js.map +1 -0
  567. package/dist/skills/orchestrator/startup.js +451 -0
  568. package/dist/skills/orchestrator/startup.js.map +1 -0
  569. package/dist/skills/orchestrator/validator.js +301 -0
  570. package/dist/skills/orchestrator/validator.js.map +1 -0
  571. package/dist/skills/precedence-integration.js +73 -0
  572. package/dist/skills/precedence-integration.js.map +1 -0
  573. package/dist/skills/precedence-types.js +16 -0
  574. package/dist/skills/precedence-types.js.map +1 -0
  575. package/dist/skills/routing-table.js +63 -0
  576. package/dist/skills/routing-table.js.map +1 -0
  577. package/dist/skills/skill-paths.js +217 -0
  578. package/dist/skills/skill-paths.js.map +1 -0
  579. package/dist/skills/test-utility.js +55 -0
  580. package/dist/skills/test-utility.js.map +1 -0
  581. package/dist/skills/types.js +118 -0
  582. package/dist/skills/types.js.map +1 -0
  583. package/dist/skills/validation.js +183 -0
  584. package/dist/skills/validation.js.map +1 -0
  585. package/dist/skills/version.js +57 -0
  586. package/dist/skills/version.js.map +1 -0
  587. package/dist/snapshot/index.js +188 -0
  588. package/dist/snapshot/index.js.map +1 -0
  589. package/dist/spawn/adapter-registry.js +246 -0
  590. package/dist/spawn/adapter-registry.js.map +1 -0
  591. package/dist/spawn/index.js +10 -0
  592. package/dist/spawn/index.js.map +1 -0
  593. package/dist/stats/index.js +343 -0
  594. package/dist/stats/index.js.map +1 -0
  595. package/dist/stats/workflow-telemetry.js +400 -0
  596. package/dist/stats/workflow-telemetry.js.map +1 -0
  597. package/dist/sticky/archive.js +47 -0
  598. package/dist/sticky/archive.js.map +1 -0
  599. package/dist/sticky/convert.js +235 -0
  600. package/dist/sticky/convert.js.map +1 -0
  601. package/dist/sticky/create.js +48 -0
  602. package/dist/sticky/create.js.map +1 -0
  603. package/dist/sticky/id.js +35 -0
  604. package/dist/sticky/id.js.map +1 -0
  605. package/dist/sticky/index.js +16 -0
  606. package/dist/sticky/index.js.map +1 -0
  607. package/dist/sticky/list.js +44 -0
  608. package/dist/sticky/list.js.map +1 -0
  609. package/dist/sticky/purge.js +45 -0
  610. package/dist/sticky/purge.js.map +1 -0
  611. package/dist/sticky/show.js +42 -0
  612. package/dist/sticky/show.js.map +1 -0
  613. package/dist/sticky/types.js +10 -0
  614. package/dist/sticky/types.js.map +1 -0
  615. package/dist/store/agent-registry-accessor.d.ts +203 -12
  616. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  617. package/dist/store/agent-registry-accessor.js +783 -0
  618. package/dist/store/agent-registry-accessor.js.map +1 -0
  619. package/dist/store/api-key-kdf.d.ts +73 -0
  620. package/dist/store/api-key-kdf.d.ts.map +1 -0
  621. package/dist/store/api-key-kdf.js +84 -0
  622. package/dist/store/api-key-kdf.js.map +1 -0
  623. package/dist/store/atomic.js +167 -0
  624. package/dist/store/atomic.js.map +1 -0
  625. package/dist/store/backup.js +94 -0
  626. package/dist/store/backup.js.map +1 -0
  627. package/dist/store/brain-accessor.js +397 -0
  628. package/dist/store/brain-accessor.js.map +1 -0
  629. package/dist/store/brain-schema.d.ts +8 -8
  630. package/dist/store/brain-schema.js +215 -0
  631. package/dist/store/brain-schema.js.map +1 -0
  632. package/dist/store/brain-sqlite.js +222 -0
  633. package/dist/store/brain-sqlite.js.map +1 -0
  634. package/dist/store/cache.js +168 -0
  635. package/dist/store/cache.js.map +1 -0
  636. package/dist/store/chain-schema.js +51 -0
  637. package/dist/store/chain-schema.js.map +1 -0
  638. package/dist/store/cleanup-legacy.d.ts +128 -0
  639. package/dist/store/cleanup-legacy.d.ts.map +1 -0
  640. package/dist/store/cleanup-legacy.js +171 -0
  641. package/dist/store/cleanup-legacy.js.map +1 -0
  642. package/dist/store/conduit-sqlite.d.ts +184 -0
  643. package/dist/store/conduit-sqlite.d.ts.map +1 -0
  644. package/dist/store/conduit-sqlite.js +570 -0
  645. package/dist/store/conduit-sqlite.js.map +1 -0
  646. package/dist/store/converters.js +124 -0
  647. package/dist/store/converters.js.map +1 -0
  648. package/dist/store/cross-db-cleanup.js +319 -0
  649. package/dist/store/cross-db-cleanup.js.map +1 -0
  650. package/dist/store/data-accessor.js +26 -0
  651. package/dist/store/data-accessor.js.map +1 -0
  652. package/dist/store/data-safety-central.js +269 -0
  653. package/dist/store/data-safety-central.js.map +1 -0
  654. package/dist/store/data-safety.js +274 -0
  655. package/dist/store/data-safety.js.map +1 -0
  656. package/dist/store/db-helpers.js +224 -0
  657. package/dist/store/db-helpers.js.map +1 -0
  658. package/dist/store/export.js +155 -0
  659. package/dist/store/export.js.map +1 -0
  660. package/dist/store/file-utils.js +270 -0
  661. package/dist/store/file-utils.js.map +1 -0
  662. package/dist/store/git-checkpoint.js +365 -0
  663. package/dist/store/git-checkpoint.js.map +1 -0
  664. package/dist/store/global-salt.d.ts +78 -0
  665. package/dist/store/global-salt.d.ts.map +1 -0
  666. package/dist/store/global-salt.js +147 -0
  667. package/dist/store/global-salt.js.map +1 -0
  668. package/dist/store/import-logging.js +139 -0
  669. package/dist/store/import-logging.js.map +1 -0
  670. package/dist/store/import-remap.js +145 -0
  671. package/dist/store/import-remap.js.map +1 -0
  672. package/dist/store/import-sort.js +121 -0
  673. package/dist/store/import-sort.js.map +1 -0
  674. package/dist/store/index.d.ts +1 -0
  675. package/dist/store/index.d.ts.map +1 -1
  676. package/dist/store/index.js +29 -0
  677. package/dist/store/index.js.map +1 -0
  678. package/dist/store/json.js +208 -0
  679. package/dist/store/json.js.map +1 -0
  680. package/dist/store/lifecycle-store.js +249 -0
  681. package/dist/store/lifecycle-store.js.map +1 -0
  682. package/dist/store/lock.js +70 -0
  683. package/dist/store/lock.js.map +1 -0
  684. package/dist/store/migrate-signaldock-to-conduit.d.ts +81 -0
  685. package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -0
  686. package/dist/store/migrate-signaldock-to-conduit.js +555 -0
  687. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  688. package/dist/store/migration-manager.js +151 -0
  689. package/dist/store/migration-manager.js.map +1 -0
  690. package/dist/store/migration-sqlite.js +676 -0
  691. package/dist/store/migration-sqlite.js.map +1 -0
  692. package/dist/store/nexus-schema.js +62 -0
  693. package/dist/store/nexus-schema.js.map +1 -0
  694. package/dist/store/nexus-sqlite.d.ts +14 -2
  695. package/dist/store/nexus-sqlite.d.ts.map +1 -1
  696. package/dist/store/nexus-sqlite.js +242 -0
  697. package/dist/store/nexus-sqlite.js.map +1 -0
  698. package/dist/store/nexus-validation-schemas.js +40 -0
  699. package/dist/store/nexus-validation-schemas.js.map +1 -0
  700. package/dist/store/parsers.js +37 -0
  701. package/dist/store/parsers.js.map +1 -0
  702. package/dist/store/project-detect.js +457 -0
  703. package/dist/store/project-detect.js.map +1 -0
  704. package/dist/store/provider.js +101 -0
  705. package/dist/store/provider.js.map +1 -0
  706. package/dist/store/safety-data-accessor.js +257 -0
  707. package/dist/store/safety-data-accessor.js.map +1 -0
  708. package/dist/store/schema.js +7 -0
  709. package/dist/store/schema.js.map +1 -0
  710. package/dist/store/session-store.js +219 -0
  711. package/dist/store/session-store.js.map +1 -0
  712. package/dist/store/signaldock-sqlite.d.ts +122 -19
  713. package/dist/store/signaldock-sqlite.d.ts.map +1 -1
  714. package/dist/store/signaldock-sqlite.js +550 -0
  715. package/dist/store/signaldock-sqlite.js.map +1 -0
  716. package/dist/store/sqlite-backup.d.ts +121 -10
  717. package/dist/store/sqlite-backup.d.ts.map +1 -1
  718. package/dist/store/sqlite-backup.js +359 -0
  719. package/dist/store/sqlite-backup.js.map +1 -0
  720. package/dist/store/sqlite-data-accessor.js +787 -0
  721. package/dist/store/sqlite-data-accessor.js.map +1 -0
  722. package/dist/store/sqlite.d.ts.map +1 -1
  723. package/dist/store/sqlite.js +481 -0
  724. package/dist/store/sqlite.js.map +1 -0
  725. package/dist/store/status-registry.js +8 -0
  726. package/dist/store/status-registry.js.map +1 -0
  727. package/dist/store/task-store.js +358 -0
  728. package/dist/store/task-store.js.map +1 -0
  729. package/dist/store/tasks-schema.d.ts +8 -8
  730. package/dist/store/tasks-schema.js +610 -0
  731. package/dist/store/tasks-schema.js.map +1 -0
  732. package/dist/store/typed-query.js +15 -0
  733. package/dist/store/typed-query.js.map +1 -0
  734. package/dist/store/validation-schemas.d.ts +37 -37
  735. package/dist/store/validation-schemas.js +278 -0
  736. package/dist/store/validation-schemas.js.map +1 -0
  737. package/dist/system/archive-analytics.js +277 -0
  738. package/dist/system/archive-analytics.js.map +1 -0
  739. package/dist/system/archive-stats.js +64 -0
  740. package/dist/system/archive-stats.js.map +1 -0
  741. package/dist/system/audit.js +145 -0
  742. package/dist/system/audit.js.map +1 -0
  743. package/dist/system/backup.d.ts +65 -3
  744. package/dist/system/backup.d.ts.map +1 -1
  745. package/dist/system/backup.js +280 -0
  746. package/dist/system/backup.js.map +1 -0
  747. package/dist/system/cleanup.js +134 -0
  748. package/dist/system/cleanup.js.map +1 -0
  749. package/dist/system/health.js +1100 -0
  750. package/dist/system/health.js.map +1 -0
  751. package/dist/system/index.js +18 -0
  752. package/dist/system/index.js.map +1 -0
  753. package/dist/system/inject-generate.js +122 -0
  754. package/dist/system/inject-generate.js.map +1 -0
  755. package/dist/system/labels.js +38 -0
  756. package/dist/system/labels.js.map +1 -0
  757. package/dist/system/metrics.js +61 -0
  758. package/dist/system/metrics.js.map +1 -0
  759. package/dist/system/migrate.js +43 -0
  760. package/dist/system/migrate.js.map +1 -0
  761. package/dist/system/platform-paths.js +80 -0
  762. package/dist/system/platform-paths.js.map +1 -0
  763. package/dist/system/runtime.d.ts +0 -2
  764. package/dist/system/runtime.d.ts.map +1 -1
  765. package/dist/system/runtime.js +161 -0
  766. package/dist/system/runtime.js.map +1 -0
  767. package/dist/system/safestop.js +99 -0
  768. package/dist/system/safestop.js.map +1 -0
  769. package/dist/system/storage-preflight.js +123 -0
  770. package/dist/system/storage-preflight.js.map +1 -0
  771. package/dist/task-work/index.js +159 -0
  772. package/dist/task-work/index.js.map +1 -0
  773. package/dist/tasks/add.d.ts +1 -1
  774. package/dist/tasks/add.d.ts.map +1 -1
  775. package/dist/tasks/add.js +736 -0
  776. package/dist/tasks/add.js.map +1 -0
  777. package/dist/tasks/analyze.js +85 -0
  778. package/dist/tasks/analyze.js.map +1 -0
  779. package/dist/tasks/archive.js +90 -0
  780. package/dist/tasks/archive.js.map +1 -0
  781. package/dist/tasks/atomicity.js +83 -0
  782. package/dist/tasks/atomicity.js.map +1 -0
  783. package/dist/tasks/cancel-ops.js +83 -0
  784. package/dist/tasks/cancel-ops.js.map +1 -0
  785. package/dist/tasks/complete.d.ts.map +1 -1
  786. package/dist/tasks/complete.js +214 -0
  787. package/dist/tasks/complete.js.map +1 -0
  788. package/dist/tasks/crossref-extract.js +73 -0
  789. package/dist/tasks/crossref-extract.js.map +1 -0
  790. package/dist/tasks/delete-preview.js +192 -0
  791. package/dist/tasks/delete-preview.js.map +1 -0
  792. package/dist/tasks/delete.js +120 -0
  793. package/dist/tasks/delete.js.map +1 -0
  794. package/dist/tasks/deletion-strategy.js +200 -0
  795. package/dist/tasks/deletion-strategy.js.map +1 -0
  796. package/dist/tasks/dependency-check.js +278 -0
  797. package/dist/tasks/dependency-check.js.map +1 -0
  798. package/dist/tasks/deps-ready.js +32 -0
  799. package/dist/tasks/deps-ready.js.map +1 -0
  800. package/dist/tasks/enforcement.js +86 -0
  801. package/dist/tasks/enforcement.js.map +1 -0
  802. package/dist/tasks/epic-enforcement.js +294 -0
  803. package/dist/tasks/epic-enforcement.js.map +1 -0
  804. package/dist/tasks/find.d.ts.map +1 -1
  805. package/dist/tasks/find.js +157 -0
  806. package/dist/tasks/find.js.map +1 -0
  807. package/dist/tasks/graph-cache.js +127 -0
  808. package/dist/tasks/graph-cache.js.map +1 -0
  809. package/dist/tasks/graph-ops.js +171 -0
  810. package/dist/tasks/graph-ops.js.map +1 -0
  811. package/dist/tasks/graph-rag.js +328 -0
  812. package/dist/tasks/graph-rag.js.map +1 -0
  813. package/dist/tasks/hierarchy-policy.js +149 -0
  814. package/dist/tasks/hierarchy-policy.js.map +1 -0
  815. package/dist/tasks/hierarchy.js +185 -0
  816. package/dist/tasks/hierarchy.js.map +1 -0
  817. package/dist/tasks/id-generator.js +65 -0
  818. package/dist/tasks/id-generator.js.map +1 -0
  819. package/dist/tasks/index.js +14 -0
  820. package/dist/tasks/index.js.map +1 -0
  821. package/dist/tasks/labels.d.ts.map +1 -1
  822. package/dist/tasks/labels.js +55 -0
  823. package/dist/tasks/labels.js.map +1 -0
  824. package/dist/tasks/list.js +75 -0
  825. package/dist/tasks/list.js.map +1 -0
  826. package/dist/tasks/phase-tracking.js +133 -0
  827. package/dist/tasks/phase-tracking.js.map +1 -0
  828. package/dist/tasks/pipeline-stage.js +248 -0
  829. package/dist/tasks/pipeline-stage.js.map +1 -0
  830. package/dist/tasks/plan.js +268 -0
  831. package/dist/tasks/plan.js.map +1 -0
  832. package/dist/tasks/relates.d.ts.map +1 -1
  833. package/dist/tasks/relates.js +101 -0
  834. package/dist/tasks/relates.js.map +1 -0
  835. package/dist/tasks/show.d.ts.map +1 -1
  836. package/dist/tasks/show.js +83 -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 +1741 -0
  843. package/dist/tasks/task-ops.js.map +1 -0
  844. package/dist/tasks/update.d.ts.map +1 -1
  845. package/dist/tasks/update.js +303 -0
  846. package/dist/tasks/update.js.map +1 -0
  847. package/dist/templates/index.js +10 -0
  848. package/dist/templates/index.js.map +1 -0
  849. package/dist/templates/parser.js +254 -0
  850. package/dist/templates/parser.js.map +1 -0
  851. package/dist/ui/aliases.js +153 -0
  852. package/dist/ui/aliases.js.map +1 -0
  853. package/dist/ui/changelog.js +184 -0
  854. package/dist/ui/changelog.js.map +1 -0
  855. package/dist/ui/command-registry.js +168 -0
  856. package/dist/ui/command-registry.js.map +1 -0
  857. package/dist/ui/flags.js +94 -0
  858. package/dist/ui/flags.js.map +1 -0
  859. package/dist/ui/index.js +24 -0
  860. package/dist/ui/index.js.map +1 -0
  861. package/dist/upgrade.js +1148 -0
  862. package/dist/upgrade.js.map +1 -0
  863. package/dist/validation/chain-validation.js +146 -0
  864. package/dist/validation/chain-validation.js.map +1 -0
  865. package/dist/validation/compliance.js +155 -0
  866. package/dist/validation/compliance.js.map +1 -0
  867. package/dist/validation/docs-sync.js +212 -0
  868. package/dist/validation/docs-sync.js.map +1 -0
  869. package/dist/validation/doctor/checks.js +1069 -0
  870. package/dist/validation/doctor/checks.js.map +1 -0
  871. package/dist/validation/doctor/index.js +9 -0
  872. package/dist/validation/doctor/index.js.map +1 -0
  873. package/dist/validation/doctor/project-cache.js +160 -0
  874. package/dist/validation/doctor/project-cache.js.map +1 -0
  875. package/dist/validation/doctor/utils.js +155 -0
  876. package/dist/validation/doctor/utils.js.map +1 -0
  877. package/dist/validation/engine.d.ts.map +1 -1
  878. package/dist/validation/engine.js +914 -0
  879. package/dist/validation/engine.js.map +1 -0
  880. package/dist/validation/gap-check.js +175 -0
  881. package/dist/validation/gap-check.js.map +1 -0
  882. package/dist/validation/index.js +40 -0
  883. package/dist/validation/index.js.map +1 -0
  884. package/dist/validation/manifest.js +237 -0
  885. package/dist/validation/manifest.js.map +1 -0
  886. package/dist/validation/operation-gate-validators.js +724 -0
  887. package/dist/validation/operation-gate-validators.js.map +1 -0
  888. package/dist/validation/operation-verification-gates.js +532 -0
  889. package/dist/validation/operation-verification-gates.js.map +1 -0
  890. package/dist/validation/param-utils.d.ts +5 -3
  891. package/dist/validation/param-utils.d.ts.map +1 -1
  892. package/dist/validation/param-utils.js +141 -0
  893. package/dist/validation/param-utils.js.map +1 -0
  894. package/dist/validation/protocol-common.js +300 -0
  895. package/dist/validation/protocol-common.js.map +1 -0
  896. package/dist/validation/protocols/_shared.d.ts.map +1 -1
  897. package/dist/validation/protocols/_shared.js +82 -0
  898. package/dist/validation/protocols/_shared.js.map +1 -0
  899. package/dist/validation/protocols/architecture-decision.js +31 -0
  900. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  901. package/dist/validation/protocols/artifact-publish.js +28 -0
  902. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  903. package/dist/validation/protocols/consensus.js +41 -0
  904. package/dist/validation/protocols/consensus.js.map +1 -0
  905. package/dist/validation/protocols/contribution.js +27 -0
  906. package/dist/validation/protocols/contribution.js.map +1 -0
  907. package/dist/validation/protocols/decomposition.js +28 -0
  908. package/dist/validation/protocols/decomposition.js.map +1 -0
  909. package/dist/validation/protocols/implementation.js +24 -0
  910. package/dist/validation/protocols/implementation.js.map +1 -0
  911. package/dist/validation/protocols/provenance.js +29 -0
  912. package/dist/validation/protocols/provenance.js.map +1 -0
  913. package/dist/validation/protocols/release.js +29 -0
  914. package/dist/validation/protocols/release.js.map +1 -0
  915. package/dist/validation/protocols/research.js +24 -0
  916. package/dist/validation/protocols/research.js.map +1 -0
  917. package/dist/validation/protocols/specification.js +27 -0
  918. package/dist/validation/protocols/specification.js.map +1 -0
  919. package/dist/validation/protocols/testing.js +30 -0
  920. package/dist/validation/protocols/testing.js.map +1 -0
  921. package/dist/validation/protocols/validation.js +30 -0
  922. package/dist/validation/protocols/validation.js.map +1 -0
  923. package/dist/validation/schema-integrity.js +170 -0
  924. package/dist/validation/schema-integrity.js.map +1 -0
  925. package/dist/validation/schema-validator.js +176 -0
  926. package/dist/validation/schema-validator.js.map +1 -0
  927. package/dist/validation/validate-ops.js +937 -0
  928. package/dist/validation/validate-ops.js.map +1 -0
  929. package/dist/validation/validation-rules.js +226 -0
  930. package/dist/validation/validation-rules.js.map +1 -0
  931. package/dist/validation/verification.js +321 -0
  932. package/dist/validation/verification.js.map +1 -0
  933. package/package.json +10 -8
  934. package/src/__tests__/paths-walkup.test.ts +305 -0
  935. package/src/__tests__/paths.test.ts +61 -17
  936. package/src/adapters/__tests__/manager.test.ts +0 -1
  937. package/src/codebase-map/analyzers/architecture.ts +0 -1
  938. package/src/conduit/__tests__/local-credential-flow.test.ts +20 -18
  939. package/src/conduit/__tests__/local-transport.test.ts +14 -12
  940. package/src/conduit/local-transport.ts +23 -13
  941. package/src/config.ts +0 -1
  942. package/src/errors.ts +24 -0
  943. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +2 -5
  944. package/src/hooks/handlers/session-hooks.ts +42 -0
  945. package/src/init.ts +1 -2
  946. package/src/internal.ts +67 -3
  947. package/src/lifecycle/cant/lifecycle-rcasd.cant +133 -0
  948. package/src/memory/__tests__/engine-compat.test.ts +2 -2
  949. package/src/memory/__tests__/pipeline-manifest-sqlite.test.ts +4 -4
  950. package/src/observability/__tests__/index.test.ts +4 -4
  951. package/src/observability/__tests__/log-filter.test.ts +4 -4
  952. package/src/output.ts +73 -75
  953. package/src/paths.ts +91 -14
  954. package/src/scaffold.ts +22 -3
  955. package/src/sessions/__tests__/session-grade.integration.test.ts +1 -1
  956. package/src/sessions/__tests__/session-grade.test.ts +2 -2
  957. package/src/skills/__tests__/dynamic-skill-generator.test.ts +0 -2
  958. package/src/skills/dynamic-skill-generator.ts +0 -2
  959. package/src/store/__tests__/agent-registry-accessor.test.ts +807 -0
  960. package/src/store/__tests__/api-key-kdf.test.ts +113 -0
  961. package/src/store/__tests__/cleanup-legacy.test.ts +268 -0
  962. package/src/store/__tests__/conduit-sqlite.test.ts +413 -0
  963. package/src/store/__tests__/database-topology-integration.test.ts +504 -0
  964. package/src/store/__tests__/global-salt.test.ts +195 -0
  965. package/src/store/__tests__/migrate-signaldock-to-conduit.test.ts +715 -0
  966. package/src/store/__tests__/signaldock-sqlite.test.ts +652 -0
  967. package/src/store/__tests__/sqlite-backup-global.test.ts +585 -0
  968. package/src/store/__tests__/sqlite-backup.test.ts +122 -10
  969. package/src/store/__tests__/t310-integration.test.ts +1150 -0
  970. package/src/store/agent-registry-accessor.ts +847 -140
  971. package/src/store/api-key-kdf.ts +104 -0
  972. package/src/store/cleanup-legacy.ts +208 -0
  973. package/src/store/conduit-sqlite.ts +655 -0
  974. package/src/store/global-salt.ts +175 -0
  975. package/src/store/index.ts +7 -0
  976. package/src/store/migrate-signaldock-to-conduit.ts +669 -0
  977. package/src/store/nexus-sqlite.ts +32 -3
  978. package/src/store/signaldock-sqlite.ts +431 -254
  979. package/src/store/sqlite-backup.ts +544 -38
  980. package/src/store/sqlite.ts +19 -3
  981. package/src/system/__tests__/backup.test.ts +237 -0
  982. package/src/system/backup.ts +186 -26
  983. package/src/system/runtime.ts +4 -6
  984. package/src/tasks/__tests__/error-hints.test.ts +256 -0
  985. package/src/tasks/add.ts +99 -9
  986. package/src/tasks/complete.ts +4 -1
  987. package/src/tasks/find.ts +4 -1
  988. package/src/tasks/labels.ts +4 -1
  989. package/src/tasks/relates.ts +16 -4
  990. package/src/tasks/show.ts +4 -1
  991. package/src/tasks/update.ts +32 -3
  992. package/src/validation/__tests__/error-hints.test.ts +97 -0
  993. package/src/validation/engine.ts +16 -1
  994. package/src/validation/param-utils.ts +10 -7
  995. package/src/validation/protocols/_shared.ts +14 -6
  996. package/src/validation/protocols/cant/architecture-decision.cant +80 -0
  997. package/src/validation/protocols/cant/artifact-publish.cant +95 -0
  998. package/src/validation/protocols/cant/consensus.cant +74 -0
  999. package/src/validation/protocols/cant/contribution.cant +82 -0
  1000. package/src/validation/protocols/cant/decomposition.cant +92 -0
  1001. package/src/validation/protocols/cant/implementation.cant +67 -0
  1002. package/src/validation/protocols/cant/provenance.cant +88 -0
  1003. package/src/validation/protocols/cant/release.cant +96 -0
  1004. package/src/validation/protocols/cant/research.cant +66 -0
  1005. package/src/validation/protocols/cant/specification.cant +67 -0
  1006. package/src/validation/protocols/cant/testing.cant +88 -0
  1007. package/src/validation/protocols/cant/validation.cant +65 -0
  1008. package/src/validation/protocols/protocols-markdown/decomposition.md +0 -4
  1009. package/templates/cleo-gitignore +19 -3
  1010. package/templates/config.template.json +0 -1
  1011. package/templates/global-config.template.json +0 -1
@@ -0,0 +1,208 @@
1
+ /**
2
+ * JSON read/write with schema validation, locking, and backup.
3
+ * This is the primary data access layer for CLEO data files.
4
+ * @epic T4454
5
+ * @task T4457
6
+ */
7
+ import { createHash } from 'node:crypto';
8
+ import { ExitCode } from '@cleocode/contracts';
9
+ import { CleoError } from '../errors.js';
10
+ import { atomicWrite, atomicWriteJson, safeReadFile } from './atomic.js';
11
+ import { createBackup } from './backup.js';
12
+ import { withLock } from './lock.js';
13
+ /**
14
+ * Read and parse a JSON file.
15
+ * Returns null if the file does not exist.
16
+ */
17
+ export async function readJson(filePath) {
18
+ const content = await safeReadFile(filePath);
19
+ if (content === null)
20
+ return null;
21
+ try {
22
+ return JSON.parse(content);
23
+ }
24
+ catch (err) {
25
+ throw new CleoError(ExitCode.VALIDATION_ERROR, `Invalid JSON in: ${filePath}`, { cause: err });
26
+ }
27
+ }
28
+ /**
29
+ * Read a JSON file, throwing if it doesn't exist.
30
+ */
31
+ export async function readJsonRequired(filePath) {
32
+ const data = await readJson(filePath);
33
+ if (data === null) {
34
+ throw new CleoError(ExitCode.NOT_FOUND, `Required file not found: ${filePath}`);
35
+ }
36
+ return data;
37
+ }
38
+ /**
39
+ * Compute a truncated SHA-256 checksum of a value.
40
+ * Used for integrity verification (matches Bash CLI's 16-char hex format).
41
+ */
42
+ export function computeChecksum(data) {
43
+ const json = JSON.stringify(data);
44
+ const hash = createHash('sha256').update(json).digest('hex');
45
+ return hash.substring(0, 16);
46
+ }
47
+ /**
48
+ * Save JSON data with optional locking, backup, and validation.
49
+ * Follows the CLEO atomic write pattern:
50
+ * 1. Acquire lock
51
+ * 2. Validate data
52
+ * 3. Create backup of existing file
53
+ * 4. Atomic write (temp file -> rename)
54
+ * 5. Release lock
55
+ */
56
+ export async function saveJson(filePath, data, options) {
57
+ await withLock(filePath, async () => {
58
+ // Validate before write
59
+ if (options?.validate) {
60
+ try {
61
+ await options.validate(data);
62
+ }
63
+ catch (err) {
64
+ throw new CleoError(ExitCode.VALIDATION_ERROR, `Validation failed before write: ${filePath}`, { cause: err });
65
+ }
66
+ }
67
+ // Create backup if configured
68
+ if (options?.backupDir) {
69
+ try {
70
+ await createBackup(filePath, options.backupDir, options.maxBackups);
71
+ }
72
+ catch {
73
+ // Backup failure is non-fatal for first write (file may not exist yet)
74
+ }
75
+ }
76
+ // Atomic write
77
+ await atomicWriteJson(filePath, data, { indent: options?.indent });
78
+ // Dispatch Notification hook (best-effort, fire-and-forget)
79
+ import('../hooks/registry.js')
80
+ .then(({ hooks: h }) => h.dispatch('Notification', process.cwd(), {
81
+ timestamp: new Date().toISOString(),
82
+ filePath,
83
+ changeType: 'write',
84
+ }))
85
+ .catch(() => {
86
+ /* hook errors are non-fatal */
87
+ });
88
+ });
89
+ }
90
+ /**
91
+ * Append a line to a JSONL file atomically.
92
+ * Used for manifest entries and audit logs.
93
+ */
94
+ export async function appendJsonl(filePath, entry) {
95
+ const existing = await safeReadFile(filePath);
96
+ const line = JSON.stringify(entry);
97
+ const content = existing ? existing.trimEnd() + '\n' + line + '\n' : line + '\n';
98
+ await atomicWrite(filePath, content);
99
+ }
100
+ /**
101
+ * Read log entries from a hybrid JSON/JSONL file.
102
+ * Handles three formats:
103
+ * 1. Pure JSON: `{ "entries": [...] }` (legacy bash format)
104
+ * 2. Pure JSONL: one JSON object per line (new TS format)
105
+ * 3. Hybrid: JSON object followed by JSONL lines (migration state)
106
+ * Returns a flat array of all entries found.
107
+ * @task T4622
108
+ */
109
+ export async function readLogEntries(filePath) {
110
+ const content = await safeReadFile(filePath);
111
+ if (content === null)
112
+ return [];
113
+ const trimmed = content.trim();
114
+ if (!trimmed)
115
+ return [];
116
+ // Fast path: try parsing as a single JSON object
117
+ try {
118
+ const parsed = JSON.parse(trimmed);
119
+ if (Array.isArray(parsed))
120
+ return parsed;
121
+ if (parsed && typeof parsed === 'object' && Array.isArray(parsed.entries)) {
122
+ return parsed.entries;
123
+ }
124
+ // Single object, wrap in array
125
+ return [parsed];
126
+ }
127
+ catch {
128
+ // Not valid JSON - handle hybrid format
129
+ }
130
+ // Hybrid format: find where the initial JSON object ends, then parse JSONL after it
131
+ const entries = [];
132
+ if (trimmed.startsWith('{')) {
133
+ // Find the matching closing brace for the initial JSON object
134
+ let depth = 0;
135
+ let inString = false;
136
+ let escaped = false;
137
+ let jsonEnd = -1;
138
+ for (let i = 0; i < trimmed.length; i++) {
139
+ const ch = trimmed[i];
140
+ if (escaped) {
141
+ escaped = false;
142
+ continue;
143
+ }
144
+ if (ch === '\\' && inString) {
145
+ escaped = true;
146
+ continue;
147
+ }
148
+ if (ch === '"') {
149
+ inString = !inString;
150
+ continue;
151
+ }
152
+ if (inString)
153
+ continue;
154
+ if (ch === '{')
155
+ depth++;
156
+ else if (ch === '}') {
157
+ depth--;
158
+ if (depth === 0) {
159
+ jsonEnd = i + 1;
160
+ break;
161
+ }
162
+ }
163
+ }
164
+ if (jsonEnd > 0) {
165
+ // Parse the initial JSON object
166
+ try {
167
+ const initialJson = JSON.parse(trimmed.substring(0, jsonEnd));
168
+ if (initialJson && Array.isArray(initialJson.entries)) {
169
+ entries.push(...initialJson.entries);
170
+ }
171
+ }
172
+ catch {
173
+ // Corrupted initial JSON - skip it
174
+ }
175
+ // Parse remaining lines as JSONL
176
+ const remainder = trimmed.substring(jsonEnd).trim();
177
+ if (remainder) {
178
+ for (const line of remainder.split('\n')) {
179
+ const l = line.trim();
180
+ if (!l || !l.startsWith('{'))
181
+ continue;
182
+ try {
183
+ entries.push(JSON.parse(l));
184
+ }
185
+ catch {
186
+ // Skip unparseable lines
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ else {
193
+ // Pure JSONL (no initial JSON object)
194
+ for (const line of trimmed.split('\n')) {
195
+ const l = line.trim();
196
+ if (!l || !l.startsWith('{'))
197
+ continue;
198
+ try {
199
+ entries.push(JSON.parse(l));
200
+ }
201
+ catch {
202
+ // Skip unparseable lines
203
+ }
204
+ }
205
+ }
206
+ return entries;
207
+ }
208
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/store/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * SQLite-backed lifecycle store operations.
3
+ *
4
+ * Query and mutation functions for lifecycle pipeline tables:
5
+ * lifecycle_pipelines, lifecycle_stages, lifecycle_gate_results,
6
+ * lifecycle_evidence, lifecycle_transitions.
7
+ *
8
+ * Used by src/core/lifecycle/resume.ts to avoid direct store-layer imports.
9
+ *
10
+ * @task T4832
11
+ * @epic T4454
12
+ */
13
+ import { and, asc, desc, eq, inArray, sql } from 'drizzle-orm';
14
+ import { getDb } from './sqlite.js';
15
+ import * as schema from './tasks-schema.js';
16
+ // =============================================================================
17
+ // PIPELINE QUERIES
18
+ // =============================================================================
19
+ /**
20
+ * Find active pipelines joined with their stages and tasks.
21
+ * Optionally filters by specific task IDs.
22
+ *
23
+ * @param taskIds - Optional list of task IDs to filter by
24
+ * @param cwd - Working directory for database
25
+ * @returns Rows with pipeline, stage, and task data
26
+ */
27
+ export async function findActivePipelinesWithStagesAndTasks(taskIds, cwd) {
28
+ const db = await getDb(cwd);
29
+ const conditions = [eq(schema.lifecyclePipelines.status, 'active')];
30
+ if (taskIds && taskIds.length > 0) {
31
+ conditions.push(inArray(schema.lifecyclePipelines.taskId, taskIds));
32
+ }
33
+ return db
34
+ .select({
35
+ pipeline: schema.lifecyclePipelines,
36
+ stage: schema.lifecycleStages,
37
+ task: schema.tasks,
38
+ })
39
+ .from(schema.lifecyclePipelines)
40
+ .innerJoin(schema.lifecycleStages, eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id))
41
+ .innerJoin(schema.tasks, eq(schema.tasks.id, schema.lifecyclePipelines.taskId))
42
+ .where(and(...conditions))
43
+ .orderBy(asc(schema.tasks.priority), desc(schema.lifecyclePipelines.startedAt))
44
+ .all();
45
+ }
46
+ /**
47
+ * Find a pipeline with its current stage and task by taskId.
48
+ * Matches stages where stageName equals the pipeline's currentStageId.
49
+ *
50
+ * @param taskId - Task ID to look up
51
+ * @param cwd - Working directory for database
52
+ * @returns Matching rows (typically 0 or 1)
53
+ */
54
+ export async function findPipelineWithCurrentStageAndTask(taskId, cwd) {
55
+ const db = await getDb(cwd);
56
+ return db
57
+ .select({
58
+ pipeline: schema.lifecyclePipelines,
59
+ stage: schema.lifecycleStages,
60
+ task: schema.tasks,
61
+ })
62
+ .from(schema.lifecyclePipelines)
63
+ .innerJoin(schema.lifecycleStages, eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id))
64
+ .innerJoin(schema.tasks, eq(schema.tasks.id, schema.lifecyclePipelines.taskId))
65
+ .where(and(eq(schema.lifecyclePipelines.taskId, taskId), eq(schema.lifecycleStages.stageName, sql `${schema.lifecyclePipelines.currentStageId}`)))
66
+ .limit(1)
67
+ .all();
68
+ }
69
+ /**
70
+ * Find a pipeline and a specific stage by taskId and stageName.
71
+ *
72
+ * @param taskId - Task ID
73
+ * @param stageName - Stage name to match
74
+ * @param cwd - Working directory for database
75
+ * @returns Matching rows (typically 0 or 1)
76
+ */
77
+ export async function findPipelineWithStage(taskId, stageName, cwd) {
78
+ const db = await getDb(cwd);
79
+ return db
80
+ .select({
81
+ pipeline: schema.lifecyclePipelines,
82
+ stageRecord: schema.lifecycleStages,
83
+ })
84
+ .from(schema.lifecyclePipelines)
85
+ .innerJoin(schema.lifecycleStages, and(eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id), eq(schema.lifecycleStages.stageName, stageName)))
86
+ .where(eq(schema.lifecyclePipelines.taskId, taskId))
87
+ .limit(1)
88
+ .all();
89
+ }
90
+ /**
91
+ * Update pipeline's currentStageId.
92
+ *
93
+ * @param pipelineId - Pipeline ID to update
94
+ * @param currentStageId - New current stage identifier
95
+ * @param cwd - Working directory for database
96
+ */
97
+ export async function updatePipelineCurrentStage(pipelineId, currentStageId, cwd) {
98
+ const db = await getDb(cwd);
99
+ await db
100
+ .update(schema.lifecyclePipelines)
101
+ .set({ currentStageId })
102
+ .where(eq(schema.lifecyclePipelines.id, pipelineId))
103
+ .run();
104
+ }
105
+ // =============================================================================
106
+ // STAGE QUERIES
107
+ // =============================================================================
108
+ /**
109
+ * Get all stages for a pipeline, ordered by sequence.
110
+ *
111
+ * @param pipelineId - Pipeline ID
112
+ * @param cwd - Working directory for database
113
+ * @returns All stage rows for the pipeline
114
+ */
115
+ export async function getStagesByPipelineId(pipelineId, cwd) {
116
+ const db = await getDb(cwd);
117
+ return db
118
+ .select()
119
+ .from(schema.lifecycleStages)
120
+ .where(eq(schema.lifecycleStages.pipelineId, pipelineId))
121
+ .orderBy(asc(schema.lifecycleStages.sequence))
122
+ .all();
123
+ }
124
+ /**
125
+ * Update a stage's status to 'in_progress' and clear block fields.
126
+ *
127
+ * @param stageId - Stage ID to update
128
+ * @param startedAt - ISO timestamp for when the stage started
129
+ * @param cwd - Working directory for database
130
+ */
131
+ export async function activateStage(stageId, startedAt, cwd) {
132
+ const db = await getDb(cwd);
133
+ await db
134
+ .update(schema.lifecycleStages)
135
+ .set({
136
+ status: 'in_progress',
137
+ startedAt,
138
+ blockedAt: null,
139
+ blockReason: null,
140
+ })
141
+ .where(eq(schema.lifecycleStages.id, stageId))
142
+ .run();
143
+ }
144
+ /**
145
+ * Find pipeline with current stage (no task join) by taskId.
146
+ * Used by checkBlockedStageDetails.
147
+ *
148
+ * @param taskId - Task ID
149
+ * @param cwd - Working directory for database
150
+ * @returns Matching rows
151
+ */
152
+ export async function findPipelineWithCurrentStage(taskId, cwd) {
153
+ const db = await getDb(cwd);
154
+ return db
155
+ .select({
156
+ pipeline: schema.lifecyclePipelines,
157
+ stageRecord: schema.lifecycleStages,
158
+ })
159
+ .from(schema.lifecyclePipelines)
160
+ .innerJoin(schema.lifecycleStages, eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id))
161
+ .where(and(eq(schema.lifecyclePipelines.taskId, taskId), eq(schema.lifecycleStages.stageName, sql `${schema.lifecyclePipelines.currentStageId}`)))
162
+ .limit(1)
163
+ .all();
164
+ }
165
+ // =============================================================================
166
+ // GATE RESULT QUERIES
167
+ // =============================================================================
168
+ /**
169
+ * Get gate results for a stage, ordered by checkedAt descending.
170
+ *
171
+ * @param stageId - Stage ID
172
+ * @param cwd - Working directory for database
173
+ * @returns Gate result rows
174
+ */
175
+ export async function getGateResultsByStageId(stageId, cwd) {
176
+ const db = await getDb(cwd);
177
+ return db
178
+ .select()
179
+ .from(schema.lifecycleGateResults)
180
+ .where(eq(schema.lifecycleGateResults.stageId, stageId))
181
+ .orderBy(desc(schema.lifecycleGateResults.checkedAt))
182
+ .all();
183
+ }
184
+ /**
185
+ * Get gate results for a stage without ordering (for simple checks).
186
+ *
187
+ * @param stageId - Stage ID
188
+ * @param cwd - Working directory for database
189
+ * @returns Gate result rows
190
+ */
191
+ export async function getGateResultsByStageIdUnordered(stageId, cwd) {
192
+ const db = await getDb(cwd);
193
+ return db
194
+ .select()
195
+ .from(schema.lifecycleGateResults)
196
+ .where(eq(schema.lifecycleGateResults.stageId, stageId))
197
+ .all();
198
+ }
199
+ // =============================================================================
200
+ // EVIDENCE QUERIES
201
+ // =============================================================================
202
+ /**
203
+ * Get evidence for a stage, ordered by recordedAt descending.
204
+ *
205
+ * @param stageId - Stage ID
206
+ * @param cwd - Working directory for database
207
+ * @returns Evidence rows
208
+ */
209
+ export async function getEvidenceByStageId(stageId, cwd) {
210
+ const db = await getDb(cwd);
211
+ return db
212
+ .select()
213
+ .from(schema.lifecycleEvidence)
214
+ .where(eq(schema.lifecycleEvidence.stageId, stageId))
215
+ .orderBy(desc(schema.lifecycleEvidence.recordedAt))
216
+ .all();
217
+ }
218
+ // =============================================================================
219
+ // TRANSITION QUERIES & MUTATIONS
220
+ // =============================================================================
221
+ /**
222
+ * Get recent transitions for a pipeline, ordered by createdAt descending.
223
+ *
224
+ * @param pipelineId - Pipeline ID
225
+ * @param limit - Max rows to return (default: 10)
226
+ * @param cwd - Working directory for database
227
+ * @returns Transition rows
228
+ */
229
+ export async function getRecentTransitions(pipelineId, limit = 10, cwd) {
230
+ const db = await getDb(cwd);
231
+ return db
232
+ .select()
233
+ .from(schema.lifecycleTransitions)
234
+ .where(eq(schema.lifecycleTransitions.pipelineId, pipelineId))
235
+ .orderBy(desc(schema.lifecycleTransitions.createdAt))
236
+ .limit(limit)
237
+ .all();
238
+ }
239
+ /**
240
+ * Insert a new transition record.
241
+ *
242
+ * @param transition - Transition data to insert
243
+ * @param cwd - Working directory for database
244
+ */
245
+ export async function insertTransition(transition, cwd) {
246
+ const db = await getDb(cwd);
247
+ await db.insert(schema.lifecycleTransitions).values(transition).run();
248
+ }
249
+ //# sourceMappingURL=lifecycle-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-store.js","sourceRoot":"","sources":["../../src/store/lifecycle-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * File locking using proper-lockfile.
3
+ * Prevents concurrent modifications to CLEO data files.
4
+ * @epic T4454
5
+ * @task T4457
6
+ */
7
+ import { ExitCode } from '@cleocode/contracts';
8
+ import lockfile from 'proper-lockfile';
9
+ import { CleoError } from '../errors.js';
10
+ /** Default lock options. */
11
+ const DEFAULT_LOCK_OPTIONS = {
12
+ retries: {
13
+ retries: 3,
14
+ minTimeout: 100,
15
+ maxTimeout: 1000,
16
+ factor: 2,
17
+ },
18
+ stale: 10_000,
19
+ realpath: false,
20
+ };
21
+ /**
22
+ * Acquire an exclusive lock on a file.
23
+ * Returns a release function that must be called when done.
24
+ */
25
+ export async function acquireLock(filePath, options) {
26
+ try {
27
+ const release = await lockfile.lock(filePath, {
28
+ ...DEFAULT_LOCK_OPTIONS,
29
+ ...(options?.stale !== undefined && { stale: options.stale }),
30
+ ...(options?.retries !== undefined && {
31
+ retries: {
32
+ ...DEFAULT_LOCK_OPTIONS.retries,
33
+ retries: options.retries,
34
+ },
35
+ }),
36
+ });
37
+ return release;
38
+ }
39
+ catch (err) {
40
+ throw new CleoError(ExitCode.LOCK_TIMEOUT, `Failed to acquire lock: ${filePath}`, {
41
+ fix: `Another process may be writing to this file. Wait and retry.`,
42
+ cause: err,
43
+ });
44
+ }
45
+ }
46
+ /**
47
+ * Check if a file is currently locked.
48
+ */
49
+ export async function isLocked(filePath) {
50
+ try {
51
+ return await lockfile.check(filePath, { realpath: false });
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ /**
58
+ * Execute a function while holding an exclusive lock on a file.
59
+ * The lock is automatically released when the function completes (or throws).
60
+ */
61
+ export async function withLock(filePath, fn, options) {
62
+ const release = await acquireLock(filePath, options);
63
+ try {
64
+ return await fn();
65
+ }
66
+ finally {
67
+ await release();
68
+ }
69
+ }
70
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/store/lock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,4BAA4B;AAC5B,MAAM,oBAAoB,GAAG;IAC3B,OAAO,EAAE;QACP,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,CAAC;KACV;IACD,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,KAAK;CAChB,CAAC;AAKF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,OAA8C;IAE9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5C,GAAG,oBAAoB;YACvB,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,IAAI;gBACpC,OAAO,EAAE;oBACP,GAAG,oBAAoB,CAAC,OAAO;oBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB;aACF,CAAC;SACH,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,2BAA2B,QAAQ,EAAE,EAAE;YAChF,GAAG,EAAE,8DAA8D;YACnE,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,EAAoB,EACpB,OAA8C;IAE9C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Automatic first-run migration executor: project-tier signaldock.db → conduit.db.
3
+ *
4
+ * Implements ADR-037 §8 — on the first cleo invocation after upgrading to
5
+ * v2026.4.12, if a project-tier `.cleo/signaldock.db` exists and
6
+ * `.cleo/conduit.db` does not, this module migrates all project-local data to
7
+ * conduit.db and copies global-identity rows to the global-tier signaldock.db.
8
+ *
9
+ * Key properties:
10
+ * - Idempotent: `needsSignaldockToConduitMigration` returns false once conduit.db exists.
11
+ * - Atomic per file: transactions are used for conduit.db and global signaldock.db writes.
12
+ * - Non-destructive: legacy signaldock.db is renamed to `.pre-t310.bak`, not deleted.
13
+ * - Multi-project safe: `INSERT OR IGNORE` prevents duplicate global rows when multiple
14
+ * projects migrate the same agent.
15
+ * - Migrated agents flagged `requires_reauth=1` (new KDF scheme, ADR-037 §5).
16
+ *
17
+ * @task T358
18
+ * @epic T310
19
+ * @why ADR-037 §8 — automatic first-run migration from the pre-T310 project-tier
20
+ * signaldock.db to the new T310 topology (conduit.db + global signaldock.db
21
+ * + global-salt). Runs once per project on first cleo invocation after upgrade.
22
+ */
23
+ /**
24
+ * Result returned by `migrateSignaldockToConduit`.
25
+ *
26
+ * @task T358
27
+ * @epic T310
28
+ */
29
+ export interface MigrationResult {
30
+ /** `migrated` = migration ran and succeeded; `no-op` = not needed; `failed` = error occurred. */
31
+ status: 'migrated' | 'no-op' | 'failed';
32
+ /** Absolute path to the project root that was migrated. */
33
+ projectRoot: string;
34
+ /** Number of agents copied to global signaldock.db. */
35
+ agentsCopied: number;
36
+ /** Absolute path to the conduit.db that was created. */
37
+ conduitPath: string;
38
+ /** Absolute path to the global signaldock.db. */
39
+ globalSignaldockPath: string;
40
+ /** Absolute path to the legacy `.pre-t310.bak` file, or null if rename did not complete. */
41
+ bakPath: string | null;
42
+ /** Errors encountered during migration steps. Never thrown — always captured here. */
43
+ errors: Array<{
44
+ step: string;
45
+ error: string;
46
+ }>;
47
+ }
48
+ /**
49
+ * Returns true when the legacy migration is needed for the given project.
50
+ *
51
+ * Detection heuristic (ADR-037 §8):
52
+ * - `.cleo/signaldock.db` EXISTS AND `.cleo/conduit.db` DOES NOT EXIST
53
+ *
54
+ * Idempotent: returns false once conduit.db is present, regardless of .bak state.
55
+ *
56
+ * @param projectRoot - Absolute path to the project root directory.
57
+ * @returns True if migration is needed; false otherwise.
58
+ *
59
+ * @task T358
60
+ * @epic T310
61
+ */
62
+ export declare function needsSignaldockToConduitMigration(projectRoot: string): boolean;
63
+ /**
64
+ * Runs the signaldock.db → conduit.db migration for the given project.
65
+ *
66
+ * The migration is atomic per file (SQLite transactions for DB writes, atomic
67
+ * rename for the backup step). Failures are captured in `result.errors` and
68
+ * the function never throws — callers receive a `MigrationResult` with
69
+ * `status: 'failed'` on error.
70
+ *
71
+ * Safe to call when no migration is needed (returns `{status: 'no-op', ...}`).
72
+ * Safe to call on a partially-migrated install (idempotent via needsMigration check).
73
+ *
74
+ * @param projectRoot - Absolute path to the project root directory.
75
+ * @returns A `MigrationResult` describing what was done and any errors encountered.
76
+ *
77
+ * @task T358
78
+ * @epic T310
79
+ */
80
+ export declare function migrateSignaldockToConduit(projectRoot: string): MigrationResult;
81
+ //# sourceMappingURL=migrate-signaldock-to-conduit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-signaldock-to-conduit.d.ts","sourceRoot":"","sources":["../../src/store/migrate-signaldock-to-conduit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAsBH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,iGAAiG;IACjG,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sFAAsF;IACtF,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAwCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAI9E;AA8GD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAma/E"}