@cleocode/core 2026.4.31 → 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 (985) 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 +52 -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/index.js +15 -0
  120. package/dist/conduit/index.js.map +1 -0
  121. package/dist/conduit/local-transport.js +255 -0
  122. package/dist/conduit/local-transport.js.map +1 -0
  123. package/dist/conduit/sse-transport.js +299 -0
  124. package/dist/conduit/sse-transport.js.map +1 -0
  125. package/dist/config/build-config.js +29 -0
  126. package/dist/config/build-config.js.map +1 -0
  127. package/dist/config.js +400 -0
  128. package/dist/config.js.map +1 -0
  129. package/dist/constants.js +18 -0
  130. package/dist/constants.js.map +1 -0
  131. package/dist/context/index.js +137 -0
  132. package/dist/context/index.js.map +1 -0
  133. package/dist/crypto/credentials.js +219 -0
  134. package/dist/crypto/credentials.js.map +1 -0
  135. package/dist/discovery.js +182 -0
  136. package/dist/discovery.js.map +1 -0
  137. package/dist/engine-result.js +12 -0
  138. package/dist/engine-result.js.map +1 -0
  139. package/dist/error-catalog.js +404 -0
  140. package/dist/error-catalog.js.map +1 -0
  141. package/dist/error-registry.js +393 -0
  142. package/dist/error-registry.js.map +1 -0
  143. package/dist/errors.js +173 -0
  144. package/dist/errors.js.map +1 -0
  145. package/dist/hooks/handlers/agent-hooks.js +106 -0
  146. package/dist/hooks/handlers/agent-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.d.ts +4 -0
  156. package/dist/hooks/handlers/index.d.ts.map +1 -1
  157. package/dist/hooks/handlers/index.js +34 -0
  158. package/dist/hooks/handlers/index.js.map +1 -0
  159. package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
  160. package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
  161. package/dist/hooks/handlers/intelligence-hooks.js +69 -0
  162. package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
  163. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  164. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  165. package/dist/hooks/handlers/notification-hooks.js +62 -0
  166. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  167. package/dist/hooks/handlers/session-hooks.d.ts +16 -0
  168. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  169. package/dist/hooks/handlers/session-hooks.js +157 -0
  170. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  171. package/dist/hooks/handlers/task-hooks.js +65 -0
  172. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  173. package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
  174. package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
  175. package/dist/hooks/handlers/watchdog-hooks.js +162 -0
  176. package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
  177. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  178. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  179. package/dist/hooks/index.js +13 -0
  180. package/dist/hooks/index.js.map +1 -0
  181. package/dist/hooks/payload-schemas.js +220 -0
  182. package/dist/hooks/payload-schemas.js.map +1 -0
  183. package/dist/hooks/provider-hooks.js +66 -0
  184. package/dist/hooks/provider-hooks.js.map +1 -0
  185. package/dist/hooks/registry.js +229 -0
  186. package/dist/hooks/registry.js.map +1 -0
  187. package/dist/hooks/types.js +66 -0
  188. package/dist/hooks/types.js.map +1 -0
  189. package/dist/hooks.js +136 -0
  190. package/dist/hooks.js.map +1 -0
  191. package/dist/index.js +3828 -2167
  192. package/dist/index.js.map +4 -4
  193. package/dist/init.js +920 -0
  194. package/dist/init.js.map +1 -0
  195. package/dist/inject/index.js +82 -0
  196. package/dist/inject/index.js.map +1 -0
  197. package/dist/injection.d.ts +13 -1
  198. package/dist/injection.d.ts.map +1 -1
  199. package/dist/injection.js +377 -0
  200. package/dist/injection.js.map +1 -0
  201. package/dist/intelligence/adaptive-validation.js +497 -0
  202. package/dist/intelligence/adaptive-validation.js.map +1 -0
  203. package/dist/intelligence/impact.js +675 -0
  204. package/dist/intelligence/impact.js.map +1 -0
  205. package/dist/intelligence/index.js +22 -0
  206. package/dist/intelligence/index.js.map +1 -0
  207. package/dist/intelligence/patterns.js +492 -0
  208. package/dist/intelligence/patterns.js.map +1 -0
  209. package/dist/intelligence/prediction.js +499 -0
  210. package/dist/intelligence/prediction.js.map +1 -0
  211. package/dist/intelligence/types.js +13 -0
  212. package/dist/intelligence/types.js.map +1 -0
  213. package/dist/internal.d.ts +8 -3
  214. package/dist/internal.d.ts.map +1 -1
  215. package/dist/internal.js +320 -0
  216. package/dist/internal.js.map +1 -0
  217. package/dist/issue/create.js +121 -0
  218. package/dist/issue/create.js.map +1 -0
  219. package/dist/issue/diagnostics.js +59 -0
  220. package/dist/issue/diagnostics.js.map +1 -0
  221. package/dist/issue/index.js +10 -0
  222. package/dist/issue/index.js.map +1 -0
  223. package/dist/issue/template-parser.js +267 -0
  224. package/dist/issue/template-parser.js.map +1 -0
  225. package/dist/json-schema-validator.js +76 -0
  226. package/dist/json-schema-validator.js.map +1 -0
  227. package/dist/lib/index.js +11 -0
  228. package/dist/lib/index.js.map +1 -0
  229. package/dist/lib/retry.js +152 -0
  230. package/dist/lib/retry.js.map +1 -0
  231. package/dist/lib/tree-sitter-languages.js +75 -0
  232. package/dist/lib/tree-sitter-languages.js.map +1 -0
  233. package/dist/lifecycle/chain-composition.js +152 -0
  234. package/dist/lifecycle/chain-composition.js.map +1 -0
  235. package/dist/lifecycle/chain-store.js +246 -0
  236. package/dist/lifecycle/chain-store.js.map +1 -0
  237. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  238. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  239. package/dist/lifecycle/default-chain.js +176 -0
  240. package/dist/lifecycle/default-chain.js.map +1 -0
  241. package/dist/lifecycle/evidence.js +180 -0
  242. package/dist/lifecycle/evidence.js.map +1 -0
  243. package/dist/lifecycle/frontmatter.js +363 -0
  244. package/dist/lifecycle/frontmatter.js.map +1 -0
  245. package/dist/lifecycle/index.js +756 -0
  246. package/dist/lifecycle/index.js.map +1 -0
  247. package/dist/lifecycle/pipeline.js +656 -0
  248. package/dist/lifecycle/pipeline.js.map +1 -0
  249. package/dist/lifecycle/rcasd-index.js +326 -0
  250. package/dist/lifecycle/rcasd-index.js.map +1 -0
  251. package/dist/lifecycle/rcasd-paths.js +220 -0
  252. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  253. package/dist/lifecycle/resume.js +864 -0
  254. package/dist/lifecycle/resume.js.map +1 -0
  255. package/dist/lifecycle/stage-artifacts.js +94 -0
  256. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  257. package/dist/lifecycle/stage-guidance.js +234 -0
  258. package/dist/lifecycle/stage-guidance.js.map +1 -0
  259. package/dist/lifecycle/stages.js +534 -0
  260. package/dist/lifecycle/stages.js.map +1 -0
  261. package/dist/lifecycle/state-machine.js +516 -0
  262. package/dist/lifecycle/state-machine.js.map +1 -0
  263. package/dist/lifecycle/tessera-engine.js +249 -0
  264. package/dist/lifecycle/tessera-engine.js.map +1 -0
  265. package/dist/logger.js +140 -0
  266. package/dist/logger.js.map +1 -0
  267. package/dist/memory/auto-extract.js +96 -0
  268. package/dist/memory/auto-extract.js.map +1 -0
  269. package/dist/memory/brain-backfill.js +389 -0
  270. package/dist/memory/brain-backfill.js.map +1 -0
  271. package/dist/memory/brain-consolidator.d.ts +48 -0
  272. package/dist/memory/brain-consolidator.d.ts.map +1 -0
  273. package/dist/memory/brain-consolidator.js +294 -0
  274. package/dist/memory/brain-consolidator.js.map +1 -0
  275. package/dist/memory/brain-embedding.js +66 -0
  276. package/dist/memory/brain-embedding.js.map +1 -0
  277. package/dist/memory/brain-lifecycle.d.ts +83 -2
  278. package/dist/memory/brain-lifecycle.d.ts.map +1 -1
  279. package/dist/memory/brain-lifecycle.js +807 -0
  280. package/dist/memory/brain-lifecycle.js.map +1 -0
  281. package/dist/memory/brain-links.js +161 -0
  282. package/dist/memory/brain-links.js.map +1 -0
  283. package/dist/memory/brain-maintenance.js +114 -0
  284. package/dist/memory/brain-maintenance.js.map +1 -0
  285. package/dist/memory/brain-migration.js +149 -0
  286. package/dist/memory/brain-migration.js.map +1 -0
  287. package/dist/memory/brain-purge.js +243 -0
  288. package/dist/memory/brain-purge.js.map +1 -0
  289. package/dist/memory/brain-reasoning.js +215 -0
  290. package/dist/memory/brain-reasoning.js.map +1 -0
  291. package/dist/memory/brain-retrieval.d.ts +69 -1
  292. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  293. package/dist/memory/brain-retrieval.js +912 -0
  294. package/dist/memory/brain-retrieval.js.map +1 -0
  295. package/dist/memory/brain-row-types.js +10 -0
  296. package/dist/memory/brain-row-types.js.map +1 -0
  297. package/dist/memory/brain-search.d.ts.map +1 -1
  298. package/dist/memory/brain-search.js +528 -0
  299. package/dist/memory/brain-search.js.map +1 -0
  300. package/dist/memory/brain-similarity.js +145 -0
  301. package/dist/memory/brain-similarity.js.map +1 -0
  302. package/dist/memory/claude-mem-migration.js +277 -0
  303. package/dist/memory/claude-mem-migration.js.map +1 -0
  304. package/dist/memory/decisions.d.ts.map +1 -1
  305. package/dist/memory/decisions.js +218 -0
  306. package/dist/memory/decisions.js.map +1 -0
  307. package/dist/memory/embedding-local.js +102 -0
  308. package/dist/memory/embedding-local.js.map +1 -0
  309. package/dist/memory/embedding-queue.js +271 -0
  310. package/dist/memory/embedding-queue.js.map +1 -0
  311. package/dist/memory/embedding-worker.js +58 -0
  312. package/dist/memory/embedding-worker.js.map +1 -0
  313. package/dist/memory/engine-compat.d.ts.map +1 -1
  314. package/dist/memory/engine-compat.js +1564 -0
  315. package/dist/memory/engine-compat.js.map +1 -0
  316. package/dist/memory/extraction-gate.d.ts +139 -0
  317. package/dist/memory/extraction-gate.d.ts.map +1 -0
  318. package/dist/memory/extraction-gate.js +459 -0
  319. package/dist/memory/extraction-gate.js.map +1 -0
  320. package/dist/memory/graph-auto-populate.js +148 -0
  321. package/dist/memory/graph-auto-populate.js.map +1 -0
  322. package/dist/memory/graph-queries.js +290 -0
  323. package/dist/memory/graph-queries.js.map +1 -0
  324. package/dist/memory/index.d.ts +2 -0
  325. package/dist/memory/index.d.ts.map +1 -1
  326. package/dist/memory/index.js +1144 -0
  327. package/dist/memory/index.js.map +1 -0
  328. package/dist/memory/learnings.d.ts +14 -0
  329. package/dist/memory/learnings.d.ts.map +1 -1
  330. package/dist/memory/learnings.js +178 -0
  331. package/dist/memory/learnings.js.map +1 -0
  332. package/dist/memory/memory-bridge.js +370 -0
  333. package/dist/memory/memory-bridge.js.map +1 -0
  334. package/dist/memory/mental-model-injection.js +61 -0
  335. package/dist/memory/mental-model-injection.js.map +1 -0
  336. package/dist/memory/mental-model-queue.js +211 -0
  337. package/dist/memory/mental-model-queue.js.map +1 -0
  338. package/dist/memory/patterns.d.ts +24 -4
  339. package/dist/memory/patterns.d.ts.map +1 -1
  340. package/dist/memory/patterns.js +174 -0
  341. package/dist/memory/patterns.js.map +1 -0
  342. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  343. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  344. package/dist/memory/quality-scoring.d.ts +42 -5
  345. package/dist/memory/quality-scoring.d.ts.map +1 -1
  346. package/dist/memory/quality-scoring.js +182 -0
  347. package/dist/memory/quality-scoring.js.map +1 -0
  348. package/dist/memory/session-memory.js +331 -0
  349. package/dist/memory/session-memory.js.map +1 -0
  350. package/dist/metrics/ab-test.js +260 -0
  351. package/dist/metrics/ab-test.js.map +1 -0
  352. package/dist/metrics/aggregation.js +363 -0
  353. package/dist/metrics/aggregation.js.map +1 -0
  354. package/dist/metrics/common.js +64 -0
  355. package/dist/metrics/common.js.map +1 -0
  356. package/dist/metrics/enums.js +78 -0
  357. package/dist/metrics/enums.js.map +1 -0
  358. package/dist/metrics/index.js +19 -0
  359. package/dist/metrics/index.js.map +1 -0
  360. package/dist/metrics/model-provider-registry.js +88 -0
  361. package/dist/metrics/model-provider-registry.js.map +1 -0
  362. package/dist/metrics/otel-integration.js +263 -0
  363. package/dist/metrics/otel-integration.js.map +1 -0
  364. package/dist/metrics/provider-detection.js +103 -0
  365. package/dist/metrics/provider-detection.js.map +1 -0
  366. package/dist/metrics/token-estimation.js +253 -0
  367. package/dist/metrics/token-estimation.js.map +1 -0
  368. package/dist/metrics/token-service.js +450 -0
  369. package/dist/metrics/token-service.js.map +1 -0
  370. package/dist/migration/agent-outputs.js +316 -0
  371. package/dist/migration/agent-outputs.js.map +1 -0
  372. package/dist/migration/checksum.js +92 -0
  373. package/dist/migration/checksum.js.map +1 -0
  374. package/dist/migration/index.js +282 -0
  375. package/dist/migration/index.js.map +1 -0
  376. package/dist/migration/logger.js +360 -0
  377. package/dist/migration/logger.js.map +1 -0
  378. package/dist/migration/preflight.js +9 -0
  379. package/dist/migration/preflight.js.map +1 -0
  380. package/dist/migration/state.js +421 -0
  381. package/dist/migration/state.js.map +1 -0
  382. package/dist/migration/validate.js +241 -0
  383. package/dist/migration/validate.js.map +1 -0
  384. package/dist/mvi-helpers.js +73 -0
  385. package/dist/mvi-helpers.js.map +1 -0
  386. package/dist/nexus/deps.js +375 -0
  387. package/dist/nexus/deps.js.map +1 -0
  388. package/dist/nexus/discover.js +288 -0
  389. package/dist/nexus/discover.js.map +1 -0
  390. package/dist/nexus/hash.js +10 -0
  391. package/dist/nexus/hash.js.map +1 -0
  392. package/dist/nexus/index.js +40 -0
  393. package/dist/nexus/index.js.map +1 -0
  394. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  395. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  396. package/dist/nexus/nexus-bridge.d.ts +51 -0
  397. package/dist/nexus/nexus-bridge.d.ts.map +1 -0
  398. package/dist/nexus/nexus-bridge.js +321 -0
  399. package/dist/nexus/nexus-bridge.js.map +1 -0
  400. package/dist/nexus/permissions.js +105 -0
  401. package/dist/nexus/permissions.js.map +1 -0
  402. package/dist/nexus/query.js +175 -0
  403. package/dist/nexus/query.js.map +1 -0
  404. package/dist/nexus/registry.js +584 -0
  405. package/dist/nexus/registry.js.map +1 -0
  406. package/dist/nexus/sharing/index.js +288 -0
  407. package/dist/nexus/sharing/index.js.map +1 -0
  408. package/dist/nexus/transfer-types.js +8 -0
  409. package/dist/nexus/transfer-types.js.map +1 -0
  410. package/dist/nexus/transfer.js +271 -0
  411. package/dist/nexus/transfer.js.map +1 -0
  412. package/dist/nexus/workspace.js +355 -0
  413. package/dist/nexus/workspace.js.map +1 -0
  414. package/dist/observability/index.js +103 -0
  415. package/dist/observability/index.js.map +1 -0
  416. package/dist/observability/log-filter.js +63 -0
  417. package/dist/observability/log-filter.js.map +1 -0
  418. package/dist/observability/log-parser.js +99 -0
  419. package/dist/observability/log-parser.js.map +1 -0
  420. package/dist/observability/log-reader.js +139 -0
  421. package/dist/observability/log-reader.js.map +1 -0
  422. package/dist/observability/types.js +19 -0
  423. package/dist/observability/types.js.map +1 -0
  424. package/dist/orchestration/analyze.js +107 -0
  425. package/dist/orchestration/analyze.js.map +1 -0
  426. package/dist/orchestration/bootstrap.js +132 -0
  427. package/dist/orchestration/bootstrap.js.map +1 -0
  428. package/dist/orchestration/context.js +56 -0
  429. package/dist/orchestration/context.js.map +1 -0
  430. package/dist/orchestration/critical-path.js +100 -0
  431. package/dist/orchestration/critical-path.js.map +1 -0
  432. package/dist/orchestration/hierarchy.js +183 -0
  433. package/dist/orchestration/hierarchy.js.map +1 -0
  434. package/dist/orchestration/index.js +287 -0
  435. package/dist/orchestration/index.js.map +1 -0
  436. package/dist/orchestration/parallel.js +89 -0
  437. package/dist/orchestration/parallel.js.map +1 -0
  438. package/dist/orchestration/protocol-validators.js +815 -0
  439. package/dist/orchestration/protocol-validators.js.map +1 -0
  440. package/dist/orchestration/skill-ops.js +98 -0
  441. package/dist/orchestration/skill-ops.js.map +1 -0
  442. package/dist/orchestration/status.js +107 -0
  443. package/dist/orchestration/status.js.map +1 -0
  444. package/dist/orchestration/unblock.js +103 -0
  445. package/dist/orchestration/unblock.js.map +1 -0
  446. package/dist/orchestration/validate-spawn.js +67 -0
  447. package/dist/orchestration/validate-spawn.js.map +1 -0
  448. package/dist/orchestration/waves.js +86 -0
  449. package/dist/orchestration/waves.js.map +1 -0
  450. package/dist/otel/index.js +163 -0
  451. package/dist/otel/index.js.map +1 -0
  452. package/dist/output.js +164 -0
  453. package/dist/output.js.map +1 -0
  454. package/dist/pagination.js +64 -0
  455. package/dist/pagination.js.map +1 -0
  456. package/dist/paths.js +882 -0
  457. package/dist/paths.js.map +1 -0
  458. package/dist/phases/deps.js +372 -0
  459. package/dist/phases/deps.js.map +1 -0
  460. package/dist/phases/index.js +349 -0
  461. package/dist/phases/index.js.map +1 -0
  462. package/dist/pipeline/index.js +10 -0
  463. package/dist/pipeline/index.js.map +1 -0
  464. package/dist/pipeline/phase.js +45 -0
  465. package/dist/pipeline/phase.js.map +1 -0
  466. package/dist/platform.js +211 -0
  467. package/dist/platform.js.map +1 -0
  468. package/dist/project-info.js +84 -0
  469. package/dist/project-info.js.map +1 -0
  470. package/dist/reconciliation/index.js +10 -0
  471. package/dist/reconciliation/index.js.map +1 -0
  472. package/dist/reconciliation/link-store.js +175 -0
  473. package/dist/reconciliation/link-store.js.map +1 -0
  474. package/dist/reconciliation/reconciliation-engine.js +298 -0
  475. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  476. package/dist/release/artifacts.js +427 -0
  477. package/dist/release/artifacts.js.map +1 -0
  478. package/dist/release/changelog-writer.js +151 -0
  479. package/dist/release/changelog-writer.js.map +1 -0
  480. package/dist/release/channel.js +144 -0
  481. package/dist/release/channel.js.map +1 -0
  482. package/dist/release/ci.js +166 -0
  483. package/dist/release/ci.js.map +1 -0
  484. package/dist/release/github-pr.js +225 -0
  485. package/dist/release/github-pr.js.map +1 -0
  486. package/dist/release/guards.js +116 -0
  487. package/dist/release/guards.js.map +1 -0
  488. package/dist/release/index.js +22 -0
  489. package/dist/release/index.js.map +1 -0
  490. package/dist/release/release-config.js +158 -0
  491. package/dist/release/release-config.js.map +1 -0
  492. package/dist/release/release-manifest.js +1019 -0
  493. package/dist/release/release-manifest.js.map +1 -0
  494. package/dist/release/version-bump.js +255 -0
  495. package/dist/release/version-bump.js.map +1 -0
  496. package/dist/remote/index.js +257 -0
  497. package/dist/remote/index.js.map +1 -0
  498. package/dist/repair.js +130 -0
  499. package/dist/repair.js.map +1 -0
  500. package/dist/research/index.js +2 -0
  501. package/dist/research/index.js.map +1 -0
  502. package/dist/roadmap/index.js +59 -0
  503. package/dist/roadmap/index.js.map +1 -0
  504. package/dist/routing/capability-matrix.js +1556 -0
  505. package/dist/routing/capability-matrix.js.map +1 -0
  506. package/dist/routing/index.js +9 -0
  507. package/dist/routing/index.js.map +1 -0
  508. package/dist/scaffold.d.ts +18 -0
  509. package/dist/scaffold.d.ts.map +1 -1
  510. package/dist/scaffold.js +1798 -0
  511. package/dist/scaffold.js.map +1 -0
  512. package/dist/schema-management.js +295 -0
  513. package/dist/schema-management.js.map +1 -0
  514. package/dist/security/index.js +9 -0
  515. package/dist/security/index.js.map +1 -0
  516. package/dist/security/input-sanitization.js +326 -0
  517. package/dist/security/input-sanitization.js.map +1 -0
  518. package/dist/sequence/index.js +295 -0
  519. package/dist/sequence/index.js.map +1 -0
  520. package/dist/sessions/assumptions.js +54 -0
  521. package/dist/sessions/assumptions.js.map +1 -0
  522. package/dist/sessions/briefing.js +377 -0
  523. package/dist/sessions/briefing.js.map +1 -0
  524. package/dist/sessions/context-alert.js +222 -0
  525. package/dist/sessions/context-alert.js.map +1 -0
  526. package/dist/sessions/context-inject.js +61 -0
  527. package/dist/sessions/context-inject.js.map +1 -0
  528. package/dist/sessions/context-monitor.js +98 -0
  529. package/dist/sessions/context-monitor.js.map +1 -0
  530. package/dist/sessions/decisions.js +65 -0
  531. package/dist/sessions/decisions.js.map +1 -0
  532. package/dist/sessions/find.js +65 -0
  533. package/dist/sessions/find.js.map +1 -0
  534. package/dist/sessions/handoff.js +328 -0
  535. package/dist/sessions/handoff.js.map +1 -0
  536. package/dist/sessions/hitl-warnings.js +254 -0
  537. package/dist/sessions/hitl-warnings.js.map +1 -0
  538. package/dist/sessions/index.js +327 -0
  539. package/dist/sessions/index.js.map +1 -0
  540. package/dist/sessions/session-archive.js +40 -0
  541. package/dist/sessions/session-archive.js.map +1 -0
  542. package/dist/sessions/session-cleanup.js +59 -0
  543. package/dist/sessions/session-cleanup.js.map +1 -0
  544. package/dist/sessions/session-drift.js +134 -0
  545. package/dist/sessions/session-drift.js.map +1 -0
  546. package/dist/sessions/session-enforcement.js +144 -0
  547. package/dist/sessions/session-enforcement.js.map +1 -0
  548. package/dist/sessions/session-grade.js +253 -0
  549. package/dist/sessions/session-grade.js.map +1 -0
  550. package/dist/sessions/session-history.js +42 -0
  551. package/dist/sessions/session-history.js.map +1 -0
  552. package/dist/sessions/session-id.js +81 -0
  553. package/dist/sessions/session-id.js.map +1 -0
  554. package/dist/sessions/session-memory-bridge.js +30 -0
  555. package/dist/sessions/session-memory-bridge.js.map +1 -0
  556. package/dist/sessions/session-show.js +24 -0
  557. package/dist/sessions/session-show.js.map +1 -0
  558. package/dist/sessions/session-stats.js +69 -0
  559. package/dist/sessions/session-stats.js.map +1 -0
  560. package/dist/sessions/session-suspend.js +39 -0
  561. package/dist/sessions/session-suspend.js.map +1 -0
  562. package/dist/sessions/session-switch.js +51 -0
  563. package/dist/sessions/session-switch.js.map +1 -0
  564. package/dist/sessions/session-view.js +76 -0
  565. package/dist/sessions/session-view.js.map +1 -0
  566. package/dist/sessions/snapshot.js +213 -0
  567. package/dist/sessions/snapshot.js.map +1 -0
  568. package/dist/sessions/statusline-setup.js +85 -0
  569. package/dist/sessions/statusline-setup.js.map +1 -0
  570. package/dist/sessions/types.js +8 -0
  571. package/dist/sessions/types.js.map +1 -0
  572. package/dist/skills/agents/config.js +94 -0
  573. package/dist/skills/agents/config.js.map +1 -0
  574. package/dist/skills/agents/install.js +116 -0
  575. package/dist/skills/agents/install.js.map +1 -0
  576. package/dist/skills/agents/registry.js +161 -0
  577. package/dist/skills/agents/registry.js.map +1 -0
  578. package/dist/skills/discovery.js +333 -0
  579. package/dist/skills/discovery.js.map +1 -0
  580. package/dist/skills/dispatch.js +347 -0
  581. package/dist/skills/dispatch.js.map +1 -0
  582. package/dist/skills/dynamic-skill-generator.js +87 -0
  583. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  584. package/dist/skills/index.js +44 -0
  585. package/dist/skills/index.js.map +1 -0
  586. package/dist/skills/injection/subagent.js +195 -0
  587. package/dist/skills/injection/subagent.js.map +1 -0
  588. package/dist/skills/injection/token.js +260 -0
  589. package/dist/skills/injection/token.js.map +1 -0
  590. package/dist/skills/install.js +40 -0
  591. package/dist/skills/install.js.map +1 -0
  592. package/dist/skills/manifests/contribution.js +175 -0
  593. package/dist/skills/manifests/contribution.js.map +1 -0
  594. package/dist/skills/manifests/research.js +281 -0
  595. package/dist/skills/manifests/research.js.map +1 -0
  596. package/dist/skills/manifests/resolver.js +146 -0
  597. package/dist/skills/manifests/resolver.js.map +1 -0
  598. package/dist/skills/marketplace.js +90 -0
  599. package/dist/skills/marketplace.js.map +1 -0
  600. package/dist/skills/orchestrator/spawn.js +178 -0
  601. package/dist/skills/orchestrator/spawn.js.map +1 -0
  602. package/dist/skills/orchestrator/startup.js +451 -0
  603. package/dist/skills/orchestrator/startup.js.map +1 -0
  604. package/dist/skills/orchestrator/validator.js +301 -0
  605. package/dist/skills/orchestrator/validator.js.map +1 -0
  606. package/dist/skills/precedence-integration.js +73 -0
  607. package/dist/skills/precedence-integration.js.map +1 -0
  608. package/dist/skills/precedence-types.js +16 -0
  609. package/dist/skills/precedence-types.js.map +1 -0
  610. package/dist/skills/routing-table.js +63 -0
  611. package/dist/skills/routing-table.js.map +1 -0
  612. package/dist/skills/skill-paths.js +217 -0
  613. package/dist/skills/skill-paths.js.map +1 -0
  614. package/dist/skills/test-utility.js +55 -0
  615. package/dist/skills/test-utility.js.map +1 -0
  616. package/dist/skills/types.js +118 -0
  617. package/dist/skills/types.js.map +1 -0
  618. package/dist/skills/validation.js +183 -0
  619. package/dist/skills/validation.js.map +1 -0
  620. package/dist/skills/version.js +57 -0
  621. package/dist/skills/version.js.map +1 -0
  622. package/dist/snapshot/index.js +188 -0
  623. package/dist/snapshot/index.js.map +1 -0
  624. package/dist/spawn/adapter-registry.js +246 -0
  625. package/dist/spawn/adapter-registry.js.map +1 -0
  626. package/dist/spawn/index.js +10 -0
  627. package/dist/spawn/index.js.map +1 -0
  628. package/dist/stats/index.d.ts.map +1 -1
  629. package/dist/stats/index.js +350 -0
  630. package/dist/stats/index.js.map +1 -0
  631. package/dist/stats/workflow-telemetry.js +400 -0
  632. package/dist/stats/workflow-telemetry.js.map +1 -0
  633. package/dist/sticky/archive.js +47 -0
  634. package/dist/sticky/archive.js.map +1 -0
  635. package/dist/sticky/convert.js +235 -0
  636. package/dist/sticky/convert.js.map +1 -0
  637. package/dist/sticky/create.js +48 -0
  638. package/dist/sticky/create.js.map +1 -0
  639. package/dist/sticky/id.js +35 -0
  640. package/dist/sticky/id.js.map +1 -0
  641. package/dist/sticky/index.js +16 -0
  642. package/dist/sticky/index.js.map +1 -0
  643. package/dist/sticky/list.js +57 -0
  644. package/dist/sticky/list.js.map +1 -0
  645. package/dist/sticky/purge.js +45 -0
  646. package/dist/sticky/purge.js.map +1 -0
  647. package/dist/sticky/show.js +42 -0
  648. package/dist/sticky/show.js.map +1 -0
  649. package/dist/sticky/types.js +10 -0
  650. package/dist/sticky/types.js.map +1 -0
  651. package/dist/store/agent-registry-accessor.js +886 -0
  652. package/dist/store/agent-registry-accessor.js.map +1 -0
  653. package/dist/store/api-key-kdf.js +84 -0
  654. package/dist/store/api-key-kdf.js.map +1 -0
  655. package/dist/store/atomic.js +167 -0
  656. package/dist/store/atomic.js.map +1 -0
  657. package/dist/store/backup-crypto.js +184 -0
  658. package/dist/store/backup-crypto.js.map +1 -0
  659. package/dist/store/backup-pack.js +581 -0
  660. package/dist/store/backup-pack.js.map +1 -0
  661. package/dist/store/backup-unpack.js +449 -0
  662. package/dist/store/backup-unpack.js.map +1 -0
  663. package/dist/store/backup.js +94 -0
  664. package/dist/store/backup.js.map +1 -0
  665. package/dist/store/brain-accessor.js +429 -0
  666. package/dist/store/brain-accessor.js.map +1 -0
  667. package/dist/store/brain-schema.d.ts +496 -3
  668. package/dist/store/brain-schema.d.ts.map +1 -1
  669. package/dist/store/brain-schema.js +549 -0
  670. package/dist/store/brain-schema.js.map +1 -0
  671. package/dist/store/brain-sqlite.d.ts.map +1 -1
  672. package/dist/store/brain-sqlite.js +257 -0
  673. package/dist/store/brain-sqlite.js.map +1 -0
  674. package/dist/store/cache.js +168 -0
  675. package/dist/store/cache.js.map +1 -0
  676. package/dist/store/chain-schema.js +51 -0
  677. package/dist/store/chain-schema.js.map +1 -0
  678. package/dist/store/cleanup-legacy.js +171 -0
  679. package/dist/store/cleanup-legacy.js.map +1 -0
  680. package/dist/store/conduit-sqlite.js +570 -0
  681. package/dist/store/conduit-sqlite.js.map +1 -0
  682. package/dist/store/converters.js +124 -0
  683. package/dist/store/converters.js.map +1 -0
  684. package/dist/store/cross-db-cleanup.js +319 -0
  685. package/dist/store/cross-db-cleanup.js.map +1 -0
  686. package/dist/store/data-accessor.js +26 -0
  687. package/dist/store/data-accessor.js.map +1 -0
  688. package/dist/store/data-safety-central.js +269 -0
  689. package/dist/store/data-safety-central.js.map +1 -0
  690. package/dist/store/data-safety.js +274 -0
  691. package/dist/store/data-safety.js.map +1 -0
  692. package/dist/store/db-helpers.js +224 -0
  693. package/dist/store/db-helpers.js.map +1 -0
  694. package/dist/store/export.js +155 -0
  695. package/dist/store/export.js.map +1 -0
  696. package/dist/store/file-utils.js +270 -0
  697. package/dist/store/file-utils.js.map +1 -0
  698. package/dist/store/git-checkpoint.js +365 -0
  699. package/dist/store/git-checkpoint.js.map +1 -0
  700. package/dist/store/global-salt.js +147 -0
  701. package/dist/store/global-salt.js.map +1 -0
  702. package/dist/store/import-logging.js +139 -0
  703. package/dist/store/import-logging.js.map +1 -0
  704. package/dist/store/import-remap.js +145 -0
  705. package/dist/store/import-remap.js.map +1 -0
  706. package/dist/store/import-sort.js +121 -0
  707. package/dist/store/import-sort.js.map +1 -0
  708. package/dist/store/index.js +29 -0
  709. package/dist/store/index.js.map +1 -0
  710. package/dist/store/json.js +208 -0
  711. package/dist/store/json.js.map +1 -0
  712. package/dist/store/lifecycle-store.js +249 -0
  713. package/dist/store/lifecycle-store.js.map +1 -0
  714. package/dist/store/lock.js +70 -0
  715. package/dist/store/lock.js.map +1 -0
  716. package/dist/store/migrate-signaldock-to-conduit.js +562 -0
  717. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  718. package/dist/store/migration-manager.d.ts +5 -1
  719. package/dist/store/migration-manager.d.ts.map +1 -1
  720. package/dist/store/migration-manager.js +288 -0
  721. package/dist/store/migration-manager.js.map +1 -0
  722. package/dist/store/migration-sqlite.js +676 -0
  723. package/dist/store/migration-sqlite.js.map +1 -0
  724. package/dist/store/nexus-schema.js +268 -0
  725. package/dist/store/nexus-schema.js.map +1 -0
  726. package/dist/store/nexus-sqlite.js +242 -0
  727. package/dist/store/nexus-sqlite.js.map +1 -0
  728. package/dist/store/nexus-validation-schemas.js +40 -0
  729. package/dist/store/nexus-validation-schemas.js.map +1 -0
  730. package/dist/store/parsers.js +37 -0
  731. package/dist/store/parsers.js.map +1 -0
  732. package/dist/store/project-detect.js +457 -0
  733. package/dist/store/project-detect.js.map +1 -0
  734. package/dist/store/provider.js +101 -0
  735. package/dist/store/provider.js.map +1 -0
  736. package/dist/store/regenerators.js +207 -0
  737. package/dist/store/regenerators.js.map +1 -0
  738. package/dist/store/restore-conflict-report.js +206 -0
  739. package/dist/store/restore-conflict-report.js.map +1 -0
  740. package/dist/store/restore-json-merge.js +454 -0
  741. package/dist/store/restore-json-merge.js.map +1 -0
  742. package/dist/store/safety-data-accessor.js +257 -0
  743. package/dist/store/safety-data-accessor.js.map +1 -0
  744. package/dist/store/schema.js +7 -0
  745. package/dist/store/schema.js.map +1 -0
  746. package/dist/store/session-store.js +219 -0
  747. package/dist/store/session-store.js.map +1 -0
  748. package/dist/store/signaldock-sqlite.js +550 -0
  749. package/dist/store/signaldock-sqlite.js.map +1 -0
  750. package/dist/store/sqlite-backup.js +498 -0
  751. package/dist/store/sqlite-backup.js.map +1 -0
  752. package/dist/store/sqlite-data-accessor.js +787 -0
  753. package/dist/store/sqlite-data-accessor.js.map +1 -0
  754. package/dist/store/sqlite.js +483 -0
  755. package/dist/store/sqlite.js.map +1 -0
  756. package/dist/store/status-registry.js +8 -0
  757. package/dist/store/status-registry.js.map +1 -0
  758. package/dist/store/t310-readiness.js +115 -0
  759. package/dist/store/t310-readiness.js.map +1 -0
  760. package/dist/store/task-store.js +358 -0
  761. package/dist/store/task-store.js.map +1 -0
  762. package/dist/store/tasks-schema.d.ts +1 -1
  763. package/dist/store/tasks-schema.js +610 -0
  764. package/dist/store/tasks-schema.js.map +1 -0
  765. package/dist/store/typed-query.js +15 -0
  766. package/dist/store/typed-query.js.map +1 -0
  767. package/dist/store/validation-schemas.d.ts +6 -6
  768. package/dist/store/validation-schemas.js +278 -0
  769. package/dist/store/validation-schemas.js.map +1 -0
  770. package/dist/system/archive-analytics.js +277 -0
  771. package/dist/system/archive-analytics.js.map +1 -0
  772. package/dist/system/archive-stats.js +64 -0
  773. package/dist/system/archive-stats.js.map +1 -0
  774. package/dist/system/audit.js +145 -0
  775. package/dist/system/audit.js.map +1 -0
  776. package/dist/system/backup.js +280 -0
  777. package/dist/system/backup.js.map +1 -0
  778. package/dist/system/cleanup.js +134 -0
  779. package/dist/system/cleanup.js.map +1 -0
  780. package/dist/system/dependencies.js +466 -0
  781. package/dist/system/dependencies.js.map +1 -0
  782. package/dist/system/health.d.ts.map +1 -1
  783. package/dist/system/health.js +1206 -0
  784. package/dist/system/health.js.map +1 -0
  785. package/dist/system/index.js +18 -0
  786. package/dist/system/index.js.map +1 -0
  787. package/dist/system/inject-generate.js +122 -0
  788. package/dist/system/inject-generate.js.map +1 -0
  789. package/dist/system/labels.js +38 -0
  790. package/dist/system/labels.js.map +1 -0
  791. package/dist/system/metrics.js +61 -0
  792. package/dist/system/metrics.js.map +1 -0
  793. package/dist/system/migrate.js +43 -0
  794. package/dist/system/migrate.js.map +1 -0
  795. package/dist/system/platform-paths.js +80 -0
  796. package/dist/system/platform-paths.js.map +1 -0
  797. package/dist/system/runtime.js +161 -0
  798. package/dist/system/runtime.js.map +1 -0
  799. package/dist/system/safestop.js +89 -0
  800. package/dist/system/safestop.js.map +1 -0
  801. package/dist/system/storage-preflight.js +123 -0
  802. package/dist/system/storage-preflight.js.map +1 -0
  803. package/dist/task-work/index.js +159 -0
  804. package/dist/task-work/index.js.map +1 -0
  805. package/dist/tasks/add.js +837 -0
  806. package/dist/tasks/add.js.map +1 -0
  807. package/dist/tasks/analyze.js +85 -0
  808. package/dist/tasks/analyze.js.map +1 -0
  809. package/dist/tasks/archive.js +90 -0
  810. package/dist/tasks/archive.js.map +1 -0
  811. package/dist/tasks/atomicity.js +83 -0
  812. package/dist/tasks/atomicity.js.map +1 -0
  813. package/dist/tasks/cancel-ops.js +83 -0
  814. package/dist/tasks/cancel-ops.js.map +1 -0
  815. package/dist/tasks/complete.js +229 -0
  816. package/dist/tasks/complete.js.map +1 -0
  817. package/dist/tasks/crossref-extract.js +73 -0
  818. package/dist/tasks/crossref-extract.js.map +1 -0
  819. package/dist/tasks/delete-preview.js +192 -0
  820. package/dist/tasks/delete-preview.js.map +1 -0
  821. package/dist/tasks/delete.js +120 -0
  822. package/dist/tasks/delete.js.map +1 -0
  823. package/dist/tasks/deletion-strategy.js +200 -0
  824. package/dist/tasks/deletion-strategy.js.map +1 -0
  825. package/dist/tasks/dependency-check.js +278 -0
  826. package/dist/tasks/dependency-check.js.map +1 -0
  827. package/dist/tasks/deps-ready.js +32 -0
  828. package/dist/tasks/deps-ready.js.map +1 -0
  829. package/dist/tasks/enforcement.js +86 -0
  830. package/dist/tasks/enforcement.js.map +1 -0
  831. package/dist/tasks/epic-enforcement.js +294 -0
  832. package/dist/tasks/epic-enforcement.js.map +1 -0
  833. package/dist/tasks/find.js +163 -0
  834. package/dist/tasks/find.js.map +1 -0
  835. package/dist/tasks/graph-cache.js +127 -0
  836. package/dist/tasks/graph-cache.js.map +1 -0
  837. package/dist/tasks/graph-ops.d.ts.map +1 -1
  838. package/dist/tasks/graph-ops.js +173 -0
  839. package/dist/tasks/graph-ops.js.map +1 -0
  840. package/dist/tasks/graph-rag.js +328 -0
  841. package/dist/tasks/graph-rag.js.map +1 -0
  842. package/dist/tasks/hierarchy-policy.js +149 -0
  843. package/dist/tasks/hierarchy-policy.js.map +1 -0
  844. package/dist/tasks/hierarchy.js +185 -0
  845. package/dist/tasks/hierarchy.js.map +1 -0
  846. package/dist/tasks/id-generator.js +65 -0
  847. package/dist/tasks/id-generator.js.map +1 -0
  848. package/dist/tasks/index.js +14 -0
  849. package/dist/tasks/index.js.map +1 -0
  850. package/dist/tasks/labels.js +55 -0
  851. package/dist/tasks/labels.js.map +1 -0
  852. package/dist/tasks/list.js +75 -0
  853. package/dist/tasks/list.js.map +1 -0
  854. package/dist/tasks/phase-tracking.js +133 -0
  855. package/dist/tasks/phase-tracking.js.map +1 -0
  856. package/dist/tasks/pipeline-stage.js +248 -0
  857. package/dist/tasks/pipeline-stage.js.map +1 -0
  858. package/dist/tasks/plan.js +268 -0
  859. package/dist/tasks/plan.js.map +1 -0
  860. package/dist/tasks/relates.js +101 -0
  861. package/dist/tasks/relates.js.map +1 -0
  862. package/dist/tasks/show.js +83 -0
  863. package/dist/tasks/show.js.map +1 -0
  864. package/dist/tasks/size-weighting.js +86 -0
  865. package/dist/tasks/size-weighting.js.map +1 -0
  866. package/dist/tasks/staleness.js +86 -0
  867. package/dist/tasks/staleness.js.map +1 -0
  868. package/dist/tasks/task-ops.js +1741 -0
  869. package/dist/tasks/task-ops.js.map +1 -0
  870. package/dist/tasks/update.js +303 -0
  871. package/dist/tasks/update.js.map +1 -0
  872. package/dist/templates/index.js +10 -0
  873. package/dist/templates/index.js.map +1 -0
  874. package/dist/templates/parser.js +254 -0
  875. package/dist/templates/parser.js.map +1 -0
  876. package/dist/ui/aliases.js +153 -0
  877. package/dist/ui/aliases.js.map +1 -0
  878. package/dist/ui/changelog.js +184 -0
  879. package/dist/ui/changelog.js.map +1 -0
  880. package/dist/ui/command-registry.js +168 -0
  881. package/dist/ui/command-registry.js.map +1 -0
  882. package/dist/ui/flags.js +94 -0
  883. package/dist/ui/flags.js.map +1 -0
  884. package/dist/ui/index.js +24 -0
  885. package/dist/ui/index.js.map +1 -0
  886. package/dist/upgrade.js +1148 -0
  887. package/dist/upgrade.js.map +1 -0
  888. package/dist/validation/chain-validation.js +146 -0
  889. package/dist/validation/chain-validation.js.map +1 -0
  890. package/dist/validation/compliance.js +155 -0
  891. package/dist/validation/compliance.js.map +1 -0
  892. package/dist/validation/docs-sync.js +212 -0
  893. package/dist/validation/docs-sync.js.map +1 -0
  894. package/dist/validation/doctor/checks.js +1069 -0
  895. package/dist/validation/doctor/checks.js.map +1 -0
  896. package/dist/validation/doctor/index.js +9 -0
  897. package/dist/validation/doctor/index.js.map +1 -0
  898. package/dist/validation/doctor/project-cache.js +160 -0
  899. package/dist/validation/doctor/project-cache.js.map +1 -0
  900. package/dist/validation/doctor/utils.js +155 -0
  901. package/dist/validation/doctor/utils.js.map +1 -0
  902. package/dist/validation/engine.js +914 -0
  903. package/dist/validation/engine.js.map +1 -0
  904. package/dist/validation/gap-check.js +175 -0
  905. package/dist/validation/gap-check.js.map +1 -0
  906. package/dist/validation/index.js +40 -0
  907. package/dist/validation/index.js.map +1 -0
  908. package/dist/validation/manifest.js +237 -0
  909. package/dist/validation/manifest.js.map +1 -0
  910. package/dist/validation/operation-gate-validators.js +724 -0
  911. package/dist/validation/operation-gate-validators.js.map +1 -0
  912. package/dist/validation/operation-verification-gates.js +532 -0
  913. package/dist/validation/operation-verification-gates.js.map +1 -0
  914. package/dist/validation/param-utils.js +141 -0
  915. package/dist/validation/param-utils.js.map +1 -0
  916. package/dist/validation/protocol-common.js +300 -0
  917. package/dist/validation/protocol-common.js.map +1 -0
  918. package/dist/validation/protocols/_shared.js +82 -0
  919. package/dist/validation/protocols/_shared.js.map +1 -0
  920. package/dist/validation/protocols/architecture-decision.js +31 -0
  921. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  922. package/dist/validation/protocols/artifact-publish.js +28 -0
  923. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  924. package/dist/validation/protocols/consensus.js +41 -0
  925. package/dist/validation/protocols/consensus.js.map +1 -0
  926. package/dist/validation/protocols/contribution.js +27 -0
  927. package/dist/validation/protocols/contribution.js.map +1 -0
  928. package/dist/validation/protocols/decomposition.js +28 -0
  929. package/dist/validation/protocols/decomposition.js.map +1 -0
  930. package/dist/validation/protocols/implementation.js +24 -0
  931. package/dist/validation/protocols/implementation.js.map +1 -0
  932. package/dist/validation/protocols/provenance.js +29 -0
  933. package/dist/validation/protocols/provenance.js.map +1 -0
  934. package/dist/validation/protocols/release.js +29 -0
  935. package/dist/validation/protocols/release.js.map +1 -0
  936. package/dist/validation/protocols/research.js +24 -0
  937. package/dist/validation/protocols/research.js.map +1 -0
  938. package/dist/validation/protocols/specification.js +27 -0
  939. package/dist/validation/protocols/specification.js.map +1 -0
  940. package/dist/validation/protocols/testing.js +30 -0
  941. package/dist/validation/protocols/testing.js.map +1 -0
  942. package/dist/validation/protocols/validation.js +30 -0
  943. package/dist/validation/protocols/validation.js.map +1 -0
  944. package/dist/validation/schema-integrity.js +170 -0
  945. package/dist/validation/schema-integrity.js.map +1 -0
  946. package/dist/validation/schema-validator.js +176 -0
  947. package/dist/validation/schema-validator.js.map +1 -0
  948. package/dist/validation/validate-ops.js +937 -0
  949. package/dist/validation/validate-ops.js.map +1 -0
  950. package/dist/validation/validation-rules.js +226 -0
  951. package/dist/validation/validation-rules.js.map +1 -0
  952. package/dist/validation/verification.js +321 -0
  953. package/dist/validation/verification.js.map +1 -0
  954. package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
  955. package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
  956. package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
  957. package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
  958. package/package.json +8 -8
  959. package/src/hooks/handlers/index.ts +6 -0
  960. package/src/hooks/handlers/intelligence-hooks.ts +80 -0
  961. package/src/hooks/handlers/session-hooks.ts +41 -0
  962. package/src/hooks/handlers/watchdog-hooks.ts +187 -0
  963. package/src/injection.ts +41 -2
  964. package/src/internal.ts +31 -2
  965. package/src/memory/brain-consolidator.ts +344 -0
  966. package/src/memory/brain-lifecycle.ts +636 -2
  967. package/src/memory/brain-retrieval.ts +445 -2
  968. package/src/memory/brain-search.ts +38 -4
  969. package/src/memory/decisions.ts +21 -1
  970. package/src/memory/engine-compat.ts +9 -11
  971. package/src/memory/extraction-gate.ts +574 -0
  972. package/src/memory/index.ts +6 -2
  973. package/src/memory/learnings.ts +33 -1
  974. package/src/memory/patterns.ts +30 -1
  975. package/src/memory/quality-scoring.ts +93 -9
  976. package/src/nexus/nexus-bridge.ts +444 -0
  977. package/src/scaffold.ts +42 -0
  978. package/src/stats/index.ts +11 -3
  979. package/src/store/brain-schema.ts +238 -0
  980. package/src/store/brain-sqlite.ts +55 -0
  981. package/src/store/migration-manager.ts +83 -12
  982. package/src/system/health.ts +17 -0
  983. package/src/tasks/graph-ops.ts +1 -0
  984. package/src/tasks/task-ops.ts +1 -1
  985. package/templates/CLEO-INJECTION.md +15 -0
@@ -31,6 +31,12 @@ export interface StorePatternParams {
31
31
  mitigation?: string;
32
32
  examples?: string[];
33
33
  successRate?: number;
34
+ /**
35
+ * T549 Wave 1-A: origin of this pattern.
36
+ * Used to route sourceConfidence at write time.
37
+ * Values starting with 'auto' map to 'speculative'; otherwise 'agent'.
38
+ */
39
+ source?: string;
34
40
  }
35
41
 
36
42
  /** Parameters for searching patterns. */
@@ -110,13 +116,31 @@ export async function storePattern(projectRoot: string, params: StorePatternPara
110
116
  };
111
117
  }
112
118
 
113
- // Compute quality score based on type, content richness, and examples.
119
+ // T549 Wave 1-A: Tier routing for patterns.
120
+ // Patterns are medium-term procedural entries — they describe how things work.
121
+ // sourceConfidence routing (spec §4.1 Decision Tree):
122
+ // - source starts with 'auto' → 'speculative' (auto-extracted, unconfirmed)
123
+ // - otherwise → 'agent' (agent-observed during work)
124
+ // memoryTier = 'medium' (patterns have more than one observation and are project-scoped)
125
+ // memoryType = 'procedural' (patterns are always process knowledge)
126
+ // verified = false (patterns need validation through repetition, not boolean gate)
127
+ const memoryTier = 'medium' as const;
128
+ const memoryType = 'procedural' as const;
129
+ const sourceConfidence = params.source?.startsWith('auto')
130
+ ? ('speculative' as const)
131
+ : ('agent' as const);
132
+ const verified = false;
133
+
134
+ // Compute quality score based on type, content richness, examples,
135
+ // and T549 source multiplier.
114
136
  const examplesJson = params.examples ? JSON.stringify(params.examples) : '[]';
115
137
  const qualityScore = computePatternQuality({
116
138
  type: params.type,
117
139
  pattern: params.pattern.trim(),
118
140
  context: params.context.trim(),
119
141
  examples_json: examplesJson,
142
+ sourceConfidence,
143
+ memoryTier,
120
144
  });
121
145
 
122
146
  // Create new entry
@@ -133,6 +157,11 @@ export async function storePattern(projectRoot: string, params: StorePatternPara
133
157
  examplesJson,
134
158
  extractedAt: now,
135
159
  qualityScore,
160
+ // T549 Wave 1-A: tier/type/confidence assigned at write time
161
+ memoryTier,
162
+ memoryType,
163
+ sourceConfidence,
164
+ verified,
136
165
  };
137
166
 
138
167
  const saved = await accessor.addPattern(entry);
@@ -7,15 +7,79 @@
7
7
  * Score formula per CA1 spec Section 3: source reliability * content richness * recency signals.
8
8
  * Each helper clamps the result to [0.0, 1.0].
9
9
  *
10
+ * T549 Wave 1-B: source confidence multipliers and memory tier bonuses are applied
11
+ * on top of the existing base formulas. The base formulas are unchanged; the
12
+ * multiplier and tier bonus are additive final transforms.
13
+ *
10
14
  * Exported for use in backfill (T530) and future scoring hooks.
11
15
  *
12
- * @task T531
16
+ * @task T531 T549
13
17
  * @epic T523
14
18
  */
15
19
 
20
+ import type { BrainMemoryTier, BrainSourceConfidence } from '../store/brain-schema.js';
21
+
16
22
  /** Minimum quality score for inclusion in search results. */
17
23
  export const QUALITY_SCORE_THRESHOLD = 0.3;
18
24
 
25
+ // ============================================================================
26
+ // T549: Source Confidence Multipliers
27
+ // ============================================================================
28
+
29
+ /**
30
+ * Quality multiplier per source confidence level (T549 §3.1.5 and §5.3).
31
+ *
32
+ * Applied as a final multiplicative transform on top of the existing base score.
33
+ * Separate from content richness — captures trustworthiness of the source.
34
+ *
35
+ * | Level | Meaning | Multiplier |
36
+ * |---------------|-----------------------------------------|------------|
37
+ * | owner | Owner explicitly stated this fact | 1.0 |
38
+ * | task-outcome | Verified by completed task with result | 0.90 |
39
+ * | agent | Agent-inferred during work (default) | 0.70 |
40
+ * | speculative | Agent hypothesis, not yet corroborated | 0.40 |
41
+ */
42
+ const SOURCE_MULTIPLIERS: Record<BrainSourceConfidence, number> = {
43
+ owner: 1.0,
44
+ 'task-outcome': 0.9,
45
+ agent: 0.7,
46
+ speculative: 0.4,
47
+ };
48
+
49
+ /**
50
+ * Tier bonus applied after the source multiplier (T549 Wave 1-B).
51
+ *
52
+ * Short-term entries get no bonus (they are new and unproven).
53
+ * Medium-term entries get a small bonus (survived session consolidation).
54
+ * Long-term entries get a larger bonus (architecturally proven).
55
+ */
56
+ const TIER_BONUS: Record<BrainMemoryTier, number> = {
57
+ short: 0.0,
58
+ medium: 0.05,
59
+ long: 0.1,
60
+ };
61
+
62
+ /**
63
+ * Apply the source confidence multiplier and optional memory tier bonus.
64
+ *
65
+ * This is the final transform in every compute function. It multiplies the
66
+ * raw content-richness score by the source multiplier, then adds the tier
67
+ * bonus, then clamps to [0.0, 1.0].
68
+ *
69
+ * @param rawScore - Score from the base content-richness formula
70
+ * @param sourceConfidence - Source reliability level (defaults to 'agent')
71
+ * @param memoryTier - Memory retention tier (defaults to 'short' = no bonus)
72
+ */
73
+ export function applySourceMultiplier(
74
+ rawScore: number,
75
+ sourceConfidence: BrainSourceConfidence = 'agent',
76
+ memoryTier: BrainMemoryTier = 'short',
77
+ ): number {
78
+ const multiplied = rawScore * SOURCE_MULTIPLIERS[sourceConfidence];
79
+ const withTierBonus = multiplied + TIER_BONUS[memoryTier];
80
+ return clamp(withTierBonus);
81
+ }
82
+
19
83
  // ============================================================================
20
84
  // Pattern quality
21
85
  // ============================================================================
@@ -26,6 +90,10 @@ export interface PatternQualityInput {
26
90
  pattern: string;
27
91
  context?: string | null;
28
92
  examples_json?: string | null;
93
+ /** T549: source reliability level — applies multiplier on top of base score. */
94
+ sourceConfidence?: BrainSourceConfidence;
95
+ /** T549: memory retention tier — applies tier bonus on top of multiplied score. */
96
+ memoryTier?: BrainMemoryTier;
29
97
  }
30
98
 
31
99
  /**
@@ -39,7 +107,8 @@ export interface PatternQualityInput {
39
107
  * +0.10 if context exceeds 50 chars (contextual detail present)
40
108
  * +0.10 if examples_json contains more than 3 items (empirically validated)
41
109
  *
42
- * Result clamped to [0.0, 1.0].
110
+ * T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
111
+ * and the memory tier bonus is added. Result clamped to [0.0, 1.0].
43
112
  */
44
113
  export function computePatternQuality(params: PatternQualityInput): number {
45
114
  let score = 0.4;
@@ -59,7 +128,7 @@ export function computePatternQuality(params: PatternQualityInput): number {
59
128
  }
60
129
  }
61
130
 
62
- return clamp(score);
131
+ return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
63
132
  }
64
133
 
65
134
  // ============================================================================
@@ -72,6 +141,10 @@ export interface LearningQualityInput {
72
141
  actionable?: boolean | null;
73
142
  insight: string;
74
143
  application?: string | null;
144
+ /** T549: source reliability level — applies multiplier on top of base score. */
145
+ sourceConfidence?: BrainSourceConfidence;
146
+ /** T549: memory retention tier — applies tier bonus on top of multiplied score. */
147
+ memoryTier?: BrainMemoryTier;
75
148
  }
76
149
 
77
150
  /**
@@ -83,7 +156,8 @@ export interface LearningQualityInput {
83
156
  * +0.10 if insight text exceeds 100 chars (detailed insight)
84
157
  * +0.10 if application exceeds 20 chars (concrete application context)
85
158
  *
86
- * Result clamped to [0.0, 1.0].
159
+ * T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
160
+ * and the memory tier bonus is added. Result clamped to [0.0, 1.0].
87
161
  */
88
162
  export function computeLearningQuality(params: LearningQualityInput): number {
89
163
  let score = params.confidence ?? 0.5;
@@ -92,7 +166,7 @@ export function computeLearningQuality(params: LearningQualityInput): number {
92
166
  if (params.insight.length > 100) score += 0.1;
93
167
  if (params.application && params.application.length > 20) score += 0.1;
94
168
 
95
- return clamp(score);
169
+ return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
96
170
  }
97
171
 
98
172
  // ============================================================================
@@ -104,6 +178,10 @@ export interface DecisionQualityInput {
104
178
  confidence: 'low' | 'medium' | 'high';
105
179
  rationale?: string | null;
106
180
  contextTaskId?: string | null;
181
+ /** T549: source reliability level — applies multiplier on top of base score. */
182
+ sourceConfidence?: BrainSourceConfidence;
183
+ /** T549: memory retention tier — applies tier bonus on top of multiplied score. */
184
+ memoryTier?: BrainMemoryTier;
107
185
  }
108
186
 
109
187
  /** Numeric value map from confidence level. */
@@ -121,7 +199,8 @@ const CONFIDENCE_SCORE_MAP: Record<'low' | 'medium' | 'high', number> = {
121
199
  * +0.10 if rationale exceeds 50 chars (substantiated reasoning)
122
200
  * +0.05 if linked to a specific task (anchored in real work)
123
201
  *
124
- * Result clamped to [0.0, 1.0].
202
+ * T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
203
+ * and the memory tier bonus is added. Result clamped to [0.0, 1.0].
125
204
  */
126
205
  export function computeDecisionQuality(params: DecisionQualityInput): number {
127
206
  let score = CONFIDENCE_SCORE_MAP[params.confidence] ?? 0.5;
@@ -129,7 +208,7 @@ export function computeDecisionQuality(params: DecisionQualityInput): number {
129
208
  if (params.rationale && params.rationale.length > 50) score += 0.1;
130
209
  if (params.contextTaskId) score += 0.05;
131
210
 
132
- return clamp(score);
211
+ return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
133
212
  }
134
213
 
135
214
  // ============================================================================
@@ -140,6 +219,10 @@ export function computeDecisionQuality(params: DecisionQualityInput): number {
140
219
  export interface ObservationQualityInput {
141
220
  text: string;
142
221
  title?: string | null;
222
+ /** T549: source reliability level — applies multiplier on top of base score. */
223
+ sourceConfidence?: BrainSourceConfidence;
224
+ /** T549: memory retention tier — applies tier bonus on top of multiplied score. */
225
+ memoryTier?: BrainMemoryTier;
143
226
  }
144
227
 
145
228
  /**
@@ -150,7 +233,8 @@ export interface ObservationQualityInput {
150
233
  * +0.10 if text exceeds 200 chars (rich narrative)
151
234
  * +0.05 if title exceeds 10 chars (meaningful label)
152
235
  *
153
- * Result clamped to [0.0, 1.0].
236
+ * T549 Wave 1-B: raw score is then multiplied by the source confidence multiplier
237
+ * and the memory tier bonus is added. Result clamped to [0.0, 1.0].
154
238
  */
155
239
  export function computeObservationQuality(params: ObservationQualityInput): number {
156
240
  let score = 0.6;
@@ -158,7 +242,7 @@ export function computeObservationQuality(params: ObservationQualityInput): numb
158
242
  if (params.text && params.text.length > 200) score += 0.1;
159
243
  if (params.title && params.title.length > 10) score += 0.05;
160
244
 
161
- return clamp(score);
245
+ return applySourceMultiplier(score, params.sourceConfidence, params.memoryTier);
162
246
  }
163
247
 
164
248
  // ============================================================================
@@ -0,0 +1,444 @@
1
+ /**
2
+ * Nexus Bridge Generator
3
+ *
4
+ * Generates .cleo/nexus-bridge.md from nexus.db content. This file is
5
+ * the code intelligence equivalent of memory-bridge.md — it summarizes
6
+ * the codebase graph for agent consumption.
7
+ *
8
+ * Content assembly:
9
+ * - Index status (file count, node count, relation count, last indexed)
10
+ * - Symbol counts by kind (functions, classes, methods, etc.)
11
+ * - Relation counts by type (calls, imports, extends, etc.)
12
+ * - Top entry points (most outgoing CALLS edges, exported)
13
+ * - Functional clusters (communities by symbol count)
14
+ * - Code intelligence command reference
15
+ *
16
+ * Regeneration triggers:
17
+ * - cleo nexus analyze (called after pipeline flush)
18
+ * - Manual: cleo nexus refresh-bridge
19
+ *
20
+ * @task T551
21
+ * @epic T549
22
+ */
23
+
24
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
25
+ import { join } from 'node:path';
26
+ import type { DatabaseSync } from 'node:sqlite';
27
+
28
+ // ============================================================================
29
+ // Types
30
+ // ============================================================================
31
+
32
+ /** Raw row for node kind counts. */
33
+ interface NodeKindCountRow {
34
+ kind: string;
35
+ count: number;
36
+ }
37
+
38
+ /** Raw row for relation type counts. */
39
+ interface RelationTypeCountRow {
40
+ type: string;
41
+ count: number;
42
+ }
43
+
44
+ /** Raw row for top entry points. */
45
+ interface EntryPointRow {
46
+ name: string | null;
47
+ file_path: string | null;
48
+ callees: number;
49
+ is_exported: number;
50
+ }
51
+
52
+ /** Raw row for community/cluster nodes. */
53
+ interface CommunityRow {
54
+ id: string;
55
+ label: string;
56
+ meta_json: string | null;
57
+ indexed_at: string;
58
+ }
59
+
60
+ /** Raw row for index metadata. */
61
+ interface IndexMetaRow {
62
+ total_nodes: number;
63
+ total_relations: number;
64
+ file_count: number;
65
+ last_indexed_at: string | null;
66
+ }
67
+
68
+ // ============================================================================
69
+ // DB helpers
70
+ // ============================================================================
71
+
72
+ /** Type-safe wrapper for DatabaseSync.prepare().all(). */
73
+ function typedAll<T>(db: DatabaseSync, sql: string, ...params: (string | number | null)[]): T[] {
74
+ return db.prepare(sql).all(...params) as T[];
75
+ }
76
+
77
+ /** Type-safe wrapper for DatabaseSync.prepare().get(). */
78
+ function typedGet<T>(
79
+ db: DatabaseSync,
80
+ sql: string,
81
+ ...params: (string | number | null)[]
82
+ ): T | undefined {
83
+ return db.prepare(sql).get(...params) as T | undefined;
84
+ }
85
+
86
+ // ============================================================================
87
+ // Query helpers
88
+ // ============================================================================
89
+
90
+ /** Query total node/relation counts and last indexed timestamp. */
91
+ function queryIndexMeta(db: DatabaseSync, projectId: string): IndexMetaRow {
92
+ try {
93
+ const nodeMeta = typedGet<{
94
+ total_nodes: number;
95
+ file_count: number;
96
+ last_indexed_at: string | null;
97
+ }>(
98
+ db,
99
+ `SELECT COUNT(*) as total_nodes,
100
+ COUNT(CASE WHEN kind = 'file' THEN 1 END) as file_count,
101
+ MAX(indexed_at) as last_indexed_at
102
+ FROM nexus_nodes
103
+ WHERE project_id = ?`,
104
+ projectId,
105
+ );
106
+
107
+ const relMeta = typedGet<{ total_relations: number }>(
108
+ db,
109
+ `SELECT COUNT(*) as total_relations
110
+ FROM nexus_relations
111
+ WHERE project_id = ?`,
112
+ projectId,
113
+ );
114
+
115
+ return {
116
+ total_nodes: nodeMeta?.total_nodes ?? 0,
117
+ total_relations: relMeta?.total_relations ?? 0,
118
+ file_count: nodeMeta?.file_count ?? 0,
119
+ last_indexed_at: nodeMeta?.last_indexed_at ?? null,
120
+ };
121
+ } catch {
122
+ return {
123
+ total_nodes: 0,
124
+ total_relations: 0,
125
+ file_count: 0,
126
+ last_indexed_at: null,
127
+ };
128
+ }
129
+ }
130
+
131
+ /** Query node counts grouped by kind. */
132
+ function queryNodeKindCounts(db: DatabaseSync, projectId: string): NodeKindCountRow[] {
133
+ try {
134
+ return typedAll<NodeKindCountRow>(
135
+ db,
136
+ `SELECT kind, COUNT(*) as count
137
+ FROM nexus_nodes
138
+ WHERE project_id = ?
139
+ AND kind NOT IN ('file', 'folder', 'community', 'process')
140
+ GROUP BY kind
141
+ ORDER BY count DESC
142
+ LIMIT 10`,
143
+ projectId,
144
+ );
145
+ } catch {
146
+ return [];
147
+ }
148
+ }
149
+
150
+ /** Query relation counts grouped by type. */
151
+ function queryRelationTypeCounts(db: DatabaseSync, projectId: string): RelationTypeCountRow[] {
152
+ try {
153
+ return typedAll<RelationTypeCountRow>(
154
+ db,
155
+ `SELECT type, COUNT(*) as count
156
+ FROM nexus_relations
157
+ WHERE project_id = ?
158
+ AND type NOT IN ('member_of', 'step_in_process', 'entry_point_of')
159
+ GROUP BY type
160
+ ORDER BY count DESC
161
+ LIMIT 8`,
162
+ projectId,
163
+ );
164
+ } catch {
165
+ return [];
166
+ }
167
+ }
168
+
169
+ /** Query top entry points by outgoing CALLS edge count. */
170
+ function queryTopEntryPoints(db: DatabaseSync, projectId: string, limit = 5): EntryPointRow[] {
171
+ try {
172
+ return typedAll<EntryPointRow>(
173
+ db,
174
+ `SELECT n.name, n.file_path, COUNT(*) as callees, n.is_exported
175
+ FROM nexus_relations r
176
+ JOIN nexus_nodes n ON r.source_id = n.id
177
+ WHERE r.type = 'calls'
178
+ AND r.project_id = ?
179
+ AND n.kind IN ('function', 'method', 'constructor')
180
+ GROUP BY r.source_id
181
+ ORDER BY callees DESC
182
+ LIMIT ?`,
183
+ projectId,
184
+ limit,
185
+ );
186
+ } catch {
187
+ return [];
188
+ }
189
+ }
190
+
191
+ /** Query community nodes ordered by member count. */
192
+ function queryCommunities(db: DatabaseSync, projectId: string, limit = 6): CommunityRow[] {
193
+ try {
194
+ return typedAll<CommunityRow>(
195
+ db,
196
+ `SELECT id, label, meta_json, indexed_at
197
+ FROM nexus_nodes
198
+ WHERE project_id = ?
199
+ AND kind = 'community'
200
+ ORDER BY indexed_at DESC
201
+ LIMIT ?`,
202
+ projectId,
203
+ limit,
204
+ );
205
+ } catch {
206
+ return [];
207
+ }
208
+ }
209
+
210
+ /** Query count of execution flow (process) nodes. */
211
+ function queryProcessCount(db: DatabaseSync, projectId: string): number {
212
+ try {
213
+ const row = typedGet<{ count: number }>(
214
+ db,
215
+ `SELECT COUNT(*) as count
216
+ FROM nexus_nodes
217
+ WHERE project_id = ?
218
+ AND kind = 'process'`,
219
+ projectId,
220
+ );
221
+ return row?.count ?? 0;
222
+ } catch {
223
+ return 0;
224
+ }
225
+ }
226
+
227
+ // ============================================================================
228
+ // Content generation
229
+ // ============================================================================
230
+
231
+ /**
232
+ * Generate nexus bridge markdown content from nexus.db.
233
+ * Returns the full markdown string (does not write to disk).
234
+ *
235
+ * @param projectId - Project registry ID used to scope nexus.db queries
236
+ * @param repoPath - Absolute path to the repository root (used for display)
237
+ * @returns Markdown string summarizing the code intelligence index
238
+ */
239
+ export async function generateNexusBridgeContent(
240
+ projectId: string,
241
+ repoPath: string,
242
+ ): Promise<string> {
243
+ const { getNexusDb, getNexusNativeDb } = await import('../store/nexus-sqlite.js');
244
+
245
+ // Ensure DB is initialized
246
+ await getNexusDb();
247
+ const nativeDb = getNexusNativeDb();
248
+
249
+ if (!nativeDb) {
250
+ return buildEmptyBridge(repoPath);
251
+ }
252
+
253
+ // Check whether this project has been indexed at all
254
+ const meta = queryIndexMeta(nativeDb, projectId);
255
+ if (meta.total_nodes === 0) {
256
+ return buildEmptyBridge(repoPath);
257
+ }
258
+
259
+ const lines: string[] = [
260
+ '# CLEO Nexus Bridge — Code Intelligence',
261
+ '',
262
+ `> Auto-generated from nexus index. Regenerate with \`cleo nexus analyze\`.`,
263
+ `> Project: ${repoPath}`,
264
+ '',
265
+ ];
266
+
267
+ // --- Index Status ---
268
+ const kindCounts = queryNodeKindCounts(nativeDb, projectId);
269
+ const relCounts = queryRelationTypeCounts(nativeDb, projectId);
270
+ const processCount = queryProcessCount(nativeDb, projectId);
271
+ const communities = queryCommunities(nativeDb, projectId);
272
+
273
+ const symbolBreakdown = kindCounts.map((r) => `${r.kind}s: ${r.count}`).join(', ');
274
+
275
+ const callsCount = relCounts.find((r) => r.type === 'calls')?.count ?? 0;
276
+ const importsCount = relCounts.find((r) => r.type === 'imports')?.count ?? 0;
277
+ const extendsCount = relCounts.find((r) => r.type === 'extends')?.count ?? 0;
278
+
279
+ const freshnessLabel = meta.last_indexed_at ? meta.last_indexed_at.slice(0, 10) : 'unknown';
280
+
281
+ lines.push('## Index Status');
282
+ lines.push('');
283
+ lines.push(`- **Files**: ${meta.file_count.toLocaleString()} indexed`);
284
+ lines.push(
285
+ `- **Symbols**: ${meta.total_nodes.toLocaleString()} total${symbolBreakdown ? ` (${symbolBreakdown})` : ''}`,
286
+ );
287
+ lines.push(
288
+ `- **Relations**: ${meta.total_relations.toLocaleString()} total (calls: ${callsCount.toLocaleString()}, imports: ${importsCount.toLocaleString()}, extends: ${extendsCount.toLocaleString()})`,
289
+ );
290
+ lines.push(`- **Communities**: ${communities.length} functional clusters`);
291
+ lines.push(`- **Execution Flows**: ${processCount} traced processes`);
292
+ lines.push(`- **Last Indexed**: ${meta.last_indexed_at ?? 'never'}`);
293
+ lines.push(`- **Date**: ${freshnessLabel}`);
294
+ lines.push('');
295
+
296
+ // --- Top Entry Points ---
297
+ const entryPoints = queryTopEntryPoints(nativeDb, projectId);
298
+ if (entryPoints.length > 0) {
299
+ lines.push('## Top Entry Points');
300
+ lines.push('');
301
+ entryPoints.forEach((ep, i) => {
302
+ const name = ep.name ?? '(unknown)';
303
+ const filePath = ep.file_path ?? '';
304
+ const displayPath = filePath.length > 60 ? `...${filePath.slice(-57)}` : filePath;
305
+ lines.push(`${i + 1}. \`${name}\` — ${displayPath} (${ep.callees} callees)`);
306
+ });
307
+ lines.push('');
308
+ }
309
+
310
+ // --- Functional Clusters ---
311
+ if (communities.length > 0) {
312
+ lines.push('## Functional Clusters');
313
+ lines.push('');
314
+ communities.forEach((c, i) => {
315
+ let symbolCount = 0;
316
+ let topFolder = '';
317
+ try {
318
+ if (c.meta_json) {
319
+ const meta = JSON.parse(c.meta_json) as Record<string, unknown>;
320
+ symbolCount = typeof meta['symbolCount'] === 'number' ? meta['symbolCount'] : 0;
321
+ const folders = meta['topFolders'];
322
+ if (Array.isArray(folders) && folders.length > 0) {
323
+ topFolder = String(folders[0]);
324
+ }
325
+ }
326
+ } catch {
327
+ // ignore parse errors
328
+ }
329
+ const symbolsLabel = symbolCount > 0 ? ` (${symbolCount} symbols)` : '';
330
+ const folderLabel = topFolder ? ` — ${topFolder}` : '';
331
+ lines.push(`${i + 1}. **${c.label}**${symbolsLabel}${folderLabel}`);
332
+ });
333
+ lines.push('');
334
+ }
335
+
336
+ // --- Code Intelligence Commands ---
337
+ lines.push('## Code Intelligence Commands');
338
+ lines.push('');
339
+ lines.push('| Need | Command |');
340
+ lines.push('|------|---------|');
341
+ lines.push('| What calls this function? | `cleo nexus context <symbol>` |');
342
+ lines.push('| What breaks if I change this? | `cleo nexus impact <symbol>` |');
343
+ lines.push('| What functional areas exist? | `cleo nexus clusters` |');
344
+ lines.push('| What execution flows exist? | `cleo nexus flows` |');
345
+ lines.push('| Re-index after code changes | `cleo nexus analyze` |');
346
+ lines.push('| Index freshness check | `cleo nexus status` |');
347
+ lines.push('');
348
+
349
+ return lines.join('\n');
350
+ }
351
+
352
+ /**
353
+ * Write nexus bridge content to .cleo/nexus-bridge.md.
354
+ *
355
+ * @param projectRoot - Absolute path to the project root
356
+ * @param projectId - Project registry ID (used to scope nexus.db queries)
357
+ * @returns Result with path and whether the file was written
358
+ */
359
+ export async function writeNexusBridge(
360
+ projectRoot: string,
361
+ projectId?: string,
362
+ ): Promise<{ path: string; written: boolean }> {
363
+ const cleoDir = join(projectRoot, '.cleo');
364
+ const bridgePath = join(cleoDir, 'nexus-bridge.md');
365
+
366
+ // Derive project ID from path if not provided (matches nexus analyze convention)
367
+ const resolvedProjectId =
368
+ projectId ?? Buffer.from(projectRoot).toString('base64url').slice(0, 32);
369
+
370
+ try {
371
+ const content = await generateNexusBridgeContent(resolvedProjectId, projectRoot);
372
+
373
+ if (!existsSync(cleoDir)) {
374
+ mkdirSync(cleoDir, { recursive: true });
375
+ }
376
+
377
+ // Only write if content changed (avoid unnecessary git noise)
378
+ if (existsSync(bridgePath)) {
379
+ const existing = readFileSync(bridgePath, 'utf-8');
380
+ // Compare without the date line since it changes daily
381
+ const stripDate = (s: string) => s.replace(/^> Date: .*/m, '');
382
+ if (stripDate(existing) === stripDate(content)) {
383
+ return { path: bridgePath, written: false };
384
+ }
385
+ }
386
+
387
+ writeFileSync(bridgePath, content, 'utf-8');
388
+ return { path: bridgePath, written: true };
389
+ } catch (err) {
390
+ console.error(
391
+ '[CLEO] Failed to write nexus bridge:',
392
+ err instanceof Error ? err.message : String(err),
393
+ );
394
+ return { path: bridgePath, written: false };
395
+ }
396
+ }
397
+
398
+ /**
399
+ * Best-effort nexus bridge refresh. Never throws.
400
+ * Called after cleo nexus analyze completes.
401
+ *
402
+ * @param projectRoot - Absolute path to the project root
403
+ * @param projectId - Project registry ID (used to scope nexus.db queries)
404
+ */
405
+ export async function refreshNexusBridge(projectRoot: string, projectId?: string): Promise<void> {
406
+ try {
407
+ await writeNexusBridge(projectRoot, projectId);
408
+ } catch (err) {
409
+ console.error(
410
+ '[CLEO] Nexus bridge refresh failed:',
411
+ err instanceof Error ? err.message : String(err),
412
+ );
413
+ }
414
+ }
415
+
416
+ // ============================================================================
417
+ // Helpers
418
+ // ============================================================================
419
+
420
+ /** Build placeholder content when no index data exists. */
421
+ function buildEmptyBridge(repoPath: string): string {
422
+ return [
423
+ '# CLEO Nexus Bridge — Code Intelligence',
424
+ '',
425
+ `> Auto-generated from nexus index. Regenerate with \`cleo nexus analyze\`.`,
426
+ `> Project: ${repoPath}`,
427
+ '',
428
+ '## Index Status',
429
+ '',
430
+ 'Not indexed. Run `cleo nexus analyze` to build the code intelligence index.',
431
+ '',
432
+ '## Code Intelligence Commands',
433
+ '',
434
+ '| Need | Command |',
435
+ '|------|---------|',
436
+ '| Build the index | `cleo nexus analyze` |',
437
+ '| Check index status | `cleo nexus status` |',
438
+ '| What calls this function? | `cleo nexus context <symbol>` |',
439
+ '| What breaks if I change this? | `cleo nexus impact <symbol>` |',
440
+ '| What functional areas exist? | `cleo nexus clusters` |',
441
+ '| What execution flows exist? | `cleo nexus flows` |',
442
+ '',
443
+ ].join('\n');
444
+ }