@cleocode/core 2026.4.30 → 2026.4.35

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 (1039) hide show
  1. package/dist/adapters/adapter-registry.js +64 -0
  2. package/dist/adapters/adapter-registry.js.map +1 -0
  3. package/dist/adapters/discovery.js +83 -0
  4. package/dist/adapters/discovery.js.map +1 -0
  5. package/dist/adapters/index.js +9 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/manager.js +260 -0
  8. package/dist/adapters/manager.js.map +1 -0
  9. package/dist/admin/export-tasks.js +171 -0
  10. package/dist/admin/export-tasks.js.map +1 -0
  11. package/dist/admin/export.js +103 -0
  12. package/dist/admin/export.js.map +1 -0
  13. package/dist/admin/help.js +106 -0
  14. package/dist/admin/help.js.map +1 -0
  15. package/dist/admin/import-tasks.js +182 -0
  16. package/dist/admin/import-tasks.js.map +1 -0
  17. package/dist/admin/import.js +129 -0
  18. package/dist/admin/import.js.map +1 -0
  19. package/dist/admin/index.js +13 -0
  20. package/dist/admin/index.js.map +1 -0
  21. package/dist/adrs/find.js +134 -0
  22. package/dist/adrs/find.js.map +1 -0
  23. package/dist/adrs/index.js +15 -0
  24. package/dist/adrs/index.js.map +1 -0
  25. package/dist/adrs/link-pipeline.js +160 -0
  26. package/dist/adrs/link-pipeline.js.map +1 -0
  27. package/dist/adrs/list.js +43 -0
  28. package/dist/adrs/list.js.map +1 -0
  29. package/dist/adrs/parse.js +51 -0
  30. package/dist/adrs/parse.js.map +1 -0
  31. package/dist/adrs/show.js +22 -0
  32. package/dist/adrs/show.js.map +1 -0
  33. package/dist/adrs/sync.js +232 -0
  34. package/dist/adrs/sync.js.map +1 -0
  35. package/dist/adrs/types.js +9 -0
  36. package/dist/adrs/types.js.map +1 -0
  37. package/dist/adrs/validate.js +57 -0
  38. package/dist/adrs/validate.js.map +1 -0
  39. package/dist/agents/agent-registry.js +288 -0
  40. package/dist/agents/agent-registry.js.map +1 -0
  41. package/dist/agents/agent-schema.js +82 -0
  42. package/dist/agents/agent-schema.js.map +1 -0
  43. package/dist/agents/capacity.js +116 -0
  44. package/dist/agents/capacity.js.map +1 -0
  45. package/dist/agents/execution-learning.js +474 -0
  46. package/dist/agents/execution-learning.js.map +1 -0
  47. package/dist/agents/health-monitor.js +217 -0
  48. package/dist/agents/health-monitor.js.map +1 -0
  49. package/dist/agents/index.js +29 -0
  50. package/dist/agents/index.js.map +1 -0
  51. package/dist/agents/registry.js +314 -0
  52. package/dist/agents/registry.js.map +1 -0
  53. package/dist/agents/retry.js +215 -0
  54. package/dist/agents/retry.js.map +1 -0
  55. package/dist/audit-prune.js +94 -0
  56. package/dist/audit-prune.js.map +1 -0
  57. package/dist/audit.js +68 -0
  58. package/dist/audit.js.map +1 -0
  59. package/dist/backfill/index.js +229 -0
  60. package/dist/backfill/index.js.map +1 -0
  61. package/dist/bootstrap.d.ts +35 -0
  62. package/dist/bootstrap.d.ts.map +1 -1
  63. package/dist/bootstrap.js +435 -0
  64. package/dist/bootstrap.js.map +1 -0
  65. package/dist/caamp/adapter.js +259 -0
  66. package/dist/caamp/adapter.js.map +1 -0
  67. package/dist/caamp/capability-check.js +38 -0
  68. package/dist/caamp/capability-check.js.map +1 -0
  69. package/dist/caamp/index.js +21 -0
  70. package/dist/caamp/index.js.map +1 -0
  71. package/dist/caamp-init.js +16 -0
  72. package/dist/caamp-init.js.map +1 -0
  73. package/dist/cleo.js +322 -0
  74. package/dist/cleo.js.map +1 -0
  75. package/dist/code/index.d.ts +8 -4
  76. package/dist/code/index.d.ts.map +1 -1
  77. package/dist/code/index.js +14 -0
  78. package/dist/code/index.js.map +1 -0
  79. package/dist/code/outline.js +165 -0
  80. package/dist/code/outline.js.map +1 -0
  81. package/dist/code/parser.d.ts +22 -9
  82. package/dist/code/parser.d.ts.map +1 -1
  83. package/dist/code/parser.js +420 -0
  84. package/dist/code/parser.js.map +1 -0
  85. package/dist/code/search.js +135 -0
  86. package/dist/code/search.js.map +1 -0
  87. package/dist/code/unfold.js +155 -0
  88. package/dist/code/unfold.js.map +1 -0
  89. package/dist/codebase-map/analyzers/architecture.js +129 -0
  90. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  91. package/dist/codebase-map/analyzers/concerns.js +122 -0
  92. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  93. package/dist/codebase-map/analyzers/conventions.js +149 -0
  94. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  95. package/dist/codebase-map/analyzers/integrations.js +108 -0
  96. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  97. package/dist/codebase-map/analyzers/stack.js +117 -0
  98. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  99. package/dist/codebase-map/analyzers/structure.js +137 -0
  100. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  101. package/dist/codebase-map/analyzers/testing.js +118 -0
  102. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  103. package/dist/codebase-map/index.js +57 -0
  104. package/dist/codebase-map/index.js.map +1 -0
  105. package/dist/codebase-map/store.js +122 -0
  106. package/dist/codebase-map/store.js.map +1 -0
  107. package/dist/codebase-map/summary.js +152 -0
  108. package/dist/codebase-map/summary.js.map +1 -0
  109. package/dist/compliance/index.js +288 -0
  110. package/dist/compliance/index.js.map +1 -0
  111. package/dist/compliance/protocol-enforcement.js +332 -0
  112. package/dist/compliance/protocol-enforcement.js.map +1 -0
  113. package/dist/compliance/protocol-rules.js +786 -0
  114. package/dist/compliance/protocol-rules.js.map +1 -0
  115. package/dist/compliance/protocol-types.js +79 -0
  116. package/dist/compliance/protocol-types.js.map +1 -0
  117. package/dist/compliance/store.js +53 -0
  118. package/dist/compliance/store.js.map +1 -0
  119. package/dist/conduit/conduit-client.js +107 -0
  120. package/dist/conduit/conduit-client.js.map +1 -0
  121. package/dist/conduit/factory.js +52 -0
  122. package/dist/conduit/factory.js.map +1 -0
  123. package/dist/conduit/http-transport.js +155 -0
  124. package/dist/conduit/http-transport.js.map +1 -0
  125. package/dist/conduit/index.js +15 -0
  126. package/dist/conduit/index.js.map +1 -0
  127. package/dist/conduit/local-transport.js +255 -0
  128. package/dist/conduit/local-transport.js.map +1 -0
  129. package/dist/conduit/sse-transport.js +299 -0
  130. package/dist/conduit/sse-transport.js.map +1 -0
  131. package/dist/config/build-config.js +29 -0
  132. package/dist/config/build-config.js.map +1 -0
  133. package/dist/config.js +400 -0
  134. package/dist/config.js.map +1 -0
  135. package/dist/constants.js +18 -0
  136. package/dist/constants.js.map +1 -0
  137. package/dist/context/index.js +137 -0
  138. package/dist/context/index.js.map +1 -0
  139. package/dist/crypto/credentials.js +219 -0
  140. package/dist/crypto/credentials.js.map +1 -0
  141. package/dist/discovery.js +182 -0
  142. package/dist/discovery.js.map +1 -0
  143. package/dist/engine-result.js +12 -0
  144. package/dist/engine-result.js.map +1 -0
  145. package/dist/error-catalog.js +404 -0
  146. package/dist/error-catalog.js.map +1 -0
  147. package/dist/error-registry.js +393 -0
  148. package/dist/error-registry.js.map +1 -0
  149. package/dist/errors.js +173 -0
  150. package/dist/errors.js.map +1 -0
  151. package/dist/hooks/handlers/agent-hooks.js +106 -0
  152. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  153. package/dist/hooks/handlers/context-hooks.js +111 -0
  154. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  155. package/dist/hooks/handlers/error-hooks.js +52 -0
  156. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  157. package/dist/hooks/handlers/file-hooks.js +104 -0
  158. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  159. package/dist/hooks/handlers/handler-helpers.js +61 -0
  160. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  161. package/dist/hooks/handlers/index.d.ts +4 -0
  162. package/dist/hooks/handlers/index.d.ts.map +1 -1
  163. package/dist/hooks/handlers/index.js +34 -0
  164. package/dist/hooks/handlers/index.js.map +1 -0
  165. package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
  166. package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
  167. package/dist/hooks/handlers/intelligence-hooks.js +69 -0
  168. package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
  169. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  170. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  171. package/dist/hooks/handlers/notification-hooks.js +62 -0
  172. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  173. package/dist/hooks/handlers/session-hooks.d.ts +27 -4
  174. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  175. package/dist/hooks/handlers/session-hooks.js +157 -0
  176. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  177. package/dist/hooks/handlers/task-hooks.js +65 -0
  178. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  179. package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
  180. package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
  181. package/dist/hooks/handlers/watchdog-hooks.js +162 -0
  182. package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
  183. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  184. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  185. package/dist/hooks/index.js +13 -0
  186. package/dist/hooks/index.js.map +1 -0
  187. package/dist/hooks/payload-schemas.d.ts +6 -6
  188. package/dist/hooks/payload-schemas.js +220 -0
  189. package/dist/hooks/payload-schemas.js.map +1 -0
  190. package/dist/hooks/provider-hooks.js +66 -0
  191. package/dist/hooks/provider-hooks.js.map +1 -0
  192. package/dist/hooks/registry.js +229 -0
  193. package/dist/hooks/registry.js.map +1 -0
  194. package/dist/hooks/types.js +66 -0
  195. package/dist/hooks/types.js.map +1 -0
  196. package/dist/hooks.js +136 -0
  197. package/dist/hooks.js.map +1 -0
  198. package/dist/index.d.ts +2 -0
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.js +8765 -6253
  201. package/dist/index.js.map +4 -4
  202. package/dist/init.js +920 -0
  203. package/dist/init.js.map +1 -0
  204. package/dist/inject/index.js +82 -0
  205. package/dist/inject/index.js.map +1 -0
  206. package/dist/injection.d.ts +13 -1
  207. package/dist/injection.d.ts.map +1 -1
  208. package/dist/injection.js +377 -0
  209. package/dist/injection.js.map +1 -0
  210. package/dist/intelligence/adaptive-validation.js +497 -0
  211. package/dist/intelligence/adaptive-validation.js.map +1 -0
  212. package/dist/intelligence/impact.js +675 -0
  213. package/dist/intelligence/impact.js.map +1 -0
  214. package/dist/intelligence/index.js +22 -0
  215. package/dist/intelligence/index.js.map +1 -0
  216. package/dist/intelligence/patterns.js +492 -0
  217. package/dist/intelligence/patterns.js.map +1 -0
  218. package/dist/intelligence/prediction.js +499 -0
  219. package/dist/intelligence/prediction.js.map +1 -0
  220. package/dist/intelligence/types.js +13 -0
  221. package/dist/intelligence/types.js.map +1 -0
  222. package/dist/internal.d.ts +18 -10
  223. package/dist/internal.d.ts.map +1 -1
  224. package/dist/internal.js +320 -0
  225. package/dist/internal.js.map +1 -0
  226. package/dist/issue/create.js +121 -0
  227. package/dist/issue/create.js.map +1 -0
  228. package/dist/issue/diagnostics.js +59 -0
  229. package/dist/issue/diagnostics.js.map +1 -0
  230. package/dist/issue/index.js +10 -0
  231. package/dist/issue/index.js.map +1 -0
  232. package/dist/issue/template-parser.js +267 -0
  233. package/dist/issue/template-parser.js.map +1 -0
  234. package/dist/json-schema-validator.js +76 -0
  235. package/dist/json-schema-validator.js.map +1 -0
  236. package/dist/lib/index.js +11 -0
  237. package/dist/lib/index.js.map +1 -0
  238. package/dist/lib/retry.js +152 -0
  239. package/dist/lib/retry.js.map +1 -0
  240. package/dist/lib/tree-sitter-languages.d.ts +11 -7
  241. package/dist/lib/tree-sitter-languages.d.ts.map +1 -1
  242. package/dist/lib/tree-sitter-languages.js +75 -0
  243. package/dist/lib/tree-sitter-languages.js.map +1 -0
  244. package/dist/lifecycle/chain-composition.js +152 -0
  245. package/dist/lifecycle/chain-composition.js.map +1 -0
  246. package/dist/lifecycle/chain-store.js +246 -0
  247. package/dist/lifecycle/chain-store.js.map +1 -0
  248. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  249. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  250. package/dist/lifecycle/default-chain.js +176 -0
  251. package/dist/lifecycle/default-chain.js.map +1 -0
  252. package/dist/lifecycle/evidence.js +180 -0
  253. package/dist/lifecycle/evidence.js.map +1 -0
  254. package/dist/lifecycle/frontmatter.js +363 -0
  255. package/dist/lifecycle/frontmatter.js.map +1 -0
  256. package/dist/lifecycle/index.js +756 -0
  257. package/dist/lifecycle/index.js.map +1 -0
  258. package/dist/lifecycle/pipeline.js +656 -0
  259. package/dist/lifecycle/pipeline.js.map +1 -0
  260. package/dist/lifecycle/rcasd-index.js +326 -0
  261. package/dist/lifecycle/rcasd-index.js.map +1 -0
  262. package/dist/lifecycle/rcasd-paths.js +220 -0
  263. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  264. package/dist/lifecycle/resume.js +864 -0
  265. package/dist/lifecycle/resume.js.map +1 -0
  266. package/dist/lifecycle/stage-artifacts.js +94 -0
  267. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  268. package/dist/lifecycle/stage-guidance.js +234 -0
  269. package/dist/lifecycle/stage-guidance.js.map +1 -0
  270. package/dist/lifecycle/stages.js +534 -0
  271. package/dist/lifecycle/stages.js.map +1 -0
  272. package/dist/lifecycle/state-machine.js +516 -0
  273. package/dist/lifecycle/state-machine.js.map +1 -0
  274. package/dist/lifecycle/tessera-engine.js +249 -0
  275. package/dist/lifecycle/tessera-engine.js.map +1 -0
  276. package/dist/logger.js +140 -0
  277. package/dist/logger.js.map +1 -0
  278. package/dist/memory/auto-extract.d.ts +27 -15
  279. package/dist/memory/auto-extract.d.ts.map +1 -1
  280. package/dist/memory/auto-extract.js +96 -0
  281. package/dist/memory/auto-extract.js.map +1 -0
  282. package/dist/memory/brain-backfill.d.ts +59 -0
  283. package/dist/memory/brain-backfill.d.ts.map +1 -0
  284. package/dist/memory/brain-backfill.js +389 -0
  285. package/dist/memory/brain-backfill.js.map +1 -0
  286. package/dist/memory/brain-consolidator.d.ts +48 -0
  287. package/dist/memory/brain-consolidator.d.ts.map +1 -0
  288. package/dist/memory/brain-consolidator.js +294 -0
  289. package/dist/memory/brain-consolidator.js.map +1 -0
  290. package/dist/memory/brain-embedding.js +66 -0
  291. package/dist/memory/brain-embedding.js.map +1 -0
  292. package/dist/memory/brain-lifecycle.d.ts +83 -2
  293. package/dist/memory/brain-lifecycle.d.ts.map +1 -1
  294. package/dist/memory/brain-lifecycle.js +807 -0
  295. package/dist/memory/brain-lifecycle.js.map +1 -0
  296. package/dist/memory/brain-links.js +161 -0
  297. package/dist/memory/brain-links.js.map +1 -0
  298. package/dist/memory/brain-maintenance.js +114 -0
  299. package/dist/memory/brain-maintenance.js.map +1 -0
  300. package/dist/memory/brain-migration.js +149 -0
  301. package/dist/memory/brain-migration.js.map +1 -0
  302. package/dist/memory/brain-purge.d.ts +51 -0
  303. package/dist/memory/brain-purge.d.ts.map +1 -0
  304. package/dist/memory/brain-purge.js +243 -0
  305. package/dist/memory/brain-purge.js.map +1 -0
  306. package/dist/memory/brain-reasoning.js +215 -0
  307. package/dist/memory/brain-reasoning.js.map +1 -0
  308. package/dist/memory/brain-retrieval.d.ts +69 -1
  309. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  310. package/dist/memory/brain-retrieval.js +912 -0
  311. package/dist/memory/brain-retrieval.js.map +1 -0
  312. package/dist/memory/brain-row-types.js +10 -0
  313. package/dist/memory/brain-row-types.js.map +1 -0
  314. package/dist/memory/brain-search.d.ts.map +1 -1
  315. package/dist/memory/brain-search.js +528 -0
  316. package/dist/memory/brain-search.js.map +1 -0
  317. package/dist/memory/brain-similarity.js +145 -0
  318. package/dist/memory/brain-similarity.js.map +1 -0
  319. package/dist/memory/claude-mem-migration.js +277 -0
  320. package/dist/memory/claude-mem-migration.js.map +1 -0
  321. package/dist/memory/decisions.d.ts.map +1 -1
  322. package/dist/memory/decisions.js +218 -0
  323. package/dist/memory/decisions.js.map +1 -0
  324. package/dist/memory/embedding-local.js +102 -0
  325. package/dist/memory/embedding-local.js.map +1 -0
  326. package/dist/memory/embedding-queue.js +271 -0
  327. package/dist/memory/embedding-queue.js.map +1 -0
  328. package/dist/memory/embedding-worker.js +58 -0
  329. package/dist/memory/embedding-worker.js.map +1 -0
  330. package/dist/memory/engine-compat.d.ts +71 -0
  331. package/dist/memory/engine-compat.d.ts.map +1 -1
  332. package/dist/memory/engine-compat.js +1564 -0
  333. package/dist/memory/engine-compat.js.map +1 -0
  334. package/dist/memory/extraction-gate.d.ts +139 -0
  335. package/dist/memory/extraction-gate.d.ts.map +1 -0
  336. package/dist/memory/extraction-gate.js +459 -0
  337. package/dist/memory/extraction-gate.js.map +1 -0
  338. package/dist/memory/graph-auto-populate.d.ts +65 -0
  339. package/dist/memory/graph-auto-populate.d.ts.map +1 -0
  340. package/dist/memory/graph-auto-populate.js +148 -0
  341. package/dist/memory/graph-auto-populate.js.map +1 -0
  342. package/dist/memory/graph-queries.d.ts +127 -0
  343. package/dist/memory/graph-queries.d.ts.map +1 -0
  344. package/dist/memory/graph-queries.js +290 -0
  345. package/dist/memory/graph-queries.js.map +1 -0
  346. package/dist/memory/index.d.ts +2 -0
  347. package/dist/memory/index.d.ts.map +1 -1
  348. package/dist/memory/index.js +1144 -0
  349. package/dist/memory/index.js.map +1 -0
  350. package/dist/memory/learnings.d.ts +16 -0
  351. package/dist/memory/learnings.d.ts.map +1 -1
  352. package/dist/memory/learnings.js +178 -0
  353. package/dist/memory/learnings.js.map +1 -0
  354. package/dist/memory/memory-bridge.js +370 -0
  355. package/dist/memory/memory-bridge.js.map +1 -0
  356. package/dist/memory/mental-model-injection.js +61 -0
  357. package/dist/memory/mental-model-injection.js.map +1 -0
  358. package/dist/memory/mental-model-queue.js +211 -0
  359. package/dist/memory/mental-model-queue.js.map +1 -0
  360. package/dist/memory/patterns.d.ts +26 -4
  361. package/dist/memory/patterns.d.ts.map +1 -1
  362. package/dist/memory/patterns.js +174 -0
  363. package/dist/memory/patterns.js.map +1 -0
  364. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  365. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  366. package/dist/memory/quality-scoring.d.ts +127 -0
  367. package/dist/memory/quality-scoring.d.ts.map +1 -0
  368. package/dist/memory/quality-scoring.js +182 -0
  369. package/dist/memory/quality-scoring.js.map +1 -0
  370. package/dist/memory/session-memory.js +331 -0
  371. package/dist/memory/session-memory.js.map +1 -0
  372. package/dist/metrics/ab-test.js +260 -0
  373. package/dist/metrics/ab-test.js.map +1 -0
  374. package/dist/metrics/aggregation.js +363 -0
  375. package/dist/metrics/aggregation.js.map +1 -0
  376. package/dist/metrics/common.js +64 -0
  377. package/dist/metrics/common.js.map +1 -0
  378. package/dist/metrics/enums.js +78 -0
  379. package/dist/metrics/enums.js.map +1 -0
  380. package/dist/metrics/index.js +19 -0
  381. package/dist/metrics/index.js.map +1 -0
  382. package/dist/metrics/model-provider-registry.js +88 -0
  383. package/dist/metrics/model-provider-registry.js.map +1 -0
  384. package/dist/metrics/otel-integration.js +263 -0
  385. package/dist/metrics/otel-integration.js.map +1 -0
  386. package/dist/metrics/provider-detection.js +103 -0
  387. package/dist/metrics/provider-detection.js.map +1 -0
  388. package/dist/metrics/token-estimation.js +253 -0
  389. package/dist/metrics/token-estimation.js.map +1 -0
  390. package/dist/metrics/token-service.js +450 -0
  391. package/dist/metrics/token-service.js.map +1 -0
  392. package/dist/migration/agent-outputs.js +316 -0
  393. package/dist/migration/agent-outputs.js.map +1 -0
  394. package/dist/migration/checksum.js +92 -0
  395. package/dist/migration/checksum.js.map +1 -0
  396. package/dist/migration/index.js +282 -0
  397. package/dist/migration/index.js.map +1 -0
  398. package/dist/migration/logger.js +360 -0
  399. package/dist/migration/logger.js.map +1 -0
  400. package/dist/migration/preflight.js +9 -0
  401. package/dist/migration/preflight.js.map +1 -0
  402. package/dist/migration/state.js +421 -0
  403. package/dist/migration/state.js.map +1 -0
  404. package/dist/migration/validate.js +241 -0
  405. package/dist/migration/validate.js.map +1 -0
  406. package/dist/mvi-helpers.js +73 -0
  407. package/dist/mvi-helpers.js.map +1 -0
  408. package/dist/nexus/deps.js +375 -0
  409. package/dist/nexus/deps.js.map +1 -0
  410. package/dist/nexus/discover.js +288 -0
  411. package/dist/nexus/discover.js.map +1 -0
  412. package/dist/nexus/hash.js +10 -0
  413. package/dist/nexus/hash.js.map +1 -0
  414. package/dist/nexus/index.js +40 -0
  415. package/dist/nexus/index.js.map +1 -0
  416. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  417. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  418. package/dist/nexus/nexus-bridge.d.ts +51 -0
  419. package/dist/nexus/nexus-bridge.d.ts.map +1 -0
  420. package/dist/nexus/nexus-bridge.js +321 -0
  421. package/dist/nexus/nexus-bridge.js.map +1 -0
  422. package/dist/nexus/permissions.js +105 -0
  423. package/dist/nexus/permissions.js.map +1 -0
  424. package/dist/nexus/query.js +175 -0
  425. package/dist/nexus/query.js.map +1 -0
  426. package/dist/nexus/registry.js +584 -0
  427. package/dist/nexus/registry.js.map +1 -0
  428. package/dist/nexus/sharing/index.js +288 -0
  429. package/dist/nexus/sharing/index.js.map +1 -0
  430. package/dist/nexus/transfer-types.js +8 -0
  431. package/dist/nexus/transfer-types.js.map +1 -0
  432. package/dist/nexus/transfer.js +271 -0
  433. package/dist/nexus/transfer.js.map +1 -0
  434. package/dist/nexus/workspace.js +355 -0
  435. package/dist/nexus/workspace.js.map +1 -0
  436. package/dist/observability/index.js +103 -0
  437. package/dist/observability/index.js.map +1 -0
  438. package/dist/observability/log-filter.js +63 -0
  439. package/dist/observability/log-filter.js.map +1 -0
  440. package/dist/observability/log-parser.js +99 -0
  441. package/dist/observability/log-parser.js.map +1 -0
  442. package/dist/observability/log-reader.js +139 -0
  443. package/dist/observability/log-reader.js.map +1 -0
  444. package/dist/observability/types.js +19 -0
  445. package/dist/observability/types.js.map +1 -0
  446. package/dist/orchestration/analyze.js +107 -0
  447. package/dist/orchestration/analyze.js.map +1 -0
  448. package/dist/orchestration/bootstrap.js +132 -0
  449. package/dist/orchestration/bootstrap.js.map +1 -0
  450. package/dist/orchestration/context.js +56 -0
  451. package/dist/orchestration/context.js.map +1 -0
  452. package/dist/orchestration/critical-path.js +100 -0
  453. package/dist/orchestration/critical-path.js.map +1 -0
  454. package/dist/orchestration/hierarchy.js +183 -0
  455. package/dist/orchestration/hierarchy.js.map +1 -0
  456. package/dist/orchestration/index.js +287 -0
  457. package/dist/orchestration/index.js.map +1 -0
  458. package/dist/orchestration/parallel.js +89 -0
  459. package/dist/orchestration/parallel.js.map +1 -0
  460. package/dist/orchestration/protocol-validators.js +815 -0
  461. package/dist/orchestration/protocol-validators.js.map +1 -0
  462. package/dist/orchestration/skill-ops.js +98 -0
  463. package/dist/orchestration/skill-ops.js.map +1 -0
  464. package/dist/orchestration/status.js +107 -0
  465. package/dist/orchestration/status.js.map +1 -0
  466. package/dist/orchestration/unblock.js +103 -0
  467. package/dist/orchestration/unblock.js.map +1 -0
  468. package/dist/orchestration/validate-spawn.js +67 -0
  469. package/dist/orchestration/validate-spawn.js.map +1 -0
  470. package/dist/orchestration/waves.js +86 -0
  471. package/dist/orchestration/waves.js.map +1 -0
  472. package/dist/otel/index.js +163 -0
  473. package/dist/otel/index.js.map +1 -0
  474. package/dist/output.js +164 -0
  475. package/dist/output.js.map +1 -0
  476. package/dist/pagination.js +64 -0
  477. package/dist/pagination.js.map +1 -0
  478. package/dist/paths.js +882 -0
  479. package/dist/paths.js.map +1 -0
  480. package/dist/phases/deps.js +372 -0
  481. package/dist/phases/deps.js.map +1 -0
  482. package/dist/phases/index.js +349 -0
  483. package/dist/phases/index.js.map +1 -0
  484. package/dist/pipeline/index.js +10 -0
  485. package/dist/pipeline/index.js.map +1 -0
  486. package/dist/pipeline/phase.js +45 -0
  487. package/dist/pipeline/phase.js.map +1 -0
  488. package/dist/platform.js +211 -0
  489. package/dist/platform.js.map +1 -0
  490. package/dist/project-info.js +84 -0
  491. package/dist/project-info.js.map +1 -0
  492. package/dist/reconciliation/index.js +10 -0
  493. package/dist/reconciliation/index.js.map +1 -0
  494. package/dist/reconciliation/link-store.js +175 -0
  495. package/dist/reconciliation/link-store.js.map +1 -0
  496. package/dist/reconciliation/reconciliation-engine.js +298 -0
  497. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  498. package/dist/release/artifacts.js +427 -0
  499. package/dist/release/artifacts.js.map +1 -0
  500. package/dist/release/changelog-writer.js +151 -0
  501. package/dist/release/changelog-writer.js.map +1 -0
  502. package/dist/release/channel.js +144 -0
  503. package/dist/release/channel.js.map +1 -0
  504. package/dist/release/ci.js +166 -0
  505. package/dist/release/ci.js.map +1 -0
  506. package/dist/release/github-pr.js +225 -0
  507. package/dist/release/github-pr.js.map +1 -0
  508. package/dist/release/guards.js +116 -0
  509. package/dist/release/guards.js.map +1 -0
  510. package/dist/release/index.js +22 -0
  511. package/dist/release/index.js.map +1 -0
  512. package/dist/release/release-config.js +158 -0
  513. package/dist/release/release-config.js.map +1 -0
  514. package/dist/release/release-manifest.js +1019 -0
  515. package/dist/release/release-manifest.js.map +1 -0
  516. package/dist/release/version-bump.js +255 -0
  517. package/dist/release/version-bump.js.map +1 -0
  518. package/dist/remote/index.js +257 -0
  519. package/dist/remote/index.js.map +1 -0
  520. package/dist/repair.js +130 -0
  521. package/dist/repair.js.map +1 -0
  522. package/dist/research/index.js +2 -0
  523. package/dist/research/index.js.map +1 -0
  524. package/dist/roadmap/index.js +59 -0
  525. package/dist/roadmap/index.js.map +1 -0
  526. package/dist/routing/capability-matrix.js +1556 -0
  527. package/dist/routing/capability-matrix.js.map +1 -0
  528. package/dist/routing/index.js +9 -0
  529. package/dist/routing/index.js.map +1 -0
  530. package/dist/scaffold.d.ts +18 -0
  531. package/dist/scaffold.d.ts.map +1 -1
  532. package/dist/scaffold.js +1798 -0
  533. package/dist/scaffold.js.map +1 -0
  534. package/dist/schema-management.js +295 -0
  535. package/dist/schema-management.js.map +1 -0
  536. package/dist/security/index.js +9 -0
  537. package/dist/security/index.js.map +1 -0
  538. package/dist/security/input-sanitization.js +326 -0
  539. package/dist/security/input-sanitization.js.map +1 -0
  540. package/dist/sequence/index.js +295 -0
  541. package/dist/sequence/index.js.map +1 -0
  542. package/dist/sessions/assumptions.js +54 -0
  543. package/dist/sessions/assumptions.js.map +1 -0
  544. package/dist/sessions/briefing.js +377 -0
  545. package/dist/sessions/briefing.js.map +1 -0
  546. package/dist/sessions/context-alert.js +222 -0
  547. package/dist/sessions/context-alert.js.map +1 -0
  548. package/dist/sessions/context-inject.js +61 -0
  549. package/dist/sessions/context-inject.js.map +1 -0
  550. package/dist/sessions/context-monitor.js +98 -0
  551. package/dist/sessions/context-monitor.js.map +1 -0
  552. package/dist/sessions/decisions.js +65 -0
  553. package/dist/sessions/decisions.js.map +1 -0
  554. package/dist/sessions/find.js +65 -0
  555. package/dist/sessions/find.js.map +1 -0
  556. package/dist/sessions/handoff.js +328 -0
  557. package/dist/sessions/handoff.js.map +1 -0
  558. package/dist/sessions/hitl-warnings.js +254 -0
  559. package/dist/sessions/hitl-warnings.js.map +1 -0
  560. package/dist/sessions/index.js +327 -0
  561. package/dist/sessions/index.js.map +1 -0
  562. package/dist/sessions/session-archive.js +40 -0
  563. package/dist/sessions/session-archive.js.map +1 -0
  564. package/dist/sessions/session-cleanup.js +59 -0
  565. package/dist/sessions/session-cleanup.js.map +1 -0
  566. package/dist/sessions/session-drift.js +134 -0
  567. package/dist/sessions/session-drift.js.map +1 -0
  568. package/dist/sessions/session-enforcement.js +144 -0
  569. package/dist/sessions/session-enforcement.js.map +1 -0
  570. package/dist/sessions/session-grade.js +253 -0
  571. package/dist/sessions/session-grade.js.map +1 -0
  572. package/dist/sessions/session-history.js +42 -0
  573. package/dist/sessions/session-history.js.map +1 -0
  574. package/dist/sessions/session-id.js +81 -0
  575. package/dist/sessions/session-id.js.map +1 -0
  576. package/dist/sessions/session-memory-bridge.d.ts +16 -10
  577. package/dist/sessions/session-memory-bridge.d.ts.map +1 -1
  578. package/dist/sessions/session-memory-bridge.js +30 -0
  579. package/dist/sessions/session-memory-bridge.js.map +1 -0
  580. package/dist/sessions/session-show.js +24 -0
  581. package/dist/sessions/session-show.js.map +1 -0
  582. package/dist/sessions/session-stats.js +69 -0
  583. package/dist/sessions/session-stats.js.map +1 -0
  584. package/dist/sessions/session-suspend.js +39 -0
  585. package/dist/sessions/session-suspend.js.map +1 -0
  586. package/dist/sessions/session-switch.js +51 -0
  587. package/dist/sessions/session-switch.js.map +1 -0
  588. package/dist/sessions/session-view.js +76 -0
  589. package/dist/sessions/session-view.js.map +1 -0
  590. package/dist/sessions/snapshot.js +213 -0
  591. package/dist/sessions/snapshot.js.map +1 -0
  592. package/dist/sessions/statusline-setup.js +85 -0
  593. package/dist/sessions/statusline-setup.js.map +1 -0
  594. package/dist/sessions/types.js +8 -0
  595. package/dist/sessions/types.js.map +1 -0
  596. package/dist/skills/agents/config.js +94 -0
  597. package/dist/skills/agents/config.js.map +1 -0
  598. package/dist/skills/agents/install.js +116 -0
  599. package/dist/skills/agents/install.js.map +1 -0
  600. package/dist/skills/agents/registry.js +161 -0
  601. package/dist/skills/agents/registry.js.map +1 -0
  602. package/dist/skills/discovery.js +333 -0
  603. package/dist/skills/discovery.js.map +1 -0
  604. package/dist/skills/dispatch.js +347 -0
  605. package/dist/skills/dispatch.js.map +1 -0
  606. package/dist/skills/dynamic-skill-generator.js +87 -0
  607. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  608. package/dist/skills/index.js +44 -0
  609. package/dist/skills/index.js.map +1 -0
  610. package/dist/skills/injection/subagent.js +195 -0
  611. package/dist/skills/injection/subagent.js.map +1 -0
  612. package/dist/skills/injection/token.js +260 -0
  613. package/dist/skills/injection/token.js.map +1 -0
  614. package/dist/skills/install.js +40 -0
  615. package/dist/skills/install.js.map +1 -0
  616. package/dist/skills/manifests/contribution.js +175 -0
  617. package/dist/skills/manifests/contribution.js.map +1 -0
  618. package/dist/skills/manifests/research.js +281 -0
  619. package/dist/skills/manifests/research.js.map +1 -0
  620. package/dist/skills/manifests/resolver.js +146 -0
  621. package/dist/skills/manifests/resolver.js.map +1 -0
  622. package/dist/skills/marketplace.js +90 -0
  623. package/dist/skills/marketplace.js.map +1 -0
  624. package/dist/skills/orchestrator/spawn.js +178 -0
  625. package/dist/skills/orchestrator/spawn.js.map +1 -0
  626. package/dist/skills/orchestrator/startup.js +451 -0
  627. package/dist/skills/orchestrator/startup.js.map +1 -0
  628. package/dist/skills/orchestrator/validator.js +301 -0
  629. package/dist/skills/orchestrator/validator.js.map +1 -0
  630. package/dist/skills/precedence-integration.js +73 -0
  631. package/dist/skills/precedence-integration.js.map +1 -0
  632. package/dist/skills/precedence-types.js +16 -0
  633. package/dist/skills/precedence-types.js.map +1 -0
  634. package/dist/skills/routing-table.js +63 -0
  635. package/dist/skills/routing-table.js.map +1 -0
  636. package/dist/skills/skill-paths.js +217 -0
  637. package/dist/skills/skill-paths.js.map +1 -0
  638. package/dist/skills/test-utility.js +55 -0
  639. package/dist/skills/test-utility.js.map +1 -0
  640. package/dist/skills/types.js +118 -0
  641. package/dist/skills/types.js.map +1 -0
  642. package/dist/skills/validation.js +183 -0
  643. package/dist/skills/validation.js.map +1 -0
  644. package/dist/skills/version.js +57 -0
  645. package/dist/skills/version.js.map +1 -0
  646. package/dist/snapshot/index.js +188 -0
  647. package/dist/snapshot/index.js.map +1 -0
  648. package/dist/spawn/adapter-registry.js +246 -0
  649. package/dist/spawn/adapter-registry.js.map +1 -0
  650. package/dist/spawn/index.js +10 -0
  651. package/dist/spawn/index.js.map +1 -0
  652. package/dist/stats/index.d.ts.map +1 -1
  653. package/dist/stats/index.js +350 -0
  654. package/dist/stats/index.js.map +1 -0
  655. package/dist/stats/workflow-telemetry.js +400 -0
  656. package/dist/stats/workflow-telemetry.js.map +1 -0
  657. package/dist/sticky/archive.js +47 -0
  658. package/dist/sticky/archive.js.map +1 -0
  659. package/dist/sticky/convert.js +235 -0
  660. package/dist/sticky/convert.js.map +1 -0
  661. package/dist/sticky/create.js +48 -0
  662. package/dist/sticky/create.js.map +1 -0
  663. package/dist/sticky/id.js +35 -0
  664. package/dist/sticky/id.js.map +1 -0
  665. package/dist/sticky/index.js +16 -0
  666. package/dist/sticky/index.js.map +1 -0
  667. package/dist/sticky/list.js +57 -0
  668. package/dist/sticky/list.js.map +1 -0
  669. package/dist/sticky/purge.js +45 -0
  670. package/dist/sticky/purge.js.map +1 -0
  671. package/dist/sticky/show.js +42 -0
  672. package/dist/sticky/show.js.map +1 -0
  673. package/dist/sticky/types.js +10 -0
  674. package/dist/sticky/types.js.map +1 -0
  675. package/dist/store/agent-registry-accessor.js +886 -0
  676. package/dist/store/agent-registry-accessor.js.map +1 -0
  677. package/dist/store/api-key-kdf.js +84 -0
  678. package/dist/store/api-key-kdf.js.map +1 -0
  679. package/dist/store/atomic.js +167 -0
  680. package/dist/store/atomic.js.map +1 -0
  681. package/dist/store/backup-crypto.js +184 -0
  682. package/dist/store/backup-crypto.js.map +1 -0
  683. package/dist/store/backup-pack.js +581 -0
  684. package/dist/store/backup-pack.js.map +1 -0
  685. package/dist/store/backup-unpack.js +449 -0
  686. package/dist/store/backup-unpack.js.map +1 -0
  687. package/dist/store/backup.js +94 -0
  688. package/dist/store/backup.js.map +1 -0
  689. package/dist/store/brain-accessor.d.ts +7 -0
  690. package/dist/store/brain-accessor.d.ts.map +1 -1
  691. package/dist/store/brain-accessor.js +429 -0
  692. package/dist/store/brain-accessor.js.map +1 -0
  693. package/dist/store/brain-schema.d.ts +712 -45
  694. package/dist/store/brain-schema.d.ts.map +1 -1
  695. package/dist/store/brain-schema.js +549 -0
  696. package/dist/store/brain-schema.js.map +1 -0
  697. package/dist/store/brain-sqlite.d.ts.map +1 -1
  698. package/dist/store/brain-sqlite.js +257 -0
  699. package/dist/store/brain-sqlite.js.map +1 -0
  700. package/dist/store/cache.js +168 -0
  701. package/dist/store/cache.js.map +1 -0
  702. package/dist/store/chain-schema.js +51 -0
  703. package/dist/store/chain-schema.js.map +1 -0
  704. package/dist/store/cleanup-legacy.js +171 -0
  705. package/dist/store/cleanup-legacy.js.map +1 -0
  706. package/dist/store/conduit-sqlite.js +570 -0
  707. package/dist/store/conduit-sqlite.js.map +1 -0
  708. package/dist/store/converters.js +124 -0
  709. package/dist/store/converters.js.map +1 -0
  710. package/dist/store/cross-db-cleanup.js +319 -0
  711. package/dist/store/cross-db-cleanup.js.map +1 -0
  712. package/dist/store/data-accessor.js +26 -0
  713. package/dist/store/data-accessor.js.map +1 -0
  714. package/dist/store/data-safety-central.js +269 -0
  715. package/dist/store/data-safety-central.js.map +1 -0
  716. package/dist/store/data-safety.js +274 -0
  717. package/dist/store/data-safety.js.map +1 -0
  718. package/dist/store/db-helpers.js +224 -0
  719. package/dist/store/db-helpers.js.map +1 -0
  720. package/dist/store/export.js +155 -0
  721. package/dist/store/export.js.map +1 -0
  722. package/dist/store/file-utils.js +270 -0
  723. package/dist/store/file-utils.js.map +1 -0
  724. package/dist/store/git-checkpoint.js +365 -0
  725. package/dist/store/git-checkpoint.js.map +1 -0
  726. package/dist/store/global-salt.js +147 -0
  727. package/dist/store/global-salt.js.map +1 -0
  728. package/dist/store/import-logging.js +139 -0
  729. package/dist/store/import-logging.js.map +1 -0
  730. package/dist/store/import-remap.js +145 -0
  731. package/dist/store/import-remap.js.map +1 -0
  732. package/dist/store/import-sort.js +121 -0
  733. package/dist/store/import-sort.js.map +1 -0
  734. package/dist/store/index.js +29 -0
  735. package/dist/store/index.js.map +1 -0
  736. package/dist/store/json.js +208 -0
  737. package/dist/store/json.js.map +1 -0
  738. package/dist/store/lifecycle-store.js +249 -0
  739. package/dist/store/lifecycle-store.js.map +1 -0
  740. package/dist/store/lock.js +70 -0
  741. package/dist/store/lock.js.map +1 -0
  742. package/dist/store/migrate-signaldock-to-conduit.js +562 -0
  743. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  744. package/dist/store/migration-manager.d.ts +5 -1
  745. package/dist/store/migration-manager.d.ts.map +1 -1
  746. package/dist/store/migration-manager.js +288 -0
  747. package/dist/store/migration-manager.js.map +1 -0
  748. package/dist/store/migration-sqlite.js +676 -0
  749. package/dist/store/migration-sqlite.js.map +1 -0
  750. package/dist/store/nexus-schema.d.ts +480 -2
  751. package/dist/store/nexus-schema.d.ts.map +1 -1
  752. package/dist/store/nexus-schema.js +268 -0
  753. package/dist/store/nexus-schema.js.map +1 -0
  754. package/dist/store/nexus-sqlite.js +242 -0
  755. package/dist/store/nexus-sqlite.js.map +1 -0
  756. package/dist/store/nexus-validation-schemas.js +40 -0
  757. package/dist/store/nexus-validation-schemas.js.map +1 -0
  758. package/dist/store/parsers.js +37 -0
  759. package/dist/store/parsers.js.map +1 -0
  760. package/dist/store/project-detect.js +457 -0
  761. package/dist/store/project-detect.js.map +1 -0
  762. package/dist/store/provider.js +101 -0
  763. package/dist/store/provider.js.map +1 -0
  764. package/dist/store/regenerators.js +207 -0
  765. package/dist/store/regenerators.js.map +1 -0
  766. package/dist/store/restore-conflict-report.js +206 -0
  767. package/dist/store/restore-conflict-report.js.map +1 -0
  768. package/dist/store/restore-json-merge.js +454 -0
  769. package/dist/store/restore-json-merge.js.map +1 -0
  770. package/dist/store/safety-data-accessor.js +257 -0
  771. package/dist/store/safety-data-accessor.js.map +1 -0
  772. package/dist/store/schema.js +7 -0
  773. package/dist/store/schema.js.map +1 -0
  774. package/dist/store/session-store.js +219 -0
  775. package/dist/store/session-store.js.map +1 -0
  776. package/dist/store/signaldock-sqlite.js +550 -0
  777. package/dist/store/signaldock-sqlite.js.map +1 -0
  778. package/dist/store/sqlite-backup.js +498 -0
  779. package/dist/store/sqlite-backup.js.map +1 -0
  780. package/dist/store/sqlite-data-accessor.js +787 -0
  781. package/dist/store/sqlite-data-accessor.js.map +1 -0
  782. package/dist/store/sqlite.js +483 -0
  783. package/dist/store/sqlite.js.map +1 -0
  784. package/dist/store/status-registry.js +8 -0
  785. package/dist/store/status-registry.js.map +1 -0
  786. package/dist/store/t310-readiness.js +115 -0
  787. package/dist/store/t310-readiness.js.map +1 -0
  788. package/dist/store/task-store.js +358 -0
  789. package/dist/store/task-store.js.map +1 -0
  790. package/dist/store/tasks-schema.d.ts +10 -10
  791. package/dist/store/tasks-schema.js +610 -0
  792. package/dist/store/tasks-schema.js.map +1 -0
  793. package/dist/store/typed-query.js +15 -0
  794. package/dist/store/typed-query.js.map +1 -0
  795. package/dist/store/validation-schemas.d.ts +50 -34
  796. package/dist/store/validation-schemas.d.ts.map +1 -1
  797. package/dist/store/validation-schemas.js +278 -0
  798. package/dist/store/validation-schemas.js.map +1 -0
  799. package/dist/system/archive-analytics.js +277 -0
  800. package/dist/system/archive-analytics.js.map +1 -0
  801. package/dist/system/archive-stats.js +64 -0
  802. package/dist/system/archive-stats.js.map +1 -0
  803. package/dist/system/audit.js +145 -0
  804. package/dist/system/audit.js.map +1 -0
  805. package/dist/system/backup.js +280 -0
  806. package/dist/system/backup.js.map +1 -0
  807. package/dist/system/cleanup.js +134 -0
  808. package/dist/system/cleanup.js.map +1 -0
  809. package/dist/system/dependencies.d.ts +43 -0
  810. package/dist/system/dependencies.d.ts.map +1 -0
  811. package/dist/system/dependencies.js +466 -0
  812. package/dist/system/dependencies.js.map +1 -0
  813. package/dist/system/health.d.ts +3 -0
  814. package/dist/system/health.d.ts.map +1 -1
  815. package/dist/system/health.js +1206 -0
  816. package/dist/system/health.js.map +1 -0
  817. package/dist/system/index.js +18 -0
  818. package/dist/system/index.js.map +1 -0
  819. package/dist/system/inject-generate.js +122 -0
  820. package/dist/system/inject-generate.js.map +1 -0
  821. package/dist/system/labels.js +38 -0
  822. package/dist/system/labels.js.map +1 -0
  823. package/dist/system/metrics.js +61 -0
  824. package/dist/system/metrics.js.map +1 -0
  825. package/dist/system/migrate.js +43 -0
  826. package/dist/system/migrate.js.map +1 -0
  827. package/dist/system/platform-paths.js +80 -0
  828. package/dist/system/platform-paths.js.map +1 -0
  829. package/dist/system/runtime.js +161 -0
  830. package/dist/system/runtime.js.map +1 -0
  831. package/dist/system/safestop.js +89 -0
  832. package/dist/system/safestop.js.map +1 -0
  833. package/dist/system/storage-preflight.js +123 -0
  834. package/dist/system/storage-preflight.js.map +1 -0
  835. package/dist/task-work/index.js +159 -0
  836. package/dist/task-work/index.js.map +1 -0
  837. package/dist/tasks/add.js +837 -0
  838. package/dist/tasks/add.js.map +1 -0
  839. package/dist/tasks/analyze.js +85 -0
  840. package/dist/tasks/analyze.js.map +1 -0
  841. package/dist/tasks/archive.js +90 -0
  842. package/dist/tasks/archive.js.map +1 -0
  843. package/dist/tasks/atomicity.js +83 -0
  844. package/dist/tasks/atomicity.js.map +1 -0
  845. package/dist/tasks/cancel-ops.js +83 -0
  846. package/dist/tasks/cancel-ops.js.map +1 -0
  847. package/dist/tasks/complete.d.ts.map +1 -1
  848. package/dist/tasks/complete.js +229 -0
  849. package/dist/tasks/complete.js.map +1 -0
  850. package/dist/tasks/crossref-extract.js +73 -0
  851. package/dist/tasks/crossref-extract.js.map +1 -0
  852. package/dist/tasks/delete-preview.js +192 -0
  853. package/dist/tasks/delete-preview.js.map +1 -0
  854. package/dist/tasks/delete.js +120 -0
  855. package/dist/tasks/delete.js.map +1 -0
  856. package/dist/tasks/deletion-strategy.js +200 -0
  857. package/dist/tasks/deletion-strategy.js.map +1 -0
  858. package/dist/tasks/dependency-check.js +278 -0
  859. package/dist/tasks/dependency-check.js.map +1 -0
  860. package/dist/tasks/deps-ready.js +32 -0
  861. package/dist/tasks/deps-ready.js.map +1 -0
  862. package/dist/tasks/enforcement.js +86 -0
  863. package/dist/tasks/enforcement.js.map +1 -0
  864. package/dist/tasks/epic-enforcement.js +294 -0
  865. package/dist/tasks/epic-enforcement.js.map +1 -0
  866. package/dist/tasks/find.js +163 -0
  867. package/dist/tasks/find.js.map +1 -0
  868. package/dist/tasks/graph-cache.js +127 -0
  869. package/dist/tasks/graph-cache.js.map +1 -0
  870. package/dist/tasks/graph-ops.d.ts.map +1 -1
  871. package/dist/tasks/graph-ops.js +173 -0
  872. package/dist/tasks/graph-ops.js.map +1 -0
  873. package/dist/tasks/graph-rag.js +328 -0
  874. package/dist/tasks/graph-rag.js.map +1 -0
  875. package/dist/tasks/hierarchy-policy.js +149 -0
  876. package/dist/tasks/hierarchy-policy.js.map +1 -0
  877. package/dist/tasks/hierarchy.js +185 -0
  878. package/dist/tasks/hierarchy.js.map +1 -0
  879. package/dist/tasks/id-generator.js +65 -0
  880. package/dist/tasks/id-generator.js.map +1 -0
  881. package/dist/tasks/index.js +14 -0
  882. package/dist/tasks/index.js.map +1 -0
  883. package/dist/tasks/labels.js +55 -0
  884. package/dist/tasks/labels.js.map +1 -0
  885. package/dist/tasks/list.js +75 -0
  886. package/dist/tasks/list.js.map +1 -0
  887. package/dist/tasks/phase-tracking.js +133 -0
  888. package/dist/tasks/phase-tracking.js.map +1 -0
  889. package/dist/tasks/pipeline-stage.js +248 -0
  890. package/dist/tasks/pipeline-stage.js.map +1 -0
  891. package/dist/tasks/plan.js +268 -0
  892. package/dist/tasks/plan.js.map +1 -0
  893. package/dist/tasks/relates.js +101 -0
  894. package/dist/tasks/relates.js.map +1 -0
  895. package/dist/tasks/show.js +83 -0
  896. package/dist/tasks/show.js.map +1 -0
  897. package/dist/tasks/size-weighting.js +86 -0
  898. package/dist/tasks/size-weighting.js.map +1 -0
  899. package/dist/tasks/staleness.js +86 -0
  900. package/dist/tasks/staleness.js.map +1 -0
  901. package/dist/tasks/task-ops.js +1741 -0
  902. package/dist/tasks/task-ops.js.map +1 -0
  903. package/dist/tasks/update.js +303 -0
  904. package/dist/tasks/update.js.map +1 -0
  905. package/dist/templates/index.js +10 -0
  906. package/dist/templates/index.js.map +1 -0
  907. package/dist/templates/parser.js +254 -0
  908. package/dist/templates/parser.js.map +1 -0
  909. package/dist/ui/aliases.js +153 -0
  910. package/dist/ui/aliases.js.map +1 -0
  911. package/dist/ui/changelog.js +184 -0
  912. package/dist/ui/changelog.js.map +1 -0
  913. package/dist/ui/command-registry.js +168 -0
  914. package/dist/ui/command-registry.js.map +1 -0
  915. package/dist/ui/flags.js +94 -0
  916. package/dist/ui/flags.js.map +1 -0
  917. package/dist/ui/index.js +24 -0
  918. package/dist/ui/index.js.map +1 -0
  919. package/dist/upgrade.js +1148 -0
  920. package/dist/upgrade.js.map +1 -0
  921. package/dist/validation/chain-validation.js +146 -0
  922. package/dist/validation/chain-validation.js.map +1 -0
  923. package/dist/validation/compliance.js +155 -0
  924. package/dist/validation/compliance.js.map +1 -0
  925. package/dist/validation/docs-sync.js +212 -0
  926. package/dist/validation/docs-sync.js.map +1 -0
  927. package/dist/validation/doctor/checks.js +1069 -0
  928. package/dist/validation/doctor/checks.js.map +1 -0
  929. package/dist/validation/doctor/index.js +9 -0
  930. package/dist/validation/doctor/index.js.map +1 -0
  931. package/dist/validation/doctor/project-cache.js +160 -0
  932. package/dist/validation/doctor/project-cache.js.map +1 -0
  933. package/dist/validation/doctor/utils.js +155 -0
  934. package/dist/validation/doctor/utils.js.map +1 -0
  935. package/dist/validation/engine.js +914 -0
  936. package/dist/validation/engine.js.map +1 -0
  937. package/dist/validation/gap-check.js +175 -0
  938. package/dist/validation/gap-check.js.map +1 -0
  939. package/dist/validation/index.js +40 -0
  940. package/dist/validation/index.js.map +1 -0
  941. package/dist/validation/manifest.js +237 -0
  942. package/dist/validation/manifest.js.map +1 -0
  943. package/dist/validation/operation-gate-validators.js +724 -0
  944. package/dist/validation/operation-gate-validators.js.map +1 -0
  945. package/dist/validation/operation-verification-gates.js +532 -0
  946. package/dist/validation/operation-verification-gates.js.map +1 -0
  947. package/dist/validation/param-utils.js +141 -0
  948. package/dist/validation/param-utils.js.map +1 -0
  949. package/dist/validation/protocol-common.js +300 -0
  950. package/dist/validation/protocol-common.js.map +1 -0
  951. package/dist/validation/protocols/_shared.js +82 -0
  952. package/dist/validation/protocols/_shared.js.map +1 -0
  953. package/dist/validation/protocols/architecture-decision.js +31 -0
  954. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  955. package/dist/validation/protocols/artifact-publish.js +28 -0
  956. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  957. package/dist/validation/protocols/consensus.js +41 -0
  958. package/dist/validation/protocols/consensus.js.map +1 -0
  959. package/dist/validation/protocols/contribution.js +27 -0
  960. package/dist/validation/protocols/contribution.js.map +1 -0
  961. package/dist/validation/protocols/decomposition.js +28 -0
  962. package/dist/validation/protocols/decomposition.js.map +1 -0
  963. package/dist/validation/protocols/implementation.js +24 -0
  964. package/dist/validation/protocols/implementation.js.map +1 -0
  965. package/dist/validation/protocols/provenance.js +29 -0
  966. package/dist/validation/protocols/provenance.js.map +1 -0
  967. package/dist/validation/protocols/release.js +29 -0
  968. package/dist/validation/protocols/release.js.map +1 -0
  969. package/dist/validation/protocols/research.js +24 -0
  970. package/dist/validation/protocols/research.js.map +1 -0
  971. package/dist/validation/protocols/specification.js +27 -0
  972. package/dist/validation/protocols/specification.js.map +1 -0
  973. package/dist/validation/protocols/testing.js +30 -0
  974. package/dist/validation/protocols/testing.js.map +1 -0
  975. package/dist/validation/protocols/validation.js +30 -0
  976. package/dist/validation/protocols/validation.js.map +1 -0
  977. package/dist/validation/schema-integrity.js +170 -0
  978. package/dist/validation/schema-integrity.js.map +1 -0
  979. package/dist/validation/schema-validator.js +176 -0
  980. package/dist/validation/schema-validator.js.map +1 -0
  981. package/dist/validation/validate-ops.js +937 -0
  982. package/dist/validation/validate-ops.js.map +1 -0
  983. package/dist/validation/validation-rules.js +226 -0
  984. package/dist/validation/validation-rules.js.map +1 -0
  985. package/dist/validation/verification.js +321 -0
  986. package/dist/validation/verification.js.map +1 -0
  987. package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
  988. package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
  989. package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
  990. package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
  991. package/package.json +19 -19
  992. package/src/bootstrap.ts +124 -0
  993. package/src/code/index.ts +20 -4
  994. package/src/code/parser.ts +310 -110
  995. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +19 -45
  996. package/src/hooks/handlers/__tests__/session-hooks.test.ts +42 -54
  997. package/src/hooks/handlers/index.ts +6 -0
  998. package/src/hooks/handlers/intelligence-hooks.ts +80 -0
  999. package/src/hooks/handlers/session-hooks.ts +52 -33
  1000. package/src/hooks/handlers/watchdog-hooks.ts +187 -0
  1001. package/src/index.ts +14 -0
  1002. package/src/injection.ts +41 -2
  1003. package/src/internal.ts +68 -9
  1004. package/src/lib/tree-sitter-languages.ts +11 -7
  1005. package/src/memory/__tests__/auto-extract.test.ts +20 -82
  1006. package/src/memory/__tests__/embedding-pipeline.test.ts +389 -0
  1007. package/src/memory/auto-extract.ts +34 -120
  1008. package/src/memory/brain-backfill.ts +471 -0
  1009. package/src/memory/brain-consolidator.ts +344 -0
  1010. package/src/memory/brain-lifecycle.ts +636 -2
  1011. package/src/memory/brain-purge.ts +315 -0
  1012. package/src/memory/brain-retrieval.ts +486 -2
  1013. package/src/memory/brain-search.ts +61 -10
  1014. package/src/memory/decisions.ts +96 -3
  1015. package/src/memory/engine-compat.ts +177 -11
  1016. package/src/memory/extraction-gate.ts +574 -0
  1017. package/src/memory/graph-auto-populate.ts +173 -0
  1018. package/src/memory/graph-queries.ts +424 -0
  1019. package/src/memory/index.ts +6 -2
  1020. package/src/memory/learnings.ts +87 -7
  1021. package/src/memory/patterns.ts +95 -13
  1022. package/src/memory/quality-scoring.ts +257 -0
  1023. package/src/nexus/nexus-bridge.ts +444 -0
  1024. package/src/scaffold.ts +42 -0
  1025. package/src/sessions/__tests__/session-memory-bridge.test.ts +27 -49
  1026. package/src/sessions/session-memory-bridge.ts +19 -47
  1027. package/src/stats/index.ts +11 -3
  1028. package/src/store/__tests__/brain-accessor-pageindex.test.ts +93 -22
  1029. package/src/store/brain-accessor.ts +48 -2
  1030. package/src/store/brain-schema.ts +403 -13
  1031. package/src/store/brain-sqlite.ts +90 -0
  1032. package/src/store/migration-manager.ts +83 -12
  1033. package/src/store/nexus-schema.ts +257 -3
  1034. package/src/system/dependencies.ts +534 -0
  1035. package/src/system/health.ts +143 -22
  1036. package/src/tasks/complete.ts +40 -0
  1037. package/src/tasks/graph-ops.ts +1 -0
  1038. package/src/tasks/task-ops.ts +1 -1
  1039. package/templates/CLEO-INJECTION.md +15 -0
@@ -0,0 +1,459 @@
1
+ /**
2
+ * Extraction Gate — Verification layer before BRAIN memory storage.
3
+ *
4
+ * Wraps all memory writes with three ordered checks:
5
+ * A. Content-hash deduplication (always runs — fast, no embedding needed)
6
+ * B. Cosine similarity deduplication (runs when embedding is available; skipped for trusted sources)
7
+ * C. Confidence threshold enforcement (always runs)
8
+ *
9
+ * Trusted sources (manual, owner) bypass Check B but still run A and C.
10
+ *
11
+ * Design goals:
12
+ * - NEVER block the primary write path on error — all checks wrapped in try/catch
13
+ * - Degrade gracefully to hash-only dedup when embedding is unavailable
14
+ * - Contradiction detection uses a polarity-flip heuristic (no LLM required)
15
+ *
16
+ * @task T549 Wave 2-A
17
+ * @epic T549
18
+ */
19
+ import { createHash } from 'node:crypto';
20
+ import { isEmbeddingAvailable } from './brain-embedding.js';
21
+ import { searchSimilar } from './brain-similarity.js';
22
+ import { addGraphEdge } from './graph-auto-populate.js';
23
+ // ============================================================================
24
+ // Constants
25
+ // ============================================================================
26
+ /** Cosine distance below which two entries are considered exact duplicates. */
27
+ const DUPLICATE_THRESHOLD = 0.15;
28
+ /** Cosine distance below which two entries are considered closely related. */
29
+ const SIMILAR_THRESHOLD = 0.3;
30
+ /** Minimum confidence score required to store an entry. */
31
+ const MINIMUM_CONFIDENCE = 0.4;
32
+ /**
33
+ * Negation markers used in polarity-flip contradiction detection.
34
+ * A contradiction is signalled when exactly one of two related entries
35
+ * contains one of these markers near shared keyword overlap.
36
+ */
37
+ const NEGATION_MARKERS = [
38
+ 'not',
39
+ 'never',
40
+ 'no longer',
41
+ 'deprecated',
42
+ 'removed',
43
+ 'replaced',
44
+ 'broken',
45
+ 'avoid',
46
+ 'do not',
47
+ "don't",
48
+ 'invalid',
49
+ 'obsolete',
50
+ ];
51
+ // ============================================================================
52
+ // Helpers
53
+ // ============================================================================
54
+ /**
55
+ * Compute a short SHA-256 prefix over the normalised text content.
56
+ * Used for exact-duplicate detection without embedding.
57
+ */
58
+ function contentHashPrefix(text) {
59
+ return createHash('sha256').update(text.trim().toLowerCase()).digest('hex').slice(0, 16);
60
+ }
61
+ /**
62
+ * Polarity-flip contradiction heuristic.
63
+ *
64
+ * Returns true when exactly one of the two texts carries a negation marker
65
+ * AND both texts share at least 3 meaningful keywords (>4 chars).
66
+ *
67
+ * This is intentionally approximate — false positives cause a supersede
68
+ * write (safe), false negatives allow a duplicate (harmless, caught later
69
+ * by cosine merge).
70
+ */
71
+ function hasContradictingPolarity(existingText, newText) {
72
+ const existingLower = existingText.toLowerCase();
73
+ const newLower = newText.toLowerCase();
74
+ const existingNegated = NEGATION_MARKERS.some((m) => existingLower.includes(m));
75
+ const newNegated = NEGATION_MARKERS.some((m) => newLower.includes(m));
76
+ // Contradiction: exactly one of the two carries negation
77
+ if (existingNegated === newNegated)
78
+ return false;
79
+ // Require at least 3 shared meaningful keywords
80
+ const existingWords = new Set(existingLower.split(/\s+/).filter((w) => w.length > 4));
81
+ const newWords = new Set(newLower.split(/\s+/).filter((w) => w.length > 4));
82
+ const overlap = [...newWords].filter((w) => existingWords.has(w));
83
+ return overlap.length >= 3;
84
+ }
85
+ /**
86
+ * Mark an existing entry as invalid (superseded).
87
+ * Sets the invalid_at column to now on whichever typed table owns the entry.
88
+ *
89
+ * Determined by ID prefix conventions:
90
+ * D... → brain_decisions
91
+ * P... → brain_patterns
92
+ * L... → brain_learnings
93
+ * O... / CM-... → brain_observations
94
+ */
95
+ async function invalidateEntry(projectRoot, entryId) {
96
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
97
+ try {
98
+ const { getBrainNativeDb, getBrainDb } = await import('../store/brain-sqlite.js');
99
+ await getBrainDb(projectRoot);
100
+ const nativeDb = getBrainNativeDb();
101
+ if (!nativeDb)
102
+ return;
103
+ // Route by ID prefix to correct table
104
+ if (entryId.startsWith('D-') || /^D\d/.test(entryId)) {
105
+ nativeDb
106
+ .prepare('UPDATE brain_decisions SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL')
107
+ .run(now, entryId);
108
+ }
109
+ else if (entryId.startsWith('P-') || /^P\d/.test(entryId)) {
110
+ nativeDb
111
+ .prepare('UPDATE brain_patterns SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL')
112
+ .run(now, entryId);
113
+ }
114
+ else if (entryId.startsWith('L-') || /^L\d/.test(entryId)) {
115
+ nativeDb
116
+ .prepare('UPDATE brain_learnings SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL')
117
+ .run(now, entryId);
118
+ }
119
+ else {
120
+ // O-, O[base36], CM- → observations
121
+ nativeDb
122
+ .prepare('UPDATE brain_observations SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL')
123
+ .run(now, entryId);
124
+ }
125
+ }
126
+ catch {
127
+ // Best-effort — invalidation failure must not block the primary write
128
+ }
129
+ }
130
+ /**
131
+ * Increment the citation_count of an existing entry by 1.
132
+ * Routes by the same ID-prefix convention as invalidateEntry.
133
+ */
134
+ async function incrementCitationCount(projectRoot, entryId) {
135
+ try {
136
+ const { getBrainNativeDb, getBrainDb } = await import('../store/brain-sqlite.js');
137
+ await getBrainDb(projectRoot);
138
+ const nativeDb = getBrainNativeDb();
139
+ if (!nativeDb)
140
+ return;
141
+ if (entryId.startsWith('D-') || /^D\d/.test(entryId)) {
142
+ nativeDb
143
+ .prepare('UPDATE brain_decisions SET citation_count = citation_count + 1 WHERE id = ?')
144
+ .run(entryId);
145
+ }
146
+ else if (entryId.startsWith('P-') || /^P\d/.test(entryId)) {
147
+ nativeDb
148
+ .prepare('UPDATE brain_patterns SET citation_count = citation_count + 1 WHERE id = ?')
149
+ .run(entryId);
150
+ }
151
+ else if (entryId.startsWith('L-') || /^L\d/.test(entryId)) {
152
+ nativeDb
153
+ .prepare('UPDATE brain_learnings SET citation_count = citation_count + 1 WHERE id = ?')
154
+ .run(entryId);
155
+ }
156
+ else {
157
+ nativeDb
158
+ .prepare('UPDATE brain_observations SET citation_count = citation_count + 1 WHERE id = ?')
159
+ .run(entryId);
160
+ }
161
+ }
162
+ catch {
163
+ // Best-effort
164
+ }
165
+ }
166
+ /**
167
+ * Check A (degraded): SHA-256 content-hash deduplication only.
168
+ *
169
+ * Queries brain_observations for a matching content_hash within the last
170
+ * 24 hours. When a match is found, returns 'merged' so the caller avoids
171
+ * a duplicate insert.
172
+ *
173
+ * Only checks brain_observations because it is the only table that stores
174
+ * a content_hash column. For other memory types, hash dedup is not supported
175
+ * and this returns null.
176
+ */
177
+ async function hashDedupCheck(projectRoot, text) {
178
+ try {
179
+ const { getBrainNativeDb, getBrainDb } = await import('../store/brain-sqlite.js');
180
+ await getBrainDb(projectRoot);
181
+ const nativeDb = getBrainNativeDb();
182
+ if (!nativeDb)
183
+ return { matched: false };
184
+ const hash = contentHashPrefix(text);
185
+ // Search across all observations (no time window — permanent dedup)
186
+ const rows = nativeDb
187
+ .prepare('SELECT id FROM brain_observations WHERE content_hash = ? AND invalid_at IS NULL LIMIT 1')
188
+ .all(hash);
189
+ if (rows.length > 0) {
190
+ return { matched: true, id: rows[0].id };
191
+ }
192
+ }
193
+ catch {
194
+ // Degrade gracefully — if dedup check fails, allow the write
195
+ }
196
+ return { matched: false };
197
+ }
198
+ /**
199
+ * Determine whether the candidate is from a trusted source that bypasses
200
+ * the similarity/contradiction checks (Checks B).
201
+ *
202
+ * Trusted: explicit candidate.trusted flag, source='manual', or
203
+ * sourceConfidence='owner' or 'task-outcome'.
204
+ */
205
+ function isTrustedSource(candidate) {
206
+ if (candidate.trusted === true)
207
+ return true;
208
+ if (candidate.source === 'manual')
209
+ return true;
210
+ if (candidate.sourceConfidence === 'owner' || candidate.sourceConfidence === 'task-outcome') {
211
+ return true;
212
+ }
213
+ return false;
214
+ }
215
+ // ============================================================================
216
+ // Core Gate Logic
217
+ // ============================================================================
218
+ /**
219
+ * Run a MemoryCandidate through the verification gate.
220
+ *
221
+ * Checks (in order):
222
+ * A. Content-hash deduplication (always; degrades to observations-only when DB unavailable)
223
+ * B. Cosine similarity deduplication + contradiction detection (skipped for trusted sources)
224
+ * C. Confidence threshold >= 0.40 (always)
225
+ *
226
+ * The gate NEVER stores the entry itself — it only decides whether the caller
227
+ * should store, merge into an existing entry, queue as pending, or reject.
228
+ *
229
+ * To store after receiving action='stored', call the appropriate storage
230
+ * function (observeBrain, storeLearning, storePattern, storeDecision).
231
+ *
232
+ * @param projectRoot - Project root for brain.db access
233
+ * @param candidate - Candidate to verify
234
+ * @returns GateResult describing what should happen
235
+ */
236
+ export async function verifyCandidate(projectRoot, candidate) {
237
+ try {
238
+ // -----------------------------------------------------------------------
239
+ // Check A: Content-hash dedup (always, fast)
240
+ // -----------------------------------------------------------------------
241
+ const hashCheck = await hashDedupCheck(projectRoot, candidate.text);
242
+ if (hashCheck.matched) {
243
+ // Bump citation count on the existing entry (fire-and-forget)
244
+ incrementCitationCount(projectRoot, hashCheck.id).catch(() => undefined);
245
+ return {
246
+ action: 'merged',
247
+ id: hashCheck.id,
248
+ reason: `exact-duplicate (hash match) of ${hashCheck.id}`,
249
+ };
250
+ }
251
+ // -----------------------------------------------------------------------
252
+ // Check B: Cosine similarity + contradiction (skip for trusted sources)
253
+ // -----------------------------------------------------------------------
254
+ const trusted = isTrustedSource(candidate);
255
+ if (!trusted && isEmbeddingAvailable()) {
256
+ try {
257
+ const similar = await searchSimilar(candidate.text, projectRoot, 5);
258
+ if (similar.length > 0) {
259
+ const nearest = similar[0];
260
+ if (nearest.distance < DUPLICATE_THRESHOLD) {
261
+ // Near-identical — merge into existing
262
+ incrementCitationCount(projectRoot, nearest.id).catch(() => undefined);
263
+ return {
264
+ action: 'merged',
265
+ id: nearest.id,
266
+ reason: `near-duplicate of ${nearest.id} (cosine distance=${nearest.distance.toFixed(3)})`,
267
+ similarity: nearest.distance,
268
+ };
269
+ }
270
+ if (nearest.distance < SIMILAR_THRESHOLD) {
271
+ // Related — check for contradiction
272
+ if (hasContradictingPolarity(nearest.text, candidate.text)) {
273
+ // New text supersedes old — invalidate old entry
274
+ await invalidateEntry(projectRoot, nearest.id);
275
+ // Record supersession graph edge (fire-and-forget)
276
+ // Note: we don't have the new entry's ID yet so we'll skip the edge here.
277
+ // The caller should add the supersedes edge after storage using the returned existingId.
278
+ return {
279
+ action: 'stored',
280
+ id: null,
281
+ reason: `contradiction-supersedes ${nearest.id}`,
282
+ similarity: nearest.distance,
283
+ };
284
+ }
285
+ // Similar but not contradicting — store as new (link will be added post-storage)
286
+ return {
287
+ action: 'stored',
288
+ id: null,
289
+ reason: `similar-but-distinct to ${nearest.id} (distance=${nearest.distance.toFixed(3)})`,
290
+ similarity: nearest.distance,
291
+ };
292
+ }
293
+ }
294
+ }
295
+ catch {
296
+ // Embedding/similarity check failed — degrade to hash-only (already passed above)
297
+ }
298
+ }
299
+ // -----------------------------------------------------------------------
300
+ // Check C: Confidence threshold
301
+ // -----------------------------------------------------------------------
302
+ if (candidate.confidence < MINIMUM_CONFIDENCE) {
303
+ return {
304
+ action: 'pending',
305
+ id: null,
306
+ reason: `confidence ${candidate.confidence.toFixed(2)} below minimum ${MINIMUM_CONFIDENCE}`,
307
+ };
308
+ }
309
+ // All checks passed — caller should store
310
+ return {
311
+ action: 'stored',
312
+ id: null,
313
+ reason: 'verified-new',
314
+ };
315
+ }
316
+ catch (err) {
317
+ // Safety net: gate errors must never block writes.
318
+ // Log a warning and allow the store to proceed.
319
+ const message = err instanceof Error ? err.message : String(err);
320
+ console.warn(`[extraction-gate] verifyCandidate error (allowing store): ${message}`);
321
+ return {
322
+ action: 'stored',
323
+ id: null,
324
+ reason: `gate-error-passthrough: ${message}`,
325
+ };
326
+ }
327
+ }
328
+ /**
329
+ * Run a batch of candidates through the verification gate sequentially.
330
+ *
331
+ * Sequential (not parallel) so that a 'merged' action on an earlier candidate
332
+ * is visible as an existing entry when later candidates run their similarity checks.
333
+ *
334
+ * @param projectRoot - Project root for brain.db access
335
+ * @param candidates - Array of candidates to verify
336
+ * @returns Array of GateResults in input order
337
+ */
338
+ export async function verifyBatch(projectRoot, candidates) {
339
+ const results = [];
340
+ for (const candidate of candidates) {
341
+ results.push(await verifyCandidate(projectRoot, candidate));
342
+ }
343
+ return results;
344
+ }
345
+ // ============================================================================
346
+ // Storage Routing
347
+ // ============================================================================
348
+ /**
349
+ * Store a verified candidate in the appropriate BRAIN table based on memoryType.
350
+ *
351
+ * Routes:
352
+ * semantic → brain_learnings (storeLearning)
353
+ * episodic → brain_observations (observeBrain)
354
+ * procedural → brain_patterns (storePattern)
355
+ *
356
+ * Called only after verifyCandidate returns action='stored'.
357
+ *
358
+ * @param projectRoot - Project root for brain.db access
359
+ * @param candidate - Verified candidate to store
360
+ * @returns ID of the newly created entry
361
+ */
362
+ export async function storeVerifiedCandidate(projectRoot, candidate) {
363
+ const title = candidate.title ?? candidate.text.slice(0, 120);
364
+ switch (candidate.memoryType) {
365
+ case 'semantic': {
366
+ const { storeLearning } = await import('./learnings.js');
367
+ const row = await storeLearning(projectRoot, {
368
+ insight: candidate.text,
369
+ source: candidate.source,
370
+ confidence: candidate.confidence,
371
+ actionable: candidate.source === 'task-completion',
372
+ });
373
+ return row.id;
374
+ }
375
+ case 'episodic': {
376
+ const { observeBrain } = await import('./brain-retrieval.js');
377
+ const result = await observeBrain(projectRoot, {
378
+ text: candidate.text,
379
+ title,
380
+ sourceSessionId: candidate.sourceSessionId,
381
+ sourceType: candidate.source === 'manual' ? 'manual' : 'agent',
382
+ });
383
+ return result.id;
384
+ }
385
+ case 'procedural': {
386
+ const { storePattern } = await import('./patterns.js');
387
+ const row = await storePattern(projectRoot, {
388
+ type: 'workflow',
389
+ pattern: candidate.text,
390
+ context: title,
391
+ });
392
+ return row.id;
393
+ }
394
+ default: {
395
+ // Exhaustive fallback — should never reach here with correct types
396
+ const { observeBrain } = await import('./brain-retrieval.js');
397
+ const result = await observeBrain(projectRoot, {
398
+ text: candidate.text,
399
+ title,
400
+ sourceSessionId: candidate.sourceSessionId,
401
+ sourceType: candidate.source === 'manual' ? 'manual' : 'agent',
402
+ });
403
+ return result.id;
404
+ }
405
+ }
406
+ }
407
+ /**
408
+ * Full gate-and-store pipeline for a single candidate.
409
+ *
410
+ * Runs verifyCandidate then calls storeVerifiedCandidate when action='stored'.
411
+ * For 'merged', increments the existing entry's citation_count (already done inside verifyCandidate).
412
+ * For 'pending' and 'rejected', returns the GateResult with no storage.
413
+ *
414
+ * After storage, adds a supersedes edge when the gate returned a contradiction reason.
415
+ *
416
+ * @param projectRoot - Project root for brain.db access
417
+ * @param candidate - Candidate to verify and store
418
+ * @returns Final GateResult with the stored/merged entry ID populated
419
+ */
420
+ export async function verifyAndStore(projectRoot, candidate) {
421
+ const gateResult = await verifyCandidate(projectRoot, candidate);
422
+ if (gateResult.action !== 'stored') {
423
+ return gateResult;
424
+ }
425
+ try {
426
+ const newId = await storeVerifiedCandidate(projectRoot, candidate);
427
+ // If this was a contradiction supersession, add a graph edge (best-effort)
428
+ if (gateResult.reason.startsWith('contradiction-supersedes ')) {
429
+ const oldId = gateResult.reason.replace('contradiction-supersedes ', '');
430
+ addGraphEdge(projectRoot, `observation:${newId}`, `observation:${oldId}`, 'supersedes', 1.0, 'extraction-gate').catch(() => undefined);
431
+ }
432
+ return { ...gateResult, id: newId };
433
+ }
434
+ catch (err) {
435
+ const message = err instanceof Error ? err.message : String(err);
436
+ return {
437
+ action: 'rejected',
438
+ id: null,
439
+ reason: `storage-error: ${message}`,
440
+ };
441
+ }
442
+ }
443
+ /**
444
+ * Full gate-and-store pipeline for a batch of candidates.
445
+ *
446
+ * Sequential execution ensures that earlier stores are visible to later similarity checks.
447
+ *
448
+ * @param projectRoot - Project root for brain.db access
449
+ * @param candidates - Array of candidates to verify and store
450
+ * @returns Array of final GateResults in input order
451
+ */
452
+ export async function verifyAndStoreBatch(projectRoot, candidates) {
453
+ const results = [];
454
+ for (const candidate of candidates) {
455
+ results.push(await verifyAndStore(projectRoot, candidate));
456
+ }
457
+ return results;
458
+ }
459
+ //# sourceMappingURL=extraction-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction-gate.js","sourceRoot":"","sources":["../../src/memory/extraction-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Graph auto-population helpers for CLEO BRAIN.
3
+ *
4
+ * Provides upsertGraphNode and addGraphEdge helpers that write to the
5
+ * brain_page_nodes and brain_page_edges tables whenever memory entries
6
+ * are created via the legitimate write paths (storeDecision, observeBrain,
7
+ * storePattern, storeLearning, and task completion).
8
+ *
9
+ * Design constraints:
10
+ * - All writes are BEST-EFFORT — never block or fail the primary operation.
11
+ * - All writes are gated on brain.autoCapture via isAutoCaptureEnabled.
12
+ * - Uses INSERT OR REPLACE (onConflictDoUpdate) for upsert semantics.
13
+ * - Edge inserts are idempotent via the composite PK (fromId, toId, edgeType).
14
+ *
15
+ * @task T537
16
+ * @epic T523
17
+ */
18
+ import type { BrainEdgeType, BrainNodeType } from '../store/brain-schema.js';
19
+ export type { BrainEdgeType, BrainNodeType };
20
+ /**
21
+ * Upsert a graph node for a typed table entry.
22
+ *
23
+ * Uses INSERT OR REPLACE to handle both new and existing entries. If the
24
+ * node already exists (same id), its label, qualityScore, lastActivityAt,
25
+ * updatedAt, and metadataJson are refreshed while createdAt is preserved.
26
+ *
27
+ * The contentHash is derived from a SHA-256 prefix of the canonical content.
28
+ * External-reference nodes (task, session, epic) may pass an empty string for
29
+ * content; their hash will be null so duplicates are not rejected.
30
+ *
31
+ * This function is gated on brain.autoCapture. If the gate is disabled or any
32
+ * error occurs, it returns silently without throwing.
33
+ *
34
+ * @param projectRoot - Absolute path to the project root directory.
35
+ * @param nodeId - Stable composite ID in the form '<type>:<source-id>'.
36
+ * @param nodeType - Discriminated type from BRAIN_NODE_TYPES.
37
+ * @param label - Human-readable label (title, task ID, etc.).
38
+ * @param qualityScore - 0.0 (noise) to 1.0 (canonical).
39
+ * @param content - Canonical text used to derive the content hash.
40
+ * @param metadata - Optional type-specific metadata blob.
41
+ *
42
+ * @task T537
43
+ */
44
+ export declare function upsertGraphNode(projectRoot: string, nodeId: string, nodeType: BrainNodeType, label: string, qualityScore: number, content: string, metadata?: Record<string, unknown>): Promise<void>;
45
+ /**
46
+ * Add a directed, typed edge between two graph nodes (idempotent).
47
+ *
48
+ * The composite primary key (fromId, toId, edgeType) prevents duplicate edges
49
+ * of the same type. Conflicting rows are ignored so this is safe to call
50
+ * multiple times with the same arguments.
51
+ *
52
+ * This function is gated on brain.autoCapture. If the gate is disabled or any
53
+ * error occurs, it returns silently without throwing.
54
+ *
55
+ * @param projectRoot - Absolute path to the project root directory.
56
+ * @param fromId - Source node ID (brain_page_nodes.id).
57
+ * @param toId - Target node ID (brain_page_nodes.id or external nexus ID).
58
+ * @param edgeType - Typed relationship from BRAIN_EDGE_TYPES.
59
+ * @param weight - Edge confidence/weight (0.0–1.0). Defaults to 1.0.
60
+ * @param provenance - Human-readable note on why this edge was emitted.
61
+ *
62
+ * @task T537
63
+ */
64
+ export declare function addGraphEdge(projectRoot: string, fromId: string, toId: string, edgeType: BrainEdgeType, weight?: number, provenance?: string): Promise<void>;
65
+ //# sourceMappingURL=graph-auto-populate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-auto-populate.d.ts","sourceRoot":"","sources":["../../src/memory/graph-auto-populate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM7E,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AAyB7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,MAAM,SAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAqBf"}