@cleocode/core 2026.4.41 → 2026.4.43

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 (934) hide show
  1. package/dist/conduit/factory.d.ts +10 -5
  2. package/dist/conduit/factory.d.ts.map +1 -1
  3. package/dist/index.js +77 -8
  4. package/dist/index.js.map +3 -3
  5. package/dist/init.d.ts.map +1 -1
  6. package/dist/store/brain-sqlite.d.ts.map +1 -1
  7. package/package.json +13 -8
  8. package/src/conduit/factory.ts +20 -17
  9. package/src/init.ts +22 -1
  10. package/src/store/__tests__/git-checkpoint.test.ts +12 -15
  11. package/src/store/brain-sqlite.ts +12 -0
  12. package/dist/adapters/adapter-registry.js +0 -64
  13. package/dist/adapters/adapter-registry.js.map +0 -1
  14. package/dist/adapters/discovery.js +0 -83
  15. package/dist/adapters/discovery.js.map +0 -1
  16. package/dist/adapters/index.js +0 -9
  17. package/dist/adapters/index.js.map +0 -1
  18. package/dist/adapters/manager.js +0 -260
  19. package/dist/adapters/manager.js.map +0 -1
  20. package/dist/admin/export-tasks.js +0 -171
  21. package/dist/admin/export-tasks.js.map +0 -1
  22. package/dist/admin/export.js +0 -103
  23. package/dist/admin/export.js.map +0 -1
  24. package/dist/admin/help.js +0 -106
  25. package/dist/admin/help.js.map +0 -1
  26. package/dist/admin/import-tasks.js +0 -182
  27. package/dist/admin/import-tasks.js.map +0 -1
  28. package/dist/admin/import.js +0 -129
  29. package/dist/admin/import.js.map +0 -1
  30. package/dist/admin/index.js +0 -13
  31. package/dist/admin/index.js.map +0 -1
  32. package/dist/adrs/find.js +0 -134
  33. package/dist/adrs/find.js.map +0 -1
  34. package/dist/adrs/index.js +0 -15
  35. package/dist/adrs/index.js.map +0 -1
  36. package/dist/adrs/link-pipeline.js +0 -160
  37. package/dist/adrs/link-pipeline.js.map +0 -1
  38. package/dist/adrs/list.js +0 -43
  39. package/dist/adrs/list.js.map +0 -1
  40. package/dist/adrs/parse.js +0 -51
  41. package/dist/adrs/parse.js.map +0 -1
  42. package/dist/adrs/show.js +0 -22
  43. package/dist/adrs/show.js.map +0 -1
  44. package/dist/adrs/sync.js +0 -232
  45. package/dist/adrs/sync.js.map +0 -1
  46. package/dist/adrs/types.js +0 -9
  47. package/dist/adrs/types.js.map +0 -1
  48. package/dist/adrs/validate.js +0 -57
  49. package/dist/adrs/validate.js.map +0 -1
  50. package/dist/agents/agent-registry.js +0 -288
  51. package/dist/agents/agent-registry.js.map +0 -1
  52. package/dist/agents/agent-schema.js +0 -82
  53. package/dist/agents/agent-schema.js.map +0 -1
  54. package/dist/agents/capacity.js +0 -116
  55. package/dist/agents/capacity.js.map +0 -1
  56. package/dist/agents/execution-learning.js +0 -474
  57. package/dist/agents/execution-learning.js.map +0 -1
  58. package/dist/agents/health-monitor.js +0 -217
  59. package/dist/agents/health-monitor.js.map +0 -1
  60. package/dist/agents/index.js +0 -29
  61. package/dist/agents/index.js.map +0 -1
  62. package/dist/agents/registry.js +0 -314
  63. package/dist/agents/registry.js.map +0 -1
  64. package/dist/agents/retry.js +0 -215
  65. package/dist/agents/retry.js.map +0 -1
  66. package/dist/audit-prune.js +0 -94
  67. package/dist/audit-prune.js.map +0 -1
  68. package/dist/audit.js +0 -68
  69. package/dist/audit.js.map +0 -1
  70. package/dist/backfill/index.js +0 -229
  71. package/dist/backfill/index.js.map +0 -1
  72. package/dist/bootstrap.js +0 -435
  73. package/dist/bootstrap.js.map +0 -1
  74. package/dist/caamp/adapter.js +0 -259
  75. package/dist/caamp/adapter.js.map +0 -1
  76. package/dist/caamp/capability-check.js +0 -38
  77. package/dist/caamp/capability-check.js.map +0 -1
  78. package/dist/caamp/index.js +0 -21
  79. package/dist/caamp/index.js.map +0 -1
  80. package/dist/caamp-init.js +0 -16
  81. package/dist/caamp-init.js.map +0 -1
  82. package/dist/cleo.js +0 -322
  83. package/dist/cleo.js.map +0 -1
  84. package/dist/code/index.js +0 -14
  85. package/dist/code/index.js.map +0 -1
  86. package/dist/code/outline.js +0 -165
  87. package/dist/code/outline.js.map +0 -1
  88. package/dist/code/parser.js +0 -420
  89. package/dist/code/parser.js.map +0 -1
  90. package/dist/code/search.js +0 -135
  91. package/dist/code/search.js.map +0 -1
  92. package/dist/code/unfold.js +0 -155
  93. package/dist/code/unfold.js.map +0 -1
  94. package/dist/codebase-map/analyzers/architecture.js +0 -129
  95. package/dist/codebase-map/analyzers/architecture.js.map +0 -1
  96. package/dist/codebase-map/analyzers/concerns.js +0 -122
  97. package/dist/codebase-map/analyzers/concerns.js.map +0 -1
  98. package/dist/codebase-map/analyzers/conventions.js +0 -149
  99. package/dist/codebase-map/analyzers/conventions.js.map +0 -1
  100. package/dist/codebase-map/analyzers/integrations.js +0 -108
  101. package/dist/codebase-map/analyzers/integrations.js.map +0 -1
  102. package/dist/codebase-map/analyzers/stack.js +0 -117
  103. package/dist/codebase-map/analyzers/stack.js.map +0 -1
  104. package/dist/codebase-map/analyzers/structure.js +0 -137
  105. package/dist/codebase-map/analyzers/structure.js.map +0 -1
  106. package/dist/codebase-map/analyzers/testing.js +0 -118
  107. package/dist/codebase-map/analyzers/testing.js.map +0 -1
  108. package/dist/codebase-map/index.js +0 -57
  109. package/dist/codebase-map/index.js.map +0 -1
  110. package/dist/codebase-map/store.js +0 -122
  111. package/dist/codebase-map/store.js.map +0 -1
  112. package/dist/codebase-map/summary.js +0 -152
  113. package/dist/codebase-map/summary.js.map +0 -1
  114. package/dist/compliance/index.js +0 -288
  115. package/dist/compliance/index.js.map +0 -1
  116. package/dist/compliance/protocol-enforcement.js +0 -332
  117. package/dist/compliance/protocol-enforcement.js.map +0 -1
  118. package/dist/compliance/protocol-rules.js +0 -786
  119. package/dist/compliance/protocol-rules.js.map +0 -1
  120. package/dist/compliance/protocol-types.js +0 -79
  121. package/dist/compliance/protocol-types.js.map +0 -1
  122. package/dist/compliance/store.js +0 -53
  123. package/dist/compliance/store.js.map +0 -1
  124. package/dist/conduit/conduit-client.js +0 -107
  125. package/dist/conduit/conduit-client.js.map +0 -1
  126. package/dist/conduit/factory.js +0 -52
  127. package/dist/conduit/factory.js.map +0 -1
  128. package/dist/conduit/http-transport.js +0 -155
  129. package/dist/conduit/http-transport.js.map +0 -1
  130. package/dist/conduit/index.js +0 -15
  131. package/dist/conduit/index.js.map +0 -1
  132. package/dist/conduit/local-transport.js +0 -255
  133. package/dist/conduit/local-transport.js.map +0 -1
  134. package/dist/conduit/sse-transport.js +0 -299
  135. package/dist/conduit/sse-transport.js.map +0 -1
  136. package/dist/config/build-config.js +0 -29
  137. package/dist/config/build-config.js.map +0 -1
  138. package/dist/config.js +0 -407
  139. package/dist/config.js.map +0 -1
  140. package/dist/constants.js +0 -18
  141. package/dist/constants.js.map +0 -1
  142. package/dist/context/index.js +0 -137
  143. package/dist/context/index.js.map +0 -1
  144. package/dist/crypto/credentials.js +0 -219
  145. package/dist/crypto/credentials.js.map +0 -1
  146. package/dist/discovery.js +0 -182
  147. package/dist/discovery.js.map +0 -1
  148. package/dist/engine-result.js +0 -12
  149. package/dist/engine-result.js.map +0 -1
  150. package/dist/error-catalog.js +0 -404
  151. package/dist/error-catalog.js.map +0 -1
  152. package/dist/error-registry.js +0 -393
  153. package/dist/error-registry.js.map +0 -1
  154. package/dist/errors.js +0 -173
  155. package/dist/errors.js.map +0 -1
  156. package/dist/hooks/handlers/agent-hooks.js +0 -106
  157. package/dist/hooks/handlers/agent-hooks.js.map +0 -1
  158. package/dist/hooks/handlers/conduit-hooks.js +0 -229
  159. package/dist/hooks/handlers/conduit-hooks.js.map +0 -1
  160. package/dist/hooks/handlers/context-hooks.js +0 -111
  161. package/dist/hooks/handlers/context-hooks.js.map +0 -1
  162. package/dist/hooks/handlers/error-hooks.js +0 -52
  163. package/dist/hooks/handlers/error-hooks.js.map +0 -1
  164. package/dist/hooks/handlers/file-hooks.js +0 -104
  165. package/dist/hooks/handlers/file-hooks.js.map +0 -1
  166. package/dist/hooks/handlers/handler-helpers.js +0 -61
  167. package/dist/hooks/handlers/handler-helpers.js.map +0 -1
  168. package/dist/hooks/handlers/index.js +0 -37
  169. package/dist/hooks/handlers/index.js.map +0 -1
  170. package/dist/hooks/handlers/intelligence-hooks.js +0 -69
  171. package/dist/hooks/handlers/intelligence-hooks.js.map +0 -1
  172. package/dist/hooks/handlers/memory-bridge-refresh.js +0 -42
  173. package/dist/hooks/handlers/memory-bridge-refresh.js.map +0 -1
  174. package/dist/hooks/handlers/notification-hooks.js +0 -62
  175. package/dist/hooks/handlers/notification-hooks.js.map +0 -1
  176. package/dist/hooks/handlers/session-hooks.js +0 -190
  177. package/dist/hooks/handlers/session-hooks.js.map +0 -1
  178. package/dist/hooks/handlers/task-hooks.js +0 -90
  179. package/dist/hooks/handlers/task-hooks.js.map +0 -1
  180. package/dist/hooks/handlers/watchdog-hooks.js +0 -162
  181. package/dist/hooks/handlers/watchdog-hooks.js.map +0 -1
  182. package/dist/hooks/handlers/work-capture-hooks.js +0 -165
  183. package/dist/hooks/handlers/work-capture-hooks.js.map +0 -1
  184. package/dist/hooks/index.js +0 -13
  185. package/dist/hooks/index.js.map +0 -1
  186. package/dist/hooks/payload-schemas.js +0 -220
  187. package/dist/hooks/payload-schemas.js.map +0 -1
  188. package/dist/hooks/provider-hooks.js +0 -66
  189. package/dist/hooks/provider-hooks.js.map +0 -1
  190. package/dist/hooks/registry.js +0 -229
  191. package/dist/hooks/registry.js.map +0 -1
  192. package/dist/hooks/types.js +0 -66
  193. package/dist/hooks/types.js.map +0 -1
  194. package/dist/hooks.js +0 -136
  195. package/dist/hooks.js.map +0 -1
  196. package/dist/init.js +0 -942
  197. package/dist/init.js.map +0 -1
  198. package/dist/inject/index.js +0 -82
  199. package/dist/inject/index.js.map +0 -1
  200. package/dist/injection.js +0 -377
  201. package/dist/injection.js.map +0 -1
  202. package/dist/intelligence/adaptive-validation.js +0 -497
  203. package/dist/intelligence/adaptive-validation.js.map +0 -1
  204. package/dist/intelligence/impact.js +0 -675
  205. package/dist/intelligence/impact.js.map +0 -1
  206. package/dist/intelligence/index.js +0 -22
  207. package/dist/intelligence/index.js.map +0 -1
  208. package/dist/intelligence/patterns.js +0 -492
  209. package/dist/intelligence/patterns.js.map +0 -1
  210. package/dist/intelligence/prediction.js +0 -499
  211. package/dist/intelligence/prediction.js.map +0 -1
  212. package/dist/intelligence/types.js +0 -13
  213. package/dist/intelligence/types.js.map +0 -1
  214. package/dist/internal.js +0 -324
  215. package/dist/internal.js.map +0 -1
  216. package/dist/issue/create.js +0 -121
  217. package/dist/issue/create.js.map +0 -1
  218. package/dist/issue/diagnostics.js +0 -59
  219. package/dist/issue/diagnostics.js.map +0 -1
  220. package/dist/issue/index.js +0 -10
  221. package/dist/issue/index.js.map +0 -1
  222. package/dist/issue/template-parser.js +0 -267
  223. package/dist/issue/template-parser.js.map +0 -1
  224. package/dist/json-schema-validator.js +0 -76
  225. package/dist/json-schema-validator.js.map +0 -1
  226. package/dist/lib/index.js +0 -11
  227. package/dist/lib/index.js.map +0 -1
  228. package/dist/lib/retry.js +0 -152
  229. package/dist/lib/retry.js.map +0 -1
  230. package/dist/lib/tree-sitter-languages.js +0 -75
  231. package/dist/lib/tree-sitter-languages.js.map +0 -1
  232. package/dist/lifecycle/chain-composition.js +0 -152
  233. package/dist/lifecycle/chain-composition.js.map +0 -1
  234. package/dist/lifecycle/chain-store.js +0 -246
  235. package/dist/lifecycle/chain-store.js.map +0 -1
  236. package/dist/lifecycle/consolidate-rcasd.js +0 -352
  237. package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
  238. package/dist/lifecycle/default-chain.js +0 -176
  239. package/dist/lifecycle/default-chain.js.map +0 -1
  240. package/dist/lifecycle/evidence.js +0 -180
  241. package/dist/lifecycle/evidence.js.map +0 -1
  242. package/dist/lifecycle/frontmatter.js +0 -363
  243. package/dist/lifecycle/frontmatter.js.map +0 -1
  244. package/dist/lifecycle/index.js +0 -756
  245. package/dist/lifecycle/index.js.map +0 -1
  246. package/dist/lifecycle/pipeline.js +0 -656
  247. package/dist/lifecycle/pipeline.js.map +0 -1
  248. package/dist/lifecycle/rcasd-index.js +0 -326
  249. package/dist/lifecycle/rcasd-index.js.map +0 -1
  250. package/dist/lifecycle/rcasd-paths.js +0 -220
  251. package/dist/lifecycle/rcasd-paths.js.map +0 -1
  252. package/dist/lifecycle/resume.js +0 -864
  253. package/dist/lifecycle/resume.js.map +0 -1
  254. package/dist/lifecycle/stage-artifacts.js +0 -94
  255. package/dist/lifecycle/stage-artifacts.js.map +0 -1
  256. package/dist/lifecycle/stage-guidance.js +0 -234
  257. package/dist/lifecycle/stage-guidance.js.map +0 -1
  258. package/dist/lifecycle/stages.js +0 -534
  259. package/dist/lifecycle/stages.js.map +0 -1
  260. package/dist/lifecycle/state-machine.js +0 -516
  261. package/dist/lifecycle/state-machine.js.map +0 -1
  262. package/dist/lifecycle/tessera-engine.js +0 -249
  263. package/dist/lifecycle/tessera-engine.js.map +0 -1
  264. package/dist/logger.js +0 -140
  265. package/dist/logger.js.map +0 -1
  266. package/dist/memory/anthropic-key-resolver.js +0 -105
  267. package/dist/memory/anthropic-key-resolver.js.map +0 -1
  268. package/dist/memory/auto-extract.js +0 -77
  269. package/dist/memory/auto-extract.js.map +0 -1
  270. package/dist/memory/brain-backfill.js +0 -389
  271. package/dist/memory/brain-backfill.js.map +0 -1
  272. package/dist/memory/brain-consolidator.js +0 -294
  273. package/dist/memory/brain-consolidator.js.map +0 -1
  274. package/dist/memory/brain-embedding.js +0 -66
  275. package/dist/memory/brain-embedding.js.map +0 -1
  276. package/dist/memory/brain-lifecycle.js +0 -818
  277. package/dist/memory/brain-lifecycle.js.map +0 -1
  278. package/dist/memory/brain-links.js +0 -161
  279. package/dist/memory/brain-links.js.map +0 -1
  280. package/dist/memory/brain-maintenance.js +0 -114
  281. package/dist/memory/brain-maintenance.js.map +0 -1
  282. package/dist/memory/brain-migration.js +0 -149
  283. package/dist/memory/brain-migration.js.map +0 -1
  284. package/dist/memory/brain-purge.js +0 -243
  285. package/dist/memory/brain-purge.js.map +0 -1
  286. package/dist/memory/brain-reasoning.js +0 -215
  287. package/dist/memory/brain-reasoning.js.map +0 -1
  288. package/dist/memory/brain-retrieval.js +0 -1044
  289. package/dist/memory/brain-retrieval.js.map +0 -1
  290. package/dist/memory/brain-row-types.js +0 -10
  291. package/dist/memory/brain-row-types.js.map +0 -1
  292. package/dist/memory/brain-search.js +0 -613
  293. package/dist/memory/brain-search.js.map +0 -1
  294. package/dist/memory/brain-similarity.js +0 -145
  295. package/dist/memory/brain-similarity.js.map +0 -1
  296. package/dist/memory/claude-mem-migration.js +0 -277
  297. package/dist/memory/claude-mem-migration.js.map +0 -1
  298. package/dist/memory/decisions.js +0 -236
  299. package/dist/memory/decisions.js.map +0 -1
  300. package/dist/memory/embedding-local.js +0 -102
  301. package/dist/memory/embedding-local.js.map +0 -1
  302. package/dist/memory/embedding-queue.js +0 -271
  303. package/dist/memory/embedding-queue.js.map +0 -1
  304. package/dist/memory/embedding-worker.js +0 -58
  305. package/dist/memory/embedding-worker.js.map +0 -1
  306. package/dist/memory/engine-compat.js +0 -1597
  307. package/dist/memory/engine-compat.js.map +0 -1
  308. package/dist/memory/extraction-gate.js +0 -459
  309. package/dist/memory/extraction-gate.js.map +0 -1
  310. package/dist/memory/graph-auto-populate.js +0 -148
  311. package/dist/memory/graph-auto-populate.js.map +0 -1
  312. package/dist/memory/graph-memory-bridge.js +0 -519
  313. package/dist/memory/graph-memory-bridge.js.map +0 -1
  314. package/dist/memory/graph-queries.js +0 -290
  315. package/dist/memory/graph-queries.js.map +0 -1
  316. package/dist/memory/index.js +0 -1146
  317. package/dist/memory/index.js.map +0 -1
  318. package/dist/memory/learnings.js +0 -197
  319. package/dist/memory/learnings.js.map +0 -1
  320. package/dist/memory/llm-extraction.js +0 -425
  321. package/dist/memory/llm-extraction.js.map +0 -1
  322. package/dist/memory/memory-bridge.js +0 -382
  323. package/dist/memory/memory-bridge.js.map +0 -1
  324. package/dist/memory/mental-model-injection.js +0 -61
  325. package/dist/memory/mental-model-injection.js.map +0 -1
  326. package/dist/memory/mental-model-queue.js +0 -211
  327. package/dist/memory/mental-model-queue.js.map +0 -1
  328. package/dist/memory/observer-reflector.js +0 -626
  329. package/dist/memory/observer-reflector.js.map +0 -1
  330. package/dist/memory/patterns.js +0 -192
  331. package/dist/memory/patterns.js.map +0 -1
  332. package/dist/memory/pipeline-manifest-sqlite.js +0 -975
  333. package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
  334. package/dist/memory/quality-feedback.js +0 -449
  335. package/dist/memory/quality-feedback.js.map +0 -1
  336. package/dist/memory/quality-scoring.js +0 -182
  337. package/dist/memory/quality-scoring.js.map +0 -1
  338. package/dist/memory/session-memory.js +0 -331
  339. package/dist/memory/session-memory.js.map +0 -1
  340. package/dist/memory/sleep-consolidation.js +0 -706
  341. package/dist/memory/sleep-consolidation.js.map +0 -1
  342. package/dist/memory/temporal-supersession.js +0 -403
  343. package/dist/memory/temporal-supersession.js.map +0 -1
  344. package/dist/metrics/ab-test.js +0 -260
  345. package/dist/metrics/ab-test.js.map +0 -1
  346. package/dist/metrics/aggregation.js +0 -363
  347. package/dist/metrics/aggregation.js.map +0 -1
  348. package/dist/metrics/common.js +0 -64
  349. package/dist/metrics/common.js.map +0 -1
  350. package/dist/metrics/enums.js +0 -78
  351. package/dist/metrics/enums.js.map +0 -1
  352. package/dist/metrics/index.js +0 -19
  353. package/dist/metrics/index.js.map +0 -1
  354. package/dist/metrics/model-provider-registry.js +0 -88
  355. package/dist/metrics/model-provider-registry.js.map +0 -1
  356. package/dist/metrics/otel-integration.js +0 -263
  357. package/dist/metrics/otel-integration.js.map +0 -1
  358. package/dist/metrics/provider-detection.js +0 -103
  359. package/dist/metrics/provider-detection.js.map +0 -1
  360. package/dist/metrics/token-estimation.js +0 -253
  361. package/dist/metrics/token-estimation.js.map +0 -1
  362. package/dist/metrics/token-service.js +0 -450
  363. package/dist/metrics/token-service.js.map +0 -1
  364. package/dist/migration/agent-outputs.js +0 -316
  365. package/dist/migration/agent-outputs.js.map +0 -1
  366. package/dist/migration/checksum.js +0 -92
  367. package/dist/migration/checksum.js.map +0 -1
  368. package/dist/migration/index.js +0 -282
  369. package/dist/migration/index.js.map +0 -1
  370. package/dist/migration/logger.js +0 -360
  371. package/dist/migration/logger.js.map +0 -1
  372. package/dist/migration/preflight.js +0 -9
  373. package/dist/migration/preflight.js.map +0 -1
  374. package/dist/migration/state.js +0 -421
  375. package/dist/migration/state.js.map +0 -1
  376. package/dist/migration/validate.js +0 -241
  377. package/dist/migration/validate.js.map +0 -1
  378. package/dist/mvi-helpers.js +0 -73
  379. package/dist/mvi-helpers.js.map +0 -1
  380. package/dist/nexus/deps.js +0 -375
  381. package/dist/nexus/deps.js.map +0 -1
  382. package/dist/nexus/discover.js +0 -288
  383. package/dist/nexus/discover.js.map +0 -1
  384. package/dist/nexus/hash.js +0 -10
  385. package/dist/nexus/hash.js.map +0 -1
  386. package/dist/nexus/index.js +0 -40
  387. package/dist/nexus/index.js.map +0 -1
  388. package/dist/nexus/migrate-json-to-sqlite.js +0 -115
  389. package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
  390. package/dist/nexus/nexus-bridge.js +0 -321
  391. package/dist/nexus/nexus-bridge.js.map +0 -1
  392. package/dist/nexus/permissions.js +0 -105
  393. package/dist/nexus/permissions.js.map +0 -1
  394. package/dist/nexus/query.js +0 -175
  395. package/dist/nexus/query.js.map +0 -1
  396. package/dist/nexus/registry.js +0 -584
  397. package/dist/nexus/registry.js.map +0 -1
  398. package/dist/nexus/sharing/index.js +0 -288
  399. package/dist/nexus/sharing/index.js.map +0 -1
  400. package/dist/nexus/transfer-types.js +0 -8
  401. package/dist/nexus/transfer-types.js.map +0 -1
  402. package/dist/nexus/transfer.js +0 -271
  403. package/dist/nexus/transfer.js.map +0 -1
  404. package/dist/nexus/workspace.js +0 -355
  405. package/dist/nexus/workspace.js.map +0 -1
  406. package/dist/observability/index.js +0 -103
  407. package/dist/observability/index.js.map +0 -1
  408. package/dist/observability/log-filter.js +0 -63
  409. package/dist/observability/log-filter.js.map +0 -1
  410. package/dist/observability/log-parser.js +0 -99
  411. package/dist/observability/log-parser.js.map +0 -1
  412. package/dist/observability/log-reader.js +0 -139
  413. package/dist/observability/log-reader.js.map +0 -1
  414. package/dist/observability/types.js +0 -19
  415. package/dist/observability/types.js.map +0 -1
  416. package/dist/orchestration/analyze.js +0 -107
  417. package/dist/orchestration/analyze.js.map +0 -1
  418. package/dist/orchestration/bootstrap.js +0 -132
  419. package/dist/orchestration/bootstrap.js.map +0 -1
  420. package/dist/orchestration/context.js +0 -56
  421. package/dist/orchestration/context.js.map +0 -1
  422. package/dist/orchestration/critical-path.js +0 -100
  423. package/dist/orchestration/critical-path.js.map +0 -1
  424. package/dist/orchestration/hierarchy.js +0 -183
  425. package/dist/orchestration/hierarchy.js.map +0 -1
  426. package/dist/orchestration/index.js +0 -287
  427. package/dist/orchestration/index.js.map +0 -1
  428. package/dist/orchestration/parallel.js +0 -89
  429. package/dist/orchestration/parallel.js.map +0 -1
  430. package/dist/orchestration/protocol-validators.js +0 -815
  431. package/dist/orchestration/protocol-validators.js.map +0 -1
  432. package/dist/orchestration/skill-ops.js +0 -98
  433. package/dist/orchestration/skill-ops.js.map +0 -1
  434. package/dist/orchestration/status.js +0 -107
  435. package/dist/orchestration/status.js.map +0 -1
  436. package/dist/orchestration/unblock.js +0 -103
  437. package/dist/orchestration/unblock.js.map +0 -1
  438. package/dist/orchestration/validate-spawn.js +0 -67
  439. package/dist/orchestration/validate-spawn.js.map +0 -1
  440. package/dist/orchestration/waves.js +0 -86
  441. package/dist/orchestration/waves.js.map +0 -1
  442. package/dist/otel/index.js +0 -163
  443. package/dist/otel/index.js.map +0 -1
  444. package/dist/output.js +0 -164
  445. package/dist/output.js.map +0 -1
  446. package/dist/pagination.js +0 -64
  447. package/dist/pagination.js.map +0 -1
  448. package/dist/paths.js +0 -882
  449. package/dist/paths.js.map +0 -1
  450. package/dist/phases/deps.js +0 -372
  451. package/dist/phases/deps.js.map +0 -1
  452. package/dist/phases/index.js +0 -349
  453. package/dist/phases/index.js.map +0 -1
  454. package/dist/pipeline/index.js +0 -10
  455. package/dist/pipeline/index.js.map +0 -1
  456. package/dist/pipeline/phase.js +0 -45
  457. package/dist/pipeline/phase.js.map +0 -1
  458. package/dist/platform.js +0 -211
  459. package/dist/platform.js.map +0 -1
  460. package/dist/project-info.js +0 -84
  461. package/dist/project-info.js.map +0 -1
  462. package/dist/reconciliation/index.js +0 -10
  463. package/dist/reconciliation/index.js.map +0 -1
  464. package/dist/reconciliation/link-store.js +0 -175
  465. package/dist/reconciliation/link-store.js.map +0 -1
  466. package/dist/reconciliation/reconciliation-engine.js +0 -298
  467. package/dist/reconciliation/reconciliation-engine.js.map +0 -1
  468. package/dist/release/artifacts.js +0 -427
  469. package/dist/release/artifacts.js.map +0 -1
  470. package/dist/release/changelog-writer.js +0 -151
  471. package/dist/release/changelog-writer.js.map +0 -1
  472. package/dist/release/channel.js +0 -144
  473. package/dist/release/channel.js.map +0 -1
  474. package/dist/release/ci.js +0 -166
  475. package/dist/release/ci.js.map +0 -1
  476. package/dist/release/github-pr.js +0 -225
  477. package/dist/release/github-pr.js.map +0 -1
  478. package/dist/release/guards.js +0 -116
  479. package/dist/release/guards.js.map +0 -1
  480. package/dist/release/index.js +0 -22
  481. package/dist/release/index.js.map +0 -1
  482. package/dist/release/release-config.js +0 -158
  483. package/dist/release/release-config.js.map +0 -1
  484. package/dist/release/release-manifest.js +0 -1019
  485. package/dist/release/release-manifest.js.map +0 -1
  486. package/dist/release/version-bump.js +0 -255
  487. package/dist/release/version-bump.js.map +0 -1
  488. package/dist/remote/index.js +0 -257
  489. package/dist/remote/index.js.map +0 -1
  490. package/dist/repair.js +0 -130
  491. package/dist/repair.js.map +0 -1
  492. package/dist/research/index.js +0 -2
  493. package/dist/research/index.js.map +0 -1
  494. package/dist/roadmap/index.js +0 -59
  495. package/dist/roadmap/index.js.map +0 -1
  496. package/dist/routing/capability-matrix.js +0 -1556
  497. package/dist/routing/capability-matrix.js.map +0 -1
  498. package/dist/routing/index.js +0 -9
  499. package/dist/routing/index.js.map +0 -1
  500. package/dist/scaffold.js +0 -1798
  501. package/dist/scaffold.js.map +0 -1
  502. package/dist/schema-management.js +0 -295
  503. package/dist/schema-management.js.map +0 -1
  504. package/dist/security/index.js +0 -9
  505. package/dist/security/index.js.map +0 -1
  506. package/dist/security/input-sanitization.js +0 -326
  507. package/dist/security/input-sanitization.js.map +0 -1
  508. package/dist/sequence/index.js +0 -295
  509. package/dist/sequence/index.js.map +0 -1
  510. package/dist/sessions/assumptions.js +0 -54
  511. package/dist/sessions/assumptions.js.map +0 -1
  512. package/dist/sessions/briefing.js +0 -377
  513. package/dist/sessions/briefing.js.map +0 -1
  514. package/dist/sessions/context-alert.js +0 -222
  515. package/dist/sessions/context-alert.js.map +0 -1
  516. package/dist/sessions/context-inject.js +0 -61
  517. package/dist/sessions/context-inject.js.map +0 -1
  518. package/dist/sessions/context-monitor.js +0 -98
  519. package/dist/sessions/context-monitor.js.map +0 -1
  520. package/dist/sessions/decisions.js +0 -65
  521. package/dist/sessions/decisions.js.map +0 -1
  522. package/dist/sessions/find.js +0 -65
  523. package/dist/sessions/find.js.map +0 -1
  524. package/dist/sessions/handoff.js +0 -328
  525. package/dist/sessions/handoff.js.map +0 -1
  526. package/dist/sessions/hitl-warnings.js +0 -254
  527. package/dist/sessions/hitl-warnings.js.map +0 -1
  528. package/dist/sessions/index.js +0 -327
  529. package/dist/sessions/index.js.map +0 -1
  530. package/dist/sessions/session-archive.js +0 -40
  531. package/dist/sessions/session-archive.js.map +0 -1
  532. package/dist/sessions/session-cleanup.js +0 -59
  533. package/dist/sessions/session-cleanup.js.map +0 -1
  534. package/dist/sessions/session-drift.js +0 -134
  535. package/dist/sessions/session-drift.js.map +0 -1
  536. package/dist/sessions/session-enforcement.js +0 -144
  537. package/dist/sessions/session-enforcement.js.map +0 -1
  538. package/dist/sessions/session-grade.js +0 -253
  539. package/dist/sessions/session-grade.js.map +0 -1
  540. package/dist/sessions/session-history.js +0 -42
  541. package/dist/sessions/session-history.js.map +0 -1
  542. package/dist/sessions/session-id.js +0 -81
  543. package/dist/sessions/session-id.js.map +0 -1
  544. package/dist/sessions/session-memory-bridge.js +0 -30
  545. package/dist/sessions/session-memory-bridge.js.map +0 -1
  546. package/dist/sessions/session-show.js +0 -24
  547. package/dist/sessions/session-show.js.map +0 -1
  548. package/dist/sessions/session-stats.js +0 -69
  549. package/dist/sessions/session-stats.js.map +0 -1
  550. package/dist/sessions/session-suspend.js +0 -39
  551. package/dist/sessions/session-suspend.js.map +0 -1
  552. package/dist/sessions/session-switch.js +0 -51
  553. package/dist/sessions/session-switch.js.map +0 -1
  554. package/dist/sessions/session-view.js +0 -76
  555. package/dist/sessions/session-view.js.map +0 -1
  556. package/dist/sessions/snapshot.js +0 -213
  557. package/dist/sessions/snapshot.js.map +0 -1
  558. package/dist/sessions/statusline-setup.js +0 -85
  559. package/dist/sessions/statusline-setup.js.map +0 -1
  560. package/dist/sessions/types.js +0 -8
  561. package/dist/sessions/types.js.map +0 -1
  562. package/dist/skills/agents/config.js +0 -94
  563. package/dist/skills/agents/config.js.map +0 -1
  564. package/dist/skills/agents/install.js +0 -116
  565. package/dist/skills/agents/install.js.map +0 -1
  566. package/dist/skills/agents/registry.js +0 -161
  567. package/dist/skills/agents/registry.js.map +0 -1
  568. package/dist/skills/discovery.js +0 -333
  569. package/dist/skills/discovery.js.map +0 -1
  570. package/dist/skills/dispatch.js +0 -347
  571. package/dist/skills/dispatch.js.map +0 -1
  572. package/dist/skills/dynamic-skill-generator.js +0 -87
  573. package/dist/skills/dynamic-skill-generator.js.map +0 -1
  574. package/dist/skills/index.js +0 -44
  575. package/dist/skills/index.js.map +0 -1
  576. package/dist/skills/injection/subagent.js +0 -195
  577. package/dist/skills/injection/subagent.js.map +0 -1
  578. package/dist/skills/injection/token.js +0 -260
  579. package/dist/skills/injection/token.js.map +0 -1
  580. package/dist/skills/install.js +0 -40
  581. package/dist/skills/install.js.map +0 -1
  582. package/dist/skills/manifests/contribution.js +0 -175
  583. package/dist/skills/manifests/contribution.js.map +0 -1
  584. package/dist/skills/manifests/research.js +0 -281
  585. package/dist/skills/manifests/research.js.map +0 -1
  586. package/dist/skills/manifests/resolver.js +0 -146
  587. package/dist/skills/manifests/resolver.js.map +0 -1
  588. package/dist/skills/marketplace.js +0 -90
  589. package/dist/skills/marketplace.js.map +0 -1
  590. package/dist/skills/orchestrator/spawn.js +0 -178
  591. package/dist/skills/orchestrator/spawn.js.map +0 -1
  592. package/dist/skills/orchestrator/startup.js +0 -451
  593. package/dist/skills/orchestrator/startup.js.map +0 -1
  594. package/dist/skills/orchestrator/validator.js +0 -301
  595. package/dist/skills/orchestrator/validator.js.map +0 -1
  596. package/dist/skills/precedence-integration.js +0 -73
  597. package/dist/skills/precedence-integration.js.map +0 -1
  598. package/dist/skills/precedence-types.js +0 -16
  599. package/dist/skills/precedence-types.js.map +0 -1
  600. package/dist/skills/routing-table.js +0 -63
  601. package/dist/skills/routing-table.js.map +0 -1
  602. package/dist/skills/skill-paths.js +0 -217
  603. package/dist/skills/skill-paths.js.map +0 -1
  604. package/dist/skills/test-utility.js +0 -55
  605. package/dist/skills/test-utility.js.map +0 -1
  606. package/dist/skills/types.js +0 -118
  607. package/dist/skills/types.js.map +0 -1
  608. package/dist/skills/validation.js +0 -183
  609. package/dist/skills/validation.js.map +0 -1
  610. package/dist/skills/version.js +0 -57
  611. package/dist/skills/version.js.map +0 -1
  612. package/dist/snapshot/index.js +0 -188
  613. package/dist/snapshot/index.js.map +0 -1
  614. package/dist/spawn/adapter-registry.js +0 -246
  615. package/dist/spawn/adapter-registry.js.map +0 -1
  616. package/dist/spawn/index.js +0 -10
  617. package/dist/spawn/index.js.map +0 -1
  618. package/dist/stats/index.js +0 -350
  619. package/dist/stats/index.js.map +0 -1
  620. package/dist/stats/workflow-telemetry.js +0 -400
  621. package/dist/stats/workflow-telemetry.js.map +0 -1
  622. package/dist/sticky/archive.js +0 -47
  623. package/dist/sticky/archive.js.map +0 -1
  624. package/dist/sticky/convert.js +0 -235
  625. package/dist/sticky/convert.js.map +0 -1
  626. package/dist/sticky/create.js +0 -48
  627. package/dist/sticky/create.js.map +0 -1
  628. package/dist/sticky/id.js +0 -35
  629. package/dist/sticky/id.js.map +0 -1
  630. package/dist/sticky/index.js +0 -16
  631. package/dist/sticky/index.js.map +0 -1
  632. package/dist/sticky/list.js +0 -57
  633. package/dist/sticky/list.js.map +0 -1
  634. package/dist/sticky/purge.js +0 -45
  635. package/dist/sticky/purge.js.map +0 -1
  636. package/dist/sticky/show.js +0 -42
  637. package/dist/sticky/show.js.map +0 -1
  638. package/dist/sticky/types.js +0 -10
  639. package/dist/sticky/types.js.map +0 -1
  640. package/dist/store/agent-registry-accessor.js +0 -886
  641. package/dist/store/agent-registry-accessor.js.map +0 -1
  642. package/dist/store/api-key-kdf.js +0 -84
  643. package/dist/store/api-key-kdf.js.map +0 -1
  644. package/dist/store/atomic.js +0 -167
  645. package/dist/store/atomic.js.map +0 -1
  646. package/dist/store/backup-crypto.js +0 -184
  647. package/dist/store/backup-crypto.js.map +0 -1
  648. package/dist/store/backup-pack.js +0 -581
  649. package/dist/store/backup-pack.js.map +0 -1
  650. package/dist/store/backup-unpack.js +0 -449
  651. package/dist/store/backup-unpack.js.map +0 -1
  652. package/dist/store/backup.js +0 -94
  653. package/dist/store/backup.js.map +0 -1
  654. package/dist/store/brain-accessor.js +0 -429
  655. package/dist/store/brain-accessor.js.map +0 -1
  656. package/dist/store/brain-schema.js +0 -579
  657. package/dist/store/brain-schema.js.map +0 -1
  658. package/dist/store/brain-sqlite.js +0 -297
  659. package/dist/store/brain-sqlite.js.map +0 -1
  660. package/dist/store/cache.js +0 -168
  661. package/dist/store/cache.js.map +0 -1
  662. package/dist/store/chain-schema.js +0 -51
  663. package/dist/store/chain-schema.js.map +0 -1
  664. package/dist/store/cleanup-legacy.js +0 -171
  665. package/dist/store/cleanup-legacy.js.map +0 -1
  666. package/dist/store/conduit-sqlite.js +0 -570
  667. package/dist/store/conduit-sqlite.js.map +0 -1
  668. package/dist/store/converters.js +0 -124
  669. package/dist/store/converters.js.map +0 -1
  670. package/dist/store/cross-db-cleanup.js +0 -319
  671. package/dist/store/cross-db-cleanup.js.map +0 -1
  672. package/dist/store/data-accessor.js +0 -26
  673. package/dist/store/data-accessor.js.map +0 -1
  674. package/dist/store/data-safety-central.js +0 -269
  675. package/dist/store/data-safety-central.js.map +0 -1
  676. package/dist/store/data-safety.js +0 -274
  677. package/dist/store/data-safety.js.map +0 -1
  678. package/dist/store/db-helpers.js +0 -224
  679. package/dist/store/db-helpers.js.map +0 -1
  680. package/dist/store/export.js +0 -155
  681. package/dist/store/export.js.map +0 -1
  682. package/dist/store/file-utils.js +0 -270
  683. package/dist/store/file-utils.js.map +0 -1
  684. package/dist/store/git-checkpoint.js +0 -365
  685. package/dist/store/git-checkpoint.js.map +0 -1
  686. package/dist/store/global-salt.js +0 -147
  687. package/dist/store/global-salt.js.map +0 -1
  688. package/dist/store/import-logging.js +0 -139
  689. package/dist/store/import-logging.js.map +0 -1
  690. package/dist/store/import-remap.js +0 -145
  691. package/dist/store/import-remap.js.map +0 -1
  692. package/dist/store/import-sort.js +0 -121
  693. package/dist/store/import-sort.js.map +0 -1
  694. package/dist/store/index.js +0 -29
  695. package/dist/store/index.js.map +0 -1
  696. package/dist/store/json.js +0 -208
  697. package/dist/store/json.js.map +0 -1
  698. package/dist/store/lifecycle-store.js +0 -249
  699. package/dist/store/lifecycle-store.js.map +0 -1
  700. package/dist/store/lock.js +0 -70
  701. package/dist/store/lock.js.map +0 -1
  702. package/dist/store/migrate-signaldock-to-conduit.js +0 -562
  703. package/dist/store/migrate-signaldock-to-conduit.js.map +0 -1
  704. package/dist/store/migration-manager.js +0 -288
  705. package/dist/store/migration-manager.js.map +0 -1
  706. package/dist/store/migration-sqlite.js +0 -676
  707. package/dist/store/migration-sqlite.js.map +0 -1
  708. package/dist/store/nexus-schema.js +0 -268
  709. package/dist/store/nexus-schema.js.map +0 -1
  710. package/dist/store/nexus-sqlite.js +0 -242
  711. package/dist/store/nexus-sqlite.js.map +0 -1
  712. package/dist/store/nexus-validation-schemas.js +0 -40
  713. package/dist/store/nexus-validation-schemas.js.map +0 -1
  714. package/dist/store/parsers.js +0 -37
  715. package/dist/store/parsers.js.map +0 -1
  716. package/dist/store/project-detect.js +0 -457
  717. package/dist/store/project-detect.js.map +0 -1
  718. package/dist/store/provider.js +0 -101
  719. package/dist/store/provider.js.map +0 -1
  720. package/dist/store/regenerators.js +0 -207
  721. package/dist/store/regenerators.js.map +0 -1
  722. package/dist/store/restore-conflict-report.js +0 -206
  723. package/dist/store/restore-conflict-report.js.map +0 -1
  724. package/dist/store/restore-json-merge.js +0 -454
  725. package/dist/store/restore-json-merge.js.map +0 -1
  726. package/dist/store/safety-data-accessor.js +0 -257
  727. package/dist/store/safety-data-accessor.js.map +0 -1
  728. package/dist/store/schema.js +0 -7
  729. package/dist/store/schema.js.map +0 -1
  730. package/dist/store/session-store.js +0 -219
  731. package/dist/store/session-store.js.map +0 -1
  732. package/dist/store/signaldock-sqlite.js +0 -550
  733. package/dist/store/signaldock-sqlite.js.map +0 -1
  734. package/dist/store/sqlite-backup.js +0 -498
  735. package/dist/store/sqlite-backup.js.map +0 -1
  736. package/dist/store/sqlite-data-accessor.js +0 -787
  737. package/dist/store/sqlite-data-accessor.js.map +0 -1
  738. package/dist/store/sqlite.js +0 -483
  739. package/dist/store/sqlite.js.map +0 -1
  740. package/dist/store/status-registry.js +0 -8
  741. package/dist/store/status-registry.js.map +0 -1
  742. package/dist/store/t310-readiness.js +0 -115
  743. package/dist/store/t310-readiness.js.map +0 -1
  744. package/dist/store/task-store.js +0 -358
  745. package/dist/store/task-store.js.map +0 -1
  746. package/dist/store/tasks-schema.js +0 -610
  747. package/dist/store/tasks-schema.js.map +0 -1
  748. package/dist/store/typed-query.js +0 -15
  749. package/dist/store/typed-query.js.map +0 -1
  750. package/dist/store/validation-schemas.js +0 -278
  751. package/dist/store/validation-schemas.js.map +0 -1
  752. package/dist/system/archive-analytics.js +0 -277
  753. package/dist/system/archive-analytics.js.map +0 -1
  754. package/dist/system/archive-stats.js +0 -64
  755. package/dist/system/archive-stats.js.map +0 -1
  756. package/dist/system/audit.js +0 -145
  757. package/dist/system/audit.js.map +0 -1
  758. package/dist/system/backup.js +0 -280
  759. package/dist/system/backup.js.map +0 -1
  760. package/dist/system/cleanup.js +0 -134
  761. package/dist/system/cleanup.js.map +0 -1
  762. package/dist/system/dependencies.js +0 -466
  763. package/dist/system/dependencies.js.map +0 -1
  764. package/dist/system/health.js +0 -1206
  765. package/dist/system/health.js.map +0 -1
  766. package/dist/system/index.js +0 -18
  767. package/dist/system/index.js.map +0 -1
  768. package/dist/system/inject-generate.js +0 -122
  769. package/dist/system/inject-generate.js.map +0 -1
  770. package/dist/system/labels.js +0 -38
  771. package/dist/system/labels.js.map +0 -1
  772. package/dist/system/metrics.js +0 -61
  773. package/dist/system/metrics.js.map +0 -1
  774. package/dist/system/migrate.js +0 -43
  775. package/dist/system/migrate.js.map +0 -1
  776. package/dist/system/platform-paths.js +0 -80
  777. package/dist/system/platform-paths.js.map +0 -1
  778. package/dist/system/runtime.js +0 -161
  779. package/dist/system/runtime.js.map +0 -1
  780. package/dist/system/safestop.js +0 -89
  781. package/dist/system/safestop.js.map +0 -1
  782. package/dist/system/storage-preflight.js +0 -123
  783. package/dist/system/storage-preflight.js.map +0 -1
  784. package/dist/task-work/index.js +0 -159
  785. package/dist/task-work/index.js.map +0 -1
  786. package/dist/tasks/add.js +0 -837
  787. package/dist/tasks/add.js.map +0 -1
  788. package/dist/tasks/analyze.js +0 -85
  789. package/dist/tasks/analyze.js.map +0 -1
  790. package/dist/tasks/archive.js +0 -90
  791. package/dist/tasks/archive.js.map +0 -1
  792. package/dist/tasks/atomicity.js +0 -83
  793. package/dist/tasks/atomicity.js.map +0 -1
  794. package/dist/tasks/cancel-ops.js +0 -83
  795. package/dist/tasks/cancel-ops.js.map +0 -1
  796. package/dist/tasks/complete.js +0 -248
  797. package/dist/tasks/complete.js.map +0 -1
  798. package/dist/tasks/crossref-extract.js +0 -73
  799. package/dist/tasks/crossref-extract.js.map +0 -1
  800. package/dist/tasks/delete-preview.js +0 -192
  801. package/dist/tasks/delete-preview.js.map +0 -1
  802. package/dist/tasks/delete.js +0 -120
  803. package/dist/tasks/delete.js.map +0 -1
  804. package/dist/tasks/deletion-strategy.js +0 -200
  805. package/dist/tasks/deletion-strategy.js.map +0 -1
  806. package/dist/tasks/dependency-check.js +0 -278
  807. package/dist/tasks/dependency-check.js.map +0 -1
  808. package/dist/tasks/deps-ready.js +0 -32
  809. package/dist/tasks/deps-ready.js.map +0 -1
  810. package/dist/tasks/enforcement.js +0 -86
  811. package/dist/tasks/enforcement.js.map +0 -1
  812. package/dist/tasks/epic-enforcement.js +0 -294
  813. package/dist/tasks/epic-enforcement.js.map +0 -1
  814. package/dist/tasks/find.js +0 -163
  815. package/dist/tasks/find.js.map +0 -1
  816. package/dist/tasks/graph-cache.js +0 -127
  817. package/dist/tasks/graph-cache.js.map +0 -1
  818. package/dist/tasks/graph-ops.js +0 -173
  819. package/dist/tasks/graph-ops.js.map +0 -1
  820. package/dist/tasks/graph-rag.js +0 -328
  821. package/dist/tasks/graph-rag.js.map +0 -1
  822. package/dist/tasks/hierarchy-policy.js +0 -149
  823. package/dist/tasks/hierarchy-policy.js.map +0 -1
  824. package/dist/tasks/hierarchy.js +0 -185
  825. package/dist/tasks/hierarchy.js.map +0 -1
  826. package/dist/tasks/id-generator.js +0 -65
  827. package/dist/tasks/id-generator.js.map +0 -1
  828. package/dist/tasks/index.js +0 -14
  829. package/dist/tasks/index.js.map +0 -1
  830. package/dist/tasks/labels.js +0 -55
  831. package/dist/tasks/labels.js.map +0 -1
  832. package/dist/tasks/list.js +0 -75
  833. package/dist/tasks/list.js.map +0 -1
  834. package/dist/tasks/phase-tracking.js +0 -133
  835. package/dist/tasks/phase-tracking.js.map +0 -1
  836. package/dist/tasks/pipeline-stage.js +0 -248
  837. package/dist/tasks/pipeline-stage.js.map +0 -1
  838. package/dist/tasks/plan.js +0 -268
  839. package/dist/tasks/plan.js.map +0 -1
  840. package/dist/tasks/relates.js +0 -101
  841. package/dist/tasks/relates.js.map +0 -1
  842. package/dist/tasks/show.js +0 -83
  843. package/dist/tasks/show.js.map +0 -1
  844. package/dist/tasks/size-weighting.js +0 -86
  845. package/dist/tasks/size-weighting.js.map +0 -1
  846. package/dist/tasks/staleness.js +0 -86
  847. package/dist/tasks/staleness.js.map +0 -1
  848. package/dist/tasks/task-ops.js +0 -1741
  849. package/dist/tasks/task-ops.js.map +0 -1
  850. package/dist/tasks/update.js +0 -303
  851. package/dist/tasks/update.js.map +0 -1
  852. package/dist/templates/index.js +0 -10
  853. package/dist/templates/index.js.map +0 -1
  854. package/dist/templates/parser.js +0 -254
  855. package/dist/templates/parser.js.map +0 -1
  856. package/dist/ui/aliases.js +0 -153
  857. package/dist/ui/aliases.js.map +0 -1
  858. package/dist/ui/changelog.js +0 -184
  859. package/dist/ui/changelog.js.map +0 -1
  860. package/dist/ui/command-registry.js +0 -168
  861. package/dist/ui/command-registry.js.map +0 -1
  862. package/dist/ui/flags.js +0 -94
  863. package/dist/ui/flags.js.map +0 -1
  864. package/dist/ui/index.js +0 -24
  865. package/dist/ui/index.js.map +0 -1
  866. package/dist/upgrade.js +0 -1371
  867. package/dist/upgrade.js.map +0 -1
  868. package/dist/validation/chain-validation.js +0 -146
  869. package/dist/validation/chain-validation.js.map +0 -1
  870. package/dist/validation/compliance.js +0 -155
  871. package/dist/validation/compliance.js.map +0 -1
  872. package/dist/validation/docs-sync.js +0 -212
  873. package/dist/validation/docs-sync.js.map +0 -1
  874. package/dist/validation/doctor/checks.js +0 -1069
  875. package/dist/validation/doctor/checks.js.map +0 -1
  876. package/dist/validation/doctor/index.js +0 -9
  877. package/dist/validation/doctor/index.js.map +0 -1
  878. package/dist/validation/doctor/project-cache.js +0 -160
  879. package/dist/validation/doctor/project-cache.js.map +0 -1
  880. package/dist/validation/doctor/utils.js +0 -155
  881. package/dist/validation/doctor/utils.js.map +0 -1
  882. package/dist/validation/engine.js +0 -914
  883. package/dist/validation/engine.js.map +0 -1
  884. package/dist/validation/gap-check.js +0 -175
  885. package/dist/validation/gap-check.js.map +0 -1
  886. package/dist/validation/index.js +0 -40
  887. package/dist/validation/index.js.map +0 -1
  888. package/dist/validation/manifest.js +0 -237
  889. package/dist/validation/manifest.js.map +0 -1
  890. package/dist/validation/operation-gate-validators.js +0 -724
  891. package/dist/validation/operation-gate-validators.js.map +0 -1
  892. package/dist/validation/operation-verification-gates.js +0 -532
  893. package/dist/validation/operation-verification-gates.js.map +0 -1
  894. package/dist/validation/param-utils.js +0 -141
  895. package/dist/validation/param-utils.js.map +0 -1
  896. package/dist/validation/protocol-common.js +0 -300
  897. package/dist/validation/protocol-common.js.map +0 -1
  898. package/dist/validation/protocols/_shared.js +0 -82
  899. package/dist/validation/protocols/_shared.js.map +0 -1
  900. package/dist/validation/protocols/architecture-decision.js +0 -31
  901. package/dist/validation/protocols/architecture-decision.js.map +0 -1
  902. package/dist/validation/protocols/artifact-publish.js +0 -28
  903. package/dist/validation/protocols/artifact-publish.js.map +0 -1
  904. package/dist/validation/protocols/consensus.js +0 -41
  905. package/dist/validation/protocols/consensus.js.map +0 -1
  906. package/dist/validation/protocols/contribution.js +0 -27
  907. package/dist/validation/protocols/contribution.js.map +0 -1
  908. package/dist/validation/protocols/decomposition.js +0 -28
  909. package/dist/validation/protocols/decomposition.js.map +0 -1
  910. package/dist/validation/protocols/implementation.js +0 -24
  911. package/dist/validation/protocols/implementation.js.map +0 -1
  912. package/dist/validation/protocols/provenance.js +0 -29
  913. package/dist/validation/protocols/provenance.js.map +0 -1
  914. package/dist/validation/protocols/release.js +0 -29
  915. package/dist/validation/protocols/release.js.map +0 -1
  916. package/dist/validation/protocols/research.js +0 -24
  917. package/dist/validation/protocols/research.js.map +0 -1
  918. package/dist/validation/protocols/specification.js +0 -27
  919. package/dist/validation/protocols/specification.js.map +0 -1
  920. package/dist/validation/protocols/testing.js +0 -30
  921. package/dist/validation/protocols/testing.js.map +0 -1
  922. package/dist/validation/protocols/validation.js +0 -30
  923. package/dist/validation/protocols/validation.js.map +0 -1
  924. package/dist/validation/schema-integrity.js +0 -170
  925. package/dist/validation/schema-integrity.js.map +0 -1
  926. package/dist/validation/schema-validator.js +0 -176
  927. package/dist/validation/schema-validator.js.map +0 -1
  928. package/dist/validation/validate-ops.js +0 -937
  929. package/dist/validation/validate-ops.js.map +0 -1
  930. package/dist/validation/validation-rules.js +0 -226
  931. package/dist/validation/validation-rules.js.map +0 -1
  932. package/dist/validation/verification.js +0 -321
  933. package/dist/validation/verification.js.map +0 -1
  934. package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +0 -49
@@ -1,1146 +0,0 @@
1
- /**
2
- * Research commands and manifest operations.
3
- *
4
- * @packageDocumentation
5
- * @task T4465
6
- * @epic T4454
7
- */
8
- import { existsSync, readFileSync } from 'node:fs';
9
- import { join, resolve } from 'node:path';
10
- import { ExitCode } from '@cleocode/contracts';
11
- import { CleoError } from '../errors.js';
12
- import { getBackupDir, getManifestPath as getCentralManifestPath, getCleoDirAbsolute, getManifestArchivePath, getProjectRoot, } from '../paths.js';
13
- import { atomicWrite, safeReadFile } from '../store/atomic.js';
14
- import { appendJsonl, readJson, saveJson } from '../store/json.js';
15
- import { logOperation } from '../tasks/add.js';
16
- /**
17
- * Get the research file path.
18
- * @task T4465
19
- */
20
- function getResearchPath(cwd) {
21
- return join(getCleoDirAbsolute(cwd), 'research.json');
22
- }
23
- /**
24
- * Get the manifest file path.
25
- * @task T4465
26
- */
27
- function getManifestPath(cwd) {
28
- return getCentralManifestPath(cwd);
29
- }
30
- /**
31
- * Read or initialize the research file.
32
- * @task T4465
33
- */
34
- async function readResearch(cwd) {
35
- const path = getResearchPath(cwd);
36
- const data = await readJson(path);
37
- return data ?? { entries: [] };
38
- }
39
- /**
40
- * Add a research entry.
41
- *
42
- * @param options - Research entry data including taskId and topic
43
- * @param cwd - Optional working directory for path resolution
44
- * @param accessor - Data accessor for task validation
45
- * @returns The created ResearchEntry
46
- *
47
- * @remarks
48
- * Validates the linked task exists, generates a unique ID, and persists
49
- * the entry to research.json. Logs the operation to the audit log.
50
- *
51
- * @example
52
- * ```typescript
53
- * const entry = await addResearch({ taskId: 'T042', topic: 'Auth patterns' }, '/project', accessor);
54
- * ```
55
- *
56
- * @task T4465
57
- */
58
- export async function addResearch(options, cwd, accessor) {
59
- // Validate task exists
60
- const task = await accessor.loadSingleTask(options.taskId);
61
- if (!task) {
62
- throw new CleoError(ExitCode.NOT_FOUND, `Task not found: ${options.taskId}`);
63
- }
64
- if (!options.topic || options.topic.trim().length === 0) {
65
- throw new CleoError(ExitCode.INVALID_INPUT, 'Research topic is required');
66
- }
67
- const research = await readResearch(cwd);
68
- const now = new Date().toISOString();
69
- const entry = {
70
- id: `R${Date.now().toString(36)}`,
71
- taskId: options.taskId,
72
- topic: options.topic.trim(),
73
- findings: options.findings ?? [],
74
- sources: options.sources ?? [],
75
- status: (options.findings?.length ?? 0) > 0 ? 'complete' : 'pending',
76
- createdAt: now,
77
- updatedAt: now,
78
- };
79
- research.entries.push(entry);
80
- await saveJson(getResearchPath(cwd), research, { backupDir: getBackupDir(cwd) });
81
- await logOperation('research_added', entry.id, {
82
- taskId: options.taskId,
83
- topic: options.topic,
84
- }, accessor);
85
- return entry;
86
- }
87
- /**
88
- * Show a specific research entry.
89
- *
90
- * @param researchId - The research entry ID to look up
91
- * @param cwd - Optional working directory for path resolution
92
- * @returns The matching ResearchEntry
93
- *
94
- * @remarks
95
- * Throws a CleoError with NOT_FOUND if the entry does not exist.
96
- *
97
- * @example
98
- * ```typescript
99
- * const entry = await showResearch('Rlk1abc2', '/project');
100
- * ```
101
- *
102
- * @task T4465
103
- */
104
- export async function showResearch(researchId, cwd) {
105
- const research = await readResearch(cwd);
106
- const entry = research.entries.find((e) => e.id === researchId);
107
- if (!entry) {
108
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry not found: ${researchId}`);
109
- }
110
- return entry;
111
- }
112
- /**
113
- * List research entries with optional filtering.
114
- *
115
- * @param options - Optional filters for taskId and status
116
- * @param cwd - Optional working directory for path resolution
117
- * @returns Filtered array of ResearchEntry records
118
- *
119
- * @remarks
120
- * Returns all entries when no filters are provided.
121
- *
122
- * @example
123
- * ```typescript
124
- * const entries = await listResearch({ status: 'pending' }, '/project');
125
- * ```
126
- *
127
- * @task T4465
128
- */
129
- export async function listResearch(options = {}, cwd) {
130
- const research = await readResearch(cwd);
131
- let entries = research.entries;
132
- if (options.taskId) {
133
- entries = entries.filter((e) => e.taskId === options.taskId);
134
- }
135
- if (options.status) {
136
- entries = entries.filter((e) => e.status === options.status);
137
- }
138
- return entries;
139
- }
140
- /**
141
- * List pending research entries.
142
- *
143
- * @param cwd - Optional working directory for path resolution
144
- * @returns Array of research entries with status "pending"
145
- *
146
- * @remarks
147
- * Convenience wrapper around listResearch with status filter pre-set.
148
- *
149
- * @example
150
- * ```typescript
151
- * const pending = await pendingResearch('/project');
152
- * ```
153
- *
154
- * @task T4465
155
- */
156
- export async function pendingResearch(cwd) {
157
- return listResearch({ status: 'pending' }, cwd);
158
- }
159
- /**
160
- * Link a research entry to a task.
161
- *
162
- * @param researchId - The research entry ID to link
163
- * @param taskId - The target task ID
164
- * @param cwd - Optional working directory for path resolution
165
- * @param accessor - Data accessor for task validation
166
- * @returns Confirmation with researchId and taskId
167
- *
168
- * @remarks
169
- * Updates the research entry's taskId field and persists the change.
170
- * Validates both the research entry and target task exist.
171
- *
172
- * @example
173
- * ```typescript
174
- * await linkResearch('Rlk1abc2', 'T050', '/project', accessor);
175
- * ```
176
- *
177
- * @task T4465
178
- */
179
- export async function linkResearch(researchId, taskId, cwd, accessor) {
180
- const research = await readResearch(cwd);
181
- const entry = research.entries.find((e) => e.id === researchId);
182
- if (!entry) {
183
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry not found: ${researchId}`);
184
- }
185
- // Validate task exists
186
- const linkedTask = await accessor.loadSingleTask(taskId);
187
- if (!linkedTask) {
188
- throw new CleoError(ExitCode.NOT_FOUND, `Task not found: ${taskId}`);
189
- }
190
- entry.taskId = taskId;
191
- entry.updatedAt = new Date().toISOString();
192
- await saveJson(getResearchPath(cwd), research, { backupDir: getBackupDir(cwd) });
193
- return { researchId, taskId };
194
- }
195
- /**
196
- * Update research findings.
197
- *
198
- * @param researchId - The research entry ID to update
199
- * @param updates - Fields to update (findings, sources, and/or status)
200
- * @param cwd - Optional working directory for path resolution
201
- * @returns The updated ResearchEntry
202
- *
203
- * @remarks
204
- * Only provided fields are updated; others are left unchanged.
205
- * Updates the `updatedAt` timestamp automatically.
206
- *
207
- * @example
208
- * ```typescript
209
- * const entry = await updateResearch('Rlk1abc2', { status: 'complete', findings: ['JWT is used'] });
210
- * ```
211
- *
212
- * @task T4465
213
- */
214
- export async function updateResearch(researchId, updates, cwd) {
215
- const research = await readResearch(cwd);
216
- const entry = research.entries.find((e) => e.id === researchId);
217
- if (!entry) {
218
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry not found: ${researchId}`);
219
- }
220
- if (updates.findings)
221
- entry.findings = updates.findings;
222
- if (updates.sources)
223
- entry.sources = updates.sources;
224
- if (updates.status)
225
- entry.status = updates.status;
226
- entry.updatedAt = new Date().toISOString();
227
- await saveJson(getResearchPath(cwd), research, { backupDir: getBackupDir(cwd) });
228
- return entry;
229
- }
230
- /**
231
- * Get research statistics.
232
- *
233
- * @param cwd - Optional working directory for path resolution
234
- * @returns Total count and breakdowns by status and topic
235
- *
236
- * @remarks
237
- * Aggregates all research entries into status and topic distributions.
238
- *
239
- * @example
240
- * ```typescript
241
- * const stats = await statsResearch('/project');
242
- * console.log(`${stats.total} entries, ${stats.byStatus.pending ?? 0} pending`);
243
- * ```
244
- *
245
- * @task T4474
246
- */
247
- export async function statsResearch(cwd) {
248
- const research = await readResearch(cwd);
249
- const byStatus = {};
250
- const byTopic = {};
251
- for (const entry of research.entries) {
252
- byStatus[entry.status] = (byStatus[entry.status] || 0) + 1;
253
- byTopic[entry.topic] = (byTopic[entry.topic] || 0) + 1;
254
- }
255
- return {
256
- total: research.entries.length,
257
- byStatus,
258
- byTopic,
259
- };
260
- }
261
- /**
262
- * Get research entries linked to a specific task.
263
- *
264
- * @param taskId - The task ID to find linked research for
265
- * @param cwd - Optional working directory for path resolution
266
- * @returns Array of research entries linked to the given task
267
- *
268
- * @remarks
269
- * Filters research entries by taskId. Throws if taskId is empty.
270
- *
271
- * @example
272
- * ```typescript
273
- * const linked = await linksResearch('T042', '/project');
274
- * ```
275
- *
276
- * @task T4474
277
- */
278
- export async function linksResearch(taskId, cwd) {
279
- if (!taskId) {
280
- throw new CleoError(ExitCode.INVALID_INPUT, 'Task ID is required');
281
- }
282
- const research = await readResearch(cwd);
283
- return research.entries.filter((e) => e.taskId === taskId);
284
- }
285
- /**
286
- * Archive old research entries by status.
287
- * Moves 'complete' entries to an archive and keeps non-complete ones.
288
- *
289
- * @param cwd - Optional working directory for path resolution
290
- * @returns Summary with count of archived and remaining entries
291
- *
292
- * @remarks
293
- * Removes all "complete" entries from the active research file and reports
294
- * how many were archived vs. retained.
295
- *
296
- * @example
297
- * ```typescript
298
- * const result = await archiveResearch('/project');
299
- * console.log(`Archived ${result.entriesArchived} entries`);
300
- * ```
301
- *
302
- * @task T4474
303
- */
304
- export async function archiveResearch(cwd) {
305
- const research = await readResearch(cwd);
306
- const completed = research.entries.filter((e) => e.status === 'complete');
307
- const remaining = research.entries.filter((e) => e.status !== 'complete');
308
- // Write back only non-complete entries
309
- await saveJson(getResearchPath(cwd), { entries: remaining }, { backupDir: getBackupDir(cwd) });
310
- return {
311
- action: 'archive',
312
- entriesArchived: completed.length,
313
- entriesRemaining: remaining.length,
314
- };
315
- }
316
- // === MANIFEST OPERATIONS ===
317
- /**
318
- * Read manifest entries from MANIFEST.jsonl.
319
- *
320
- * @param cwd - Optional working directory for path resolution
321
- * @returns Array of parsed ManifestEntry records from the JSONL file
322
- *
323
- * @remarks
324
- * Reads the file line by line, skipping blank and malformed lines.
325
- * Returns an empty array if the file does not exist.
326
- *
327
- * @example
328
- * ```typescript
329
- * const entries = await readManifest('/project');
330
- * ```
331
- *
332
- * @task T4465
333
- */
334
- export async function readManifest(cwd) {
335
- const manifestPath = getManifestPath(cwd);
336
- const content = await safeReadFile(manifestPath);
337
- if (!content)
338
- return [];
339
- const entries = [];
340
- for (const line of content.split('\n')) {
341
- const trimmed = line.trim();
342
- if (!trimmed)
343
- continue;
344
- try {
345
- entries.push(JSON.parse(trimmed));
346
- }
347
- catch {
348
- // Skip malformed lines
349
- }
350
- }
351
- return entries;
352
- }
353
- /**
354
- * Append a manifest entry.
355
- *
356
- * @param entry - The ManifestEntry to append
357
- * @param cwd - Optional working directory for path resolution
358
- *
359
- * @remarks
360
- * Appends a single JSON line to the MANIFEST.jsonl file.
361
- *
362
- * @example
363
- * ```typescript
364
- * await appendManifest({ id: 'M001', file: 'report.md', ... }, '/project');
365
- * ```
366
- *
367
- * @task T4465
368
- */
369
- export async function appendManifest(entry, cwd) {
370
- const manifestPath = getManifestPath(cwd);
371
- await appendJsonl(manifestPath, entry);
372
- }
373
- /**
374
- * Query manifest entries with filtering.
375
- *
376
- * @param options - Filter criteria (status, agentType, topic, taskId, limit)
377
- * @param cwd - Optional working directory for path resolution
378
- * @returns Filtered array of ManifestEntry records
379
- *
380
- * @remarks
381
- * Applies filters sequentially: status, agentType, topic, taskId, then limit.
382
- * Returns all entries when no filters are provided.
383
- *
384
- * @example
385
- * ```typescript
386
- * const entries = await queryManifest({ status: 'completed', limit: 5 }, '/project');
387
- * ```
388
- *
389
- * @task T4465
390
- */
391
- export async function queryManifest(options = {}, cwd) {
392
- let entries = await readManifest(cwd);
393
- if (options.status) {
394
- entries = entries.filter((e) => e.status === options.status);
395
- }
396
- if (options.agentType) {
397
- entries = entries.filter((e) => e.agent_type === options.agentType);
398
- }
399
- if (options.topic) {
400
- entries = entries.filter((e) => e.topics.includes(options.topic));
401
- }
402
- if (options.taskId) {
403
- entries = entries.filter((e) => e.linked_tasks.includes(options.taskId));
404
- }
405
- if (options.limit && options.limit > 0) {
406
- entries = entries.slice(0, options.limit);
407
- }
408
- return entries;
409
- }
410
- /**
411
- * Read all manifest entries as extended entries.
412
- *
413
- * @param cwd - Optional working directory for path resolution
414
- * @returns Array of parsed ExtendedManifestEntry records
415
- *
416
- * @remarks
417
- * Same as readManifest but typed as ExtendedManifestEntry to include
418
- * optional engine fields (confidence, file_checksum, duration_seconds).
419
- *
420
- * @example
421
- * ```typescript
422
- * const entries = await readExtendedManifest('/project');
423
- * ```
424
- *
425
- * @task T4787
426
- */
427
- export async function readExtendedManifest(cwd) {
428
- const manifestPath = getManifestPath(cwd);
429
- const content = await safeReadFile(manifestPath);
430
- if (!content)
431
- return [];
432
- const entries = [];
433
- for (const line of content.split('\n')) {
434
- const trimmed = line.trim();
435
- if (!trimmed)
436
- continue;
437
- try {
438
- entries.push(JSON.parse(trimmed));
439
- }
440
- catch {
441
- // Skip malformed lines
442
- }
443
- }
444
- return entries;
445
- }
446
- /**
447
- * Filter manifest entries by criteria.
448
- *
449
- * @param entries - Array of manifest entries to filter
450
- * @param filter - Filter criteria to apply
451
- * @returns Filtered subset of entries
452
- *
453
- * @remarks
454
- * Applies filters in order: taskId, status, agent_type, topic, actionable,
455
- * dateAfter, dateBefore, offset, then limit.
456
- *
457
- * @example
458
- * ```typescript
459
- * const filtered = filterManifestEntries(entries, { status: 'completed', limit: 10 });
460
- * ```
461
- *
462
- * @task T4787
463
- */
464
- export function filterManifestEntries(entries, filter) {
465
- let filtered = entries;
466
- if (filter.taskId) {
467
- const taskId = filter.taskId;
468
- filtered = filtered.filter((e) => e.id.startsWith(taskId) || e.linked_tasks?.includes(taskId));
469
- }
470
- if (filter.status) {
471
- filtered = filtered.filter((e) => e.status === filter.status);
472
- }
473
- if (filter.agent_type) {
474
- filtered = filtered.filter((e) => e.agent_type === filter.agent_type);
475
- }
476
- if (filter.topic) {
477
- filtered = filtered.filter((e) => e.topics.includes(filter.topic));
478
- }
479
- if (filter.actionable !== undefined) {
480
- filtered = filtered.filter((e) => e.actionable === filter.actionable);
481
- }
482
- if (filter.dateAfter) {
483
- filtered = filtered.filter((e) => e.date > filter.dateAfter);
484
- }
485
- if (filter.dateBefore) {
486
- filtered = filtered.filter((e) => e.date < filter.dateBefore);
487
- }
488
- if (filter.offset && filter.offset > 0) {
489
- filtered = filtered.slice(filter.offset);
490
- }
491
- if (filter.limit && filter.limit > 0) {
492
- filtered = filtered.slice(0, filter.limit);
493
- }
494
- return filtered;
495
- }
496
- /**
497
- * Show a manifest entry by ID with optional file content.
498
- *
499
- * @param researchId - The manifest entry ID to look up
500
- * @param cwd - Optional working directory for path resolution
501
- * @returns The manifest entry with file content and existence flag
502
- *
503
- * @remarks
504
- * Reads the output file referenced by the entry if it exists on disk.
505
- * Throws CleoError NOT_FOUND if the entry ID is not found.
506
- *
507
- * @example
508
- * ```typescript
509
- * const entry = await showManifestEntry('T042-auth-research', '/project');
510
- * if (entry.fileExists) console.log(entry.fileContent);
511
- * ```
512
- *
513
- * @task T4787
514
- */
515
- export async function showManifestEntry(researchId, cwd) {
516
- const entries = await readExtendedManifest(cwd);
517
- const entry = entries.find((e) => e.id === researchId);
518
- if (!entry) {
519
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry '${researchId}' not found`);
520
- }
521
- const root = getProjectRoot(cwd);
522
- let fileContent = null;
523
- try {
524
- const filePath = resolve(root, entry.file);
525
- if (existsSync(filePath)) {
526
- fileContent = readFileSync(filePath, 'utf-8');
527
- }
528
- }
529
- catch {
530
- // File may not exist or be unreadable
531
- }
532
- return {
533
- ...entry,
534
- fileContent,
535
- fileExists: fileContent !== null,
536
- };
537
- }
538
- /**
539
- * Search manifest entries by text with relevance scoring.
540
- *
541
- * @param query - Text query to match against titles, topics, and findings
542
- * @param options - Optional confidence threshold and limit
543
- * @param cwd - Optional working directory for path resolution
544
- * @returns Manifest entries with relevance scores, sorted by relevance descending
545
- *
546
- * @remarks
547
- * Scores entries by matching against title (0.5), topics (0.3), key findings (0.2),
548
- * and ID (0.1). Filters by minimum confidence threshold (default 0.1).
549
- *
550
- * @example
551
- * ```typescript
552
- * const results = await searchManifest('authentication', { limit: 5 }, '/project');
553
- * ```
554
- *
555
- * @task T4787
556
- */
557
- export async function searchManifest(query, options, cwd) {
558
- const entries = await readExtendedManifest(cwd);
559
- const queryLower = query.toLowerCase();
560
- const scored = entries.map((entry) => {
561
- let score = 0;
562
- if (entry.title.toLowerCase().includes(queryLower)) {
563
- score += 0.5;
564
- }
565
- if (entry.topics.some((t) => t.toLowerCase().includes(queryLower))) {
566
- score += 0.3;
567
- }
568
- if (entry.key_findings?.some((f) => f.toLowerCase().includes(queryLower))) {
569
- score += 0.2;
570
- }
571
- if (entry.id.toLowerCase().includes(queryLower)) {
572
- score += 0.1;
573
- }
574
- return { entry, score };
575
- });
576
- const minConfidence = options?.confidence ?? 0.1;
577
- let results = scored.filter((s) => s.score >= minConfidence).sort((a, b) => b.score - a.score);
578
- if (options?.limit && options.limit > 0) {
579
- results = results.slice(0, options.limit);
580
- }
581
- return results.map((r) => ({
582
- ...r.entry,
583
- relevanceScore: Math.round(r.score * 100) / 100,
584
- }));
585
- }
586
- /**
587
- * Get pending manifest entries (partial, blocked, or needing followup).
588
- *
589
- * @param epicId - Optional epic ID to scope results
590
- * @param cwd - Optional working directory for path resolution
591
- * @returns Pending entries with total count and status breakdown
592
- *
593
- * @remarks
594
- * Includes entries with status "partial", "blocked", or any non-empty
595
- * needs_followup array. Optionally scopes to entries linked to an epic.
596
- *
597
- * @example
598
- * ```typescript
599
- * const { entries, total } = await pendingManifestEntries('T001', '/project');
600
- * ```
601
- *
602
- * @task T4787
603
- */
604
- export async function pendingManifestEntries(epicId, cwd) {
605
- const entries = await readExtendedManifest(cwd);
606
- let pending = entries.filter((e) => e.status === 'partial' ||
607
- e.status === 'blocked' ||
608
- (e.needs_followup && e.needs_followup.length > 0));
609
- if (epicId) {
610
- pending = pending.filter((e) => e.id.startsWith(epicId) || e.linked_tasks?.includes(epicId));
611
- }
612
- return {
613
- entries: pending,
614
- total: pending.length,
615
- byStatus: {
616
- partial: pending.filter((e) => e.status === 'partial').length,
617
- blocked: pending.filter((e) => e.status === 'blocked').length,
618
- needsFollowup: pending.filter((e) => e.needs_followup && e.needs_followup.length > 0).length,
619
- },
620
- };
621
- }
622
- /**
623
- * Get manifest-based research statistics.
624
- *
625
- * @param epicId - Optional epic ID to scope statistics
626
- * @param cwd - Optional working directory for path resolution
627
- * @returns Totals, status/type distributions, actionable count, and average findings
628
- *
629
- * @remarks
630
- * Aggregates manifest entries by status, agent type, and actionability.
631
- * Calculates average key findings per entry.
632
- *
633
- * @example
634
- * ```typescript
635
- * const stats = await manifestStats(undefined, '/project');
636
- * console.log(`${stats.total} entries, ${stats.actionable} actionable`);
637
- * ```
638
- *
639
- * @task T4787
640
- */
641
- export async function manifestStats(epicId, cwd) {
642
- const entries = await readExtendedManifest(cwd);
643
- let filtered = entries;
644
- if (epicId) {
645
- filtered = entries.filter((e) => e.id.startsWith(epicId) || e.linked_tasks?.includes(epicId));
646
- }
647
- const byStatus = {};
648
- const byType = {};
649
- let actionable = 0;
650
- let needsFollowup = 0;
651
- let totalFindings = 0;
652
- for (const entry of filtered) {
653
- byStatus[entry.status] = (byStatus[entry.status] || 0) + 1;
654
- byType[entry.agent_type] = (byType[entry.agent_type] || 0) + 1;
655
- if (entry.actionable)
656
- actionable++;
657
- if (entry.needs_followup && entry.needs_followup.length > 0)
658
- needsFollowup++;
659
- if (entry.key_findings)
660
- totalFindings += entry.key_findings.length;
661
- }
662
- return {
663
- total: filtered.length,
664
- byStatus,
665
- byType,
666
- actionable,
667
- needsFollowup,
668
- averageFindings: filtered.length > 0 ? Math.round((totalFindings / filtered.length) * 10) / 10 : 0,
669
- };
670
- }
671
- /**
672
- * Link a manifest entry to a task (adds taskId to linked_tasks array).
673
- *
674
- * @param taskId - The task ID to link
675
- * @param researchId - The manifest entry ID to link to
676
- * @param cwd - Optional working directory for path resolution
677
- * @returns Confirmation with link details and whether it was already linked
678
- *
679
- * @remarks
680
- * Appends the taskId to the entry's linked_tasks array if not already present.
681
- * Rewrites the entire MANIFEST.jsonl file after modification.
682
- *
683
- * @example
684
- * ```typescript
685
- * const result = await linkManifestEntry('T042', 'M001', '/project');
686
- * ```
687
- *
688
- * @task T4787
689
- */
690
- export async function linkManifestEntry(taskId, researchId, cwd) {
691
- const manifestPath = getManifestPath(cwd);
692
- const entries = await readExtendedManifest(cwd);
693
- const entryIndex = entries.findIndex((e) => e.id === researchId);
694
- if (entryIndex === -1) {
695
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry '${researchId}' not found`);
696
- }
697
- const entry = entries[entryIndex];
698
- if (entry.linked_tasks?.includes(taskId)) {
699
- return { taskId, researchId, alreadyLinked: true };
700
- }
701
- if (!entry.linked_tasks) {
702
- entry.linked_tasks = [];
703
- }
704
- entry.linked_tasks.push(taskId);
705
- const content = entries.map((e) => JSON.stringify(e)).join('\n') + '\n';
706
- await atomicWrite(manifestPath, content);
707
- return { taskId, researchId, alreadyLinked: false };
708
- }
709
- /**
710
- * Append an extended manifest entry.
711
- * Validates required fields before appending.
712
- *
713
- * @param entry - The ExtendedManifestEntry to append
714
- * @param cwd - Optional working directory for path resolution
715
- * @returns Confirmation with the entry ID and manifest file path
716
- *
717
- * @remarks
718
- * Validates that all required fields (id, file, title, date, status, agent_type,
719
- * topics, actionable) are present before writing.
720
- *
721
- * @example
722
- * ```typescript
723
- * const result = await appendExtendedManifest({ id: 'M002', ... }, '/project');
724
- * ```
725
- *
726
- * @task T4787
727
- */
728
- export async function appendExtendedManifest(entry, cwd) {
729
- const errors = [];
730
- if (!entry.id)
731
- errors.push('id is required');
732
- if (!entry.file)
733
- errors.push('file is required');
734
- if (!entry.title)
735
- errors.push('title is required');
736
- if (!entry.date)
737
- errors.push('date is required');
738
- if (!entry.status)
739
- errors.push('status is required');
740
- if (!entry.agent_type)
741
- errors.push('agent_type is required');
742
- if (!entry.topics)
743
- errors.push('topics is required');
744
- if (entry.actionable === undefined)
745
- errors.push('actionable is required');
746
- if (errors.length > 0) {
747
- throw new CleoError(ExitCode.VALIDATION_ERROR, `Invalid manifest entry: ${errors.join(', ')}`);
748
- }
749
- const manifestPath = getManifestPath(cwd);
750
- await appendJsonl(manifestPath, entry);
751
- return { entryId: entry.id, file: getManifestPath() };
752
- }
753
- /**
754
- * Archive manifest entries older than a date.
755
- *
756
- * @param beforeDate - ISO date string; entries older than this are archived
757
- * @param cwd - Optional working directory for path resolution
758
- * @returns Counts of archived and remaining entries, and the archive file path
759
- *
760
- * @remarks
761
- * Moves entries with a date before the threshold to MANIFEST.archive.jsonl
762
- * and rewrites the main MANIFEST.jsonl with the remaining entries.
763
- *
764
- * @example
765
- * ```typescript
766
- * const result = await archiveManifestEntries('2026-01-01', '/project');
767
- * console.log(`Archived ${result.archived} entries`);
768
- * ```
769
- *
770
- * @task T4787
771
- */
772
- export async function archiveManifestEntries(beforeDate, cwd) {
773
- const manifestPath = getManifestPath(cwd);
774
- const archivePath = getManifestArchivePath(cwd);
775
- const entries = await readExtendedManifest(cwd);
776
- const toArchive = entries.filter((e) => e.date < beforeDate);
777
- const toKeep = entries.filter((e) => e.date >= beforeDate);
778
- if (toArchive.length === 0) {
779
- return {
780
- archived: 0,
781
- remaining: entries.length,
782
- archiveFile: getManifestArchivePath(),
783
- };
784
- }
785
- // Append archived entries to archive file
786
- const existingArchive = await safeReadFile(archivePath);
787
- const archiveContent = toArchive.map((e) => JSON.stringify(e)).join('\n') + '\n';
788
- const fullArchive = existingArchive
789
- ? existingArchive.trimEnd() + '\n' + archiveContent
790
- : archiveContent;
791
- await atomicWrite(archivePath, fullArchive);
792
- // Rewrite main manifest with remaining entries
793
- const remainingContent = toKeep.length > 0 ? toKeep.map((e) => JSON.stringify(e)).join('\n') + '\n' : '';
794
- await atomicWrite(manifestPath, remainingContent);
795
- return {
796
- archived: toArchive.length,
797
- remaining: toKeep.length,
798
- archiveFile: getManifestArchivePath(),
799
- };
800
- }
801
- /**
802
- * Find manifest entries with overlapping topics but conflicting key_findings.
803
- *
804
- * @param cwd - Optional working directory for path resolution
805
- * @param params - Optional filter by topic
806
- * @returns Array of contradiction details between conflicting entries
807
- *
808
- * @remarks
809
- * Groups entries by shared topics and compares key_findings for disagreements.
810
- * Only returns pairs where findings actually differ.
811
- *
812
- * @example
813
- * ```typescript
814
- * const contradictions = await findContradictions('/project', { topic: 'auth' });
815
- * ```
816
- *
817
- * @task T4787
818
- */
819
- export async function findContradictions(cwd, params) {
820
- const entries = await readExtendedManifest(cwd);
821
- const byTopic = new Map();
822
- for (const entry of entries) {
823
- if (!entry.key_findings || entry.key_findings.length === 0)
824
- continue;
825
- for (const topic of entry.topics) {
826
- if (params?.topic && topic !== params.topic)
827
- continue;
828
- if (!byTopic.has(topic)) {
829
- byTopic.set(topic, []);
830
- }
831
- byTopic.get(topic).push(entry);
832
- }
833
- }
834
- const contradictions = [];
835
- const negationPairs = [
836
- [/\bdoes NOT\b/i, /\bdoes\b(?!.*\bnot\b)/i],
837
- [/\bcannot\b/i, /\bcan\b(?!.*\bnot\b)/i],
838
- [/\bno\s+\w+\s+required\b/i, /\brequired\b(?!.*\bno\b)/i],
839
- [
840
- /\bnot\s+(?:available|supported|possible|recommended)\b/i,
841
- /\b(?:available|supported|possible|recommended)\b(?!.*\bnot\b)/i,
842
- ],
843
- [/\bwithout\b/i, /\brequires?\b/i],
844
- [/\bavoid\b/i, /\buse\b/i],
845
- [/\bdeprecated\b/i, /\brecommended\b/i],
846
- [/\banti-pattern\b/i, /\bbest practice\b/i],
847
- ];
848
- for (const [topic, topicEntries] of byTopic) {
849
- if (topicEntries.length < 2)
850
- continue;
851
- for (let i = 0; i < topicEntries.length; i++) {
852
- for (let j = i + 1; j < topicEntries.length; j++) {
853
- const a = topicEntries[i];
854
- const b = topicEntries[j];
855
- const conflicts = [];
856
- for (const findingA of a.key_findings) {
857
- for (const findingB of b.key_findings) {
858
- for (const [patternNeg, patternPos] of negationPairs) {
859
- if ((patternNeg.test(findingA) && patternPos.test(findingB)) ||
860
- (patternPos.test(findingA) && patternNeg.test(findingB))) {
861
- conflicts.push(`"${findingA}" vs "${findingB}"`);
862
- break;
863
- }
864
- }
865
- }
866
- }
867
- if (conflicts.length > 0) {
868
- contradictions.push({
869
- entryA: a,
870
- entryB: b,
871
- topic,
872
- conflictDetails: conflicts.join('; '),
873
- });
874
- }
875
- }
876
- }
877
- }
878
- return contradictions;
879
- }
880
- /**
881
- * Identify research entries replaced by newer work on same topic.
882
- *
883
- * @param cwd - Optional working directory for path resolution
884
- * @param params - Optional filter by topic
885
- * @returns Array of superseded entry pairs with the replacement and obsoleted entries
886
- *
887
- * @remarks
888
- * Groups entries by shared topics and identifies older entries that have been
889
- * superseded by newer ones on the same subject.
890
- *
891
- * @example
892
- * ```typescript
893
- * const superseded = await findSuperseded('/project');
894
- * ```
895
- *
896
- * @task T4787
897
- */
898
- export async function findSuperseded(cwd, params) {
899
- const entries = await readExtendedManifest(cwd);
900
- const byTopicAndType = new Map();
901
- for (const entry of entries) {
902
- for (const topic of entry.topics) {
903
- if (params?.topic && topic !== params.topic)
904
- continue;
905
- const key = `${topic}::${entry.agent_type}`;
906
- if (!byTopicAndType.has(key)) {
907
- byTopicAndType.set(key, []);
908
- }
909
- byTopicAndType.get(key).push(entry);
910
- }
911
- }
912
- const superseded = [];
913
- const seenPairs = new Set();
914
- for (const [key, groupEntries] of byTopicAndType) {
915
- if (groupEntries.length < 2)
916
- continue;
917
- const topic = key.split('::')[0];
918
- const sorted = [...groupEntries].sort((a, b) => a.date.localeCompare(b.date));
919
- for (let i = 0; i < sorted.length - 1; i++) {
920
- const pairKey = `${sorted[i].id}::${sorted[sorted.length - 1].id}::${topic}`;
921
- if (seenPairs.has(pairKey))
922
- continue;
923
- seenPairs.add(pairKey);
924
- superseded.push({
925
- old: sorted[i],
926
- replacement: sorted[sorted.length - 1],
927
- topic,
928
- });
929
- }
930
- }
931
- return superseded;
932
- }
933
- /**
934
- * Read protocol injection content for a given protocol type.
935
- *
936
- * @param protocolType - Protocol name (e.g. "consensus", "contribution")
937
- * @param params - Optional parameters for template resolution
938
- * @param cwd - Optional working directory for path resolution
939
- * @returns Protocol content, file path, and metadata
940
- *
941
- * @remarks
942
- * Reads protocol template files from the agent-outputs directory and
943
- * resolves variables like taskId within the content.
944
- *
945
- * @example
946
- * ```typescript
947
- * const result = await readProtocolInjection('consensus', { taskId: 'T042' }, '/project');
948
- * console.log(result.content);
949
- * ```
950
- *
951
- * @task T4787
952
- */
953
- export async function readProtocolInjection(protocolType, params, cwd) {
954
- const root = getProjectRoot(cwd);
955
- const protocolLocations = [
956
- resolve(root, 'protocols', `${protocolType}.md`),
957
- resolve(root, 'skills', '_shared', `${protocolType}.md`),
958
- resolve(root, 'agents', 'cleo-subagent', 'protocols', `${protocolType}.md`),
959
- ];
960
- let protocolContent = null;
961
- let protocolPath = null;
962
- for (const loc of protocolLocations) {
963
- if (existsSync(loc)) {
964
- try {
965
- protocolContent = readFileSync(loc, 'utf-8');
966
- protocolPath = loc.replace(root + '/', '');
967
- break;
968
- }
969
- catch { }
970
- }
971
- }
972
- if (!protocolContent || !protocolPath) {
973
- throw new CleoError(ExitCode.NOT_FOUND, `Protocol '${protocolType}' not found in src/protocols/, skills/_shared/, or agents/cleo-subagent/protocols/`);
974
- }
975
- return {
976
- protocolType,
977
- content: protocolContent,
978
- path: protocolPath,
979
- contentLength: protocolContent.length,
980
- estimatedTokens: Math.ceil(protocolContent.length / 4),
981
- taskId: params?.taskId || null,
982
- variant: params?.variant || null,
983
- };
984
- }
985
- /**
986
- * Compact MANIFEST.jsonl by removing duplicate/stale entries.
987
- *
988
- * @param cwd - Optional working directory for path resolution
989
- * @returns Compaction summary with counts of removed entries
990
- *
991
- * @remarks
992
- * Removes malformed lines and deduplicates entries by ID (keeping the last
993
- * occurrence). Rewrites the file atomically.
994
- *
995
- * @example
996
- * ```typescript
997
- * const result = await compactManifest('/project');
998
- * console.log(`Removed ${result.duplicatesRemoved} duplicates`);
999
- * ```
1000
- *
1001
- * @task T4787
1002
- */
1003
- export async function compactManifest(cwd) {
1004
- const manifestPath = getManifestPath(cwd);
1005
- const content = await safeReadFile(manifestPath);
1006
- if (!content) {
1007
- return {
1008
- compacted: false,
1009
- originalLines: 0,
1010
- malformedRemoved: 0,
1011
- duplicatesRemoved: 0,
1012
- remainingEntries: 0,
1013
- };
1014
- }
1015
- const lines = content.split('\n');
1016
- const entries = [];
1017
- let malformedCount = 0;
1018
- for (const line of lines) {
1019
- const trimmed = line.trim();
1020
- if (!trimmed)
1021
- continue;
1022
- try {
1023
- entries.push(JSON.parse(trimmed));
1024
- }
1025
- catch {
1026
- malformedCount++;
1027
- }
1028
- }
1029
- const originalCount = entries.length + malformedCount;
1030
- const idMap = new Map();
1031
- for (const entry of entries) {
1032
- idMap.set(entry.id, entry);
1033
- }
1034
- const compacted = Array.from(idMap.values());
1035
- const duplicatesRemoved = entries.length - compacted.length;
1036
- const compactedContent = compacted.length > 0 ? compacted.map((e) => JSON.stringify(e)).join('\n') + '\n' : '';
1037
- await atomicWrite(manifestPath, compactedContent);
1038
- return {
1039
- compacted: true,
1040
- originalLines: originalCount,
1041
- malformedRemoved: malformedCount,
1042
- duplicatesRemoved,
1043
- remainingEntries: compacted.length,
1044
- };
1045
- }
1046
- /**
1047
- * Validate research entries for a task.
1048
- *
1049
- * @param taskId - The task ID to validate manifest entries for
1050
- * @param cwd - Optional working directory for path resolution
1051
- * @returns Validation result with issue details and severity counts
1052
- *
1053
- * @remarks
1054
- * Checks linked manifest entries for missing output files, empty key findings,
1055
- * and incomplete status. Reports issues at error or warning severity.
1056
- *
1057
- * @example
1058
- * ```typescript
1059
- * const result = await validateManifestEntries('T042', '/project');
1060
- * if (!result.valid) console.log(result.issues);
1061
- * ```
1062
- *
1063
- * @task T4787
1064
- */
1065
- export async function validateManifestEntries(taskId, cwd) {
1066
- const root = getProjectRoot(cwd);
1067
- const entries = await readExtendedManifest(cwd);
1068
- const linked = entries.filter((e) => e.id.startsWith(taskId) || e.linked_tasks?.includes(taskId));
1069
- if (linked.length === 0) {
1070
- return {
1071
- taskId,
1072
- valid: true,
1073
- entriesFound: 0,
1074
- issues: [],
1075
- errorCount: 0,
1076
- warningCount: 0,
1077
- };
1078
- }
1079
- const issues = [];
1080
- for (const entry of linked) {
1081
- if (!entry.id)
1082
- issues.push({ entryId: entry.id || '(unknown)', issue: 'Missing id', severity: 'error' });
1083
- if (!entry.file)
1084
- issues.push({ entryId: entry.id, issue: 'Missing file path', severity: 'error' });
1085
- if (!entry.title)
1086
- issues.push({ entryId: entry.id, issue: 'Missing title', severity: 'error' });
1087
- if (!entry.date)
1088
- issues.push({ entryId: entry.id, issue: 'Missing date', severity: 'error' });
1089
- if (!entry.status)
1090
- issues.push({ entryId: entry.id, issue: 'Missing status', severity: 'error' });
1091
- if (!entry.agent_type)
1092
- issues.push({ entryId: entry.id, issue: 'Missing agent_type', severity: 'error' });
1093
- if (entry.status && !['completed', 'partial', 'blocked'].includes(entry.status)) {
1094
- issues.push({
1095
- entryId: entry.id,
1096
- issue: `Invalid status: ${entry.status}`,
1097
- severity: 'error',
1098
- });
1099
- }
1100
- if (entry.file) {
1101
- const filePath = resolve(root, entry.file);
1102
- if (!existsSync(filePath)) {
1103
- issues.push({
1104
- entryId: entry.id,
1105
- issue: `Output file not found: ${entry.file}`,
1106
- severity: 'warning',
1107
- });
1108
- }
1109
- }
1110
- if (entry.agent_type === 'research' &&
1111
- (!entry.key_findings || entry.key_findings.length === 0)) {
1112
- issues.push({
1113
- entryId: entry.id,
1114
- issue: 'Research entry missing key_findings',
1115
- severity: 'warning',
1116
- });
1117
- }
1118
- }
1119
- return {
1120
- taskId,
1121
- valid: issues.filter((i) => i.severity === 'error').length === 0,
1122
- entriesFound: linked.length,
1123
- issues,
1124
- errorCount: issues.filter((i) => i.severity === 'error').length,
1125
- warningCount: issues.filter((i) => i.severity === 'warning').length,
1126
- };
1127
- }
1128
- // === T549 Wave 3: Consolidator (contradiction detection) ===
1129
- export * from './brain-consolidator.js';
1130
- // === BRAIN Lifecycle (temporal decay, consolidation, tier promotion) ===
1131
- export * from './brain-lifecycle.js';
1132
- export * from './brain-links.js';
1133
- export * from './brain-migration.js';
1134
- // === BRAIN Retrieval functions (3-layer pattern + budget-aware) ===
1135
- export * from './brain-retrieval.js';
1136
- export * from './brain-search.js';
1137
- // === BRAIN Memory modules (brain.db backed) ===
1138
- export * from './decisions.js';
1139
- // === T549 Wave 2: Extraction Gate ===
1140
- export * from './extraction-gate.js';
1141
- export * from './learnings.js';
1142
- // === JSONL Memory modules (legacy, still active) ===
1143
- export * from './patterns.js';
1144
- // === BRAIN Quality Feedback Loop (T555) ===
1145
- export * from './quality-feedback.js';
1146
- //# sourceMappingURL=index.js.map