@cleocode/core 2026.3.58 → 2026.3.59

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 (857) hide show
  1. package/dist/agents/agent-registry.d.ts +206 -0
  2. package/dist/agents/agent-registry.d.ts.map +1 -0
  3. package/dist/agents/health-monitor.d.ts +161 -0
  4. package/dist/agents/health-monitor.d.ts.map +1 -0
  5. package/dist/agents/index.d.ts +3 -1
  6. package/dist/agents/index.d.ts.map +1 -1
  7. package/dist/agents/retry.d.ts +57 -4
  8. package/dist/agents/retry.d.ts.map +1 -1
  9. package/dist/backfill/index.d.ts +27 -0
  10. package/dist/backfill/index.d.ts.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +880 -506
  14. package/dist/index.js.map +4 -4
  15. package/dist/intelligence/impact.d.ts +34 -1
  16. package/dist/intelligence/impact.d.ts.map +1 -1
  17. package/dist/intelligence/index.d.ts +2 -2
  18. package/dist/intelligence/index.d.ts.map +1 -1
  19. package/dist/intelligence/types.d.ts +60 -0
  20. package/dist/intelligence/types.d.ts.map +1 -1
  21. package/dist/internal.d.ts +5 -4
  22. package/dist/internal.d.ts.map +1 -1
  23. package/dist/lib/index.d.ts +10 -0
  24. package/dist/lib/index.d.ts.map +1 -0
  25. package/dist/lib/retry.d.ts +128 -0
  26. package/dist/lib/retry.d.ts.map +1 -0
  27. package/dist/nexus/sharing/index.d.ts +48 -2
  28. package/dist/nexus/sharing/index.d.ts.map +1 -1
  29. package/dist/stats/workflow-telemetry.d.ts +15 -0
  30. package/dist/stats/workflow-telemetry.d.ts.map +1 -1
  31. package/dist/store/cross-db-cleanup.d.ts +35 -0
  32. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  33. package/dist/tasks/complete.d.ts.map +1 -1
  34. package/dist/tasks/enforcement.d.ts.map +1 -1
  35. package/dist/tasks/epic-enforcement.d.ts +61 -0
  36. package/dist/tasks/epic-enforcement.d.ts.map +1 -1
  37. package/dist/tasks/pipeline-stage.d.ts +70 -1
  38. package/dist/tasks/pipeline-stage.d.ts.map +1 -1
  39. package/package.json +5 -5
  40. package/schemas/config.schema.json +37 -1547
  41. package/src/__tests__/sharing.test.ts +24 -0
  42. package/src/agents/__tests__/agent-registry.test.ts +351 -0
  43. package/src/agents/__tests__/health-monitor.test.ts +332 -0
  44. package/src/agents/agent-registry.ts +394 -0
  45. package/src/agents/health-monitor.ts +279 -0
  46. package/src/agents/index.ts +24 -1
  47. package/src/agents/retry.ts +57 -4
  48. package/src/backfill/index.ts +27 -0
  49. package/src/config.ts +3 -3
  50. package/src/index.ts +1 -0
  51. package/src/intelligence/__tests__/impact.test.ts +165 -1
  52. package/src/intelligence/impact.ts +203 -0
  53. package/src/intelligence/index.ts +3 -0
  54. package/src/intelligence/types.ts +76 -0
  55. package/src/internal.ts +20 -0
  56. package/src/lib/__tests__/retry.test.ts +321 -0
  57. package/src/lib/index.ts +16 -0
  58. package/src/lib/retry.ts +224 -0
  59. package/src/nexus/sharing/index.ts +142 -2
  60. package/src/stats/workflow-telemetry.ts +15 -0
  61. package/src/store/__tests__/session-store.test.ts +43 -7
  62. package/src/store/__tests__/task-store.test.ts +1 -1
  63. package/src/store/__tests__/test-db-helper.ts +7 -3
  64. package/src/store/cross-db-cleanup.ts +35 -0
  65. package/src/tasks/__tests__/epic-enforcement.test.ts +9 -4
  66. package/src/tasks/__tests__/minimal-test.test.ts +2 -2
  67. package/src/tasks/__tests__/update.test.ts +25 -25
  68. package/src/tasks/complete.ts +11 -6
  69. package/src/tasks/enforcement.ts +6 -3
  70. package/src/tasks/epic-enforcement.ts +61 -0
  71. package/src/tasks/pipeline-stage.ts +70 -1
  72. package/templates/config.template.json +5 -116
  73. package/templates/global-config.template.json +2 -44
  74. package/dist/adapters/adapter-registry.js +0 -64
  75. package/dist/adapters/adapter-registry.js.map +0 -1
  76. package/dist/adapters/discovery.js +0 -83
  77. package/dist/adapters/discovery.js.map +0 -1
  78. package/dist/adapters/index.js +0 -9
  79. package/dist/adapters/index.js.map +0 -1
  80. package/dist/adapters/manager.js +0 -260
  81. package/dist/adapters/manager.js.map +0 -1
  82. package/dist/admin/export-tasks.js +0 -171
  83. package/dist/admin/export-tasks.js.map +0 -1
  84. package/dist/admin/export.js +0 -103
  85. package/dist/admin/export.js.map +0 -1
  86. package/dist/admin/help.js +0 -106
  87. package/dist/admin/help.js.map +0 -1
  88. package/dist/admin/import-tasks.js +0 -182
  89. package/dist/admin/import-tasks.js.map +0 -1
  90. package/dist/admin/import.js +0 -129
  91. package/dist/admin/import.js.map +0 -1
  92. package/dist/admin/index.js +0 -13
  93. package/dist/admin/index.js.map +0 -1
  94. package/dist/adrs/find.js +0 -134
  95. package/dist/adrs/find.js.map +0 -1
  96. package/dist/adrs/index.js +0 -15
  97. package/dist/adrs/index.js.map +0 -1
  98. package/dist/adrs/link-pipeline.js +0 -160
  99. package/dist/adrs/link-pipeline.js.map +0 -1
  100. package/dist/adrs/list.js +0 -43
  101. package/dist/adrs/list.js.map +0 -1
  102. package/dist/adrs/parse.js +0 -51
  103. package/dist/adrs/parse.js.map +0 -1
  104. package/dist/adrs/show.js +0 -22
  105. package/dist/adrs/show.js.map +0 -1
  106. package/dist/adrs/sync.js +0 -188
  107. package/dist/adrs/sync.js.map +0 -1
  108. package/dist/adrs/types.js +0 -9
  109. package/dist/adrs/types.js.map +0 -1
  110. package/dist/adrs/validate.js +0 -57
  111. package/dist/adrs/validate.js.map +0 -1
  112. package/dist/agents/agent-schema.js +0 -80
  113. package/dist/agents/agent-schema.js.map +0 -1
  114. package/dist/agents/capacity.js +0 -116
  115. package/dist/agents/capacity.js.map +0 -1
  116. package/dist/agents/index.js +0 -21
  117. package/dist/agents/index.js.map +0 -1
  118. package/dist/agents/registry.js +0 -314
  119. package/dist/agents/registry.js.map +0 -1
  120. package/dist/agents/retry.js +0 -176
  121. package/dist/agents/retry.js.map +0 -1
  122. package/dist/audit-prune.js +0 -94
  123. package/dist/audit-prune.js.map +0 -1
  124. package/dist/audit.js +0 -68
  125. package/dist/audit.js.map +0 -1
  126. package/dist/bootstrap.js +0 -260
  127. package/dist/bootstrap.js.map +0 -1
  128. package/dist/caamp/adapter.js +0 -434
  129. package/dist/caamp/adapter.js.map +0 -1
  130. package/dist/caamp/capability-check.js +0 -38
  131. package/dist/caamp/capability-check.js.map +0 -1
  132. package/dist/caamp/index.js +0 -23
  133. package/dist/caamp/index.js.map +0 -1
  134. package/dist/caamp-init.js +0 -16
  135. package/dist/caamp-init.js.map +0 -1
  136. package/dist/cleo.js +0 -267
  137. package/dist/cleo.js.map +0 -1
  138. package/dist/codebase-map/analyzers/architecture.js +0 -130
  139. package/dist/codebase-map/analyzers/architecture.js.map +0 -1
  140. package/dist/codebase-map/analyzers/concerns.js +0 -122
  141. package/dist/codebase-map/analyzers/concerns.js.map +0 -1
  142. package/dist/codebase-map/analyzers/conventions.js +0 -149
  143. package/dist/codebase-map/analyzers/conventions.js.map +0 -1
  144. package/dist/codebase-map/analyzers/integrations.js +0 -108
  145. package/dist/codebase-map/analyzers/integrations.js.map +0 -1
  146. package/dist/codebase-map/analyzers/stack.js +0 -117
  147. package/dist/codebase-map/analyzers/stack.js.map +0 -1
  148. package/dist/codebase-map/analyzers/structure.js +0 -137
  149. package/dist/codebase-map/analyzers/structure.js.map +0 -1
  150. package/dist/codebase-map/analyzers/testing.js +0 -118
  151. package/dist/codebase-map/analyzers/testing.js.map +0 -1
  152. package/dist/codebase-map/index.js +0 -57
  153. package/dist/codebase-map/index.js.map +0 -1
  154. package/dist/codebase-map/store.js +0 -122
  155. package/dist/codebase-map/store.js.map +0 -1
  156. package/dist/codebase-map/summary.js +0 -152
  157. package/dist/codebase-map/summary.js.map +0 -1
  158. package/dist/compliance/index.js +0 -288
  159. package/dist/compliance/index.js.map +0 -1
  160. package/dist/compliance/protocol-enforcement.js +0 -332
  161. package/dist/compliance/protocol-enforcement.js.map +0 -1
  162. package/dist/compliance/protocol-rules.js +0 -786
  163. package/dist/compliance/protocol-rules.js.map +0 -1
  164. package/dist/compliance/protocol-types.js +0 -80
  165. package/dist/compliance/protocol-types.js.map +0 -1
  166. package/dist/compliance/store.js +0 -53
  167. package/dist/compliance/store.js.map +0 -1
  168. package/dist/config/build-config.js +0 -29
  169. package/dist/config/build-config.js.map +0 -1
  170. package/dist/config.js +0 -287
  171. package/dist/config.js.map +0 -1
  172. package/dist/constants.js +0 -18
  173. package/dist/constants.js.map +0 -1
  174. package/dist/context/index.js +0 -137
  175. package/dist/context/index.js.map +0 -1
  176. package/dist/engine-result.js +0 -12
  177. package/dist/engine-result.js.map +0 -1
  178. package/dist/error-catalog.js +0 -404
  179. package/dist/error-catalog.js.map +0 -1
  180. package/dist/error-registry.js +0 -393
  181. package/dist/error-registry.js.map +0 -1
  182. package/dist/errors.js +0 -167
  183. package/dist/errors.js.map +0 -1
  184. package/dist/hooks/handlers/error-hooks.js +0 -43
  185. package/dist/hooks/handlers/error-hooks.js.map +0 -1
  186. package/dist/hooks/handlers/file-hooks.js +0 -80
  187. package/dist/hooks/handlers/file-hooks.js.map +0 -1
  188. package/dist/hooks/handlers/index.js +0 -19
  189. package/dist/hooks/handlers/index.js.map +0 -1
  190. package/dist/hooks/handlers/mcp-hooks.js +0 -80
  191. package/dist/hooks/handlers/mcp-hooks.js.map +0 -1
  192. package/dist/hooks/handlers/session-hooks.js +0 -73
  193. package/dist/hooks/handlers/session-hooks.js.map +0 -1
  194. package/dist/hooks/handlers/task-hooks.js +0 -63
  195. package/dist/hooks/handlers/task-hooks.js.map +0 -1
  196. package/dist/hooks/index.js +0 -13
  197. package/dist/hooks/index.js.map +0 -1
  198. package/dist/hooks/payload-schemas.js +0 -163
  199. package/dist/hooks/payload-schemas.js.map +0 -1
  200. package/dist/hooks/provider-hooks.js +0 -34
  201. package/dist/hooks/provider-hooks.js.map +0 -1
  202. package/dist/hooks/registry.js +0 -176
  203. package/dist/hooks/registry.js.map +0 -1
  204. package/dist/hooks/types.js +0 -62
  205. package/dist/hooks/types.js.map +0 -1
  206. package/dist/hooks.js +0 -136
  207. package/dist/hooks.js.map +0 -1
  208. package/dist/init.js +0 -711
  209. package/dist/init.js.map +0 -1
  210. package/dist/inject/index.js +0 -82
  211. package/dist/inject/index.js.map +0 -1
  212. package/dist/injection.js +0 -343
  213. package/dist/injection.js.map +0 -1
  214. package/dist/intelligence/impact.js +0 -499
  215. package/dist/intelligence/impact.js.map +0 -1
  216. package/dist/intelligence/index.js +0 -17
  217. package/dist/intelligence/index.js.map +0 -1
  218. package/dist/intelligence/patterns.js +0 -492
  219. package/dist/intelligence/patterns.js.map +0 -1
  220. package/dist/intelligence/prediction.js +0 -499
  221. package/dist/intelligence/prediction.js.map +0 -1
  222. package/dist/intelligence/types.js +0 -13
  223. package/dist/intelligence/types.js.map +0 -1
  224. package/dist/internal.js +0 -258
  225. package/dist/internal.js.map +0 -1
  226. package/dist/issue/create.js +0 -121
  227. package/dist/issue/create.js.map +0 -1
  228. package/dist/issue/diagnostics.js +0 -59
  229. package/dist/issue/diagnostics.js.map +0 -1
  230. package/dist/issue/index.js +0 -10
  231. package/dist/issue/index.js.map +0 -1
  232. package/dist/issue/template-parser.js +0 -267
  233. package/dist/issue/template-parser.js.map +0 -1
  234. package/dist/json-schema-validator.js +0 -76
  235. package/dist/json-schema-validator.js.map +0 -1
  236. package/dist/lifecycle/chain-composition.js +0 -152
  237. package/dist/lifecycle/chain-composition.js.map +0 -1
  238. package/dist/lifecycle/chain-store.js +0 -246
  239. package/dist/lifecycle/chain-store.js.map +0 -1
  240. package/dist/lifecycle/consolidate-rcasd.js +0 -352
  241. package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
  242. package/dist/lifecycle/default-chain.js +0 -167
  243. package/dist/lifecycle/default-chain.js.map +0 -1
  244. package/dist/lifecycle/evidence.js +0 -180
  245. package/dist/lifecycle/evidence.js.map +0 -1
  246. package/dist/lifecycle/frontmatter.js +0 -363
  247. package/dist/lifecycle/frontmatter.js.map +0 -1
  248. package/dist/lifecycle/index.js +0 -753
  249. package/dist/lifecycle/index.js.map +0 -1
  250. package/dist/lifecycle/pipeline.js +0 -656
  251. package/dist/lifecycle/pipeline.js.map +0 -1
  252. package/dist/lifecycle/rcasd-index.js +0 -326
  253. package/dist/lifecycle/rcasd-index.js.map +0 -1
  254. package/dist/lifecycle/rcasd-paths.js +0 -220
  255. package/dist/lifecycle/rcasd-paths.js.map +0 -1
  256. package/dist/lifecycle/resume.js +0 -864
  257. package/dist/lifecycle/resume.js.map +0 -1
  258. package/dist/lifecycle/stage-artifacts.js +0 -94
  259. package/dist/lifecycle/stage-artifacts.js.map +0 -1
  260. package/dist/lifecycle/stages.js +0 -534
  261. package/dist/lifecycle/stages.js.map +0 -1
  262. package/dist/lifecycle/state-machine.js +0 -516
  263. package/dist/lifecycle/state-machine.js.map +0 -1
  264. package/dist/lifecycle/tessera-engine.js +0 -249
  265. package/dist/lifecycle/tessera-engine.js.map +0 -1
  266. package/dist/logger.js +0 -140
  267. package/dist/logger.js.map +0 -1
  268. package/dist/mcp/index.js +0 -146
  269. package/dist/mcp/index.js.map +0 -1
  270. package/dist/memory/auto-extract.js +0 -143
  271. package/dist/memory/auto-extract.js.map +0 -1
  272. package/dist/memory/brain-embedding.js +0 -49
  273. package/dist/memory/brain-embedding.js.map +0 -1
  274. package/dist/memory/brain-lifecycle.js +0 -298
  275. package/dist/memory/brain-lifecycle.js.map +0 -1
  276. package/dist/memory/brain-links.js +0 -148
  277. package/dist/memory/brain-links.js.map +0 -1
  278. package/dist/memory/brain-migration.js +0 -149
  279. package/dist/memory/brain-migration.js.map +0 -1
  280. package/dist/memory/brain-reasoning.js +0 -215
  281. package/dist/memory/brain-reasoning.js.map +0 -1
  282. package/dist/memory/brain-retrieval.js +0 -474
  283. package/dist/memory/brain-retrieval.js.map +0 -1
  284. package/dist/memory/brain-row-types.js +0 -10
  285. package/dist/memory/brain-row-types.js.map +0 -1
  286. package/dist/memory/brain-search.js +0 -519
  287. package/dist/memory/brain-search.js.map +0 -1
  288. package/dist/memory/brain-similarity.js +0 -145
  289. package/dist/memory/brain-similarity.js.map +0 -1
  290. package/dist/memory/claude-mem-migration.js +0 -277
  291. package/dist/memory/claude-mem-migration.js.map +0 -1
  292. package/dist/memory/decisions.js +0 -148
  293. package/dist/memory/decisions.js.map +0 -1
  294. package/dist/memory/engine-compat.js +0 -1030
  295. package/dist/memory/engine-compat.js.map +0 -1
  296. package/dist/memory/index.js +0 -773
  297. package/dist/memory/index.js.map +0 -1
  298. package/dist/memory/learnings.js +0 -121
  299. package/dist/memory/learnings.js.map +0 -1
  300. package/dist/memory/memory-bridge.js +0 -289
  301. package/dist/memory/memory-bridge.js.map +0 -1
  302. package/dist/memory/patterns.js +0 -122
  303. package/dist/memory/patterns.js.map +0 -1
  304. package/dist/memory/pipeline-manifest-sqlite.js +0 -975
  305. package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
  306. package/dist/memory/session-memory.js +0 -226
  307. package/dist/memory/session-memory.js.map +0 -1
  308. package/dist/metrics/ab-test.js +0 -260
  309. package/dist/metrics/ab-test.js.map +0 -1
  310. package/dist/metrics/aggregation.js +0 -363
  311. package/dist/metrics/aggregation.js.map +0 -1
  312. package/dist/metrics/common.js +0 -64
  313. package/dist/metrics/common.js.map +0 -1
  314. package/dist/metrics/enums.js +0 -78
  315. package/dist/metrics/enums.js.map +0 -1
  316. package/dist/metrics/index.js +0 -19
  317. package/dist/metrics/index.js.map +0 -1
  318. package/dist/metrics/model-provider-registry.js +0 -88
  319. package/dist/metrics/model-provider-registry.js.map +0 -1
  320. package/dist/metrics/otel-integration.js +0 -263
  321. package/dist/metrics/otel-integration.js.map +0 -1
  322. package/dist/metrics/provider-detection.js +0 -103
  323. package/dist/metrics/provider-detection.js.map +0 -1
  324. package/dist/metrics/token-estimation.js +0 -253
  325. package/dist/metrics/token-estimation.js.map +0 -1
  326. package/dist/metrics/token-service.js +0 -450
  327. package/dist/metrics/token-service.js.map +0 -1
  328. package/dist/migration/agent-outputs.js +0 -316
  329. package/dist/migration/agent-outputs.js.map +0 -1
  330. package/dist/migration/checksum.js +0 -92
  331. package/dist/migration/checksum.js.map +0 -1
  332. package/dist/migration/index.js +0 -282
  333. package/dist/migration/index.js.map +0 -1
  334. package/dist/migration/logger.js +0 -360
  335. package/dist/migration/logger.js.map +0 -1
  336. package/dist/migration/preflight.js +0 -9
  337. package/dist/migration/preflight.js.map +0 -1
  338. package/dist/migration/state.js +0 -421
  339. package/dist/migration/state.js.map +0 -1
  340. package/dist/migration/validate.js +0 -241
  341. package/dist/migration/validate.js.map +0 -1
  342. package/dist/nexus/deps.js +0 -375
  343. package/dist/nexus/deps.js.map +0 -1
  344. package/dist/nexus/discover.js +0 -288
  345. package/dist/nexus/discover.js.map +0 -1
  346. package/dist/nexus/hash.js +0 -10
  347. package/dist/nexus/hash.js.map +0 -1
  348. package/dist/nexus/index.js +0 -38
  349. package/dist/nexus/index.js.map +0 -1
  350. package/dist/nexus/migrate-json-to-sqlite.js +0 -115
  351. package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
  352. package/dist/nexus/permissions.js +0 -105
  353. package/dist/nexus/permissions.js.map +0 -1
  354. package/dist/nexus/query.js +0 -175
  355. package/dist/nexus/query.js.map +0 -1
  356. package/dist/nexus/registry.js +0 -584
  357. package/dist/nexus/registry.js.map +0 -1
  358. package/dist/nexus/sharing/index.js +0 -179
  359. package/dist/nexus/sharing/index.js.map +0 -1
  360. package/dist/nexus/transfer-types.js +0 -8
  361. package/dist/nexus/transfer-types.js.map +0 -1
  362. package/dist/nexus/transfer.js +0 -263
  363. package/dist/nexus/transfer.js.map +0 -1
  364. package/dist/observability/index.js +0 -103
  365. package/dist/observability/index.js.map +0 -1
  366. package/dist/observability/log-filter.js +0 -63
  367. package/dist/observability/log-filter.js.map +0 -1
  368. package/dist/observability/log-parser.js +0 -99
  369. package/dist/observability/log-parser.js.map +0 -1
  370. package/dist/observability/log-reader.js +0 -139
  371. package/dist/observability/log-reader.js.map +0 -1
  372. package/dist/observability/types.js +0 -19
  373. package/dist/observability/types.js.map +0 -1
  374. package/dist/orchestration/analyze.js +0 -107
  375. package/dist/orchestration/analyze.js.map +0 -1
  376. package/dist/orchestration/bootstrap.js +0 -132
  377. package/dist/orchestration/bootstrap.js.map +0 -1
  378. package/dist/orchestration/context.js +0 -56
  379. package/dist/orchestration/context.js.map +0 -1
  380. package/dist/orchestration/critical-path.js +0 -100
  381. package/dist/orchestration/critical-path.js.map +0 -1
  382. package/dist/orchestration/index.js +0 -286
  383. package/dist/orchestration/index.js.map +0 -1
  384. package/dist/orchestration/parallel.js +0 -89
  385. package/dist/orchestration/parallel.js.map +0 -1
  386. package/dist/orchestration/protocol-validators.js +0 -524
  387. package/dist/orchestration/protocol-validators.js.map +0 -1
  388. package/dist/orchestration/skill-ops.js +0 -98
  389. package/dist/orchestration/skill-ops.js.map +0 -1
  390. package/dist/orchestration/status.js +0 -107
  391. package/dist/orchestration/status.js.map +0 -1
  392. package/dist/orchestration/unblock.js +0 -103
  393. package/dist/orchestration/unblock.js.map +0 -1
  394. package/dist/orchestration/validate-spawn.js +0 -67
  395. package/dist/orchestration/validate-spawn.js.map +0 -1
  396. package/dist/orchestration/waves.js +0 -86
  397. package/dist/orchestration/waves.js.map +0 -1
  398. package/dist/otel/index.js +0 -163
  399. package/dist/otel/index.js.map +0 -1
  400. package/dist/output.js +0 -132
  401. package/dist/output.js.map +0 -1
  402. package/dist/pagination.js +0 -61
  403. package/dist/pagination.js.map +0 -1
  404. package/dist/paths.js +0 -337
  405. package/dist/paths.js.map +0 -1
  406. package/dist/phases/deps.js +0 -369
  407. package/dist/phases/deps.js.map +0 -1
  408. package/dist/phases/index.js +0 -349
  409. package/dist/phases/index.js.map +0 -1
  410. package/dist/pipeline/index.js +0 -10
  411. package/dist/pipeline/index.js.map +0 -1
  412. package/dist/pipeline/phase.js +0 -45
  413. package/dist/pipeline/phase.js.map +0 -1
  414. package/dist/platform.js +0 -211
  415. package/dist/platform.js.map +0 -1
  416. package/dist/project-info.js +0 -84
  417. package/dist/project-info.js.map +0 -1
  418. package/dist/reconciliation/index.js +0 -10
  419. package/dist/reconciliation/index.js.map +0 -1
  420. package/dist/reconciliation/link-store.js +0 -129
  421. package/dist/reconciliation/link-store.js.map +0 -1
  422. package/dist/reconciliation/reconciliation-engine.js +0 -298
  423. package/dist/reconciliation/reconciliation-engine.js.map +0 -1
  424. package/dist/release/artifacts.js +0 -427
  425. package/dist/release/artifacts.js.map +0 -1
  426. package/dist/release/changelog-writer.js +0 -151
  427. package/dist/release/changelog-writer.js.map +0 -1
  428. package/dist/release/channel.js +0 -144
  429. package/dist/release/channel.js.map +0 -1
  430. package/dist/release/ci.js +0 -166
  431. package/dist/release/ci.js.map +0 -1
  432. package/dist/release/github-pr.js +0 -225
  433. package/dist/release/github-pr.js.map +0 -1
  434. package/dist/release/guards.js +0 -116
  435. package/dist/release/guards.js.map +0 -1
  436. package/dist/release/index.js +0 -22
  437. package/dist/release/index.js.map +0 -1
  438. package/dist/release/release-config.js +0 -158
  439. package/dist/release/release-config.js.map +0 -1
  440. package/dist/release/release-manifest.js +0 -1019
  441. package/dist/release/release-manifest.js.map +0 -1
  442. package/dist/release/version-bump.js +0 -255
  443. package/dist/release/version-bump.js.map +0 -1
  444. package/dist/remote/index.js +0 -257
  445. package/dist/remote/index.js.map +0 -1
  446. package/dist/repair.js +0 -89
  447. package/dist/repair.js.map +0 -1
  448. package/dist/research/index.js +0 -2
  449. package/dist/research/index.js.map +0 -1
  450. package/dist/roadmap/index.js +0 -59
  451. package/dist/roadmap/index.js.map +0 -1
  452. package/dist/routing/capability-matrix.js +0 -1550
  453. package/dist/routing/capability-matrix.js.map +0 -1
  454. package/dist/routing/index.js +0 -9
  455. package/dist/routing/index.js.map +0 -1
  456. package/dist/scaffold.js +0 -1158
  457. package/dist/scaffold.js.map +0 -1
  458. package/dist/schema-management.js +0 -295
  459. package/dist/schema-management.js.map +0 -1
  460. package/dist/security/index.js +0 -9
  461. package/dist/security/index.js.map +0 -1
  462. package/dist/security/input-sanitization.js +0 -321
  463. package/dist/security/input-sanitization.js.map +0 -1
  464. package/dist/sequence/index.js +0 -295
  465. package/dist/sequence/index.js.map +0 -1
  466. package/dist/sessions/assumptions.js +0 -54
  467. package/dist/sessions/assumptions.js.map +0 -1
  468. package/dist/sessions/briefing.js +0 -377
  469. package/dist/sessions/briefing.js.map +0 -1
  470. package/dist/sessions/context-alert.js +0 -222
  471. package/dist/sessions/context-alert.js.map +0 -1
  472. package/dist/sessions/context-inject.js +0 -61
  473. package/dist/sessions/context-inject.js.map +0 -1
  474. package/dist/sessions/context-monitor.js +0 -98
  475. package/dist/sessions/context-monitor.js.map +0 -1
  476. package/dist/sessions/decisions.js +0 -65
  477. package/dist/sessions/decisions.js.map +0 -1
  478. package/dist/sessions/find.js +0 -63
  479. package/dist/sessions/find.js.map +0 -1
  480. package/dist/sessions/handoff.js +0 -328
  481. package/dist/sessions/handoff.js.map +0 -1
  482. package/dist/sessions/hitl-warnings.js +0 -254
  483. package/dist/sessions/hitl-warnings.js.map +0 -1
  484. package/dist/sessions/index.js +0 -318
  485. package/dist/sessions/index.js.map +0 -1
  486. package/dist/sessions/session-archive.js +0 -40
  487. package/dist/sessions/session-archive.js.map +0 -1
  488. package/dist/sessions/session-cleanup.js +0 -59
  489. package/dist/sessions/session-cleanup.js.map +0 -1
  490. package/dist/sessions/session-drift.js +0 -134
  491. package/dist/sessions/session-drift.js.map +0 -1
  492. package/dist/sessions/session-enforcement.js +0 -140
  493. package/dist/sessions/session-enforcement.js.map +0 -1
  494. package/dist/sessions/session-grade.js +0 -253
  495. package/dist/sessions/session-grade.js.map +0 -1
  496. package/dist/sessions/session-history.js +0 -42
  497. package/dist/sessions/session-history.js.map +0 -1
  498. package/dist/sessions/session-id.js +0 -81
  499. package/dist/sessions/session-id.js.map +0 -1
  500. package/dist/sessions/session-memory-bridge.js +0 -52
  501. package/dist/sessions/session-memory-bridge.js.map +0 -1
  502. package/dist/sessions/session-show.js +0 -24
  503. package/dist/sessions/session-show.js.map +0 -1
  504. package/dist/sessions/session-stats.js +0 -69
  505. package/dist/sessions/session-stats.js.map +0 -1
  506. package/dist/sessions/session-suspend.js +0 -39
  507. package/dist/sessions/session-suspend.js.map +0 -1
  508. package/dist/sessions/session-switch.js +0 -51
  509. package/dist/sessions/session-switch.js.map +0 -1
  510. package/dist/sessions/session-view.js +0 -76
  511. package/dist/sessions/session-view.js.map +0 -1
  512. package/dist/sessions/statusline-setup.js +0 -85
  513. package/dist/sessions/statusline-setup.js.map +0 -1
  514. package/dist/sessions/types.js +0 -8
  515. package/dist/sessions/types.js.map +0 -1
  516. package/dist/signaldock/claude-code-transport.js +0 -107
  517. package/dist/signaldock/claude-code-transport.js.map +0 -1
  518. package/dist/signaldock/factory.js +0 -25
  519. package/dist/signaldock/factory.js.map +0 -1
  520. package/dist/signaldock/index.js +0 -9
  521. package/dist/signaldock/index.js.map +0 -1
  522. package/dist/signaldock/signaldock-transport.js +0 -122
  523. package/dist/signaldock/signaldock-transport.js.map +0 -1
  524. package/dist/signaldock/transport.js +0 -11
  525. package/dist/signaldock/transport.js.map +0 -1
  526. package/dist/signaldock/types.js +0 -11
  527. package/dist/signaldock/types.js.map +0 -1
  528. package/dist/skills/agents/config.js +0 -94
  529. package/dist/skills/agents/config.js.map +0 -1
  530. package/dist/skills/agents/install.js +0 -116
  531. package/dist/skills/agents/install.js.map +0 -1
  532. package/dist/skills/agents/registry.js +0 -161
  533. package/dist/skills/agents/registry.js.map +0 -1
  534. package/dist/skills/discovery.js +0 -333
  535. package/dist/skills/discovery.js.map +0 -1
  536. package/dist/skills/dispatch.js +0 -347
  537. package/dist/skills/dispatch.js.map +0 -1
  538. package/dist/skills/dynamic-skill-generator.js +0 -100
  539. package/dist/skills/dynamic-skill-generator.js.map +0 -1
  540. package/dist/skills/index.js +0 -44
  541. package/dist/skills/index.js.map +0 -1
  542. package/dist/skills/injection/subagent.js +0 -195
  543. package/dist/skills/injection/subagent.js.map +0 -1
  544. package/dist/skills/injection/token.js +0 -260
  545. package/dist/skills/injection/token.js.map +0 -1
  546. package/dist/skills/install.js +0 -40
  547. package/dist/skills/install.js.map +0 -1
  548. package/dist/skills/manifests/contribution.js +0 -175
  549. package/dist/skills/manifests/contribution.js.map +0 -1
  550. package/dist/skills/manifests/research.js +0 -281
  551. package/dist/skills/manifests/research.js.map +0 -1
  552. package/dist/skills/manifests/resolver.js +0 -146
  553. package/dist/skills/manifests/resolver.js.map +0 -1
  554. package/dist/skills/marketplace.js +0 -90
  555. package/dist/skills/marketplace.js.map +0 -1
  556. package/dist/skills/orchestrator/spawn.js +0 -178
  557. package/dist/skills/orchestrator/spawn.js.map +0 -1
  558. package/dist/skills/orchestrator/startup.js +0 -451
  559. package/dist/skills/orchestrator/startup.js.map +0 -1
  560. package/dist/skills/orchestrator/validator.js +0 -301
  561. package/dist/skills/orchestrator/validator.js.map +0 -1
  562. package/dist/skills/precedence-integration.js +0 -73
  563. package/dist/skills/precedence-integration.js.map +0 -1
  564. package/dist/skills/precedence-types.js +0 -16
  565. package/dist/skills/precedence-types.js.map +0 -1
  566. package/dist/skills/routing-table.js +0 -63
  567. package/dist/skills/routing-table.js.map +0 -1
  568. package/dist/skills/skill-paths.js +0 -220
  569. package/dist/skills/skill-paths.js.map +0 -1
  570. package/dist/skills/test-utility.js +0 -55
  571. package/dist/skills/test-utility.js.map +0 -1
  572. package/dist/skills/types.js +0 -118
  573. package/dist/skills/types.js.map +0 -1
  574. package/dist/skills/validation.js +0 -183
  575. package/dist/skills/validation.js.map +0 -1
  576. package/dist/skills/version.js +0 -57
  577. package/dist/skills/version.js.map +0 -1
  578. package/dist/snapshot/index.js +0 -188
  579. package/dist/snapshot/index.js.map +0 -1
  580. package/dist/spawn/adapter-registry.js +0 -246
  581. package/dist/spawn/adapter-registry.js.map +0 -1
  582. package/dist/spawn/index.js +0 -10
  583. package/dist/spawn/index.js.map +0 -1
  584. package/dist/stats/index.js +0 -339
  585. package/dist/stats/index.js.map +0 -1
  586. package/dist/sticky/archive.js +0 -47
  587. package/dist/sticky/archive.js.map +0 -1
  588. package/dist/sticky/convert.js +0 -235
  589. package/dist/sticky/convert.js.map +0 -1
  590. package/dist/sticky/create.js +0 -48
  591. package/dist/sticky/create.js.map +0 -1
  592. package/dist/sticky/id.js +0 -35
  593. package/dist/sticky/id.js.map +0 -1
  594. package/dist/sticky/index.js +0 -16
  595. package/dist/sticky/index.js.map +0 -1
  596. package/dist/sticky/list.js +0 -44
  597. package/dist/sticky/list.js.map +0 -1
  598. package/dist/sticky/purge.js +0 -45
  599. package/dist/sticky/purge.js.map +0 -1
  600. package/dist/sticky/show.js +0 -42
  601. package/dist/sticky/show.js.map +0 -1
  602. package/dist/sticky/types.js +0 -10
  603. package/dist/sticky/types.js.map +0 -1
  604. package/dist/store/atomic.js +0 -167
  605. package/dist/store/atomic.js.map +0 -1
  606. package/dist/store/backup.js +0 -94
  607. package/dist/store/backup.js.map +0 -1
  608. package/dist/store/brain-accessor.js +0 -397
  609. package/dist/store/brain-accessor.js.map +0 -1
  610. package/dist/store/brain-schema.js +0 -212
  611. package/dist/store/brain-schema.js.map +0 -1
  612. package/dist/store/brain-sqlite.js +0 -271
  613. package/dist/store/brain-sqlite.js.map +0 -1
  614. package/dist/store/cache.js +0 -168
  615. package/dist/store/cache.js.map +0 -1
  616. package/dist/store/chain-schema.js +0 -51
  617. package/dist/store/chain-schema.js.map +0 -1
  618. package/dist/store/converters.js +0 -120
  619. package/dist/store/converters.js.map +0 -1
  620. package/dist/store/data-accessor.js +0 -26
  621. package/dist/store/data-accessor.js.map +0 -1
  622. package/dist/store/data-safety-central.js +0 -269
  623. package/dist/store/data-safety-central.js.map +0 -1
  624. package/dist/store/data-safety.js +0 -274
  625. package/dist/store/data-safety.js.map +0 -1
  626. package/dist/store/db-helpers.js +0 -221
  627. package/dist/store/db-helpers.js.map +0 -1
  628. package/dist/store/export.js +0 -155
  629. package/dist/store/export.js.map +0 -1
  630. package/dist/store/file-utils.js +0 -270
  631. package/dist/store/file-utils.js.map +0 -1
  632. package/dist/store/git-checkpoint.js +0 -365
  633. package/dist/store/git-checkpoint.js.map +0 -1
  634. package/dist/store/import-logging.js +0 -139
  635. package/dist/store/import-logging.js.map +0 -1
  636. package/dist/store/import-remap.js +0 -145
  637. package/dist/store/import-remap.js.map +0 -1
  638. package/dist/store/import-sort.js +0 -121
  639. package/dist/store/import-sort.js.map +0 -1
  640. package/dist/store/index.js +0 -28
  641. package/dist/store/index.js.map +0 -1
  642. package/dist/store/json.js +0 -208
  643. package/dist/store/json.js.map +0 -1
  644. package/dist/store/lifecycle-store.js +0 -249
  645. package/dist/store/lifecycle-store.js.map +0 -1
  646. package/dist/store/lock.js +0 -70
  647. package/dist/store/lock.js.map +0 -1
  648. package/dist/store/migration-sqlite.js +0 -671
  649. package/dist/store/migration-sqlite.js.map +0 -1
  650. package/dist/store/nexus-schema.js +0 -62
  651. package/dist/store/nexus-schema.js.map +0 -1
  652. package/dist/store/nexus-sqlite.js +0 -217
  653. package/dist/store/nexus-sqlite.js.map +0 -1
  654. package/dist/store/nexus-validation-schemas.js +0 -40
  655. package/dist/store/nexus-validation-schemas.js.map +0 -1
  656. package/dist/store/parsers.js +0 -37
  657. package/dist/store/parsers.js.map +0 -1
  658. package/dist/store/project-detect.js +0 -457
  659. package/dist/store/project-detect.js.map +0 -1
  660. package/dist/store/provider.js +0 -101
  661. package/dist/store/provider.js.map +0 -1
  662. package/dist/store/safety-data-accessor.js +0 -243
  663. package/dist/store/safety-data-accessor.js.map +0 -1
  664. package/dist/store/schema.js +0 -7
  665. package/dist/store/schema.js.map +0 -1
  666. package/dist/store/session-store.js +0 -219
  667. package/dist/store/session-store.js.map +0 -1
  668. package/dist/store/sqlite-backup.js +0 -105
  669. package/dist/store/sqlite-backup.js.map +0 -1
  670. package/dist/store/sqlite-data-accessor.js +0 -742
  671. package/dist/store/sqlite-data-accessor.js.map +0 -1
  672. package/dist/store/sqlite.js +0 -489
  673. package/dist/store/sqlite.js.map +0 -1
  674. package/dist/store/status-registry.js +0 -8
  675. package/dist/store/status-registry.js.map +0 -1
  676. package/dist/store/task-store.js +0 -344
  677. package/dist/store/task-store.js.map +0 -1
  678. package/dist/store/tasks-schema.js +0 -574
  679. package/dist/store/tasks-schema.js.map +0 -1
  680. package/dist/store/typed-query.js +0 -15
  681. package/dist/store/typed-query.js.map +0 -1
  682. package/dist/store/validation-schemas.js +0 -278
  683. package/dist/store/validation-schemas.js.map +0 -1
  684. package/dist/system/archive-analytics.js +0 -277
  685. package/dist/system/archive-analytics.js.map +0 -1
  686. package/dist/system/archive-stats.js +0 -64
  687. package/dist/system/archive-stats.js.map +0 -1
  688. package/dist/system/audit.js +0 -145
  689. package/dist/system/audit.js.map +0 -1
  690. package/dist/system/backup.js +0 -99
  691. package/dist/system/backup.js.map +0 -1
  692. package/dist/system/cleanup.js +0 -134
  693. package/dist/system/cleanup.js.map +0 -1
  694. package/dist/system/health.js +0 -1054
  695. package/dist/system/health.js.map +0 -1
  696. package/dist/system/index.js +0 -18
  697. package/dist/system/index.js.map +0 -1
  698. package/dist/system/inject-generate.js +0 -122
  699. package/dist/system/inject-generate.js.map +0 -1
  700. package/dist/system/labels.js +0 -38
  701. package/dist/system/labels.js.map +0 -1
  702. package/dist/system/metrics.js +0 -61
  703. package/dist/system/metrics.js.map +0 -1
  704. package/dist/system/migrate.js +0 -43
  705. package/dist/system/migrate.js.map +0 -1
  706. package/dist/system/platform-paths.js +0 -80
  707. package/dist/system/platform-paths.js.map +0 -1
  708. package/dist/system/runtime.js +0 -161
  709. package/dist/system/runtime.js.map +0 -1
  710. package/dist/system/safestop.js +0 -99
  711. package/dist/system/safestop.js.map +0 -1
  712. package/dist/system/storage-preflight.js +0 -123
  713. package/dist/system/storage-preflight.js.map +0 -1
  714. package/dist/task-work/index.js +0 -155
  715. package/dist/task-work/index.js.map +0 -1
  716. package/dist/tasks/add.js +0 -510
  717. package/dist/tasks/add.js.map +0 -1
  718. package/dist/tasks/analyze.js +0 -85
  719. package/dist/tasks/analyze.js.map +0 -1
  720. package/dist/tasks/archive.js +0 -90
  721. package/dist/tasks/archive.js.map +0 -1
  722. package/dist/tasks/atomicity.js +0 -83
  723. package/dist/tasks/atomicity.js.map +0 -1
  724. package/dist/tasks/cancel-ops.js +0 -83
  725. package/dist/tasks/cancel-ops.js.map +0 -1
  726. package/dist/tasks/complete.js +0 -224
  727. package/dist/tasks/complete.js.map +0 -1
  728. package/dist/tasks/crossref-extract.js +0 -73
  729. package/dist/tasks/crossref-extract.js.map +0 -1
  730. package/dist/tasks/delete-preview.js +0 -192
  731. package/dist/tasks/delete-preview.js.map +0 -1
  732. package/dist/tasks/delete.js +0 -120
  733. package/dist/tasks/delete.js.map +0 -1
  734. package/dist/tasks/deletion-strategy.js +0 -200
  735. package/dist/tasks/deletion-strategy.js.map +0 -1
  736. package/dist/tasks/dependency-check.js +0 -278
  737. package/dist/tasks/dependency-check.js.map +0 -1
  738. package/dist/tasks/deps-ready.js +0 -32
  739. package/dist/tasks/deps-ready.js.map +0 -1
  740. package/dist/tasks/enforcement.js +0 -82
  741. package/dist/tasks/enforcement.js.map +0 -1
  742. package/dist/tasks/find.js +0 -148
  743. package/dist/tasks/find.js.map +0 -1
  744. package/dist/tasks/graph-cache.js +0 -127
  745. package/dist/tasks/graph-cache.js.map +0 -1
  746. package/dist/tasks/graph-ops.js +0 -171
  747. package/dist/tasks/graph-ops.js.map +0 -1
  748. package/dist/tasks/graph-rag.js +0 -328
  749. package/dist/tasks/graph-rag.js.map +0 -1
  750. package/dist/tasks/hierarchy-policy.js +0 -149
  751. package/dist/tasks/hierarchy-policy.js.map +0 -1
  752. package/dist/tasks/hierarchy.js +0 -185
  753. package/dist/tasks/hierarchy.js.map +0 -1
  754. package/dist/tasks/id-generator.js +0 -65
  755. package/dist/tasks/id-generator.js.map +0 -1
  756. package/dist/tasks/index.js +0 -14
  757. package/dist/tasks/index.js.map +0 -1
  758. package/dist/tasks/labels.js +0 -52
  759. package/dist/tasks/labels.js.map +0 -1
  760. package/dist/tasks/list.js +0 -68
  761. package/dist/tasks/list.js.map +0 -1
  762. package/dist/tasks/phase-tracking.js +0 -133
  763. package/dist/tasks/phase-tracking.js.map +0 -1
  764. package/dist/tasks/plan.js +0 -268
  765. package/dist/tasks/plan.js.map +0 -1
  766. package/dist/tasks/relates.js +0 -89
  767. package/dist/tasks/relates.js.map +0 -1
  768. package/dist/tasks/reparent.d.ts +0 -38
  769. package/dist/tasks/reparent.d.ts.map +0 -1
  770. package/dist/tasks/show.js +0 -78
  771. package/dist/tasks/show.js.map +0 -1
  772. package/dist/tasks/size-weighting.js +0 -86
  773. package/dist/tasks/size-weighting.js.map +0 -1
  774. package/dist/tasks/staleness.js +0 -86
  775. package/dist/tasks/staleness.js.map +0 -1
  776. package/dist/tasks/task-ops.js +0 -1340
  777. package/dist/tasks/task-ops.js.map +0 -1
  778. package/dist/tasks/update.js +0 -243
  779. package/dist/tasks/update.js.map +0 -1
  780. package/dist/templates/index.js +0 -10
  781. package/dist/templates/index.js.map +0 -1
  782. package/dist/templates/parser.js +0 -254
  783. package/dist/templates/parser.js.map +0 -1
  784. package/dist/ui/aliases.js +0 -153
  785. package/dist/ui/aliases.js.map +0 -1
  786. package/dist/ui/changelog.js +0 -184
  787. package/dist/ui/changelog.js.map +0 -1
  788. package/dist/ui/command-registry.js +0 -168
  789. package/dist/ui/command-registry.js.map +0 -1
  790. package/dist/ui/flags.js +0 -94
  791. package/dist/ui/flags.js.map +0 -1
  792. package/dist/ui/index.js +0 -24
  793. package/dist/ui/index.js.map +0 -1
  794. package/dist/ui/injection-legacy.d.ts +0 -26
  795. package/dist/ui/injection-legacy.d.ts.map +0 -1
  796. package/dist/ui/injection-legacy.js +0 -42
  797. package/dist/ui/injection-legacy.js.map +0 -1
  798. package/dist/upgrade.js +0 -901
  799. package/dist/upgrade.js.map +0 -1
  800. package/dist/validation/chain-validation.js +0 -146
  801. package/dist/validation/chain-validation.js.map +0 -1
  802. package/dist/validation/compliance.js +0 -155
  803. package/dist/validation/compliance.js.map +0 -1
  804. package/dist/validation/docs-sync.js +0 -212
  805. package/dist/validation/docs-sync.js.map +0 -1
  806. package/dist/validation/doctor/checks.js +0 -1069
  807. package/dist/validation/doctor/checks.js.map +0 -1
  808. package/dist/validation/doctor/index.js +0 -9
  809. package/dist/validation/doctor/index.js.map +0 -1
  810. package/dist/validation/doctor/project-cache.js +0 -160
  811. package/dist/validation/doctor/project-cache.js.map +0 -1
  812. package/dist/validation/doctor/utils.js +0 -155
  813. package/dist/validation/doctor/utils.js.map +0 -1
  814. package/dist/validation/engine.js +0 -902
  815. package/dist/validation/engine.js.map +0 -1
  816. package/dist/validation/gap-check.js +0 -175
  817. package/dist/validation/gap-check.js.map +0 -1
  818. package/dist/validation/index.js +0 -40
  819. package/dist/validation/index.js.map +0 -1
  820. package/dist/validation/manifest.js +0 -237
  821. package/dist/validation/manifest.js.map +0 -1
  822. package/dist/validation/operation-gate-validators.js +0 -724
  823. package/dist/validation/operation-gate-validators.js.map +0 -1
  824. package/dist/validation/operation-verification-gates.js +0 -532
  825. package/dist/validation/operation-verification-gates.js.map +0 -1
  826. package/dist/validation/param-utils.js +0 -139
  827. package/dist/validation/param-utils.js.map +0 -1
  828. package/dist/validation/protocol-common.js +0 -300
  829. package/dist/validation/protocol-common.js.map +0 -1
  830. package/dist/validation/protocols/consensus.js +0 -71
  831. package/dist/validation/protocols/consensus.js.map +0 -1
  832. package/dist/validation/protocols/contribution.js +0 -59
  833. package/dist/validation/protocols/contribution.js.map +0 -1
  834. package/dist/validation/protocols/decomposition.js +0 -59
  835. package/dist/validation/protocols/decomposition.js.map +0 -1
  836. package/dist/validation/protocols/implementation.js +0 -59
  837. package/dist/validation/protocols/implementation.js.map +0 -1
  838. package/dist/validation/protocols/release-protocol.js +0 -60
  839. package/dist/validation/protocols/release-protocol.js.map +0 -1
  840. package/dist/validation/protocols/research.js +0 -77
  841. package/dist/validation/protocols/research.js.map +0 -1
  842. package/dist/validation/protocols/specification.js +0 -84
  843. package/dist/validation/protocols/specification.js.map +0 -1
  844. package/dist/validation/protocols/testing-protocol.js +0 -70
  845. package/dist/validation/protocols/testing-protocol.js.map +0 -1
  846. package/dist/validation/protocols/validation-protocol.js +0 -70
  847. package/dist/validation/protocols/validation-protocol.js.map +0 -1
  848. package/dist/validation/schema-integrity.js +0 -170
  849. package/dist/validation/schema-integrity.js.map +0 -1
  850. package/dist/validation/schema-validator.js +0 -176
  851. package/dist/validation/schema-validator.js.map +0 -1
  852. package/dist/validation/validate-ops.js +0 -937
  853. package/dist/validation/validate-ops.js.map +0 -1
  854. package/dist/validation/validation-rules.js +0 -226
  855. package/dist/validation/validation-rules.js.map +0 -1
  856. package/dist/validation/verification.js +0 -321
  857. package/dist/validation/verification.js.map +0 -1
@@ -1,773 +0,0 @@
1
- /**
2
- * Research commands and manifest operations.
3
- * @task T4465
4
- * @epic T4454
5
- */
6
- import { existsSync, readFileSync } from 'node:fs';
7
- import { join, resolve } from 'node:path';
8
- import { ExitCode } from '@cleocode/contracts';
9
- import { CleoError } from '../errors.js';
10
- import { getBackupDir, getManifestPath as getCentralManifestPath, getCleoDirAbsolute, getManifestArchivePath, getProjectRoot, } from '../paths.js';
11
- import { atomicWrite, safeReadFile } from '../store/atomic.js';
12
- import { appendJsonl, readJson, saveJson } from '../store/json.js';
13
- import { logOperation } from '../tasks/add.js';
14
- /**
15
- * Get the research file path.
16
- * @task T4465
17
- */
18
- function getResearchPath(cwd) {
19
- return join(getCleoDirAbsolute(cwd), 'research.json');
20
- }
21
- /**
22
- * Get the manifest file path.
23
- * @task T4465
24
- */
25
- function getManifestPath(cwd) {
26
- return getCentralManifestPath(cwd);
27
- }
28
- /**
29
- * Read or initialize the research file.
30
- * @task T4465
31
- */
32
- async function readResearch(cwd) {
33
- const path = getResearchPath(cwd);
34
- const data = await readJson(path);
35
- return data ?? { entries: [] };
36
- }
37
- /**
38
- * Add a research entry.
39
- * @task T4465
40
- */
41
- export async function addResearch(options, cwd, accessor) {
42
- // Validate task exists
43
- const task = await accessor.loadSingleTask(options.taskId);
44
- if (!task) {
45
- throw new CleoError(ExitCode.NOT_FOUND, `Task not found: ${options.taskId}`);
46
- }
47
- if (!options.topic || options.topic.trim().length === 0) {
48
- throw new CleoError(ExitCode.INVALID_INPUT, 'Research topic is required');
49
- }
50
- const research = await readResearch(cwd);
51
- const now = new Date().toISOString();
52
- const entry = {
53
- id: `R${Date.now().toString(36)}`,
54
- taskId: options.taskId,
55
- topic: options.topic.trim(),
56
- findings: options.findings ?? [],
57
- sources: options.sources ?? [],
58
- status: (options.findings?.length ?? 0) > 0 ? 'complete' : 'pending',
59
- createdAt: now,
60
- updatedAt: now,
61
- };
62
- research.entries.push(entry);
63
- await saveJson(getResearchPath(cwd), research, { backupDir: getBackupDir(cwd) });
64
- await logOperation('research_added', entry.id, {
65
- taskId: options.taskId,
66
- topic: options.topic,
67
- }, accessor);
68
- return entry;
69
- }
70
- /**
71
- * Show a specific research entry.
72
- * @task T4465
73
- */
74
- export async function showResearch(researchId, cwd) {
75
- const research = await readResearch(cwd);
76
- const entry = research.entries.find((e) => e.id === researchId);
77
- if (!entry) {
78
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry not found: ${researchId}`);
79
- }
80
- return entry;
81
- }
82
- /**
83
- * List research entries with optional filtering.
84
- * @task T4465
85
- */
86
- export async function listResearch(options = {}, cwd) {
87
- const research = await readResearch(cwd);
88
- let entries = research.entries;
89
- if (options.taskId) {
90
- entries = entries.filter((e) => e.taskId === options.taskId);
91
- }
92
- if (options.status) {
93
- entries = entries.filter((e) => e.status === options.status);
94
- }
95
- return entries;
96
- }
97
- /**
98
- * List pending research entries.
99
- * @task T4465
100
- */
101
- export async function pendingResearch(cwd) {
102
- return listResearch({ status: 'pending' }, cwd);
103
- }
104
- /**
105
- * Link a research entry to a task.
106
- * @task T4465
107
- */
108
- export async function linkResearch(researchId, taskId, cwd, accessor) {
109
- const research = await readResearch(cwd);
110
- const entry = research.entries.find((e) => e.id === researchId);
111
- if (!entry) {
112
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry not found: ${researchId}`);
113
- }
114
- // Validate task exists
115
- const linkedTask = await accessor.loadSingleTask(taskId);
116
- if (!linkedTask) {
117
- throw new CleoError(ExitCode.NOT_FOUND, `Task not found: ${taskId}`);
118
- }
119
- entry.taskId = taskId;
120
- entry.updatedAt = new Date().toISOString();
121
- await saveJson(getResearchPath(cwd), research, { backupDir: getBackupDir(cwd) });
122
- return { researchId, taskId };
123
- }
124
- /**
125
- * Update research findings.
126
- * @task T4465
127
- */
128
- export async function updateResearch(researchId, updates, cwd) {
129
- const research = await readResearch(cwd);
130
- const entry = research.entries.find((e) => e.id === researchId);
131
- if (!entry) {
132
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry not found: ${researchId}`);
133
- }
134
- if (updates.findings)
135
- entry.findings = updates.findings;
136
- if (updates.sources)
137
- entry.sources = updates.sources;
138
- if (updates.status)
139
- entry.status = updates.status;
140
- entry.updatedAt = new Date().toISOString();
141
- await saveJson(getResearchPath(cwd), research, { backupDir: getBackupDir(cwd) });
142
- return entry;
143
- }
144
- /**
145
- * Get research statistics.
146
- * @task T4474
147
- */
148
- export async function statsResearch(cwd) {
149
- const research = await readResearch(cwd);
150
- const byStatus = {};
151
- const byTopic = {};
152
- for (const entry of research.entries) {
153
- byStatus[entry.status] = (byStatus[entry.status] || 0) + 1;
154
- byTopic[entry.topic] = (byTopic[entry.topic] || 0) + 1;
155
- }
156
- return {
157
- total: research.entries.length,
158
- byStatus,
159
- byTopic,
160
- };
161
- }
162
- /**
163
- * Get research entries linked to a specific task.
164
- * @task T4474
165
- */
166
- export async function linksResearch(taskId, cwd) {
167
- if (!taskId) {
168
- throw new CleoError(ExitCode.INVALID_INPUT, 'Task ID is required');
169
- }
170
- const research = await readResearch(cwd);
171
- return research.entries.filter((e) => e.taskId === taskId);
172
- }
173
- /**
174
- * Archive old research entries by status.
175
- * Moves 'complete' entries older than a threshold to an archive,
176
- * or returns summary of archivable entries.
177
- * @task T4474
178
- */
179
- export async function archiveResearch(cwd) {
180
- const research = await readResearch(cwd);
181
- const completed = research.entries.filter((e) => e.status === 'complete');
182
- const remaining = research.entries.filter((e) => e.status !== 'complete');
183
- // Write back only non-complete entries
184
- await saveJson(getResearchPath(cwd), { entries: remaining }, { backupDir: getBackupDir(cwd) });
185
- return {
186
- action: 'archive',
187
- entriesArchived: completed.length,
188
- entriesRemaining: remaining.length,
189
- };
190
- }
191
- // === MANIFEST OPERATIONS ===
192
- /**
193
- * Read manifest entries from MANIFEST.jsonl.
194
- * @task T4465
195
- */
196
- export async function readManifest(cwd) {
197
- const manifestPath = getManifestPath(cwd);
198
- const content = await safeReadFile(manifestPath);
199
- if (!content)
200
- return [];
201
- const entries = [];
202
- for (const line of content.split('\n')) {
203
- const trimmed = line.trim();
204
- if (!trimmed)
205
- continue;
206
- try {
207
- entries.push(JSON.parse(trimmed));
208
- }
209
- catch {
210
- // Skip malformed lines
211
- }
212
- }
213
- return entries;
214
- }
215
- /**
216
- * Append a manifest entry.
217
- * @task T4465
218
- */
219
- export async function appendManifest(entry, cwd) {
220
- const manifestPath = getManifestPath(cwd);
221
- await appendJsonl(manifestPath, entry);
222
- }
223
- /**
224
- * Query manifest entries.
225
- * @task T4465
226
- */
227
- export async function queryManifest(options = {}, cwd) {
228
- let entries = await readManifest(cwd);
229
- if (options.status) {
230
- entries = entries.filter((e) => e.status === options.status);
231
- }
232
- if (options.agentType) {
233
- entries = entries.filter((e) => e.agent_type === options.agentType);
234
- }
235
- if (options.topic) {
236
- entries = entries.filter((e) => e.topics.includes(options.topic));
237
- }
238
- if (options.taskId) {
239
- entries = entries.filter((e) => e.linked_tasks.includes(options.taskId));
240
- }
241
- if (options.limit && options.limit > 0) {
242
- entries = entries.slice(0, options.limit);
243
- }
244
- return entries;
245
- }
246
- /**
247
- * Read all manifest entries as extended entries.
248
- * @task T4787
249
- */
250
- export async function readExtendedManifest(cwd) {
251
- const manifestPath = getManifestPath(cwd);
252
- const content = await safeReadFile(manifestPath);
253
- if (!content)
254
- return [];
255
- const entries = [];
256
- for (const line of content.split('\n')) {
257
- const trimmed = line.trim();
258
- if (!trimmed)
259
- continue;
260
- try {
261
- entries.push(JSON.parse(trimmed));
262
- }
263
- catch {
264
- // Skip malformed lines
265
- }
266
- }
267
- return entries;
268
- }
269
- /**
270
- * Filter manifest entries by criteria.
271
- * @task T4787
272
- */
273
- export function filterManifestEntries(entries, filter) {
274
- let filtered = entries;
275
- if (filter.taskId) {
276
- const taskId = filter.taskId;
277
- filtered = filtered.filter((e) => e.id.startsWith(taskId) || e.linked_tasks?.includes(taskId));
278
- }
279
- if (filter.status) {
280
- filtered = filtered.filter((e) => e.status === filter.status);
281
- }
282
- if (filter.agent_type) {
283
- filtered = filtered.filter((e) => e.agent_type === filter.agent_type);
284
- }
285
- if (filter.topic) {
286
- filtered = filtered.filter((e) => e.topics.includes(filter.topic));
287
- }
288
- if (filter.actionable !== undefined) {
289
- filtered = filtered.filter((e) => e.actionable === filter.actionable);
290
- }
291
- if (filter.dateAfter) {
292
- filtered = filtered.filter((e) => e.date > filter.dateAfter);
293
- }
294
- if (filter.dateBefore) {
295
- filtered = filtered.filter((e) => e.date < filter.dateBefore);
296
- }
297
- if (filter.offset && filter.offset > 0) {
298
- filtered = filtered.slice(filter.offset);
299
- }
300
- if (filter.limit && filter.limit > 0) {
301
- filtered = filtered.slice(0, filter.limit);
302
- }
303
- return filtered;
304
- }
305
- /**
306
- * Show a manifest entry by ID with optional file content.
307
- * @task T4787
308
- */
309
- export async function showManifestEntry(researchId, cwd) {
310
- const entries = await readExtendedManifest(cwd);
311
- const entry = entries.find((e) => e.id === researchId);
312
- if (!entry) {
313
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry '${researchId}' not found`);
314
- }
315
- const root = getProjectRoot(cwd);
316
- let fileContent = null;
317
- try {
318
- const filePath = resolve(root, entry.file);
319
- if (existsSync(filePath)) {
320
- fileContent = readFileSync(filePath, 'utf-8');
321
- }
322
- }
323
- catch {
324
- // File may not exist or be unreadable
325
- }
326
- return {
327
- ...entry,
328
- fileContent,
329
- fileExists: fileContent !== null,
330
- };
331
- }
332
- /**
333
- * Search manifest entries by text with relevance scoring.
334
- * @task T4787
335
- */
336
- export async function searchManifest(query, options, cwd) {
337
- const entries = await readExtendedManifest(cwd);
338
- const queryLower = query.toLowerCase();
339
- const scored = entries.map((entry) => {
340
- let score = 0;
341
- if (entry.title.toLowerCase().includes(queryLower)) {
342
- score += 0.5;
343
- }
344
- if (entry.topics.some((t) => t.toLowerCase().includes(queryLower))) {
345
- score += 0.3;
346
- }
347
- if (entry.key_findings?.some((f) => f.toLowerCase().includes(queryLower))) {
348
- score += 0.2;
349
- }
350
- if (entry.id.toLowerCase().includes(queryLower)) {
351
- score += 0.1;
352
- }
353
- return { entry, score };
354
- });
355
- const minConfidence = options?.confidence ?? 0.1;
356
- let results = scored.filter((s) => s.score >= minConfidence).sort((a, b) => b.score - a.score);
357
- if (options?.limit && options.limit > 0) {
358
- results = results.slice(0, options.limit);
359
- }
360
- return results.map((r) => ({
361
- ...r.entry,
362
- relevanceScore: Math.round(r.score * 100) / 100,
363
- }));
364
- }
365
- /**
366
- * Get pending manifest entries (partial, blocked, or needing followup).
367
- * @task T4787
368
- */
369
- export async function pendingManifestEntries(epicId, cwd) {
370
- const entries = await readExtendedManifest(cwd);
371
- let pending = entries.filter((e) => e.status === 'partial' ||
372
- e.status === 'blocked' ||
373
- (e.needs_followup && e.needs_followup.length > 0));
374
- if (epicId) {
375
- pending = pending.filter((e) => e.id.startsWith(epicId) || e.linked_tasks?.includes(epicId));
376
- }
377
- return {
378
- entries: pending,
379
- total: pending.length,
380
- byStatus: {
381
- partial: pending.filter((e) => e.status === 'partial').length,
382
- blocked: pending.filter((e) => e.status === 'blocked').length,
383
- needsFollowup: pending.filter((e) => e.needs_followup && e.needs_followup.length > 0).length,
384
- },
385
- };
386
- }
387
- /**
388
- * Get manifest-based research statistics.
389
- * @task T4787
390
- */
391
- export async function manifestStats(epicId, cwd) {
392
- const entries = await readExtendedManifest(cwd);
393
- let filtered = entries;
394
- if (epicId) {
395
- filtered = entries.filter((e) => e.id.startsWith(epicId) || e.linked_tasks?.includes(epicId));
396
- }
397
- const byStatus = {};
398
- const byType = {};
399
- let actionable = 0;
400
- let needsFollowup = 0;
401
- let totalFindings = 0;
402
- for (const entry of filtered) {
403
- byStatus[entry.status] = (byStatus[entry.status] || 0) + 1;
404
- byType[entry.agent_type] = (byType[entry.agent_type] || 0) + 1;
405
- if (entry.actionable)
406
- actionable++;
407
- if (entry.needs_followup && entry.needs_followup.length > 0)
408
- needsFollowup++;
409
- if (entry.key_findings)
410
- totalFindings += entry.key_findings.length;
411
- }
412
- return {
413
- total: filtered.length,
414
- byStatus,
415
- byType,
416
- actionable,
417
- needsFollowup,
418
- averageFindings: filtered.length > 0 ? Math.round((totalFindings / filtered.length) * 10) / 10 : 0,
419
- };
420
- }
421
- /**
422
- * Link a manifest entry to a task (adds taskId to linked_tasks array).
423
- * @task T4787
424
- */
425
- export async function linkManifestEntry(taskId, researchId, cwd) {
426
- const manifestPath = getManifestPath(cwd);
427
- const entries = await readExtendedManifest(cwd);
428
- const entryIndex = entries.findIndex((e) => e.id === researchId);
429
- if (entryIndex === -1) {
430
- throw new CleoError(ExitCode.NOT_FOUND, `Research entry '${researchId}' not found`);
431
- }
432
- const entry = entries[entryIndex];
433
- if (entry.linked_tasks?.includes(taskId)) {
434
- return { taskId, researchId, alreadyLinked: true };
435
- }
436
- if (!entry.linked_tasks) {
437
- entry.linked_tasks = [];
438
- }
439
- entry.linked_tasks.push(taskId);
440
- const content = entries.map((e) => JSON.stringify(e)).join('\n') + '\n';
441
- await atomicWrite(manifestPath, content);
442
- return { taskId, researchId, alreadyLinked: false };
443
- }
444
- /**
445
- * Append an extended manifest entry.
446
- * Validates required fields before appending.
447
- * @task T4787
448
- */
449
- export async function appendExtendedManifest(entry, cwd) {
450
- const errors = [];
451
- if (!entry.id)
452
- errors.push('id is required');
453
- if (!entry.file)
454
- errors.push('file is required');
455
- if (!entry.title)
456
- errors.push('title is required');
457
- if (!entry.date)
458
- errors.push('date is required');
459
- if (!entry.status)
460
- errors.push('status is required');
461
- if (!entry.agent_type)
462
- errors.push('agent_type is required');
463
- if (!entry.topics)
464
- errors.push('topics is required');
465
- if (entry.actionable === undefined)
466
- errors.push('actionable is required');
467
- if (errors.length > 0) {
468
- throw new CleoError(ExitCode.VALIDATION_ERROR, `Invalid manifest entry: ${errors.join(', ')}`);
469
- }
470
- const manifestPath = getManifestPath(cwd);
471
- await appendJsonl(manifestPath, entry);
472
- return { entryId: entry.id, file: getManifestPath() };
473
- }
474
- /**
475
- * Archive manifest entries older than a date.
476
- * @task T4787
477
- */
478
- export async function archiveManifestEntries(beforeDate, cwd) {
479
- const manifestPath = getManifestPath(cwd);
480
- const archivePath = getManifestArchivePath(cwd);
481
- const entries = await readExtendedManifest(cwd);
482
- const toArchive = entries.filter((e) => e.date < beforeDate);
483
- const toKeep = entries.filter((e) => e.date >= beforeDate);
484
- if (toArchive.length === 0) {
485
- return {
486
- archived: 0,
487
- remaining: entries.length,
488
- archiveFile: getManifestArchivePath(),
489
- };
490
- }
491
- // Append archived entries to archive file
492
- const existingArchive = await safeReadFile(archivePath);
493
- const archiveContent = toArchive.map((e) => JSON.stringify(e)).join('\n') + '\n';
494
- const fullArchive = existingArchive
495
- ? existingArchive.trimEnd() + '\n' + archiveContent
496
- : archiveContent;
497
- await atomicWrite(archivePath, fullArchive);
498
- // Rewrite main manifest with remaining entries
499
- const remainingContent = toKeep.length > 0 ? toKeep.map((e) => JSON.stringify(e)).join('\n') + '\n' : '';
500
- await atomicWrite(manifestPath, remainingContent);
501
- return {
502
- archived: toArchive.length,
503
- remaining: toKeep.length,
504
- archiveFile: getManifestArchivePath(),
505
- };
506
- }
507
- /**
508
- * Find manifest entries with overlapping topics but conflicting key_findings.
509
- * @task T4787
510
- */
511
- export async function findContradictions(cwd, params) {
512
- const entries = await readExtendedManifest(cwd);
513
- const byTopic = new Map();
514
- for (const entry of entries) {
515
- if (!entry.key_findings || entry.key_findings.length === 0)
516
- continue;
517
- for (const topic of entry.topics) {
518
- if (params?.topic && topic !== params.topic)
519
- continue;
520
- if (!byTopic.has(topic)) {
521
- byTopic.set(topic, []);
522
- }
523
- byTopic.get(topic).push(entry);
524
- }
525
- }
526
- const contradictions = [];
527
- const negationPairs = [
528
- [/\bdoes NOT\b/i, /\bdoes\b(?!.*\bnot\b)/i],
529
- [/\bcannot\b/i, /\bcan\b(?!.*\bnot\b)/i],
530
- [/\bno\s+\w+\s+required\b/i, /\brequired\b(?!.*\bno\b)/i],
531
- [
532
- /\bnot\s+(?:available|supported|possible|recommended)\b/i,
533
- /\b(?:available|supported|possible|recommended)\b(?!.*\bnot\b)/i,
534
- ],
535
- [/\bwithout\b/i, /\brequires?\b/i],
536
- [/\bavoid\b/i, /\buse\b/i],
537
- [/\bdeprecated\b/i, /\brecommended\b/i],
538
- [/\banti-pattern\b/i, /\bbest practice\b/i],
539
- ];
540
- for (const [topic, topicEntries] of byTopic) {
541
- if (topicEntries.length < 2)
542
- continue;
543
- for (let i = 0; i < topicEntries.length; i++) {
544
- for (let j = i + 1; j < topicEntries.length; j++) {
545
- const a = topicEntries[i];
546
- const b = topicEntries[j];
547
- const conflicts = [];
548
- for (const findingA of a.key_findings) {
549
- for (const findingB of b.key_findings) {
550
- for (const [patternNeg, patternPos] of negationPairs) {
551
- if ((patternNeg.test(findingA) && patternPos.test(findingB)) ||
552
- (patternPos.test(findingA) && patternNeg.test(findingB))) {
553
- conflicts.push(`"${findingA}" vs "${findingB}"`);
554
- break;
555
- }
556
- }
557
- }
558
- }
559
- if (conflicts.length > 0) {
560
- contradictions.push({
561
- entryA: a,
562
- entryB: b,
563
- topic,
564
- conflictDetails: conflicts.join('; '),
565
- });
566
- }
567
- }
568
- }
569
- }
570
- return contradictions;
571
- }
572
- /**
573
- * Identify research entries replaced by newer work on same topic.
574
- * @task T4787
575
- */
576
- export async function findSuperseded(cwd, params) {
577
- const entries = await readExtendedManifest(cwd);
578
- const byTopicAndType = new Map();
579
- for (const entry of entries) {
580
- for (const topic of entry.topics) {
581
- if (params?.topic && topic !== params.topic)
582
- continue;
583
- const key = `${topic}::${entry.agent_type}`;
584
- if (!byTopicAndType.has(key)) {
585
- byTopicAndType.set(key, []);
586
- }
587
- byTopicAndType.get(key).push(entry);
588
- }
589
- }
590
- const superseded = [];
591
- const seenPairs = new Set();
592
- for (const [key, groupEntries] of byTopicAndType) {
593
- if (groupEntries.length < 2)
594
- continue;
595
- const topic = key.split('::')[0];
596
- const sorted = [...groupEntries].sort((a, b) => a.date.localeCompare(b.date));
597
- for (let i = 0; i < sorted.length - 1; i++) {
598
- const pairKey = `${sorted[i].id}::${sorted[sorted.length - 1].id}::${topic}`;
599
- if (seenPairs.has(pairKey))
600
- continue;
601
- seenPairs.add(pairKey);
602
- superseded.push({
603
- old: sorted[i],
604
- replacement: sorted[sorted.length - 1],
605
- topic,
606
- });
607
- }
608
- }
609
- return superseded;
610
- }
611
- /**
612
- * Read protocol injection content for a given protocol type.
613
- * @task T4787
614
- */
615
- export async function readProtocolInjection(protocolType, params, cwd) {
616
- const root = getProjectRoot(cwd);
617
- const protocolLocations = [
618
- resolve(root, 'protocols', `${protocolType}.md`),
619
- resolve(root, 'skills', '_shared', `${protocolType}.md`),
620
- resolve(root, 'agents', 'cleo-subagent', 'protocols', `${protocolType}.md`),
621
- ];
622
- let protocolContent = null;
623
- let protocolPath = null;
624
- for (const loc of protocolLocations) {
625
- if (existsSync(loc)) {
626
- try {
627
- protocolContent = readFileSync(loc, 'utf-8');
628
- protocolPath = loc.replace(root + '/', '');
629
- break;
630
- }
631
- catch { }
632
- }
633
- }
634
- if (!protocolContent || !protocolPath) {
635
- throw new CleoError(ExitCode.NOT_FOUND, `Protocol '${protocolType}' not found in src/protocols/, skills/_shared/, or agents/cleo-subagent/protocols/`);
636
- }
637
- return {
638
- protocolType,
639
- content: protocolContent,
640
- path: protocolPath,
641
- contentLength: protocolContent.length,
642
- estimatedTokens: Math.ceil(protocolContent.length / 4),
643
- taskId: params?.taskId || null,
644
- variant: params?.variant || null,
645
- };
646
- }
647
- /**
648
- * Compact MANIFEST.jsonl by removing duplicate/stale entries.
649
- * @task T4787
650
- */
651
- export async function compactManifest(cwd) {
652
- const manifestPath = getManifestPath(cwd);
653
- const content = await safeReadFile(manifestPath);
654
- if (!content) {
655
- return {
656
- compacted: false,
657
- originalLines: 0,
658
- malformedRemoved: 0,
659
- duplicatesRemoved: 0,
660
- remainingEntries: 0,
661
- };
662
- }
663
- const lines = content.split('\n');
664
- const entries = [];
665
- let malformedCount = 0;
666
- for (const line of lines) {
667
- const trimmed = line.trim();
668
- if (!trimmed)
669
- continue;
670
- try {
671
- entries.push(JSON.parse(trimmed));
672
- }
673
- catch {
674
- malformedCount++;
675
- }
676
- }
677
- const originalCount = entries.length + malformedCount;
678
- const idMap = new Map();
679
- for (const entry of entries) {
680
- idMap.set(entry.id, entry);
681
- }
682
- const compacted = Array.from(idMap.values());
683
- const duplicatesRemoved = entries.length - compacted.length;
684
- const compactedContent = compacted.length > 0 ? compacted.map((e) => JSON.stringify(e)).join('\n') + '\n' : '';
685
- await atomicWrite(manifestPath, compactedContent);
686
- return {
687
- compacted: true,
688
- originalLines: originalCount,
689
- malformedRemoved: malformedCount,
690
- duplicatesRemoved,
691
- remainingEntries: compacted.length,
692
- };
693
- }
694
- /**
695
- * Validate research entries for a task.
696
- * @task T4787
697
- */
698
- export async function validateManifestEntries(taskId, cwd) {
699
- const root = getProjectRoot(cwd);
700
- const entries = await readExtendedManifest(cwd);
701
- const linked = entries.filter((e) => e.id.startsWith(taskId) || e.linked_tasks?.includes(taskId));
702
- if (linked.length === 0) {
703
- return {
704
- taskId,
705
- valid: true,
706
- entriesFound: 0,
707
- issues: [],
708
- errorCount: 0,
709
- warningCount: 0,
710
- };
711
- }
712
- const issues = [];
713
- for (const entry of linked) {
714
- if (!entry.id)
715
- issues.push({ entryId: entry.id || '(unknown)', issue: 'Missing id', severity: 'error' });
716
- if (!entry.file)
717
- issues.push({ entryId: entry.id, issue: 'Missing file path', severity: 'error' });
718
- if (!entry.title)
719
- issues.push({ entryId: entry.id, issue: 'Missing title', severity: 'error' });
720
- if (!entry.date)
721
- issues.push({ entryId: entry.id, issue: 'Missing date', severity: 'error' });
722
- if (!entry.status)
723
- issues.push({ entryId: entry.id, issue: 'Missing status', severity: 'error' });
724
- if (!entry.agent_type)
725
- issues.push({ entryId: entry.id, issue: 'Missing agent_type', severity: 'error' });
726
- if (entry.status && !['completed', 'partial', 'blocked'].includes(entry.status)) {
727
- issues.push({
728
- entryId: entry.id,
729
- issue: `Invalid status: ${entry.status}`,
730
- severity: 'error',
731
- });
732
- }
733
- if (entry.file) {
734
- const filePath = resolve(root, entry.file);
735
- if (!existsSync(filePath)) {
736
- issues.push({
737
- entryId: entry.id,
738
- issue: `Output file not found: ${entry.file}`,
739
- severity: 'warning',
740
- });
741
- }
742
- }
743
- if (entry.agent_type === 'research' &&
744
- (!entry.key_findings || entry.key_findings.length === 0)) {
745
- issues.push({
746
- entryId: entry.id,
747
- issue: 'Research entry missing key_findings',
748
- severity: 'warning',
749
- });
750
- }
751
- }
752
- return {
753
- taskId,
754
- valid: issues.filter((i) => i.severity === 'error').length === 0,
755
- entriesFound: linked.length,
756
- issues,
757
- errorCount: issues.filter((i) => i.severity === 'error').length,
758
- warningCount: issues.filter((i) => i.severity === 'warning').length,
759
- };
760
- }
761
- // === BRAIN Lifecycle (temporal decay) ===
762
- export * from './brain-lifecycle.js';
763
- export * from './brain-links.js';
764
- export * from './brain-migration.js';
765
- // === BRAIN Retrieval functions (3-layer pattern) ===
766
- export * from './brain-retrieval.js';
767
- export * from './brain-search.js';
768
- // === BRAIN Memory modules (brain.db backed) ===
769
- export * from './decisions.js';
770
- export * from './learnings.js';
771
- // === JSONL Memory modules (legacy, still active) ===
772
- export * from './patterns.js';
773
- //# sourceMappingURL=index.js.map