@cleocode/core 2026.4.58 → 2026.4.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 (933) 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.js +435 -0
  62. package/dist/bootstrap.js.map +1 -0
  63. package/dist/caamp/adapter.js +259 -0
  64. package/dist/caamp/adapter.js.map +1 -0
  65. package/dist/caamp/capability-check.js +38 -0
  66. package/dist/caamp/capability-check.js.map +1 -0
  67. package/dist/caamp/index.js +21 -0
  68. package/dist/caamp/index.js.map +1 -0
  69. package/dist/caamp-init.js +16 -0
  70. package/dist/caamp-init.js.map +1 -0
  71. package/dist/cleo.js +322 -0
  72. package/dist/cleo.js.map +1 -0
  73. package/dist/code/index.js +14 -0
  74. package/dist/code/index.js.map +1 -0
  75. package/dist/code/outline.js +165 -0
  76. package/dist/code/outline.js.map +1 -0
  77. package/dist/code/parser.js +420 -0
  78. package/dist/code/parser.js.map +1 -0
  79. package/dist/code/search.js +135 -0
  80. package/dist/code/search.js.map +1 -0
  81. package/dist/code/unfold.js +155 -0
  82. package/dist/code/unfold.js.map +1 -0
  83. package/dist/codebase-map/analyzers/architecture.js +129 -0
  84. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  85. package/dist/codebase-map/analyzers/concerns.js +122 -0
  86. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  87. package/dist/codebase-map/analyzers/conventions.js +149 -0
  88. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  89. package/dist/codebase-map/analyzers/integrations.js +108 -0
  90. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  91. package/dist/codebase-map/analyzers/stack.js +117 -0
  92. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  93. package/dist/codebase-map/analyzers/structure.js +137 -0
  94. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  95. package/dist/codebase-map/analyzers/testing.js +118 -0
  96. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  97. package/dist/codebase-map/index.js +57 -0
  98. package/dist/codebase-map/index.js.map +1 -0
  99. package/dist/codebase-map/store.js +122 -0
  100. package/dist/codebase-map/store.js.map +1 -0
  101. package/dist/codebase-map/summary.js +152 -0
  102. package/dist/codebase-map/summary.js.map +1 -0
  103. package/dist/compliance/index.js +288 -0
  104. package/dist/compliance/index.js.map +1 -0
  105. package/dist/compliance/protocol-enforcement.js +332 -0
  106. package/dist/compliance/protocol-enforcement.js.map +1 -0
  107. package/dist/compliance/protocol-rules.js +786 -0
  108. package/dist/compliance/protocol-rules.js.map +1 -0
  109. package/dist/compliance/protocol-types.js +79 -0
  110. package/dist/compliance/protocol-types.js.map +1 -0
  111. package/dist/compliance/store.js +53 -0
  112. package/dist/compliance/store.js.map +1 -0
  113. package/dist/conduit/conduit-client.js +107 -0
  114. package/dist/conduit/conduit-client.js.map +1 -0
  115. package/dist/conduit/factory.js +55 -0
  116. package/dist/conduit/factory.js.map +1 -0
  117. package/dist/conduit/http-transport.js +155 -0
  118. package/dist/conduit/http-transport.js.map +1 -0
  119. package/dist/conduit/local-transport.js +255 -0
  120. package/dist/conduit/local-transport.js.map +1 -0
  121. package/dist/conduit/sse-transport.js +299 -0
  122. package/dist/conduit/sse-transport.js.map +1 -0
  123. package/dist/config/build-config.js +29 -0
  124. package/dist/config/build-config.js.map +1 -0
  125. package/dist/config.js +407 -0
  126. package/dist/config.js.map +1 -0
  127. package/dist/constants.js +18 -0
  128. package/dist/constants.js.map +1 -0
  129. package/dist/context/index.js +137 -0
  130. package/dist/context/index.js.map +1 -0
  131. package/dist/crypto/credentials.js +219 -0
  132. package/dist/crypto/credentials.js.map +1 -0
  133. package/dist/discovery.js +182 -0
  134. package/dist/discovery.js.map +1 -0
  135. package/dist/engine-result.js +12 -0
  136. package/dist/engine-result.js.map +1 -0
  137. package/dist/error-catalog.js +404 -0
  138. package/dist/error-catalog.js.map +1 -0
  139. package/dist/error-registry.js +393 -0
  140. package/dist/error-registry.js.map +1 -0
  141. package/dist/errors.js +173 -0
  142. package/dist/errors.js.map +1 -0
  143. package/dist/hooks/handlers/agent-hooks.js +106 -0
  144. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  145. package/dist/hooks/handlers/conduit-hooks.js +229 -0
  146. package/dist/hooks/handlers/conduit-hooks.js.map +1 -0
  147. package/dist/hooks/handlers/context-hooks.js +111 -0
  148. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  149. package/dist/hooks/handlers/error-hooks.js +52 -0
  150. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  151. package/dist/hooks/handlers/file-hooks.js +104 -0
  152. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  153. package/dist/hooks/handlers/handler-helpers.js +61 -0
  154. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  155. package/dist/hooks/handlers/index.js +37 -0
  156. package/dist/hooks/handlers/index.js.map +1 -0
  157. package/dist/hooks/handlers/intelligence-hooks.js +69 -0
  158. package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
  159. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  160. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  161. package/dist/hooks/handlers/notification-hooks.js +62 -0
  162. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  163. package/dist/hooks/handlers/session-hooks.js +190 -0
  164. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  165. package/dist/hooks/handlers/task-hooks.js +90 -0
  166. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  167. package/dist/hooks/handlers/watchdog-hooks.js +162 -0
  168. package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
  169. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  170. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  171. package/dist/hooks/index.js +13 -0
  172. package/dist/hooks/index.js.map +1 -0
  173. package/dist/hooks/payload-schemas.js +220 -0
  174. package/dist/hooks/payload-schemas.js.map +1 -0
  175. package/dist/hooks/provider-hooks.js +66 -0
  176. package/dist/hooks/provider-hooks.js.map +1 -0
  177. package/dist/hooks/registry.js +229 -0
  178. package/dist/hooks/registry.js.map +1 -0
  179. package/dist/hooks/types.js +66 -0
  180. package/dist/hooks/types.js.map +1 -0
  181. package/dist/hooks.js +136 -0
  182. package/dist/hooks.js.map +1 -0
  183. package/dist/init.js +959 -0
  184. package/dist/init.js.map +1 -0
  185. package/dist/inject/index.js +82 -0
  186. package/dist/inject/index.js.map +1 -0
  187. package/dist/injection.js +377 -0
  188. package/dist/injection.js.map +1 -0
  189. package/dist/intelligence/adaptive-validation.js +497 -0
  190. package/dist/intelligence/adaptive-validation.js.map +1 -0
  191. package/dist/intelligence/impact.js +675 -0
  192. package/dist/intelligence/impact.js.map +1 -0
  193. package/dist/intelligence/index.js +22 -0
  194. package/dist/intelligence/index.js.map +1 -0
  195. package/dist/intelligence/patterns.js +492 -0
  196. package/dist/intelligence/patterns.js.map +1 -0
  197. package/dist/intelligence/prediction.js +499 -0
  198. package/dist/intelligence/prediction.js.map +1 -0
  199. package/dist/intelligence/types.js +13 -0
  200. package/dist/intelligence/types.js.map +1 -0
  201. package/dist/issue/create.js +121 -0
  202. package/dist/issue/create.js.map +1 -0
  203. package/dist/issue/diagnostics.js +59 -0
  204. package/dist/issue/diagnostics.js.map +1 -0
  205. package/dist/issue/index.js +10 -0
  206. package/dist/issue/index.js.map +1 -0
  207. package/dist/issue/template-parser.js +267 -0
  208. package/dist/issue/template-parser.js.map +1 -0
  209. package/dist/json-schema-validator.js +76 -0
  210. package/dist/json-schema-validator.js.map +1 -0
  211. package/dist/lib/index.js +11 -0
  212. package/dist/lib/index.js.map +1 -0
  213. package/dist/lib/retry.js +152 -0
  214. package/dist/lib/retry.js.map +1 -0
  215. package/dist/lib/tree-sitter-languages.js +75 -0
  216. package/dist/lib/tree-sitter-languages.js.map +1 -0
  217. package/dist/lifecycle/chain-composition.js +152 -0
  218. package/dist/lifecycle/chain-composition.js.map +1 -0
  219. package/dist/lifecycle/chain-store.js +246 -0
  220. package/dist/lifecycle/chain-store.js.map +1 -0
  221. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  222. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  223. package/dist/lifecycle/default-chain.js +176 -0
  224. package/dist/lifecycle/default-chain.js.map +1 -0
  225. package/dist/lifecycle/evidence.js +180 -0
  226. package/dist/lifecycle/evidence.js.map +1 -0
  227. package/dist/lifecycle/frontmatter.js +363 -0
  228. package/dist/lifecycle/frontmatter.js.map +1 -0
  229. package/dist/lifecycle/index.js +756 -0
  230. package/dist/lifecycle/index.js.map +1 -0
  231. package/dist/lifecycle/pipeline.js +656 -0
  232. package/dist/lifecycle/pipeline.js.map +1 -0
  233. package/dist/lifecycle/rcasd-index.js +326 -0
  234. package/dist/lifecycle/rcasd-index.js.map +1 -0
  235. package/dist/lifecycle/rcasd-paths.js +220 -0
  236. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  237. package/dist/lifecycle/resume.js +864 -0
  238. package/dist/lifecycle/resume.js.map +1 -0
  239. package/dist/lifecycle/stage-artifacts.js +94 -0
  240. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  241. package/dist/lifecycle/stage-guidance.js +234 -0
  242. package/dist/lifecycle/stage-guidance.js.map +1 -0
  243. package/dist/lifecycle/stages.js +534 -0
  244. package/dist/lifecycle/stages.js.map +1 -0
  245. package/dist/lifecycle/state-machine.js +516 -0
  246. package/dist/lifecycle/state-machine.js.map +1 -0
  247. package/dist/lifecycle/tessera-engine.js +249 -0
  248. package/dist/lifecycle/tessera-engine.js.map +1 -0
  249. package/dist/logger.js +140 -0
  250. package/dist/logger.js.map +1 -0
  251. package/dist/memory/anthropic-key-resolver.js +105 -0
  252. package/dist/memory/anthropic-key-resolver.js.map +1 -0
  253. package/dist/memory/auto-extract.js +77 -0
  254. package/dist/memory/auto-extract.js.map +1 -0
  255. package/dist/memory/brain-backfill.js +389 -0
  256. package/dist/memory/brain-backfill.js.map +1 -0
  257. package/dist/memory/brain-consolidator.js +294 -0
  258. package/dist/memory/brain-consolidator.js.map +1 -0
  259. package/dist/memory/brain-embedding.js +66 -0
  260. package/dist/memory/brain-embedding.js.map +1 -0
  261. package/dist/memory/brain-export.js +239 -0
  262. package/dist/memory/brain-export.js.map +1 -0
  263. package/dist/memory/brain-lifecycle.js +841 -0
  264. package/dist/memory/brain-lifecycle.js.map +1 -0
  265. package/dist/memory/brain-links.js +161 -0
  266. package/dist/memory/brain-links.js.map +1 -0
  267. package/dist/memory/brain-maintenance.js +125 -0
  268. package/dist/memory/brain-maintenance.js.map +1 -0
  269. package/dist/memory/brain-migration.js +149 -0
  270. package/dist/memory/brain-migration.js.map +1 -0
  271. package/dist/memory/brain-purge.js +243 -0
  272. package/dist/memory/brain-purge.js.map +1 -0
  273. package/dist/memory/brain-reasoning.js +215 -0
  274. package/dist/memory/brain-reasoning.js.map +1 -0
  275. package/dist/memory/brain-retrieval.js +1088 -0
  276. package/dist/memory/brain-retrieval.js.map +1 -0
  277. package/dist/memory/brain-row-types.js +10 -0
  278. package/dist/memory/brain-row-types.js.map +1 -0
  279. package/dist/memory/brain-search.js +613 -0
  280. package/dist/memory/brain-search.js.map +1 -0
  281. package/dist/memory/brain-similarity.js +145 -0
  282. package/dist/memory/brain-similarity.js.map +1 -0
  283. package/dist/memory/brain-stdp.js +297 -0
  284. package/dist/memory/brain-stdp.js.map +1 -0
  285. package/dist/memory/claude-mem-migration.js +277 -0
  286. package/dist/memory/claude-mem-migration.js.map +1 -0
  287. package/dist/memory/decision-cross-link.js +228 -0
  288. package/dist/memory/decision-cross-link.js.map +1 -0
  289. package/dist/memory/decisions.js +242 -0
  290. package/dist/memory/decisions.js.map +1 -0
  291. package/dist/memory/edge-types.js +31 -0
  292. package/dist/memory/edge-types.js.map +1 -0
  293. package/dist/memory/embedding-local.js +102 -0
  294. package/dist/memory/embedding-local.js.map +1 -0
  295. package/dist/memory/embedding-queue.js +271 -0
  296. package/dist/memory/embedding-queue.js.map +1 -0
  297. package/dist/memory/embedding-worker.js +58 -0
  298. package/dist/memory/embedding-worker.js.map +1 -0
  299. package/dist/memory/engine-compat.js +1597 -0
  300. package/dist/memory/engine-compat.js.map +1 -0
  301. package/dist/memory/extraction-gate.js +459 -0
  302. package/dist/memory/extraction-gate.js.map +1 -0
  303. package/dist/memory/graph-auto-populate.js +148 -0
  304. package/dist/memory/graph-auto-populate.js.map +1 -0
  305. package/dist/memory/graph-memory-bridge.js +517 -0
  306. package/dist/memory/graph-memory-bridge.js.map +1 -0
  307. package/dist/memory/graph-queries.js +290 -0
  308. package/dist/memory/graph-queries.js.map +1 -0
  309. package/dist/memory/index.js +1148 -0
  310. package/dist/memory/index.js.map +1 -0
  311. package/dist/memory/learnings.js +197 -0
  312. package/dist/memory/learnings.js.map +1 -0
  313. package/dist/memory/llm-extraction.js +425 -0
  314. package/dist/memory/llm-extraction.js.map +1 -0
  315. package/dist/memory/memory-bridge.js +382 -0
  316. package/dist/memory/memory-bridge.js.map +1 -0
  317. package/dist/memory/mental-model-injection.js +61 -0
  318. package/dist/memory/mental-model-injection.js.map +1 -0
  319. package/dist/memory/mental-model-queue.js +211 -0
  320. package/dist/memory/mental-model-queue.js.map +1 -0
  321. package/dist/memory/observer-reflector.js +626 -0
  322. package/dist/memory/observer-reflector.js.map +1 -0
  323. package/dist/memory/patterns.js +192 -0
  324. package/dist/memory/patterns.js.map +1 -0
  325. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  326. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  327. package/dist/memory/quality-feedback.js +449 -0
  328. package/dist/memory/quality-feedback.js.map +1 -0
  329. package/dist/memory/quality-scoring.js +182 -0
  330. package/dist/memory/quality-scoring.js.map +1 -0
  331. package/dist/memory/session-memory.js +331 -0
  332. package/dist/memory/session-memory.js.map +1 -0
  333. package/dist/memory/sleep-consolidation.js +706 -0
  334. package/dist/memory/sleep-consolidation.js.map +1 -0
  335. package/dist/memory/temporal-supersession.js +403 -0
  336. package/dist/memory/temporal-supersession.js.map +1 -0
  337. package/dist/metrics/ab-test.js +260 -0
  338. package/dist/metrics/ab-test.js.map +1 -0
  339. package/dist/metrics/aggregation.js +363 -0
  340. package/dist/metrics/aggregation.js.map +1 -0
  341. package/dist/metrics/common.js +64 -0
  342. package/dist/metrics/common.js.map +1 -0
  343. package/dist/metrics/enums.js +78 -0
  344. package/dist/metrics/enums.js.map +1 -0
  345. package/dist/metrics/index.js +19 -0
  346. package/dist/metrics/index.js.map +1 -0
  347. package/dist/metrics/model-provider-registry.js +88 -0
  348. package/dist/metrics/model-provider-registry.js.map +1 -0
  349. package/dist/metrics/otel-integration.js +263 -0
  350. package/dist/metrics/otel-integration.js.map +1 -0
  351. package/dist/metrics/provider-detection.js +103 -0
  352. package/dist/metrics/provider-detection.js.map +1 -0
  353. package/dist/metrics/token-estimation.js +253 -0
  354. package/dist/metrics/token-estimation.js.map +1 -0
  355. package/dist/metrics/token-service.js +450 -0
  356. package/dist/metrics/token-service.js.map +1 -0
  357. package/dist/migration/agent-outputs.js +316 -0
  358. package/dist/migration/agent-outputs.js.map +1 -0
  359. package/dist/migration/checksum.js +92 -0
  360. package/dist/migration/checksum.js.map +1 -0
  361. package/dist/migration/index.js +282 -0
  362. package/dist/migration/index.js.map +1 -0
  363. package/dist/migration/logger.js +360 -0
  364. package/dist/migration/logger.js.map +1 -0
  365. package/dist/migration/preflight.js +9 -0
  366. package/dist/migration/preflight.js.map +1 -0
  367. package/dist/migration/state.js +421 -0
  368. package/dist/migration/state.js.map +1 -0
  369. package/dist/migration/validate.js +241 -0
  370. package/dist/migration/validate.js.map +1 -0
  371. package/dist/mvi-helpers.js +73 -0
  372. package/dist/mvi-helpers.js.map +1 -0
  373. package/dist/nexus/deps.js +375 -0
  374. package/dist/nexus/deps.js.map +1 -0
  375. package/dist/nexus/discover.js +288 -0
  376. package/dist/nexus/discover.js.map +1 -0
  377. package/dist/nexus/hash.js +10 -0
  378. package/dist/nexus/hash.js.map +1 -0
  379. package/dist/nexus/index.js +40 -0
  380. package/dist/nexus/index.js.map +1 -0
  381. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  382. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  383. package/dist/nexus/nexus-bridge.js +321 -0
  384. package/dist/nexus/nexus-bridge.js.map +1 -0
  385. package/dist/nexus/permissions.js +105 -0
  386. package/dist/nexus/permissions.js.map +1 -0
  387. package/dist/nexus/query.js +175 -0
  388. package/dist/nexus/query.js.map +1 -0
  389. package/dist/nexus/registry.js +665 -0
  390. package/dist/nexus/registry.js.map +1 -0
  391. package/dist/nexus/sharing/index.js +288 -0
  392. package/dist/nexus/sharing/index.js.map +1 -0
  393. package/dist/nexus/transfer-types.js +8 -0
  394. package/dist/nexus/transfer-types.js.map +1 -0
  395. package/dist/nexus/transfer.js +271 -0
  396. package/dist/nexus/transfer.js.map +1 -0
  397. package/dist/nexus/workspace.js +355 -0
  398. package/dist/nexus/workspace.js.map +1 -0
  399. package/dist/observability/index.js +103 -0
  400. package/dist/observability/index.js.map +1 -0
  401. package/dist/observability/log-filter.js +63 -0
  402. package/dist/observability/log-filter.js.map +1 -0
  403. package/dist/observability/log-parser.js +99 -0
  404. package/dist/observability/log-parser.js.map +1 -0
  405. package/dist/observability/log-reader.js +139 -0
  406. package/dist/observability/log-reader.js.map +1 -0
  407. package/dist/observability/types.js +19 -0
  408. package/dist/observability/types.js.map +1 -0
  409. package/dist/orchestration/analyze.js +107 -0
  410. package/dist/orchestration/analyze.js.map +1 -0
  411. package/dist/orchestration/bootstrap.js +132 -0
  412. package/dist/orchestration/bootstrap.js.map +1 -0
  413. package/dist/orchestration/context.js +56 -0
  414. package/dist/orchestration/context.js.map +1 -0
  415. package/dist/orchestration/critical-path.js +100 -0
  416. package/dist/orchestration/critical-path.js.map +1 -0
  417. package/dist/orchestration/hierarchy.js +183 -0
  418. package/dist/orchestration/hierarchy.js.map +1 -0
  419. package/dist/orchestration/index.js +287 -0
  420. package/dist/orchestration/index.js.map +1 -0
  421. package/dist/orchestration/parallel.js +89 -0
  422. package/dist/orchestration/parallel.js.map +1 -0
  423. package/dist/orchestration/protocol-validators.js +815 -0
  424. package/dist/orchestration/protocol-validators.js.map +1 -0
  425. package/dist/orchestration/skill-ops.js +98 -0
  426. package/dist/orchestration/skill-ops.js.map +1 -0
  427. package/dist/orchestration/status.js +107 -0
  428. package/dist/orchestration/status.js.map +1 -0
  429. package/dist/orchestration/unblock.js +103 -0
  430. package/dist/orchestration/unblock.js.map +1 -0
  431. package/dist/orchestration/validate-spawn.js +67 -0
  432. package/dist/orchestration/validate-spawn.js.map +1 -0
  433. package/dist/orchestration/waves.js +86 -0
  434. package/dist/orchestration/waves.js.map +1 -0
  435. package/dist/otel/index.js +163 -0
  436. package/dist/otel/index.js.map +1 -0
  437. package/dist/output.js +164 -0
  438. package/dist/output.js.map +1 -0
  439. package/dist/pagination.js +64 -0
  440. package/dist/pagination.js.map +1 -0
  441. package/dist/paths.js +882 -0
  442. package/dist/paths.js.map +1 -0
  443. package/dist/phases/deps.js +372 -0
  444. package/dist/phases/deps.js.map +1 -0
  445. package/dist/phases/index.js +349 -0
  446. package/dist/phases/index.js.map +1 -0
  447. package/dist/pipeline/index.js +10 -0
  448. package/dist/pipeline/index.js.map +1 -0
  449. package/dist/pipeline/phase.js +45 -0
  450. package/dist/pipeline/phase.js.map +1 -0
  451. package/dist/platform.js +211 -0
  452. package/dist/platform.js.map +1 -0
  453. package/dist/project-info.js +84 -0
  454. package/dist/project-info.js.map +1 -0
  455. package/dist/reconciliation/index.js +10 -0
  456. package/dist/reconciliation/index.js.map +1 -0
  457. package/dist/reconciliation/link-store.js +175 -0
  458. package/dist/reconciliation/link-store.js.map +1 -0
  459. package/dist/reconciliation/reconciliation-engine.js +298 -0
  460. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  461. package/dist/release/artifacts.js +427 -0
  462. package/dist/release/artifacts.js.map +1 -0
  463. package/dist/release/changelog-writer.js +151 -0
  464. package/dist/release/changelog-writer.js.map +1 -0
  465. package/dist/release/channel.js +144 -0
  466. package/dist/release/channel.js.map +1 -0
  467. package/dist/release/ci.js +166 -0
  468. package/dist/release/ci.js.map +1 -0
  469. package/dist/release/github-pr.js +225 -0
  470. package/dist/release/github-pr.js.map +1 -0
  471. package/dist/release/guards.js +116 -0
  472. package/dist/release/guards.js.map +1 -0
  473. package/dist/release/index.js +22 -0
  474. package/dist/release/index.js.map +1 -0
  475. package/dist/release/release-config.js +158 -0
  476. package/dist/release/release-config.js.map +1 -0
  477. package/dist/release/release-manifest.js +1019 -0
  478. package/dist/release/release-manifest.js.map +1 -0
  479. package/dist/release/version-bump.js +255 -0
  480. package/dist/release/version-bump.js.map +1 -0
  481. package/dist/remote/index.js +257 -0
  482. package/dist/remote/index.js.map +1 -0
  483. package/dist/repair.js +130 -0
  484. package/dist/repair.js.map +1 -0
  485. package/dist/research/index.js +2 -0
  486. package/dist/research/index.js.map +1 -0
  487. package/dist/roadmap/index.js +59 -0
  488. package/dist/roadmap/index.js.map +1 -0
  489. package/dist/routing/capability-matrix.js +1556 -0
  490. package/dist/routing/capability-matrix.js.map +1 -0
  491. package/dist/routing/index.js +9 -0
  492. package/dist/routing/index.js.map +1 -0
  493. package/dist/scaffold.js +1937 -0
  494. package/dist/scaffold.js.map +1 -0
  495. package/dist/schema-management.js +295 -0
  496. package/dist/schema-management.js.map +1 -0
  497. package/dist/security/index.js +9 -0
  498. package/dist/security/index.js.map +1 -0
  499. package/dist/security/input-sanitization.js +326 -0
  500. package/dist/security/input-sanitization.js.map +1 -0
  501. package/dist/sequence/index.js +295 -0
  502. package/dist/sequence/index.js.map +1 -0
  503. package/dist/sessions/assumptions.js +54 -0
  504. package/dist/sessions/assumptions.js.map +1 -0
  505. package/dist/sessions/briefing.js +377 -0
  506. package/dist/sessions/briefing.js.map +1 -0
  507. package/dist/sessions/context-alert.js +222 -0
  508. package/dist/sessions/context-alert.js.map +1 -0
  509. package/dist/sessions/context-inject.js +61 -0
  510. package/dist/sessions/context-inject.js.map +1 -0
  511. package/dist/sessions/context-monitor.js +98 -0
  512. package/dist/sessions/context-monitor.js.map +1 -0
  513. package/dist/sessions/decisions.js +65 -0
  514. package/dist/sessions/decisions.js.map +1 -0
  515. package/dist/sessions/find.js +65 -0
  516. package/dist/sessions/find.js.map +1 -0
  517. package/dist/sessions/handoff.js +328 -0
  518. package/dist/sessions/handoff.js.map +1 -0
  519. package/dist/sessions/hitl-warnings.js +254 -0
  520. package/dist/sessions/hitl-warnings.js.map +1 -0
  521. package/dist/sessions/index.js +327 -0
  522. package/dist/sessions/index.js.map +1 -0
  523. package/dist/sessions/session-archive.js +40 -0
  524. package/dist/sessions/session-archive.js.map +1 -0
  525. package/dist/sessions/session-cleanup.js +59 -0
  526. package/dist/sessions/session-cleanup.js.map +1 -0
  527. package/dist/sessions/session-drift.js +134 -0
  528. package/dist/sessions/session-drift.js.map +1 -0
  529. package/dist/sessions/session-enforcement.js +144 -0
  530. package/dist/sessions/session-enforcement.js.map +1 -0
  531. package/dist/sessions/session-grade.js +253 -0
  532. package/dist/sessions/session-grade.js.map +1 -0
  533. package/dist/sessions/session-history.js +42 -0
  534. package/dist/sessions/session-history.js.map +1 -0
  535. package/dist/sessions/session-id.js +81 -0
  536. package/dist/sessions/session-id.js.map +1 -0
  537. package/dist/sessions/session-memory-bridge.js +30 -0
  538. package/dist/sessions/session-memory-bridge.js.map +1 -0
  539. package/dist/sessions/session-show.js +24 -0
  540. package/dist/sessions/session-show.js.map +1 -0
  541. package/dist/sessions/session-stats.js +69 -0
  542. package/dist/sessions/session-stats.js.map +1 -0
  543. package/dist/sessions/session-suspend.js +39 -0
  544. package/dist/sessions/session-suspend.js.map +1 -0
  545. package/dist/sessions/session-switch.js +51 -0
  546. package/dist/sessions/session-switch.js.map +1 -0
  547. package/dist/sessions/session-view.js +76 -0
  548. package/dist/sessions/session-view.js.map +1 -0
  549. package/dist/sessions/snapshot.js +213 -0
  550. package/dist/sessions/snapshot.js.map +1 -0
  551. package/dist/sessions/statusline-setup.js +85 -0
  552. package/dist/sessions/statusline-setup.js.map +1 -0
  553. package/dist/sessions/types.js +8 -0
  554. package/dist/sessions/types.js.map +1 -0
  555. package/dist/skills/agents/config.js +94 -0
  556. package/dist/skills/agents/config.js.map +1 -0
  557. package/dist/skills/agents/install.js +116 -0
  558. package/dist/skills/agents/install.js.map +1 -0
  559. package/dist/skills/agents/registry.js +161 -0
  560. package/dist/skills/agents/registry.js.map +1 -0
  561. package/dist/skills/discovery.js +333 -0
  562. package/dist/skills/discovery.js.map +1 -0
  563. package/dist/skills/dispatch.js +347 -0
  564. package/dist/skills/dispatch.js.map +1 -0
  565. package/dist/skills/dynamic-skill-generator.js +87 -0
  566. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  567. package/dist/skills/index.js +44 -0
  568. package/dist/skills/index.js.map +1 -0
  569. package/dist/skills/injection/subagent.js +195 -0
  570. package/dist/skills/injection/subagent.js.map +1 -0
  571. package/dist/skills/injection/token.js +260 -0
  572. package/dist/skills/injection/token.js.map +1 -0
  573. package/dist/skills/install.js +40 -0
  574. package/dist/skills/install.js.map +1 -0
  575. package/dist/skills/manifests/contribution.js +175 -0
  576. package/dist/skills/manifests/contribution.js.map +1 -0
  577. package/dist/skills/manifests/research.js +281 -0
  578. package/dist/skills/manifests/research.js.map +1 -0
  579. package/dist/skills/manifests/resolver.js +146 -0
  580. package/dist/skills/manifests/resolver.js.map +1 -0
  581. package/dist/skills/marketplace.js +90 -0
  582. package/dist/skills/marketplace.js.map +1 -0
  583. package/dist/skills/orchestrator/spawn.js +178 -0
  584. package/dist/skills/orchestrator/spawn.js.map +1 -0
  585. package/dist/skills/orchestrator/startup.js +451 -0
  586. package/dist/skills/orchestrator/startup.js.map +1 -0
  587. package/dist/skills/orchestrator/validator.js +301 -0
  588. package/dist/skills/orchestrator/validator.js.map +1 -0
  589. package/dist/skills/precedence-integration.js +73 -0
  590. package/dist/skills/precedence-integration.js.map +1 -0
  591. package/dist/skills/precedence-types.js +16 -0
  592. package/dist/skills/precedence-types.js.map +1 -0
  593. package/dist/skills/routing-table.js +63 -0
  594. package/dist/skills/routing-table.js.map +1 -0
  595. package/dist/skills/skill-paths.js +217 -0
  596. package/dist/skills/skill-paths.js.map +1 -0
  597. package/dist/skills/test-utility.js +55 -0
  598. package/dist/skills/test-utility.js.map +1 -0
  599. package/dist/skills/types.js +118 -0
  600. package/dist/skills/types.js.map +1 -0
  601. package/dist/skills/validation.js +183 -0
  602. package/dist/skills/validation.js.map +1 -0
  603. package/dist/skills/version.js +57 -0
  604. package/dist/skills/version.js.map +1 -0
  605. package/dist/snapshot/index.js +188 -0
  606. package/dist/snapshot/index.js.map +1 -0
  607. package/dist/spawn/adapter-registry.js +246 -0
  608. package/dist/spawn/adapter-registry.js.map +1 -0
  609. package/dist/spawn/index.js +10 -0
  610. package/dist/spawn/index.js.map +1 -0
  611. package/dist/stats/index.js +350 -0
  612. package/dist/stats/index.js.map +1 -0
  613. package/dist/stats/workflow-telemetry.js +400 -0
  614. package/dist/stats/workflow-telemetry.js.map +1 -0
  615. package/dist/sticky/archive.js +47 -0
  616. package/dist/sticky/archive.js.map +1 -0
  617. package/dist/sticky/convert.js +235 -0
  618. package/dist/sticky/convert.js.map +1 -0
  619. package/dist/sticky/create.js +48 -0
  620. package/dist/sticky/create.js.map +1 -0
  621. package/dist/sticky/id.js +35 -0
  622. package/dist/sticky/id.js.map +1 -0
  623. package/dist/sticky/index.js +16 -0
  624. package/dist/sticky/index.js.map +1 -0
  625. package/dist/sticky/list.js +57 -0
  626. package/dist/sticky/list.js.map +1 -0
  627. package/dist/sticky/purge.js +45 -0
  628. package/dist/sticky/purge.js.map +1 -0
  629. package/dist/sticky/show.js +42 -0
  630. package/dist/sticky/show.js.map +1 -0
  631. package/dist/sticky/types.js +10 -0
  632. package/dist/sticky/types.js.map +1 -0
  633. package/dist/store/agent-registry-accessor.js +886 -0
  634. package/dist/store/agent-registry-accessor.js.map +1 -0
  635. package/dist/store/api-key-kdf.js +84 -0
  636. package/dist/store/api-key-kdf.js.map +1 -0
  637. package/dist/store/atomic.js +167 -0
  638. package/dist/store/atomic.js.map +1 -0
  639. package/dist/store/backup-crypto.js +184 -0
  640. package/dist/store/backup-crypto.js.map +1 -0
  641. package/dist/store/backup-pack.js +581 -0
  642. package/dist/store/backup-pack.js.map +1 -0
  643. package/dist/store/backup-unpack.js +449 -0
  644. package/dist/store/backup-unpack.js.map +1 -0
  645. package/dist/store/backup.js +94 -0
  646. package/dist/store/backup.js.map +1 -0
  647. package/dist/store/brain-accessor.js +429 -0
  648. package/dist/store/brain-accessor.js.map +1 -0
  649. package/dist/store/brain-schema.js +628 -0
  650. package/dist/store/brain-schema.js.map +1 -0
  651. package/dist/store/brain-sqlite.js +320 -0
  652. package/dist/store/brain-sqlite.js.map +1 -0
  653. package/dist/store/cache.js +168 -0
  654. package/dist/store/cache.js.map +1 -0
  655. package/dist/store/chain-schema.js +51 -0
  656. package/dist/store/chain-schema.js.map +1 -0
  657. package/dist/store/cleanup-legacy.js +171 -0
  658. package/dist/store/cleanup-legacy.js.map +1 -0
  659. package/dist/store/conduit-sqlite.js +570 -0
  660. package/dist/store/conduit-sqlite.js.map +1 -0
  661. package/dist/store/converters.js +124 -0
  662. package/dist/store/converters.js.map +1 -0
  663. package/dist/store/cross-db-cleanup.js +319 -0
  664. package/dist/store/cross-db-cleanup.js.map +1 -0
  665. package/dist/store/data-accessor.js +26 -0
  666. package/dist/store/data-accessor.js.map +1 -0
  667. package/dist/store/data-safety-central.js +269 -0
  668. package/dist/store/data-safety-central.js.map +1 -0
  669. package/dist/store/data-safety.js +274 -0
  670. package/dist/store/data-safety.js.map +1 -0
  671. package/dist/store/db-helpers.js +241 -0
  672. package/dist/store/db-helpers.js.map +1 -0
  673. package/dist/store/export.js +155 -0
  674. package/dist/store/export.js.map +1 -0
  675. package/dist/store/file-utils.js +270 -0
  676. package/dist/store/file-utils.js.map +1 -0
  677. package/dist/store/git-checkpoint.js +365 -0
  678. package/dist/store/git-checkpoint.js.map +1 -0
  679. package/dist/store/global-salt.js +147 -0
  680. package/dist/store/global-salt.js.map +1 -0
  681. package/dist/store/import-logging.js +139 -0
  682. package/dist/store/import-logging.js.map +1 -0
  683. package/dist/store/import-remap.js +145 -0
  684. package/dist/store/import-remap.js.map +1 -0
  685. package/dist/store/import-sort.js +121 -0
  686. package/dist/store/import-sort.js.map +1 -0
  687. package/dist/store/index.js +29 -0
  688. package/dist/store/index.js.map +1 -0
  689. package/dist/store/json.js +208 -0
  690. package/dist/store/json.js.map +1 -0
  691. package/dist/store/lifecycle-store.js +249 -0
  692. package/dist/store/lifecycle-store.js.map +1 -0
  693. package/dist/store/lock.js +70 -0
  694. package/dist/store/lock.js.map +1 -0
  695. package/dist/store/migrate-signaldock-to-conduit.js +562 -0
  696. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  697. package/dist/store/migration-manager.js +403 -0
  698. package/dist/store/migration-manager.js.map +1 -0
  699. package/dist/store/migration-sqlite.js +676 -0
  700. package/dist/store/migration-sqlite.js.map +1 -0
  701. package/dist/store/nexus-schema.js +277 -0
  702. package/dist/store/nexus-schema.js.map +1 -0
  703. package/dist/store/nexus-sqlite.js +242 -0
  704. package/dist/store/nexus-sqlite.js.map +1 -0
  705. package/dist/store/nexus-validation-schemas.js +40 -0
  706. package/dist/store/nexus-validation-schemas.js.map +1 -0
  707. package/dist/store/parsers.js +37 -0
  708. package/dist/store/parsers.js.map +1 -0
  709. package/dist/store/project-detect.js +457 -0
  710. package/dist/store/project-detect.js.map +1 -0
  711. package/dist/store/provider.js +101 -0
  712. package/dist/store/provider.js.map +1 -0
  713. package/dist/store/regenerators.js +207 -0
  714. package/dist/store/regenerators.js.map +1 -0
  715. package/dist/store/restore-conflict-report.js +206 -0
  716. package/dist/store/restore-conflict-report.js.map +1 -0
  717. package/dist/store/restore-json-merge.js +454 -0
  718. package/dist/store/restore-json-merge.js.map +1 -0
  719. package/dist/store/safety-data-accessor.js +257 -0
  720. package/dist/store/safety-data-accessor.js.map +1 -0
  721. package/dist/store/schema.js +7 -0
  722. package/dist/store/schema.js.map +1 -0
  723. package/dist/store/session-store.js +219 -0
  724. package/dist/store/session-store.js.map +1 -0
  725. package/dist/store/signaldock-sqlite.js +550 -0
  726. package/dist/store/signaldock-sqlite.js.map +1 -0
  727. package/dist/store/sqlite-backup.js +498 -0
  728. package/dist/store/sqlite-backup.js.map +1 -0
  729. package/dist/store/sqlite-data-accessor.js +788 -0
  730. package/dist/store/sqlite-data-accessor.js.map +1 -0
  731. package/dist/store/sqlite.js +483 -0
  732. package/dist/store/sqlite.js.map +1 -0
  733. package/dist/store/status-registry.js +8 -0
  734. package/dist/store/status-registry.js.map +1 -0
  735. package/dist/store/t310-readiness.js +115 -0
  736. package/dist/store/t310-readiness.js.map +1 -0
  737. package/dist/store/task-store.js +358 -0
  738. package/dist/store/task-store.js.map +1 -0
  739. package/dist/store/tasks-schema.js +610 -0
  740. package/dist/store/tasks-schema.js.map +1 -0
  741. package/dist/store/typed-query.js +15 -0
  742. package/dist/store/typed-query.js.map +1 -0
  743. package/dist/store/validation-schemas.js +278 -0
  744. package/dist/store/validation-schemas.js.map +1 -0
  745. package/dist/system/archive-analytics.js +277 -0
  746. package/dist/system/archive-analytics.js.map +1 -0
  747. package/dist/system/archive-stats.js +64 -0
  748. package/dist/system/archive-stats.js.map +1 -0
  749. package/dist/system/audit.js +145 -0
  750. package/dist/system/audit.js.map +1 -0
  751. package/dist/system/backup.js +280 -0
  752. package/dist/system/backup.js.map +1 -0
  753. package/dist/system/cleanup.js +134 -0
  754. package/dist/system/cleanup.js.map +1 -0
  755. package/dist/system/dependencies.js +466 -0
  756. package/dist/system/dependencies.js.map +1 -0
  757. package/dist/system/health.js +1207 -0
  758. package/dist/system/health.js.map +1 -0
  759. package/dist/system/index.js +18 -0
  760. package/dist/system/index.js.map +1 -0
  761. package/dist/system/inject-generate.js +122 -0
  762. package/dist/system/inject-generate.js.map +1 -0
  763. package/dist/system/labels.js +38 -0
  764. package/dist/system/labels.js.map +1 -0
  765. package/dist/system/metrics.js +61 -0
  766. package/dist/system/metrics.js.map +1 -0
  767. package/dist/system/migrate.js +43 -0
  768. package/dist/system/migrate.js.map +1 -0
  769. package/dist/system/platform-paths.js +80 -0
  770. package/dist/system/platform-paths.js.map +1 -0
  771. package/dist/system/runtime.js +161 -0
  772. package/dist/system/runtime.js.map +1 -0
  773. package/dist/system/safestop.js +89 -0
  774. package/dist/system/safestop.js.map +1 -0
  775. package/dist/system/storage-preflight.js +123 -0
  776. package/dist/system/storage-preflight.js.map +1 -0
  777. package/dist/task-work/index.js +159 -0
  778. package/dist/task-work/index.js.map +1 -0
  779. package/dist/tasks/add.js +837 -0
  780. package/dist/tasks/add.js.map +1 -0
  781. package/dist/tasks/analyze.js +85 -0
  782. package/dist/tasks/analyze.js.map +1 -0
  783. package/dist/tasks/archive.js +90 -0
  784. package/dist/tasks/archive.js.map +1 -0
  785. package/dist/tasks/atomicity.js +83 -0
  786. package/dist/tasks/atomicity.js.map +1 -0
  787. package/dist/tasks/cancel-ops.js +83 -0
  788. package/dist/tasks/cancel-ops.js.map +1 -0
  789. package/dist/tasks/complete.js +252 -0
  790. package/dist/tasks/complete.js.map +1 -0
  791. package/dist/tasks/crossref-extract.js +73 -0
  792. package/dist/tasks/crossref-extract.js.map +1 -0
  793. package/dist/tasks/delete-preview.js +192 -0
  794. package/dist/tasks/delete-preview.js.map +1 -0
  795. package/dist/tasks/delete.js +120 -0
  796. package/dist/tasks/delete.js.map +1 -0
  797. package/dist/tasks/deletion-strategy.js +200 -0
  798. package/dist/tasks/deletion-strategy.js.map +1 -0
  799. package/dist/tasks/dependency-check.js +278 -0
  800. package/dist/tasks/dependency-check.js.map +1 -0
  801. package/dist/tasks/deps-ready.js +32 -0
  802. package/dist/tasks/deps-ready.js.map +1 -0
  803. package/dist/tasks/enforcement.js +86 -0
  804. package/dist/tasks/enforcement.js.map +1 -0
  805. package/dist/tasks/epic-enforcement.js +294 -0
  806. package/dist/tasks/epic-enforcement.js.map +1 -0
  807. package/dist/tasks/find.js +163 -0
  808. package/dist/tasks/find.js.map +1 -0
  809. package/dist/tasks/graph-cache.js +127 -0
  810. package/dist/tasks/graph-cache.js.map +1 -0
  811. package/dist/tasks/graph-ops.js +173 -0
  812. package/dist/tasks/graph-ops.js.map +1 -0
  813. package/dist/tasks/graph-rag.js +328 -0
  814. package/dist/tasks/graph-rag.js.map +1 -0
  815. package/dist/tasks/hierarchy-policy.js +149 -0
  816. package/dist/tasks/hierarchy-policy.js.map +1 -0
  817. package/dist/tasks/hierarchy.js +185 -0
  818. package/dist/tasks/hierarchy.js.map +1 -0
  819. package/dist/tasks/id-generator.js +65 -0
  820. package/dist/tasks/id-generator.js.map +1 -0
  821. package/dist/tasks/index.js +14 -0
  822. package/dist/tasks/index.js.map +1 -0
  823. package/dist/tasks/labels.js +55 -0
  824. package/dist/tasks/labels.js.map +1 -0
  825. package/dist/tasks/list.js +75 -0
  826. package/dist/tasks/list.js.map +1 -0
  827. package/dist/tasks/phase-tracking.js +133 -0
  828. package/dist/tasks/phase-tracking.js.map +1 -0
  829. package/dist/tasks/pipeline-stage.js +248 -0
  830. package/dist/tasks/pipeline-stage.js.map +1 -0
  831. package/dist/tasks/plan.js +268 -0
  832. package/dist/tasks/plan.js.map +1 -0
  833. package/dist/tasks/relates.js +101 -0
  834. package/dist/tasks/relates.js.map +1 -0
  835. package/dist/tasks/show.js +83 -0
  836. package/dist/tasks/show.js.map +1 -0
  837. package/dist/tasks/size-weighting.js +86 -0
  838. package/dist/tasks/size-weighting.js.map +1 -0
  839. package/dist/tasks/staleness.js +86 -0
  840. package/dist/tasks/staleness.js.map +1 -0
  841. package/dist/tasks/task-ops.js +1741 -0
  842. package/dist/tasks/task-ops.js.map +1 -0
  843. package/dist/tasks/update.js +303 -0
  844. package/dist/tasks/update.js.map +1 -0
  845. package/dist/telemetry/index.js +249 -0
  846. package/dist/telemetry/index.js.map +1 -0
  847. package/dist/telemetry/schema.js +60 -0
  848. package/dist/telemetry/schema.js.map +1 -0
  849. package/dist/telemetry/sqlite.js +111 -0
  850. package/dist/telemetry/sqlite.js.map +1 -0
  851. package/dist/templates/index.js +10 -0
  852. package/dist/templates/index.js.map +1 -0
  853. package/dist/templates/parser.js +254 -0
  854. package/dist/templates/parser.js.map +1 -0
  855. package/dist/ui/aliases.js +153 -0
  856. package/dist/ui/aliases.js.map +1 -0
  857. package/dist/ui/changelog.js +184 -0
  858. package/dist/ui/changelog.js.map +1 -0
  859. package/dist/ui/command-registry.js +168 -0
  860. package/dist/ui/command-registry.js.map +1 -0
  861. package/dist/ui/flags.js +94 -0
  862. package/dist/ui/flags.js.map +1 -0
  863. package/dist/ui/index.js +24 -0
  864. package/dist/ui/index.js.map +1 -0
  865. package/dist/upgrade.js +1387 -0
  866. package/dist/upgrade.js.map +1 -0
  867. package/dist/validation/chain-validation.js +146 -0
  868. package/dist/validation/chain-validation.js.map +1 -0
  869. package/dist/validation/compliance.js +155 -0
  870. package/dist/validation/compliance.js.map +1 -0
  871. package/dist/validation/docs-sync.js +212 -0
  872. package/dist/validation/docs-sync.js.map +1 -0
  873. package/dist/validation/doctor/checks.js +1069 -0
  874. package/dist/validation/doctor/checks.js.map +1 -0
  875. package/dist/validation/doctor/index.js +9 -0
  876. package/dist/validation/doctor/index.js.map +1 -0
  877. package/dist/validation/doctor/project-cache.js +160 -0
  878. package/dist/validation/doctor/project-cache.js.map +1 -0
  879. package/dist/validation/doctor/utils.js +155 -0
  880. package/dist/validation/doctor/utils.js.map +1 -0
  881. package/dist/validation/engine.js +914 -0
  882. package/dist/validation/engine.js.map +1 -0
  883. package/dist/validation/gap-check.js +175 -0
  884. package/dist/validation/gap-check.js.map +1 -0
  885. package/dist/validation/index.js +40 -0
  886. package/dist/validation/index.js.map +1 -0
  887. package/dist/validation/manifest.js +237 -0
  888. package/dist/validation/manifest.js.map +1 -0
  889. package/dist/validation/operation-gate-validators.js +724 -0
  890. package/dist/validation/operation-gate-validators.js.map +1 -0
  891. package/dist/validation/operation-verification-gates.js +532 -0
  892. package/dist/validation/operation-verification-gates.js.map +1 -0
  893. package/dist/validation/param-utils.js +141 -0
  894. package/dist/validation/param-utils.js.map +1 -0
  895. package/dist/validation/protocol-common.js +300 -0
  896. package/dist/validation/protocol-common.js.map +1 -0
  897. package/dist/validation/protocols/_shared.js +82 -0
  898. package/dist/validation/protocols/_shared.js.map +1 -0
  899. package/dist/validation/protocols/architecture-decision.js +31 -0
  900. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  901. package/dist/validation/protocols/artifact-publish.js +28 -0
  902. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  903. package/dist/validation/protocols/consensus.js +41 -0
  904. package/dist/validation/protocols/consensus.js.map +1 -0
  905. package/dist/validation/protocols/contribution.js +27 -0
  906. package/dist/validation/protocols/contribution.js.map +1 -0
  907. package/dist/validation/protocols/decomposition.js +28 -0
  908. package/dist/validation/protocols/decomposition.js.map +1 -0
  909. package/dist/validation/protocols/implementation.js +24 -0
  910. package/dist/validation/protocols/implementation.js.map +1 -0
  911. package/dist/validation/protocols/provenance.js +29 -0
  912. package/dist/validation/protocols/provenance.js.map +1 -0
  913. package/dist/validation/protocols/release.js +29 -0
  914. package/dist/validation/protocols/release.js.map +1 -0
  915. package/dist/validation/protocols/research.js +24 -0
  916. package/dist/validation/protocols/research.js.map +1 -0
  917. package/dist/validation/protocols/specification.js +27 -0
  918. package/dist/validation/protocols/specification.js.map +1 -0
  919. package/dist/validation/protocols/testing.js +30 -0
  920. package/dist/validation/protocols/testing.js.map +1 -0
  921. package/dist/validation/protocols/validation.js +30 -0
  922. package/dist/validation/protocols/validation.js.map +1 -0
  923. package/dist/validation/schema-integrity.js +170 -0
  924. package/dist/validation/schema-integrity.js.map +1 -0
  925. package/dist/validation/schema-validator.js +176 -0
  926. package/dist/validation/schema-validator.js.map +1 -0
  927. package/dist/validation/validate-ops.js +937 -0
  928. package/dist/validation/validate-ops.js.map +1 -0
  929. package/dist/validation/validation-rules.js +226 -0
  930. package/dist/validation/validation-rules.js.map +1 -0
  931. package/dist/validation/verification.js +321 -0
  932. package/dist/validation/verification.js.map +1 -0
  933. package/package.json +8 -8
@@ -0,0 +1,148 @@
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 { createHash } from 'node:crypto';
19
+ import { brainPageEdges, brainPageNodes } from '../store/brain-schema.js';
20
+ import { getBrainDb } from '../store/brain-sqlite.js';
21
+ // ---------------------------------------------------------------------------
22
+ // Internal helpers
23
+ // ---------------------------------------------------------------------------
24
+ /**
25
+ * Return true when brain.autoCapture is enabled for the project.
26
+ * Delegates to the shared isAutoCaptureEnabled helper in handler-helpers.ts.
27
+ * Returns false on any error to keep graph writes safely disabled when the
28
+ * config or brain.db is unavailable.
29
+ */
30
+ async function shouldAutoPopulateGraph(projectRoot) {
31
+ try {
32
+ const { isAutoCaptureEnabled } = await import('../hooks/handlers/handler-helpers.js');
33
+ return isAutoCaptureEnabled(projectRoot);
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // Public API
41
+ // ---------------------------------------------------------------------------
42
+ /**
43
+ * Upsert a graph node for a typed table entry.
44
+ *
45
+ * Uses INSERT OR REPLACE to handle both new and existing entries. If the
46
+ * node already exists (same id), its label, qualityScore, lastActivityAt,
47
+ * updatedAt, and metadataJson are refreshed while createdAt is preserved.
48
+ *
49
+ * The contentHash is derived from a SHA-256 prefix of the canonical content.
50
+ * External-reference nodes (task, session, epic) may pass an empty string for
51
+ * content; their hash will be null so duplicates are not rejected.
52
+ *
53
+ * This function is gated on brain.autoCapture. If the gate is disabled or any
54
+ * error occurs, it returns silently without throwing.
55
+ *
56
+ * @param projectRoot - Absolute path to the project root directory.
57
+ * @param nodeId - Stable composite ID in the form '<type>:<source-id>'.
58
+ * @param nodeType - Discriminated type from BRAIN_NODE_TYPES.
59
+ * @param label - Human-readable label (title, task ID, etc.).
60
+ * @param qualityScore - 0.0 (noise) to 1.0 (canonical).
61
+ * @param content - Canonical text used to derive the content hash.
62
+ * @param metadata - Optional type-specific metadata blob.
63
+ *
64
+ * @task T537
65
+ */
66
+ export async function upsertGraphNode(projectRoot, nodeId, nodeType, label, qualityScore, content, metadata) {
67
+ try {
68
+ if (!(await shouldAutoPopulateGraph(projectRoot)))
69
+ return;
70
+ const db = await getBrainDb(projectRoot);
71
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
72
+ // Only compute a content hash for non-trivial content (external reference
73
+ // nodes like task/session/epic may have empty content).
74
+ const trimmed = content.trim().toLowerCase();
75
+ const contentHash = trimmed
76
+ ? createHash('sha256').update(trimmed).digest('hex').substring(0, 16)
77
+ : null;
78
+ await db
79
+ .insert(brainPageNodes)
80
+ .values({
81
+ id: nodeId,
82
+ nodeType,
83
+ label: label.substring(0, 200),
84
+ qualityScore,
85
+ contentHash,
86
+ metadataJson: metadata ? JSON.stringify(metadata) : null,
87
+ lastActivityAt: now,
88
+ createdAt: now,
89
+ updatedAt: now,
90
+ })
91
+ .onConflictDoUpdate({
92
+ target: brainPageNodes.id,
93
+ set: {
94
+ label: label.substring(0, 200),
95
+ qualityScore,
96
+ lastActivityAt: now,
97
+ updatedAt: now,
98
+ metadataJson: metadata ? JSON.stringify(metadata) : null,
99
+ },
100
+ });
101
+ }
102
+ catch (err) {
103
+ // Log but never surface — this is a best-effort side effect.
104
+ console.warn('[brain-graph] upsertGraphNode failed:', err);
105
+ }
106
+ }
107
+ /**
108
+ * Add a directed, typed edge between two graph nodes (idempotent).
109
+ *
110
+ * The composite primary key (fromId, toId, edgeType) prevents duplicate edges
111
+ * of the same type. Conflicting rows are ignored so this is safe to call
112
+ * multiple times with the same arguments.
113
+ *
114
+ * This function is gated on brain.autoCapture. If the gate is disabled or any
115
+ * error occurs, it returns silently without throwing.
116
+ *
117
+ * @param projectRoot - Absolute path to the project root directory.
118
+ * @param fromId - Source node ID (brain_page_nodes.id).
119
+ * @param toId - Target node ID (brain_page_nodes.id or external nexus ID).
120
+ * @param edgeType - Typed relationship from BRAIN_EDGE_TYPES.
121
+ * @param weight - Edge confidence/weight (0.0–1.0). Defaults to 1.0.
122
+ * @param provenance - Human-readable note on why this edge was emitted.
123
+ *
124
+ * @task T537
125
+ */
126
+ export async function addGraphEdge(projectRoot, fromId, toId, edgeType, weight = 1.0, provenance) {
127
+ try {
128
+ if (!(await shouldAutoPopulateGraph(projectRoot)))
129
+ return;
130
+ const db = await getBrainDb(projectRoot);
131
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
132
+ await db
133
+ .insert(brainPageEdges)
134
+ .values({
135
+ fromId,
136
+ toId,
137
+ edgeType,
138
+ weight,
139
+ provenance: provenance ?? null,
140
+ createdAt: now,
141
+ })
142
+ .onConflictDoNothing();
143
+ }
144
+ catch (err) {
145
+ console.warn('[brain-graph] addGraphEdge failed:', err);
146
+ }
147
+ }
148
+ //# sourceMappingURL=graph-auto-populate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-auto-populate.js","sourceRoot":"","sources":["../../src/memory/graph-auto-populate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMtD,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;QACtF,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,MAAc,EACd,QAAuB,EACvB,KAAa,EACb,YAAoB,EACpB,OAAe,EACf,QAAkC;IAElC,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAAE,OAAO;QAE1D,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpE,0EAA0E;QAC1E,wDAAwD;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO;YACzB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YACrE,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,EAAE;aACL,MAAM,CAAC,cAAc,CAAC;aACtB,MAAM,CAAC;YACN,EAAE,EAAE,MAAM;YACV,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;YAC9B,YAAY;YACZ,WAAW;YACX,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,cAAc,EAAE,GAAG;YACnB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;aACD,kBAAkB,CAAC;YAClB,MAAM,EAAE,cAAc,CAAC,EAAE;YACzB,GAAG,EAAE;gBACH,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9B,YAAY;gBACZ,cAAc,EAAE,GAAG;gBACnB,SAAS,EAAE,GAAG;gBACd,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aACzD;SACF,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAmB,EACnB,MAAc,EACd,IAAY,EACZ,QAAuB,EACvB,MAAM,GAAG,GAAG,EACZ,UAAmB;IAEnB,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAAE,OAAO;QAE1D,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEpE,MAAM,EAAE;aACL,MAAM,CAAC,cAAc,CAAC;aACtB,MAAM,CAAC;YACN,MAAM;YACN,IAAI;YACJ,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,UAAU,IAAI,IAAI;YAC9B,SAAS,EAAE,GAAG;SACf,CAAC;aACD,mBAAmB,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
@@ -0,0 +1,517 @@
1
+ /**
2
+ * Graph Memory Bridge — connects brain.db memory nodes to nexus.db code nodes.
3
+ *
4
+ * Scans brain observations, decisions, patterns, and learnings for entity
5
+ * references (file paths, function names, symbol names) and matches them
6
+ * against nexus_nodes in the global nexus.db. Matching pairs are linked via
7
+ * `code_reference` edges written to brain_page_edges in brain.db.
8
+ *
9
+ * Design constraints:
10
+ * - brain.db is read-write (edges written here).
11
+ * - nexus.db is READ-ONLY from this module — never mutated.
12
+ * - All operations are BEST-EFFORT; failures never surface to callers.
13
+ * - Cross-DB join is handled in-process: read nexus nodes, then write brain edges.
14
+ * - Entity matching: exact match on filePath or symbol name; fuzzy match on
15
+ * symbol name (case-insensitive substring, minimum 4 chars).
16
+ *
17
+ * @task graph-memory-bridge
18
+ * @epic T523
19
+ */
20
+ import { brainPageEdges, brainPageNodes } from '../store/brain-schema.js';
21
+ import { getBrainDb, getBrainNativeDb } from '../store/brain-sqlite.js';
22
+ import { getNexusDb, getNexusNativeDb } from '../store/nexus-sqlite.js';
23
+ import { typedAll } from '../store/typed-query.js';
24
+ // ---------------------------------------------------------------------------
25
+ // Internal helpers
26
+ // ---------------------------------------------------------------------------
27
+ /**
28
+ * Regex patterns to extract entity references from text.
29
+ *
30
+ * Matches:
31
+ * - File paths: relative paths ending in known source extensions
32
+ * - Function/symbol names: camelCase, PascalCase, snake_case identifiers (≥4 chars)
33
+ */
34
+ const FILE_PATH_PATTERN = /(?:^|\s|['"`(])([a-zA-Z0-9_\-./]+\.(?:ts|tsx|js|jsx|rs|go|py|mjs|cjs))(?:$|\s|['"`)])/g;
35
+ const SYMBOL_PATTERN = /\b([a-zA-Z_][a-zA-Z0-9_]*(?:[A-Z][a-zA-Z0-9_]*)+|[a-zA-Z_]{4,}[a-zA-Z0-9_]*)\b/g;
36
+ /** Common stop-words to skip in symbol extraction (short-circuits false positives). */
37
+ const SYMBOL_STOP_WORDS = new Set([
38
+ 'true',
39
+ 'false',
40
+ 'null',
41
+ 'undefined',
42
+ 'const',
43
+ 'async',
44
+ 'await',
45
+ 'return',
46
+ 'export',
47
+ 'import',
48
+ 'from',
49
+ 'type',
50
+ 'interface',
51
+ 'function',
52
+ 'class',
53
+ 'this',
54
+ 'super',
55
+ 'extends',
56
+ 'implements',
57
+ 'with',
58
+ 'that',
59
+ 'then',
60
+ 'when',
61
+ 'have',
62
+ 'been',
63
+ 'will',
64
+ 'should',
65
+ 'could',
66
+ 'would',
67
+ 'error',
68
+ 'result',
69
+ 'value',
70
+ 'data',
71
+ 'info',
72
+ 'note',
73
+ 'todo',
74
+ 'done',
75
+ 'fail',
76
+ 'pass',
77
+ ]);
78
+ /**
79
+ * Extract file paths from text.
80
+ */
81
+ function extractFilePaths(text) {
82
+ const paths = new Set();
83
+ for (const m of text.matchAll(FILE_PATH_PATTERN)) {
84
+ const p = m[1];
85
+ if (p)
86
+ paths.add(p);
87
+ }
88
+ return Array.from(paths);
89
+ }
90
+ /**
91
+ * Extract potential symbol names from text (camelCase / PascalCase / snake_case ≥ 4 chars).
92
+ */
93
+ function extractSymbolCandidates(text) {
94
+ const syms = new Set();
95
+ for (const m of text.matchAll(SYMBOL_PATTERN)) {
96
+ const s = m[1];
97
+ if (s && s.length >= 4 && !SYMBOL_STOP_WORDS.has(s.toLowerCase())) {
98
+ syms.add(s);
99
+ }
100
+ }
101
+ return Array.from(syms);
102
+ }
103
+ /**
104
+ * Build a plain-text corpus from a brain_page_nodes metadata_json blob.
105
+ * Returns empty string if metadata is absent or malformed.
106
+ */
107
+ function metadataText(metaJson) {
108
+ if (!metaJson)
109
+ return '';
110
+ try {
111
+ const obj = JSON.parse(metaJson);
112
+ return Object.values(obj)
113
+ .filter((v) => typeof v === 'string')
114
+ .join(' ');
115
+ }
116
+ catch {
117
+ return '';
118
+ }
119
+ }
120
+ // ---------------------------------------------------------------------------
121
+ // linkMemoryToCode — manual single-link creation
122
+ // ---------------------------------------------------------------------------
123
+ /**
124
+ * Create a `code_reference` edge from a brain memory node to a nexus code node.
125
+ *
126
+ * Writes to brain_page_edges (brain.db). The nexus node must already exist in
127
+ * nexus.db but is never mutated. The brain node is upserted as a stub if it
128
+ * does not yet exist in brain_page_nodes.
129
+ *
130
+ * This function is idempotent — calling it multiple times with the same
131
+ * (memoryId, codeSymbol) pair is safe (the composite PK prevents duplicates).
132
+ *
133
+ * @param projectRoot - Absolute path to project root (locates brain.db)
134
+ * @param memoryId - Brain memory node ID (format: '<type>:<source-id>')
135
+ * @param codeSymbol - Nexus node ID (format: '<filePath>::<name>' or '<filePath>')
136
+ * @returns True if the edge was created or already existed; false on error
137
+ */
138
+ export async function linkMemoryToCode(projectRoot, memoryId, codeSymbol) {
139
+ try {
140
+ const brainDb = await getBrainDb(projectRoot);
141
+ // Ensure nexus.db is initialized so we can verify the target node exists
142
+ await getNexusDb();
143
+ const nexusNative = getNexusNativeDb();
144
+ if (!nexusNative)
145
+ return false;
146
+ // Verify the nexus node exists (read-only check)
147
+ const nexusNode = nexusNative
148
+ .prepare('SELECT id, label, file_path, kind FROM nexus_nodes WHERE id = ? LIMIT 1')
149
+ .get(codeSymbol);
150
+ if (!nexusNode)
151
+ return false;
152
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
153
+ // Upsert the memory node stub in brain_page_nodes so the edge FK is satisfied
154
+ // (the real node may already exist from graph-auto-populate; onConflictDoUpdate
155
+ // only refreshes lastActivityAt if the node already exists).
156
+ const idParts = memoryId.split(':');
157
+ const nodeType = idParts[0] ?? 'observation';
158
+ await brainDb
159
+ .insert(brainPageNodes)
160
+ .values({
161
+ id: memoryId,
162
+ nodeType,
163
+ label: memoryId,
164
+ qualityScore: 0.5,
165
+ contentHash: null,
166
+ lastActivityAt: now,
167
+ createdAt: now,
168
+ updatedAt: now,
169
+ })
170
+ .onConflictDoUpdate({
171
+ target: brainPageNodes.id,
172
+ set: { lastActivityAt: now, updatedAt: now },
173
+ });
174
+ // Write the code_reference edge ('code_reference' is now in BRAIN_EDGE_TYPES — T645)
175
+ await brainDb
176
+ .insert(brainPageEdges)
177
+ .values({
178
+ fromId: memoryId,
179
+ toId: codeSymbol,
180
+ edgeType: 'code_reference',
181
+ weight: 1.0,
182
+ provenance: 'manual',
183
+ createdAt: now,
184
+ })
185
+ .onConflictDoNothing();
186
+ return true;
187
+ }
188
+ catch (err) {
189
+ console.warn('[graph-memory-bridge] linkMemoryToCode failed:', err);
190
+ return false;
191
+ }
192
+ }
193
+ // ---------------------------------------------------------------------------
194
+ // autoLinkMemories — scan brain nodes and link to nexus matches
195
+ // ---------------------------------------------------------------------------
196
+ /**
197
+ * Scan brain memory nodes for entity references and match them against nexus.
198
+ *
199
+ * For each brain node, extracts:
200
+ * - File path references → matched against nexus_nodes.file_path (exact)
201
+ * - Symbol name references → matched against nexus_nodes.name (exact, then fuzzy)
202
+ *
203
+ * Matching edges are written to brain_page_edges with edgeType='code_reference'.
204
+ * This function is idempotent — existing edges are skipped.
205
+ *
206
+ * Should be called from runConsolidation() as a best-effort step. All errors
207
+ * are caught and logged; never throws.
208
+ *
209
+ * @param projectRoot - Absolute path to project root (locates brain.db)
210
+ * @returns Summary of scanned entries and created links
211
+ */
212
+ export async function autoLinkMemories(projectRoot) {
213
+ const result = { scanned: 0, linked: 0, alreadyLinked: 0, links: [] };
214
+ try {
215
+ await getBrainDb(projectRoot);
216
+ const brainNative = getBrainNativeDb();
217
+ await getNexusDb();
218
+ const nexusNative = getNexusNativeDb();
219
+ if (!brainNative || !nexusNative)
220
+ return result;
221
+ // Load all brain page nodes that are memory entity types
222
+ const brainNodes = typedAll(brainNative.prepare(`
223
+ SELECT id, node_type, label, quality_score, metadata_json
224
+ FROM brain_page_nodes
225
+ WHERE node_type IN ('observation', 'decision', 'pattern', 'learning')
226
+ AND quality_score >= 0.3
227
+ ORDER BY quality_score DESC
228
+ LIMIT 500
229
+ `));
230
+ result.scanned = brainNodes.length;
231
+ if (brainNodes.length === 0)
232
+ return result;
233
+ // Load nexus nodes into memory (indexed by name and filePath for fast lookup).
234
+ // We load only essential columns to keep memory usage low.
235
+ const nexusNodes = typedAll(nexusNative.prepare(`
236
+ SELECT id, label, name, file_path, kind
237
+ FROM nexus_nodes
238
+ WHERE kind NOT IN ('community', 'process', 'folder')
239
+ LIMIT 20000
240
+ `));
241
+ if (nexusNodes.length === 0)
242
+ return result;
243
+ // Build lookup indexes
244
+ const byFilePath = new Map();
245
+ const byNameExact = new Map();
246
+ const byNameLower = new Map();
247
+ for (const node of nexusNodes) {
248
+ if (node.file_path) {
249
+ const fp = node.file_path.toLowerCase();
250
+ const existing = byFilePath.get(fp) ?? [];
251
+ existing.push(node);
252
+ byFilePath.set(fp, existing);
253
+ }
254
+ if (node.name) {
255
+ // Exact (case-sensitive)
256
+ const exact = byNameExact.get(node.name) ?? [];
257
+ exact.push(node);
258
+ byNameExact.set(node.name, exact);
259
+ // Lowercase for fuzzy
260
+ const lower = node.name.toLowerCase();
261
+ const fuzzy = byNameLower.get(lower) ?? [];
262
+ fuzzy.push(node);
263
+ byNameLower.set(lower, fuzzy);
264
+ }
265
+ }
266
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
267
+ // Load existing code_reference edges to avoid duplicates
268
+ const existingEdges = new Set();
269
+ const rawEdges = typedAll(brainNative.prepare(`
270
+ SELECT from_id, to_id FROM brain_page_edges WHERE edge_type = 'code_reference'
271
+ `));
272
+ for (const e of rawEdges) {
273
+ existingEdges.add(`${e.from_id}|${e.to_id}`);
274
+ }
275
+ // Process each brain node
276
+ for (const brainNode of brainNodes) {
277
+ const corpus = `${brainNode.label} ${metadataText(brainNode.metadata_json)}`;
278
+ const filePaths = extractFilePaths(corpus);
279
+ const symbolCandidates = extractSymbolCandidates(corpus);
280
+ const candidates = [];
281
+ // 1. Exact file path matches
282
+ for (const fp of filePaths) {
283
+ const matches = byFilePath.get(fp.toLowerCase());
284
+ if (matches) {
285
+ for (const n of matches) {
286
+ candidates.push({ nexusNode: n, strategy: 'exact-file', weight: 1.0 });
287
+ }
288
+ }
289
+ }
290
+ // 2. Exact symbol name matches
291
+ for (const sym of symbolCandidates) {
292
+ const exactMatches = byNameExact.get(sym);
293
+ if (exactMatches) {
294
+ for (const n of exactMatches) {
295
+ candidates.push({ nexusNode: n, strategy: 'exact-symbol', weight: 1.0 });
296
+ }
297
+ }
298
+ }
299
+ // 3. Fuzzy (case-insensitive) symbol matches — only for symbols not already exact-matched
300
+ const exactSymSet = new Set(symbolCandidates.flatMap((s) => byNameExact.get(s) ?? []).map((n) => n.id));
301
+ for (const sym of symbolCandidates) {
302
+ if (sym.length < 5)
303
+ continue; // skip very short symbols for fuzzy
304
+ const lower = sym.toLowerCase();
305
+ const fuzzyMatches = byNameLower.get(lower);
306
+ if (fuzzyMatches) {
307
+ for (const n of fuzzyMatches) {
308
+ if (!exactSymSet.has(n.id)) {
309
+ candidates.push({ nexusNode: n, strategy: 'fuzzy-symbol', weight: 0.6 });
310
+ }
311
+ }
312
+ }
313
+ }
314
+ // Deduplicate candidates (keep highest weight per nexus node)
315
+ const bestByNexusId = new Map();
316
+ for (const c of candidates) {
317
+ const existing = bestByNexusId.get(c.nexusNode.id);
318
+ if (!existing || c.weight > existing.weight) {
319
+ bestByNexusId.set(c.nexusNode.id, c);
320
+ }
321
+ }
322
+ // Write edges (cap at 10 per brain node to avoid noise)
323
+ const sortedCandidates = Array.from(bestByNexusId.values())
324
+ .sort((a, b) => b.weight - a.weight)
325
+ .slice(0, 10);
326
+ for (const { nexusNode, strategy, weight } of sortedCandidates) {
327
+ const edgeKey = `${brainNode.id}|${nexusNode.id}`;
328
+ if (existingEdges.has(edgeKey)) {
329
+ result.alreadyLinked++;
330
+ continue;
331
+ }
332
+ // Upsert brain node stub (idempotent — real node may already exist)
333
+ brainNative
334
+ .prepare(`
335
+ INSERT OR IGNORE INTO brain_page_nodes
336
+ (id, node_type, label, quality_score, content_hash, metadata_json, last_activity_at, created_at, updated_at)
337
+ VALUES (?, ?, ?, ?, NULL, NULL, ?, ?, ?)
338
+ `)
339
+ .run(brainNode.id, brainNode.node_type, brainNode.label, brainNode.quality_score, now, now, now);
340
+ // Write edge
341
+ try {
342
+ brainNative
343
+ .prepare(`
344
+ INSERT OR IGNORE INTO brain_page_edges
345
+ (from_id, to_id, edge_type, weight, provenance, created_at)
346
+ VALUES (?, ?, 'code_reference', ?, ?, ?)
347
+ `)
348
+ .run(brainNode.id, nexusNode.id, weight, `auto:${strategy}`, now);
349
+ existingEdges.add(edgeKey);
350
+ result.linked++;
351
+ result.links.push({
352
+ brainNodeId: brainNode.id,
353
+ nexusNodeId: nexusNode.id,
354
+ nexusLabel: nexusNode.label,
355
+ matchStrategy: strategy,
356
+ weight,
357
+ });
358
+ }
359
+ catch (edgeErr) {
360
+ console.warn('[graph-memory-bridge] edge insert failed:', edgeErr);
361
+ }
362
+ }
363
+ }
364
+ }
365
+ catch (err) {
366
+ console.warn('[graph-memory-bridge] autoLinkMemories failed:', err);
367
+ }
368
+ return result;
369
+ }
370
+ // ---------------------------------------------------------------------------
371
+ // queryMemoriesForCode — find memories related to a code symbol
372
+ // ---------------------------------------------------------------------------
373
+ /**
374
+ * Given a code symbol (nexus node ID), find related brain memory nodes.
375
+ *
376
+ * Traverses `code_reference` edges in brain_page_edges where the target is
377
+ * the given nexus node ID. Returns the brain memory nodes with edge metadata.
378
+ *
379
+ * @param projectRoot - Absolute path to project root (locates brain.db)
380
+ * @param symbol - Nexus node ID (format: '<filePath>::<name>' or '<filePath>')
381
+ * @returns Memory nodes that reference the given code symbol
382
+ */
383
+ export async function queryMemoriesForCode(projectRoot, symbol) {
384
+ const result = { nexusNodeId: symbol, memories: [] };
385
+ try {
386
+ await getBrainDb(projectRoot);
387
+ const brainNative = getBrainNativeDb();
388
+ if (!brainNative)
389
+ return result;
390
+ const rows = typedAll(brainNative.prepare(`
391
+ SELECT n.id, n.node_type, n.label, n.quality_score,
392
+ e.weight, e.provenance
393
+ FROM brain_page_edges e
394
+ JOIN brain_page_nodes n ON n.id = e.from_id
395
+ WHERE e.to_id = ?
396
+ AND e.edge_type = 'code_reference'
397
+ ORDER BY e.weight DESC, n.quality_score DESC
398
+ LIMIT 50
399
+ `), symbol);
400
+ result.memories = rows.map((r) => ({
401
+ nodeId: r.id,
402
+ nodeType: r.node_type,
403
+ label: r.label,
404
+ qualityScore: r.quality_score,
405
+ edgeWeight: r.weight,
406
+ matchStrategy: r.provenance?.replace('auto:', '') ?? 'manual',
407
+ }));
408
+ }
409
+ catch (err) {
410
+ console.warn('[graph-memory-bridge] queryMemoriesForCode failed:', err);
411
+ }
412
+ return result;
413
+ }
414
+ // ---------------------------------------------------------------------------
415
+ // queryCodeForMemory — find code nodes related to a memory entry
416
+ // ---------------------------------------------------------------------------
417
+ /**
418
+ * Given a brain memory node ID, find related nexus code nodes.
419
+ *
420
+ * Traverses `code_reference` edges in brain_page_edges from the given memory
421
+ * node ID, then fetches the corresponding nexus node metadata.
422
+ *
423
+ * @param projectRoot - Absolute path to project root (locates brain.db)
424
+ * @param memoryId - Brain memory node ID (format: '<type>:<source-id>')
425
+ * @returns Nexus code nodes referenced by the given memory entry
426
+ */
427
+ export async function queryCodeForMemory(projectRoot, memoryId) {
428
+ const result = { brainNodeId: memoryId, codeNodes: [] };
429
+ try {
430
+ await getBrainDb(projectRoot);
431
+ const brainNative = getBrainNativeDb();
432
+ await getNexusDb();
433
+ const nexusNative = getNexusNativeDb();
434
+ if (!brainNative || !nexusNative)
435
+ return result;
436
+ const brainEdges = typedAll(brainNative.prepare(`
437
+ SELECT to_id, weight, provenance
438
+ FROM brain_page_edges
439
+ WHERE from_id = ?
440
+ AND edge_type = 'code_reference'
441
+ ORDER BY weight DESC
442
+ LIMIT 50
443
+ `), memoryId);
444
+ if (brainEdges.length === 0)
445
+ return result;
446
+ // Fetch nexus node metadata for each target (read-only)
447
+ for (const edge of brainEdges) {
448
+ const nexusNode = nexusNative
449
+ .prepare('SELECT id, label, file_path, kind FROM nexus_nodes WHERE id = ? LIMIT 1')
450
+ .get(edge.to_id);
451
+ if (nexusNode) {
452
+ result.codeNodes.push({
453
+ nexusNodeId: nexusNode.id,
454
+ label: nexusNode.label,
455
+ filePath: nexusNode.file_path,
456
+ kind: nexusNode.kind,
457
+ edgeWeight: edge.weight,
458
+ matchStrategy: edge.provenance?.replace('auto:', '') ?? 'manual',
459
+ });
460
+ }
461
+ }
462
+ }
463
+ catch (err) {
464
+ console.warn('[graph-memory-bridge] queryCodeForMemory failed:', err);
465
+ }
466
+ return result;
467
+ }
468
+ /**
469
+ * Return all `code_reference` edges from brain.db enriched with nexus metadata.
470
+ *
471
+ * Used by `cleo memory code-links` CLI command.
472
+ *
473
+ * @param projectRoot - Absolute path to project root (locates brain.db)
474
+ * @param limit - Maximum number of entries to return (default 100)
475
+ * @returns Array of code link entries sorted by weight descending
476
+ */
477
+ export async function listCodeLinks(projectRoot, limit = 100) {
478
+ const entries = [];
479
+ try {
480
+ await getBrainDb(projectRoot);
481
+ const brainNative = getBrainNativeDb();
482
+ await getNexusDb();
483
+ const nexusNative = getNexusNativeDb();
484
+ if (!brainNative || !nexusNative)
485
+ return entries;
486
+ const rows = typedAll(brainNative.prepare(`
487
+ SELECT e.from_id, e.to_id, e.weight, e.created_at,
488
+ n.node_type, n.label
489
+ FROM brain_page_edges e
490
+ JOIN brain_page_nodes n ON n.id = e.from_id
491
+ WHERE e.edge_type = 'code_reference'
492
+ ORDER BY e.weight DESC, e.created_at DESC
493
+ LIMIT ?
494
+ `), limit);
495
+ for (const row of rows) {
496
+ const nexusNode = nexusNative
497
+ .prepare('SELECT id, label, file_path, kind FROM nexus_nodes WHERE id = ? LIMIT 1')
498
+ .get(row.to_id);
499
+ entries.push({
500
+ brainNodeId: row.from_id,
501
+ brainNodeType: row.node_type,
502
+ brainNodeLabel: row.label,
503
+ nexusNodeId: row.to_id,
504
+ nexusNodeLabel: nexusNode?.label ?? row.to_id,
505
+ filePath: nexusNode?.file_path ?? null,
506
+ kind: nexusNode?.kind ?? 'unknown',
507
+ weight: row.weight,
508
+ createdAt: row.created_at,
509
+ });
510
+ }
511
+ }
512
+ catch (err) {
513
+ console.warn('[graph-memory-bridge] listCodeLinks failed:', err);
514
+ }
515
+ return entries;
516
+ }
517
+ //# sourceMappingURL=graph-memory-bridge.js.map