@cleocode/core 2026.4.30 → 2026.4.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1039) hide show
  1. package/dist/adapters/adapter-registry.js +64 -0
  2. package/dist/adapters/adapter-registry.js.map +1 -0
  3. package/dist/adapters/discovery.js +83 -0
  4. package/dist/adapters/discovery.js.map +1 -0
  5. package/dist/adapters/index.js +9 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/manager.js +260 -0
  8. package/dist/adapters/manager.js.map +1 -0
  9. package/dist/admin/export-tasks.js +171 -0
  10. package/dist/admin/export-tasks.js.map +1 -0
  11. package/dist/admin/export.js +103 -0
  12. package/dist/admin/export.js.map +1 -0
  13. package/dist/admin/help.js +106 -0
  14. package/dist/admin/help.js.map +1 -0
  15. package/dist/admin/import-tasks.js +182 -0
  16. package/dist/admin/import-tasks.js.map +1 -0
  17. package/dist/admin/import.js +129 -0
  18. package/dist/admin/import.js.map +1 -0
  19. package/dist/admin/index.js +13 -0
  20. package/dist/admin/index.js.map +1 -0
  21. package/dist/adrs/find.js +134 -0
  22. package/dist/adrs/find.js.map +1 -0
  23. package/dist/adrs/index.js +15 -0
  24. package/dist/adrs/index.js.map +1 -0
  25. package/dist/adrs/link-pipeline.js +160 -0
  26. package/dist/adrs/link-pipeline.js.map +1 -0
  27. package/dist/adrs/list.js +43 -0
  28. package/dist/adrs/list.js.map +1 -0
  29. package/dist/adrs/parse.js +51 -0
  30. package/dist/adrs/parse.js.map +1 -0
  31. package/dist/adrs/show.js +22 -0
  32. package/dist/adrs/show.js.map +1 -0
  33. package/dist/adrs/sync.js +232 -0
  34. package/dist/adrs/sync.js.map +1 -0
  35. package/dist/adrs/types.js +9 -0
  36. package/dist/adrs/types.js.map +1 -0
  37. package/dist/adrs/validate.js +57 -0
  38. package/dist/adrs/validate.js.map +1 -0
  39. package/dist/agents/agent-registry.js +288 -0
  40. package/dist/agents/agent-registry.js.map +1 -0
  41. package/dist/agents/agent-schema.js +82 -0
  42. package/dist/agents/agent-schema.js.map +1 -0
  43. package/dist/agents/capacity.js +116 -0
  44. package/dist/agents/capacity.js.map +1 -0
  45. package/dist/agents/execution-learning.js +474 -0
  46. package/dist/agents/execution-learning.js.map +1 -0
  47. package/dist/agents/health-monitor.js +217 -0
  48. package/dist/agents/health-monitor.js.map +1 -0
  49. package/dist/agents/index.js +29 -0
  50. package/dist/agents/index.js.map +1 -0
  51. package/dist/agents/registry.js +314 -0
  52. package/dist/agents/registry.js.map +1 -0
  53. package/dist/agents/retry.js +215 -0
  54. package/dist/agents/retry.js.map +1 -0
  55. package/dist/audit-prune.js +94 -0
  56. package/dist/audit-prune.js.map +1 -0
  57. package/dist/audit.js +68 -0
  58. package/dist/audit.js.map +1 -0
  59. package/dist/backfill/index.js +229 -0
  60. package/dist/backfill/index.js.map +1 -0
  61. package/dist/bootstrap.d.ts +35 -0
  62. package/dist/bootstrap.d.ts.map +1 -1
  63. package/dist/bootstrap.js +435 -0
  64. package/dist/bootstrap.js.map +1 -0
  65. package/dist/caamp/adapter.js +259 -0
  66. package/dist/caamp/adapter.js.map +1 -0
  67. package/dist/caamp/capability-check.js +38 -0
  68. package/dist/caamp/capability-check.js.map +1 -0
  69. package/dist/caamp/index.js +21 -0
  70. package/dist/caamp/index.js.map +1 -0
  71. package/dist/caamp-init.js +16 -0
  72. package/dist/caamp-init.js.map +1 -0
  73. package/dist/cleo.js +322 -0
  74. package/dist/cleo.js.map +1 -0
  75. package/dist/code/index.d.ts +8 -4
  76. package/dist/code/index.d.ts.map +1 -1
  77. package/dist/code/index.js +14 -0
  78. package/dist/code/index.js.map +1 -0
  79. package/dist/code/outline.js +165 -0
  80. package/dist/code/outline.js.map +1 -0
  81. package/dist/code/parser.d.ts +22 -9
  82. package/dist/code/parser.d.ts.map +1 -1
  83. package/dist/code/parser.js +420 -0
  84. package/dist/code/parser.js.map +1 -0
  85. package/dist/code/search.js +135 -0
  86. package/dist/code/search.js.map +1 -0
  87. package/dist/code/unfold.js +155 -0
  88. package/dist/code/unfold.js.map +1 -0
  89. package/dist/codebase-map/analyzers/architecture.js +129 -0
  90. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  91. package/dist/codebase-map/analyzers/concerns.js +122 -0
  92. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  93. package/dist/codebase-map/analyzers/conventions.js +149 -0
  94. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  95. package/dist/codebase-map/analyzers/integrations.js +108 -0
  96. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  97. package/dist/codebase-map/analyzers/stack.js +117 -0
  98. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  99. package/dist/codebase-map/analyzers/structure.js +137 -0
  100. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  101. package/dist/codebase-map/analyzers/testing.js +118 -0
  102. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  103. package/dist/codebase-map/index.js +57 -0
  104. package/dist/codebase-map/index.js.map +1 -0
  105. package/dist/codebase-map/store.js +122 -0
  106. package/dist/codebase-map/store.js.map +1 -0
  107. package/dist/codebase-map/summary.js +152 -0
  108. package/dist/codebase-map/summary.js.map +1 -0
  109. package/dist/compliance/index.js +288 -0
  110. package/dist/compliance/index.js.map +1 -0
  111. package/dist/compliance/protocol-enforcement.js +332 -0
  112. package/dist/compliance/protocol-enforcement.js.map +1 -0
  113. package/dist/compliance/protocol-rules.js +786 -0
  114. package/dist/compliance/protocol-rules.js.map +1 -0
  115. package/dist/compliance/protocol-types.js +79 -0
  116. package/dist/compliance/protocol-types.js.map +1 -0
  117. package/dist/compliance/store.js +53 -0
  118. package/dist/compliance/store.js.map +1 -0
  119. package/dist/conduit/conduit-client.js +107 -0
  120. package/dist/conduit/conduit-client.js.map +1 -0
  121. package/dist/conduit/factory.js +52 -0
  122. package/dist/conduit/factory.js.map +1 -0
  123. package/dist/conduit/http-transport.js +155 -0
  124. package/dist/conduit/http-transport.js.map +1 -0
  125. package/dist/conduit/index.js +15 -0
  126. package/dist/conduit/index.js.map +1 -0
  127. package/dist/conduit/local-transport.js +255 -0
  128. package/dist/conduit/local-transport.js.map +1 -0
  129. package/dist/conduit/sse-transport.js +299 -0
  130. package/dist/conduit/sse-transport.js.map +1 -0
  131. package/dist/config/build-config.js +29 -0
  132. package/dist/config/build-config.js.map +1 -0
  133. package/dist/config.js +400 -0
  134. package/dist/config.js.map +1 -0
  135. package/dist/constants.js +18 -0
  136. package/dist/constants.js.map +1 -0
  137. package/dist/context/index.js +137 -0
  138. package/dist/context/index.js.map +1 -0
  139. package/dist/crypto/credentials.js +219 -0
  140. package/dist/crypto/credentials.js.map +1 -0
  141. package/dist/discovery.js +182 -0
  142. package/dist/discovery.js.map +1 -0
  143. package/dist/engine-result.js +12 -0
  144. package/dist/engine-result.js.map +1 -0
  145. package/dist/error-catalog.js +404 -0
  146. package/dist/error-catalog.js.map +1 -0
  147. package/dist/error-registry.js +393 -0
  148. package/dist/error-registry.js.map +1 -0
  149. package/dist/errors.js +173 -0
  150. package/dist/errors.js.map +1 -0
  151. package/dist/hooks/handlers/agent-hooks.js +106 -0
  152. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  153. package/dist/hooks/handlers/context-hooks.js +111 -0
  154. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  155. package/dist/hooks/handlers/error-hooks.js +52 -0
  156. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  157. package/dist/hooks/handlers/file-hooks.js +104 -0
  158. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  159. package/dist/hooks/handlers/handler-helpers.js +61 -0
  160. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  161. package/dist/hooks/handlers/index.d.ts +4 -0
  162. package/dist/hooks/handlers/index.d.ts.map +1 -1
  163. package/dist/hooks/handlers/index.js +34 -0
  164. package/dist/hooks/handlers/index.js.map +1 -0
  165. package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
  166. package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
  167. package/dist/hooks/handlers/intelligence-hooks.js +69 -0
  168. package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
  169. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  170. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  171. package/dist/hooks/handlers/notification-hooks.js +62 -0
  172. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  173. package/dist/hooks/handlers/session-hooks.d.ts +27 -4
  174. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  175. package/dist/hooks/handlers/session-hooks.js +157 -0
  176. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  177. package/dist/hooks/handlers/task-hooks.js +65 -0
  178. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  179. package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
  180. package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
  181. package/dist/hooks/handlers/watchdog-hooks.js +162 -0
  182. package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
  183. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  184. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  185. package/dist/hooks/index.js +13 -0
  186. package/dist/hooks/index.js.map +1 -0
  187. package/dist/hooks/payload-schemas.d.ts +6 -6
  188. package/dist/hooks/payload-schemas.js +220 -0
  189. package/dist/hooks/payload-schemas.js.map +1 -0
  190. package/dist/hooks/provider-hooks.js +66 -0
  191. package/dist/hooks/provider-hooks.js.map +1 -0
  192. package/dist/hooks/registry.js +229 -0
  193. package/dist/hooks/registry.js.map +1 -0
  194. package/dist/hooks/types.js +66 -0
  195. package/dist/hooks/types.js.map +1 -0
  196. package/dist/hooks.js +136 -0
  197. package/dist/hooks.js.map +1 -0
  198. package/dist/index.d.ts +2 -0
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.js +8765 -6253
  201. package/dist/index.js.map +4 -4
  202. package/dist/init.js +920 -0
  203. package/dist/init.js.map +1 -0
  204. package/dist/inject/index.js +82 -0
  205. package/dist/inject/index.js.map +1 -0
  206. package/dist/injection.d.ts +13 -1
  207. package/dist/injection.d.ts.map +1 -1
  208. package/dist/injection.js +377 -0
  209. package/dist/injection.js.map +1 -0
  210. package/dist/intelligence/adaptive-validation.js +497 -0
  211. package/dist/intelligence/adaptive-validation.js.map +1 -0
  212. package/dist/intelligence/impact.js +675 -0
  213. package/dist/intelligence/impact.js.map +1 -0
  214. package/dist/intelligence/index.js +22 -0
  215. package/dist/intelligence/index.js.map +1 -0
  216. package/dist/intelligence/patterns.js +492 -0
  217. package/dist/intelligence/patterns.js.map +1 -0
  218. package/dist/intelligence/prediction.js +499 -0
  219. package/dist/intelligence/prediction.js.map +1 -0
  220. package/dist/intelligence/types.js +13 -0
  221. package/dist/intelligence/types.js.map +1 -0
  222. package/dist/internal.d.ts +18 -10
  223. package/dist/internal.d.ts.map +1 -1
  224. package/dist/internal.js +320 -0
  225. package/dist/internal.js.map +1 -0
  226. package/dist/issue/create.js +121 -0
  227. package/dist/issue/create.js.map +1 -0
  228. package/dist/issue/diagnostics.js +59 -0
  229. package/dist/issue/diagnostics.js.map +1 -0
  230. package/dist/issue/index.js +10 -0
  231. package/dist/issue/index.js.map +1 -0
  232. package/dist/issue/template-parser.js +267 -0
  233. package/dist/issue/template-parser.js.map +1 -0
  234. package/dist/json-schema-validator.js +76 -0
  235. package/dist/json-schema-validator.js.map +1 -0
  236. package/dist/lib/index.js +11 -0
  237. package/dist/lib/index.js.map +1 -0
  238. package/dist/lib/retry.js +152 -0
  239. package/dist/lib/retry.js.map +1 -0
  240. package/dist/lib/tree-sitter-languages.d.ts +11 -7
  241. package/dist/lib/tree-sitter-languages.d.ts.map +1 -1
  242. package/dist/lib/tree-sitter-languages.js +75 -0
  243. package/dist/lib/tree-sitter-languages.js.map +1 -0
  244. package/dist/lifecycle/chain-composition.js +152 -0
  245. package/dist/lifecycle/chain-composition.js.map +1 -0
  246. package/dist/lifecycle/chain-store.js +246 -0
  247. package/dist/lifecycle/chain-store.js.map +1 -0
  248. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  249. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  250. package/dist/lifecycle/default-chain.js +176 -0
  251. package/dist/lifecycle/default-chain.js.map +1 -0
  252. package/dist/lifecycle/evidence.js +180 -0
  253. package/dist/lifecycle/evidence.js.map +1 -0
  254. package/dist/lifecycle/frontmatter.js +363 -0
  255. package/dist/lifecycle/frontmatter.js.map +1 -0
  256. package/dist/lifecycle/index.js +756 -0
  257. package/dist/lifecycle/index.js.map +1 -0
  258. package/dist/lifecycle/pipeline.js +656 -0
  259. package/dist/lifecycle/pipeline.js.map +1 -0
  260. package/dist/lifecycle/rcasd-index.js +326 -0
  261. package/dist/lifecycle/rcasd-index.js.map +1 -0
  262. package/dist/lifecycle/rcasd-paths.js +220 -0
  263. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  264. package/dist/lifecycle/resume.js +864 -0
  265. package/dist/lifecycle/resume.js.map +1 -0
  266. package/dist/lifecycle/stage-artifacts.js +94 -0
  267. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  268. package/dist/lifecycle/stage-guidance.js +234 -0
  269. package/dist/lifecycle/stage-guidance.js.map +1 -0
  270. package/dist/lifecycle/stages.js +534 -0
  271. package/dist/lifecycle/stages.js.map +1 -0
  272. package/dist/lifecycle/state-machine.js +516 -0
  273. package/dist/lifecycle/state-machine.js.map +1 -0
  274. package/dist/lifecycle/tessera-engine.js +249 -0
  275. package/dist/lifecycle/tessera-engine.js.map +1 -0
  276. package/dist/logger.js +140 -0
  277. package/dist/logger.js.map +1 -0
  278. package/dist/memory/auto-extract.d.ts +27 -15
  279. package/dist/memory/auto-extract.d.ts.map +1 -1
  280. package/dist/memory/auto-extract.js +96 -0
  281. package/dist/memory/auto-extract.js.map +1 -0
  282. package/dist/memory/brain-backfill.d.ts +59 -0
  283. package/dist/memory/brain-backfill.d.ts.map +1 -0
  284. package/dist/memory/brain-backfill.js +389 -0
  285. package/dist/memory/brain-backfill.js.map +1 -0
  286. package/dist/memory/brain-consolidator.d.ts +48 -0
  287. package/dist/memory/brain-consolidator.d.ts.map +1 -0
  288. package/dist/memory/brain-consolidator.js +294 -0
  289. package/dist/memory/brain-consolidator.js.map +1 -0
  290. package/dist/memory/brain-embedding.js +66 -0
  291. package/dist/memory/brain-embedding.js.map +1 -0
  292. package/dist/memory/brain-lifecycle.d.ts +83 -2
  293. package/dist/memory/brain-lifecycle.d.ts.map +1 -1
  294. package/dist/memory/brain-lifecycle.js +807 -0
  295. package/dist/memory/brain-lifecycle.js.map +1 -0
  296. package/dist/memory/brain-links.js +161 -0
  297. package/dist/memory/brain-links.js.map +1 -0
  298. package/dist/memory/brain-maintenance.js +114 -0
  299. package/dist/memory/brain-maintenance.js.map +1 -0
  300. package/dist/memory/brain-migration.js +149 -0
  301. package/dist/memory/brain-migration.js.map +1 -0
  302. package/dist/memory/brain-purge.d.ts +51 -0
  303. package/dist/memory/brain-purge.d.ts.map +1 -0
  304. package/dist/memory/brain-purge.js +243 -0
  305. package/dist/memory/brain-purge.js.map +1 -0
  306. package/dist/memory/brain-reasoning.js +215 -0
  307. package/dist/memory/brain-reasoning.js.map +1 -0
  308. package/dist/memory/brain-retrieval.d.ts +69 -1
  309. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  310. package/dist/memory/brain-retrieval.js +912 -0
  311. package/dist/memory/brain-retrieval.js.map +1 -0
  312. package/dist/memory/brain-row-types.js +10 -0
  313. package/dist/memory/brain-row-types.js.map +1 -0
  314. package/dist/memory/brain-search.d.ts.map +1 -1
  315. package/dist/memory/brain-search.js +528 -0
  316. package/dist/memory/brain-search.js.map +1 -0
  317. package/dist/memory/brain-similarity.js +145 -0
  318. package/dist/memory/brain-similarity.js.map +1 -0
  319. package/dist/memory/claude-mem-migration.js +277 -0
  320. package/dist/memory/claude-mem-migration.js.map +1 -0
  321. package/dist/memory/decisions.d.ts.map +1 -1
  322. package/dist/memory/decisions.js +218 -0
  323. package/dist/memory/decisions.js.map +1 -0
  324. package/dist/memory/embedding-local.js +102 -0
  325. package/dist/memory/embedding-local.js.map +1 -0
  326. package/dist/memory/embedding-queue.js +271 -0
  327. package/dist/memory/embedding-queue.js.map +1 -0
  328. package/dist/memory/embedding-worker.js +58 -0
  329. package/dist/memory/embedding-worker.js.map +1 -0
  330. package/dist/memory/engine-compat.d.ts +71 -0
  331. package/dist/memory/engine-compat.d.ts.map +1 -1
  332. package/dist/memory/engine-compat.js +1564 -0
  333. package/dist/memory/engine-compat.js.map +1 -0
  334. package/dist/memory/extraction-gate.d.ts +139 -0
  335. package/dist/memory/extraction-gate.d.ts.map +1 -0
  336. package/dist/memory/extraction-gate.js +459 -0
  337. package/dist/memory/extraction-gate.js.map +1 -0
  338. package/dist/memory/graph-auto-populate.d.ts +65 -0
  339. package/dist/memory/graph-auto-populate.d.ts.map +1 -0
  340. package/dist/memory/graph-auto-populate.js +148 -0
  341. package/dist/memory/graph-auto-populate.js.map +1 -0
  342. package/dist/memory/graph-queries.d.ts +127 -0
  343. package/dist/memory/graph-queries.d.ts.map +1 -0
  344. package/dist/memory/graph-queries.js +290 -0
  345. package/dist/memory/graph-queries.js.map +1 -0
  346. package/dist/memory/index.d.ts +2 -0
  347. package/dist/memory/index.d.ts.map +1 -1
  348. package/dist/memory/index.js +1144 -0
  349. package/dist/memory/index.js.map +1 -0
  350. package/dist/memory/learnings.d.ts +16 -0
  351. package/dist/memory/learnings.d.ts.map +1 -1
  352. package/dist/memory/learnings.js +178 -0
  353. package/dist/memory/learnings.js.map +1 -0
  354. package/dist/memory/memory-bridge.js +370 -0
  355. package/dist/memory/memory-bridge.js.map +1 -0
  356. package/dist/memory/mental-model-injection.js +61 -0
  357. package/dist/memory/mental-model-injection.js.map +1 -0
  358. package/dist/memory/mental-model-queue.js +211 -0
  359. package/dist/memory/mental-model-queue.js.map +1 -0
  360. package/dist/memory/patterns.d.ts +26 -4
  361. package/dist/memory/patterns.d.ts.map +1 -1
  362. package/dist/memory/patterns.js +174 -0
  363. package/dist/memory/patterns.js.map +1 -0
  364. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  365. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  366. package/dist/memory/quality-scoring.d.ts +127 -0
  367. package/dist/memory/quality-scoring.d.ts.map +1 -0
  368. package/dist/memory/quality-scoring.js +182 -0
  369. package/dist/memory/quality-scoring.js.map +1 -0
  370. package/dist/memory/session-memory.js +331 -0
  371. package/dist/memory/session-memory.js.map +1 -0
  372. package/dist/metrics/ab-test.js +260 -0
  373. package/dist/metrics/ab-test.js.map +1 -0
  374. package/dist/metrics/aggregation.js +363 -0
  375. package/dist/metrics/aggregation.js.map +1 -0
  376. package/dist/metrics/common.js +64 -0
  377. package/dist/metrics/common.js.map +1 -0
  378. package/dist/metrics/enums.js +78 -0
  379. package/dist/metrics/enums.js.map +1 -0
  380. package/dist/metrics/index.js +19 -0
  381. package/dist/metrics/index.js.map +1 -0
  382. package/dist/metrics/model-provider-registry.js +88 -0
  383. package/dist/metrics/model-provider-registry.js.map +1 -0
  384. package/dist/metrics/otel-integration.js +263 -0
  385. package/dist/metrics/otel-integration.js.map +1 -0
  386. package/dist/metrics/provider-detection.js +103 -0
  387. package/dist/metrics/provider-detection.js.map +1 -0
  388. package/dist/metrics/token-estimation.js +253 -0
  389. package/dist/metrics/token-estimation.js.map +1 -0
  390. package/dist/metrics/token-service.js +450 -0
  391. package/dist/metrics/token-service.js.map +1 -0
  392. package/dist/migration/agent-outputs.js +316 -0
  393. package/dist/migration/agent-outputs.js.map +1 -0
  394. package/dist/migration/checksum.js +92 -0
  395. package/dist/migration/checksum.js.map +1 -0
  396. package/dist/migration/index.js +282 -0
  397. package/dist/migration/index.js.map +1 -0
  398. package/dist/migration/logger.js +360 -0
  399. package/dist/migration/logger.js.map +1 -0
  400. package/dist/migration/preflight.js +9 -0
  401. package/dist/migration/preflight.js.map +1 -0
  402. package/dist/migration/state.js +421 -0
  403. package/dist/migration/state.js.map +1 -0
  404. package/dist/migration/validate.js +241 -0
  405. package/dist/migration/validate.js.map +1 -0
  406. package/dist/mvi-helpers.js +73 -0
  407. package/dist/mvi-helpers.js.map +1 -0
  408. package/dist/nexus/deps.js +375 -0
  409. package/dist/nexus/deps.js.map +1 -0
  410. package/dist/nexus/discover.js +288 -0
  411. package/dist/nexus/discover.js.map +1 -0
  412. package/dist/nexus/hash.js +10 -0
  413. package/dist/nexus/hash.js.map +1 -0
  414. package/dist/nexus/index.js +40 -0
  415. package/dist/nexus/index.js.map +1 -0
  416. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  417. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  418. package/dist/nexus/nexus-bridge.d.ts +51 -0
  419. package/dist/nexus/nexus-bridge.d.ts.map +1 -0
  420. package/dist/nexus/nexus-bridge.js +321 -0
  421. package/dist/nexus/nexus-bridge.js.map +1 -0
  422. package/dist/nexus/permissions.js +105 -0
  423. package/dist/nexus/permissions.js.map +1 -0
  424. package/dist/nexus/query.js +175 -0
  425. package/dist/nexus/query.js.map +1 -0
  426. package/dist/nexus/registry.js +584 -0
  427. package/dist/nexus/registry.js.map +1 -0
  428. package/dist/nexus/sharing/index.js +288 -0
  429. package/dist/nexus/sharing/index.js.map +1 -0
  430. package/dist/nexus/transfer-types.js +8 -0
  431. package/dist/nexus/transfer-types.js.map +1 -0
  432. package/dist/nexus/transfer.js +271 -0
  433. package/dist/nexus/transfer.js.map +1 -0
  434. package/dist/nexus/workspace.js +355 -0
  435. package/dist/nexus/workspace.js.map +1 -0
  436. package/dist/observability/index.js +103 -0
  437. package/dist/observability/index.js.map +1 -0
  438. package/dist/observability/log-filter.js +63 -0
  439. package/dist/observability/log-filter.js.map +1 -0
  440. package/dist/observability/log-parser.js +99 -0
  441. package/dist/observability/log-parser.js.map +1 -0
  442. package/dist/observability/log-reader.js +139 -0
  443. package/dist/observability/log-reader.js.map +1 -0
  444. package/dist/observability/types.js +19 -0
  445. package/dist/observability/types.js.map +1 -0
  446. package/dist/orchestration/analyze.js +107 -0
  447. package/dist/orchestration/analyze.js.map +1 -0
  448. package/dist/orchestration/bootstrap.js +132 -0
  449. package/dist/orchestration/bootstrap.js.map +1 -0
  450. package/dist/orchestration/context.js +56 -0
  451. package/dist/orchestration/context.js.map +1 -0
  452. package/dist/orchestration/critical-path.js +100 -0
  453. package/dist/orchestration/critical-path.js.map +1 -0
  454. package/dist/orchestration/hierarchy.js +183 -0
  455. package/dist/orchestration/hierarchy.js.map +1 -0
  456. package/dist/orchestration/index.js +287 -0
  457. package/dist/orchestration/index.js.map +1 -0
  458. package/dist/orchestration/parallel.js +89 -0
  459. package/dist/orchestration/parallel.js.map +1 -0
  460. package/dist/orchestration/protocol-validators.js +815 -0
  461. package/dist/orchestration/protocol-validators.js.map +1 -0
  462. package/dist/orchestration/skill-ops.js +98 -0
  463. package/dist/orchestration/skill-ops.js.map +1 -0
  464. package/dist/orchestration/status.js +107 -0
  465. package/dist/orchestration/status.js.map +1 -0
  466. package/dist/orchestration/unblock.js +103 -0
  467. package/dist/orchestration/unblock.js.map +1 -0
  468. package/dist/orchestration/validate-spawn.js +67 -0
  469. package/dist/orchestration/validate-spawn.js.map +1 -0
  470. package/dist/orchestration/waves.js +86 -0
  471. package/dist/orchestration/waves.js.map +1 -0
  472. package/dist/otel/index.js +163 -0
  473. package/dist/otel/index.js.map +1 -0
  474. package/dist/output.js +164 -0
  475. package/dist/output.js.map +1 -0
  476. package/dist/pagination.js +64 -0
  477. package/dist/pagination.js.map +1 -0
  478. package/dist/paths.js +882 -0
  479. package/dist/paths.js.map +1 -0
  480. package/dist/phases/deps.js +372 -0
  481. package/dist/phases/deps.js.map +1 -0
  482. package/dist/phases/index.js +349 -0
  483. package/dist/phases/index.js.map +1 -0
  484. package/dist/pipeline/index.js +10 -0
  485. package/dist/pipeline/index.js.map +1 -0
  486. package/dist/pipeline/phase.js +45 -0
  487. package/dist/pipeline/phase.js.map +1 -0
  488. package/dist/platform.js +211 -0
  489. package/dist/platform.js.map +1 -0
  490. package/dist/project-info.js +84 -0
  491. package/dist/project-info.js.map +1 -0
  492. package/dist/reconciliation/index.js +10 -0
  493. package/dist/reconciliation/index.js.map +1 -0
  494. package/dist/reconciliation/link-store.js +175 -0
  495. package/dist/reconciliation/link-store.js.map +1 -0
  496. package/dist/reconciliation/reconciliation-engine.js +298 -0
  497. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  498. package/dist/release/artifacts.js +427 -0
  499. package/dist/release/artifacts.js.map +1 -0
  500. package/dist/release/changelog-writer.js +151 -0
  501. package/dist/release/changelog-writer.js.map +1 -0
  502. package/dist/release/channel.js +144 -0
  503. package/dist/release/channel.js.map +1 -0
  504. package/dist/release/ci.js +166 -0
  505. package/dist/release/ci.js.map +1 -0
  506. package/dist/release/github-pr.js +225 -0
  507. package/dist/release/github-pr.js.map +1 -0
  508. package/dist/release/guards.js +116 -0
  509. package/dist/release/guards.js.map +1 -0
  510. package/dist/release/index.js +22 -0
  511. package/dist/release/index.js.map +1 -0
  512. package/dist/release/release-config.js +158 -0
  513. package/dist/release/release-config.js.map +1 -0
  514. package/dist/release/release-manifest.js +1019 -0
  515. package/dist/release/release-manifest.js.map +1 -0
  516. package/dist/release/version-bump.js +255 -0
  517. package/dist/release/version-bump.js.map +1 -0
  518. package/dist/remote/index.js +257 -0
  519. package/dist/remote/index.js.map +1 -0
  520. package/dist/repair.js +130 -0
  521. package/dist/repair.js.map +1 -0
  522. package/dist/research/index.js +2 -0
  523. package/dist/research/index.js.map +1 -0
  524. package/dist/roadmap/index.js +59 -0
  525. package/dist/roadmap/index.js.map +1 -0
  526. package/dist/routing/capability-matrix.js +1556 -0
  527. package/dist/routing/capability-matrix.js.map +1 -0
  528. package/dist/routing/index.js +9 -0
  529. package/dist/routing/index.js.map +1 -0
  530. package/dist/scaffold.d.ts +18 -0
  531. package/dist/scaffold.d.ts.map +1 -1
  532. package/dist/scaffold.js +1798 -0
  533. package/dist/scaffold.js.map +1 -0
  534. package/dist/schema-management.js +295 -0
  535. package/dist/schema-management.js.map +1 -0
  536. package/dist/security/index.js +9 -0
  537. package/dist/security/index.js.map +1 -0
  538. package/dist/security/input-sanitization.js +326 -0
  539. package/dist/security/input-sanitization.js.map +1 -0
  540. package/dist/sequence/index.js +295 -0
  541. package/dist/sequence/index.js.map +1 -0
  542. package/dist/sessions/assumptions.js +54 -0
  543. package/dist/sessions/assumptions.js.map +1 -0
  544. package/dist/sessions/briefing.js +377 -0
  545. package/dist/sessions/briefing.js.map +1 -0
  546. package/dist/sessions/context-alert.js +222 -0
  547. package/dist/sessions/context-alert.js.map +1 -0
  548. package/dist/sessions/context-inject.js +61 -0
  549. package/dist/sessions/context-inject.js.map +1 -0
  550. package/dist/sessions/context-monitor.js +98 -0
  551. package/dist/sessions/context-monitor.js.map +1 -0
  552. package/dist/sessions/decisions.js +65 -0
  553. package/dist/sessions/decisions.js.map +1 -0
  554. package/dist/sessions/find.js +65 -0
  555. package/dist/sessions/find.js.map +1 -0
  556. package/dist/sessions/handoff.js +328 -0
  557. package/dist/sessions/handoff.js.map +1 -0
  558. package/dist/sessions/hitl-warnings.js +254 -0
  559. package/dist/sessions/hitl-warnings.js.map +1 -0
  560. package/dist/sessions/index.js +327 -0
  561. package/dist/sessions/index.js.map +1 -0
  562. package/dist/sessions/session-archive.js +40 -0
  563. package/dist/sessions/session-archive.js.map +1 -0
  564. package/dist/sessions/session-cleanup.js +59 -0
  565. package/dist/sessions/session-cleanup.js.map +1 -0
  566. package/dist/sessions/session-drift.js +134 -0
  567. package/dist/sessions/session-drift.js.map +1 -0
  568. package/dist/sessions/session-enforcement.js +144 -0
  569. package/dist/sessions/session-enforcement.js.map +1 -0
  570. package/dist/sessions/session-grade.js +253 -0
  571. package/dist/sessions/session-grade.js.map +1 -0
  572. package/dist/sessions/session-history.js +42 -0
  573. package/dist/sessions/session-history.js.map +1 -0
  574. package/dist/sessions/session-id.js +81 -0
  575. package/dist/sessions/session-id.js.map +1 -0
  576. package/dist/sessions/session-memory-bridge.d.ts +16 -10
  577. package/dist/sessions/session-memory-bridge.d.ts.map +1 -1
  578. package/dist/sessions/session-memory-bridge.js +30 -0
  579. package/dist/sessions/session-memory-bridge.js.map +1 -0
  580. package/dist/sessions/session-show.js +24 -0
  581. package/dist/sessions/session-show.js.map +1 -0
  582. package/dist/sessions/session-stats.js +69 -0
  583. package/dist/sessions/session-stats.js.map +1 -0
  584. package/dist/sessions/session-suspend.js +39 -0
  585. package/dist/sessions/session-suspend.js.map +1 -0
  586. package/dist/sessions/session-switch.js +51 -0
  587. package/dist/sessions/session-switch.js.map +1 -0
  588. package/dist/sessions/session-view.js +76 -0
  589. package/dist/sessions/session-view.js.map +1 -0
  590. package/dist/sessions/snapshot.js +213 -0
  591. package/dist/sessions/snapshot.js.map +1 -0
  592. package/dist/sessions/statusline-setup.js +85 -0
  593. package/dist/sessions/statusline-setup.js.map +1 -0
  594. package/dist/sessions/types.js +8 -0
  595. package/dist/sessions/types.js.map +1 -0
  596. package/dist/skills/agents/config.js +94 -0
  597. package/dist/skills/agents/config.js.map +1 -0
  598. package/dist/skills/agents/install.js +116 -0
  599. package/dist/skills/agents/install.js.map +1 -0
  600. package/dist/skills/agents/registry.js +161 -0
  601. package/dist/skills/agents/registry.js.map +1 -0
  602. package/dist/skills/discovery.js +333 -0
  603. package/dist/skills/discovery.js.map +1 -0
  604. package/dist/skills/dispatch.js +347 -0
  605. package/dist/skills/dispatch.js.map +1 -0
  606. package/dist/skills/dynamic-skill-generator.js +87 -0
  607. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  608. package/dist/skills/index.js +44 -0
  609. package/dist/skills/index.js.map +1 -0
  610. package/dist/skills/injection/subagent.js +195 -0
  611. package/dist/skills/injection/subagent.js.map +1 -0
  612. package/dist/skills/injection/token.js +260 -0
  613. package/dist/skills/injection/token.js.map +1 -0
  614. package/dist/skills/install.js +40 -0
  615. package/dist/skills/install.js.map +1 -0
  616. package/dist/skills/manifests/contribution.js +175 -0
  617. package/dist/skills/manifests/contribution.js.map +1 -0
  618. package/dist/skills/manifests/research.js +281 -0
  619. package/dist/skills/manifests/research.js.map +1 -0
  620. package/dist/skills/manifests/resolver.js +146 -0
  621. package/dist/skills/manifests/resolver.js.map +1 -0
  622. package/dist/skills/marketplace.js +90 -0
  623. package/dist/skills/marketplace.js.map +1 -0
  624. package/dist/skills/orchestrator/spawn.js +178 -0
  625. package/dist/skills/orchestrator/spawn.js.map +1 -0
  626. package/dist/skills/orchestrator/startup.js +451 -0
  627. package/dist/skills/orchestrator/startup.js.map +1 -0
  628. package/dist/skills/orchestrator/validator.js +301 -0
  629. package/dist/skills/orchestrator/validator.js.map +1 -0
  630. package/dist/skills/precedence-integration.js +73 -0
  631. package/dist/skills/precedence-integration.js.map +1 -0
  632. package/dist/skills/precedence-types.js +16 -0
  633. package/dist/skills/precedence-types.js.map +1 -0
  634. package/dist/skills/routing-table.js +63 -0
  635. package/dist/skills/routing-table.js.map +1 -0
  636. package/dist/skills/skill-paths.js +217 -0
  637. package/dist/skills/skill-paths.js.map +1 -0
  638. package/dist/skills/test-utility.js +55 -0
  639. package/dist/skills/test-utility.js.map +1 -0
  640. package/dist/skills/types.js +118 -0
  641. package/dist/skills/types.js.map +1 -0
  642. package/dist/skills/validation.js +183 -0
  643. package/dist/skills/validation.js.map +1 -0
  644. package/dist/skills/version.js +57 -0
  645. package/dist/skills/version.js.map +1 -0
  646. package/dist/snapshot/index.js +188 -0
  647. package/dist/snapshot/index.js.map +1 -0
  648. package/dist/spawn/adapter-registry.js +246 -0
  649. package/dist/spawn/adapter-registry.js.map +1 -0
  650. package/dist/spawn/index.js +10 -0
  651. package/dist/spawn/index.js.map +1 -0
  652. package/dist/stats/index.d.ts.map +1 -1
  653. package/dist/stats/index.js +350 -0
  654. package/dist/stats/index.js.map +1 -0
  655. package/dist/stats/workflow-telemetry.js +400 -0
  656. package/dist/stats/workflow-telemetry.js.map +1 -0
  657. package/dist/sticky/archive.js +47 -0
  658. package/dist/sticky/archive.js.map +1 -0
  659. package/dist/sticky/convert.js +235 -0
  660. package/dist/sticky/convert.js.map +1 -0
  661. package/dist/sticky/create.js +48 -0
  662. package/dist/sticky/create.js.map +1 -0
  663. package/dist/sticky/id.js +35 -0
  664. package/dist/sticky/id.js.map +1 -0
  665. package/dist/sticky/index.js +16 -0
  666. package/dist/sticky/index.js.map +1 -0
  667. package/dist/sticky/list.js +57 -0
  668. package/dist/sticky/list.js.map +1 -0
  669. package/dist/sticky/purge.js +45 -0
  670. package/dist/sticky/purge.js.map +1 -0
  671. package/dist/sticky/show.js +42 -0
  672. package/dist/sticky/show.js.map +1 -0
  673. package/dist/sticky/types.js +10 -0
  674. package/dist/sticky/types.js.map +1 -0
  675. package/dist/store/agent-registry-accessor.js +886 -0
  676. package/dist/store/agent-registry-accessor.js.map +1 -0
  677. package/dist/store/api-key-kdf.js +84 -0
  678. package/dist/store/api-key-kdf.js.map +1 -0
  679. package/dist/store/atomic.js +167 -0
  680. package/dist/store/atomic.js.map +1 -0
  681. package/dist/store/backup-crypto.js +184 -0
  682. package/dist/store/backup-crypto.js.map +1 -0
  683. package/dist/store/backup-pack.js +581 -0
  684. package/dist/store/backup-pack.js.map +1 -0
  685. package/dist/store/backup-unpack.js +449 -0
  686. package/dist/store/backup-unpack.js.map +1 -0
  687. package/dist/store/backup.js +94 -0
  688. package/dist/store/backup.js.map +1 -0
  689. package/dist/store/brain-accessor.d.ts +7 -0
  690. package/dist/store/brain-accessor.d.ts.map +1 -1
  691. package/dist/store/brain-accessor.js +429 -0
  692. package/dist/store/brain-accessor.js.map +1 -0
  693. package/dist/store/brain-schema.d.ts +712 -45
  694. package/dist/store/brain-schema.d.ts.map +1 -1
  695. package/dist/store/brain-schema.js +549 -0
  696. package/dist/store/brain-schema.js.map +1 -0
  697. package/dist/store/brain-sqlite.d.ts.map +1 -1
  698. package/dist/store/brain-sqlite.js +257 -0
  699. package/dist/store/brain-sqlite.js.map +1 -0
  700. package/dist/store/cache.js +168 -0
  701. package/dist/store/cache.js.map +1 -0
  702. package/dist/store/chain-schema.js +51 -0
  703. package/dist/store/chain-schema.js.map +1 -0
  704. package/dist/store/cleanup-legacy.js +171 -0
  705. package/dist/store/cleanup-legacy.js.map +1 -0
  706. package/dist/store/conduit-sqlite.js +570 -0
  707. package/dist/store/conduit-sqlite.js.map +1 -0
  708. package/dist/store/converters.js +124 -0
  709. package/dist/store/converters.js.map +1 -0
  710. package/dist/store/cross-db-cleanup.js +319 -0
  711. package/dist/store/cross-db-cleanup.js.map +1 -0
  712. package/dist/store/data-accessor.js +26 -0
  713. package/dist/store/data-accessor.js.map +1 -0
  714. package/dist/store/data-safety-central.js +269 -0
  715. package/dist/store/data-safety-central.js.map +1 -0
  716. package/dist/store/data-safety.js +274 -0
  717. package/dist/store/data-safety.js.map +1 -0
  718. package/dist/store/db-helpers.js +224 -0
  719. package/dist/store/db-helpers.js.map +1 -0
  720. package/dist/store/export.js +155 -0
  721. package/dist/store/export.js.map +1 -0
  722. package/dist/store/file-utils.js +270 -0
  723. package/dist/store/file-utils.js.map +1 -0
  724. package/dist/store/git-checkpoint.js +365 -0
  725. package/dist/store/git-checkpoint.js.map +1 -0
  726. package/dist/store/global-salt.js +147 -0
  727. package/dist/store/global-salt.js.map +1 -0
  728. package/dist/store/import-logging.js +139 -0
  729. package/dist/store/import-logging.js.map +1 -0
  730. package/dist/store/import-remap.js +145 -0
  731. package/dist/store/import-remap.js.map +1 -0
  732. package/dist/store/import-sort.js +121 -0
  733. package/dist/store/import-sort.js.map +1 -0
  734. package/dist/store/index.js +29 -0
  735. package/dist/store/index.js.map +1 -0
  736. package/dist/store/json.js +208 -0
  737. package/dist/store/json.js.map +1 -0
  738. package/dist/store/lifecycle-store.js +249 -0
  739. package/dist/store/lifecycle-store.js.map +1 -0
  740. package/dist/store/lock.js +70 -0
  741. package/dist/store/lock.js.map +1 -0
  742. package/dist/store/migrate-signaldock-to-conduit.js +562 -0
  743. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  744. package/dist/store/migration-manager.d.ts +5 -1
  745. package/dist/store/migration-manager.d.ts.map +1 -1
  746. package/dist/store/migration-manager.js +288 -0
  747. package/dist/store/migration-manager.js.map +1 -0
  748. package/dist/store/migration-sqlite.js +676 -0
  749. package/dist/store/migration-sqlite.js.map +1 -0
  750. package/dist/store/nexus-schema.d.ts +480 -2
  751. package/dist/store/nexus-schema.d.ts.map +1 -1
  752. package/dist/store/nexus-schema.js +268 -0
  753. package/dist/store/nexus-schema.js.map +1 -0
  754. package/dist/store/nexus-sqlite.js +242 -0
  755. package/dist/store/nexus-sqlite.js.map +1 -0
  756. package/dist/store/nexus-validation-schemas.js +40 -0
  757. package/dist/store/nexus-validation-schemas.js.map +1 -0
  758. package/dist/store/parsers.js +37 -0
  759. package/dist/store/parsers.js.map +1 -0
  760. package/dist/store/project-detect.js +457 -0
  761. package/dist/store/project-detect.js.map +1 -0
  762. package/dist/store/provider.js +101 -0
  763. package/dist/store/provider.js.map +1 -0
  764. package/dist/store/regenerators.js +207 -0
  765. package/dist/store/regenerators.js.map +1 -0
  766. package/dist/store/restore-conflict-report.js +206 -0
  767. package/dist/store/restore-conflict-report.js.map +1 -0
  768. package/dist/store/restore-json-merge.js +454 -0
  769. package/dist/store/restore-json-merge.js.map +1 -0
  770. package/dist/store/safety-data-accessor.js +257 -0
  771. package/dist/store/safety-data-accessor.js.map +1 -0
  772. package/dist/store/schema.js +7 -0
  773. package/dist/store/schema.js.map +1 -0
  774. package/dist/store/session-store.js +219 -0
  775. package/dist/store/session-store.js.map +1 -0
  776. package/dist/store/signaldock-sqlite.js +550 -0
  777. package/dist/store/signaldock-sqlite.js.map +1 -0
  778. package/dist/store/sqlite-backup.js +498 -0
  779. package/dist/store/sqlite-backup.js.map +1 -0
  780. package/dist/store/sqlite-data-accessor.js +787 -0
  781. package/dist/store/sqlite-data-accessor.js.map +1 -0
  782. package/dist/store/sqlite.js +483 -0
  783. package/dist/store/sqlite.js.map +1 -0
  784. package/dist/store/status-registry.js +8 -0
  785. package/dist/store/status-registry.js.map +1 -0
  786. package/dist/store/t310-readiness.js +115 -0
  787. package/dist/store/t310-readiness.js.map +1 -0
  788. package/dist/store/task-store.js +358 -0
  789. package/dist/store/task-store.js.map +1 -0
  790. package/dist/store/tasks-schema.d.ts +10 -10
  791. package/dist/store/tasks-schema.js +610 -0
  792. package/dist/store/tasks-schema.js.map +1 -0
  793. package/dist/store/typed-query.js +15 -0
  794. package/dist/store/typed-query.js.map +1 -0
  795. package/dist/store/validation-schemas.d.ts +50 -34
  796. package/dist/store/validation-schemas.d.ts.map +1 -1
  797. package/dist/store/validation-schemas.js +278 -0
  798. package/dist/store/validation-schemas.js.map +1 -0
  799. package/dist/system/archive-analytics.js +277 -0
  800. package/dist/system/archive-analytics.js.map +1 -0
  801. package/dist/system/archive-stats.js +64 -0
  802. package/dist/system/archive-stats.js.map +1 -0
  803. package/dist/system/audit.js +145 -0
  804. package/dist/system/audit.js.map +1 -0
  805. package/dist/system/backup.js +280 -0
  806. package/dist/system/backup.js.map +1 -0
  807. package/dist/system/cleanup.js +134 -0
  808. package/dist/system/cleanup.js.map +1 -0
  809. package/dist/system/dependencies.d.ts +43 -0
  810. package/dist/system/dependencies.d.ts.map +1 -0
  811. package/dist/system/dependencies.js +466 -0
  812. package/dist/system/dependencies.js.map +1 -0
  813. package/dist/system/health.d.ts +3 -0
  814. package/dist/system/health.d.ts.map +1 -1
  815. package/dist/system/health.js +1206 -0
  816. package/dist/system/health.js.map +1 -0
  817. package/dist/system/index.js +18 -0
  818. package/dist/system/index.js.map +1 -0
  819. package/dist/system/inject-generate.js +122 -0
  820. package/dist/system/inject-generate.js.map +1 -0
  821. package/dist/system/labels.js +38 -0
  822. package/dist/system/labels.js.map +1 -0
  823. package/dist/system/metrics.js +61 -0
  824. package/dist/system/metrics.js.map +1 -0
  825. package/dist/system/migrate.js +43 -0
  826. package/dist/system/migrate.js.map +1 -0
  827. package/dist/system/platform-paths.js +80 -0
  828. package/dist/system/platform-paths.js.map +1 -0
  829. package/dist/system/runtime.js +161 -0
  830. package/dist/system/runtime.js.map +1 -0
  831. package/dist/system/safestop.js +89 -0
  832. package/dist/system/safestop.js.map +1 -0
  833. package/dist/system/storage-preflight.js +123 -0
  834. package/dist/system/storage-preflight.js.map +1 -0
  835. package/dist/task-work/index.js +159 -0
  836. package/dist/task-work/index.js.map +1 -0
  837. package/dist/tasks/add.js +837 -0
  838. package/dist/tasks/add.js.map +1 -0
  839. package/dist/tasks/analyze.js +85 -0
  840. package/dist/tasks/analyze.js.map +1 -0
  841. package/dist/tasks/archive.js +90 -0
  842. package/dist/tasks/archive.js.map +1 -0
  843. package/dist/tasks/atomicity.js +83 -0
  844. package/dist/tasks/atomicity.js.map +1 -0
  845. package/dist/tasks/cancel-ops.js +83 -0
  846. package/dist/tasks/cancel-ops.js.map +1 -0
  847. package/dist/tasks/complete.d.ts.map +1 -1
  848. package/dist/tasks/complete.js +229 -0
  849. package/dist/tasks/complete.js.map +1 -0
  850. package/dist/tasks/crossref-extract.js +73 -0
  851. package/dist/tasks/crossref-extract.js.map +1 -0
  852. package/dist/tasks/delete-preview.js +192 -0
  853. package/dist/tasks/delete-preview.js.map +1 -0
  854. package/dist/tasks/delete.js +120 -0
  855. package/dist/tasks/delete.js.map +1 -0
  856. package/dist/tasks/deletion-strategy.js +200 -0
  857. package/dist/tasks/deletion-strategy.js.map +1 -0
  858. package/dist/tasks/dependency-check.js +278 -0
  859. package/dist/tasks/dependency-check.js.map +1 -0
  860. package/dist/tasks/deps-ready.js +32 -0
  861. package/dist/tasks/deps-ready.js.map +1 -0
  862. package/dist/tasks/enforcement.js +86 -0
  863. package/dist/tasks/enforcement.js.map +1 -0
  864. package/dist/tasks/epic-enforcement.js +294 -0
  865. package/dist/tasks/epic-enforcement.js.map +1 -0
  866. package/dist/tasks/find.js +163 -0
  867. package/dist/tasks/find.js.map +1 -0
  868. package/dist/tasks/graph-cache.js +127 -0
  869. package/dist/tasks/graph-cache.js.map +1 -0
  870. package/dist/tasks/graph-ops.d.ts.map +1 -1
  871. package/dist/tasks/graph-ops.js +173 -0
  872. package/dist/tasks/graph-ops.js.map +1 -0
  873. package/dist/tasks/graph-rag.js +328 -0
  874. package/dist/tasks/graph-rag.js.map +1 -0
  875. package/dist/tasks/hierarchy-policy.js +149 -0
  876. package/dist/tasks/hierarchy-policy.js.map +1 -0
  877. package/dist/tasks/hierarchy.js +185 -0
  878. package/dist/tasks/hierarchy.js.map +1 -0
  879. package/dist/tasks/id-generator.js +65 -0
  880. package/dist/tasks/id-generator.js.map +1 -0
  881. package/dist/tasks/index.js +14 -0
  882. package/dist/tasks/index.js.map +1 -0
  883. package/dist/tasks/labels.js +55 -0
  884. package/dist/tasks/labels.js.map +1 -0
  885. package/dist/tasks/list.js +75 -0
  886. package/dist/tasks/list.js.map +1 -0
  887. package/dist/tasks/phase-tracking.js +133 -0
  888. package/dist/tasks/phase-tracking.js.map +1 -0
  889. package/dist/tasks/pipeline-stage.js +248 -0
  890. package/dist/tasks/pipeline-stage.js.map +1 -0
  891. package/dist/tasks/plan.js +268 -0
  892. package/dist/tasks/plan.js.map +1 -0
  893. package/dist/tasks/relates.js +101 -0
  894. package/dist/tasks/relates.js.map +1 -0
  895. package/dist/tasks/show.js +83 -0
  896. package/dist/tasks/show.js.map +1 -0
  897. package/dist/tasks/size-weighting.js +86 -0
  898. package/dist/tasks/size-weighting.js.map +1 -0
  899. package/dist/tasks/staleness.js +86 -0
  900. package/dist/tasks/staleness.js.map +1 -0
  901. package/dist/tasks/task-ops.js +1741 -0
  902. package/dist/tasks/task-ops.js.map +1 -0
  903. package/dist/tasks/update.js +303 -0
  904. package/dist/tasks/update.js.map +1 -0
  905. package/dist/templates/index.js +10 -0
  906. package/dist/templates/index.js.map +1 -0
  907. package/dist/templates/parser.js +254 -0
  908. package/dist/templates/parser.js.map +1 -0
  909. package/dist/ui/aliases.js +153 -0
  910. package/dist/ui/aliases.js.map +1 -0
  911. package/dist/ui/changelog.js +184 -0
  912. package/dist/ui/changelog.js.map +1 -0
  913. package/dist/ui/command-registry.js +168 -0
  914. package/dist/ui/command-registry.js.map +1 -0
  915. package/dist/ui/flags.js +94 -0
  916. package/dist/ui/flags.js.map +1 -0
  917. package/dist/ui/index.js +24 -0
  918. package/dist/ui/index.js.map +1 -0
  919. package/dist/upgrade.js +1148 -0
  920. package/dist/upgrade.js.map +1 -0
  921. package/dist/validation/chain-validation.js +146 -0
  922. package/dist/validation/chain-validation.js.map +1 -0
  923. package/dist/validation/compliance.js +155 -0
  924. package/dist/validation/compliance.js.map +1 -0
  925. package/dist/validation/docs-sync.js +212 -0
  926. package/dist/validation/docs-sync.js.map +1 -0
  927. package/dist/validation/doctor/checks.js +1069 -0
  928. package/dist/validation/doctor/checks.js.map +1 -0
  929. package/dist/validation/doctor/index.js +9 -0
  930. package/dist/validation/doctor/index.js.map +1 -0
  931. package/dist/validation/doctor/project-cache.js +160 -0
  932. package/dist/validation/doctor/project-cache.js.map +1 -0
  933. package/dist/validation/doctor/utils.js +155 -0
  934. package/dist/validation/doctor/utils.js.map +1 -0
  935. package/dist/validation/engine.js +914 -0
  936. package/dist/validation/engine.js.map +1 -0
  937. package/dist/validation/gap-check.js +175 -0
  938. package/dist/validation/gap-check.js.map +1 -0
  939. package/dist/validation/index.js +40 -0
  940. package/dist/validation/index.js.map +1 -0
  941. package/dist/validation/manifest.js +237 -0
  942. package/dist/validation/manifest.js.map +1 -0
  943. package/dist/validation/operation-gate-validators.js +724 -0
  944. package/dist/validation/operation-gate-validators.js.map +1 -0
  945. package/dist/validation/operation-verification-gates.js +532 -0
  946. package/dist/validation/operation-verification-gates.js.map +1 -0
  947. package/dist/validation/param-utils.js +141 -0
  948. package/dist/validation/param-utils.js.map +1 -0
  949. package/dist/validation/protocol-common.js +300 -0
  950. package/dist/validation/protocol-common.js.map +1 -0
  951. package/dist/validation/protocols/_shared.js +82 -0
  952. package/dist/validation/protocols/_shared.js.map +1 -0
  953. package/dist/validation/protocols/architecture-decision.js +31 -0
  954. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  955. package/dist/validation/protocols/artifact-publish.js +28 -0
  956. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  957. package/dist/validation/protocols/consensus.js +41 -0
  958. package/dist/validation/protocols/consensus.js.map +1 -0
  959. package/dist/validation/protocols/contribution.js +27 -0
  960. package/dist/validation/protocols/contribution.js.map +1 -0
  961. package/dist/validation/protocols/decomposition.js +28 -0
  962. package/dist/validation/protocols/decomposition.js.map +1 -0
  963. package/dist/validation/protocols/implementation.js +24 -0
  964. package/dist/validation/protocols/implementation.js.map +1 -0
  965. package/dist/validation/protocols/provenance.js +29 -0
  966. package/dist/validation/protocols/provenance.js.map +1 -0
  967. package/dist/validation/protocols/release.js +29 -0
  968. package/dist/validation/protocols/release.js.map +1 -0
  969. package/dist/validation/protocols/research.js +24 -0
  970. package/dist/validation/protocols/research.js.map +1 -0
  971. package/dist/validation/protocols/specification.js +27 -0
  972. package/dist/validation/protocols/specification.js.map +1 -0
  973. package/dist/validation/protocols/testing.js +30 -0
  974. package/dist/validation/protocols/testing.js.map +1 -0
  975. package/dist/validation/protocols/validation.js +30 -0
  976. package/dist/validation/protocols/validation.js.map +1 -0
  977. package/dist/validation/schema-integrity.js +170 -0
  978. package/dist/validation/schema-integrity.js.map +1 -0
  979. package/dist/validation/schema-validator.js +176 -0
  980. package/dist/validation/schema-validator.js.map +1 -0
  981. package/dist/validation/validate-ops.js +937 -0
  982. package/dist/validation/validate-ops.js.map +1 -0
  983. package/dist/validation/validation-rules.js +226 -0
  984. package/dist/validation/validation-rules.js.map +1 -0
  985. package/dist/validation/verification.js +321 -0
  986. package/dist/validation/verification.js.map +1 -0
  987. package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
  988. package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
  989. package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
  990. package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
  991. package/package.json +19 -19
  992. package/src/bootstrap.ts +124 -0
  993. package/src/code/index.ts +20 -4
  994. package/src/code/parser.ts +310 -110
  995. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +19 -45
  996. package/src/hooks/handlers/__tests__/session-hooks.test.ts +42 -54
  997. package/src/hooks/handlers/index.ts +6 -0
  998. package/src/hooks/handlers/intelligence-hooks.ts +80 -0
  999. package/src/hooks/handlers/session-hooks.ts +52 -33
  1000. package/src/hooks/handlers/watchdog-hooks.ts +187 -0
  1001. package/src/index.ts +14 -0
  1002. package/src/injection.ts +41 -2
  1003. package/src/internal.ts +68 -9
  1004. package/src/lib/tree-sitter-languages.ts +11 -7
  1005. package/src/memory/__tests__/auto-extract.test.ts +20 -82
  1006. package/src/memory/__tests__/embedding-pipeline.test.ts +389 -0
  1007. package/src/memory/auto-extract.ts +34 -120
  1008. package/src/memory/brain-backfill.ts +471 -0
  1009. package/src/memory/brain-consolidator.ts +344 -0
  1010. package/src/memory/brain-lifecycle.ts +636 -2
  1011. package/src/memory/brain-purge.ts +315 -0
  1012. package/src/memory/brain-retrieval.ts +486 -2
  1013. package/src/memory/brain-search.ts +61 -10
  1014. package/src/memory/decisions.ts +96 -3
  1015. package/src/memory/engine-compat.ts +177 -11
  1016. package/src/memory/extraction-gate.ts +574 -0
  1017. package/src/memory/graph-auto-populate.ts +173 -0
  1018. package/src/memory/graph-queries.ts +424 -0
  1019. package/src/memory/index.ts +6 -2
  1020. package/src/memory/learnings.ts +87 -7
  1021. package/src/memory/patterns.ts +95 -13
  1022. package/src/memory/quality-scoring.ts +257 -0
  1023. package/src/nexus/nexus-bridge.ts +444 -0
  1024. package/src/scaffold.ts +42 -0
  1025. package/src/sessions/__tests__/session-memory-bridge.test.ts +27 -49
  1026. package/src/sessions/session-memory-bridge.ts +19 -47
  1027. package/src/stats/index.ts +11 -3
  1028. package/src/store/__tests__/brain-accessor-pageindex.test.ts +93 -22
  1029. package/src/store/brain-accessor.ts +48 -2
  1030. package/src/store/brain-schema.ts +403 -13
  1031. package/src/store/brain-sqlite.ts +90 -0
  1032. package/src/store/migration-manager.ts +83 -12
  1033. package/src/store/nexus-schema.ts +257 -3
  1034. package/src/system/dependencies.ts +534 -0
  1035. package/src/system/health.ts +143 -22
  1036. package/src/tasks/complete.ts +40 -0
  1037. package/src/tasks/graph-ops.ts +1 -0
  1038. package/src/tasks/task-ops.ts +1 -1
  1039. package/templates/CLEO-INJECTION.md +15 -0
@@ -14,6 +14,57 @@ import { index, integer, primaryKey, real, sqliteTable, text } from 'drizzle-orm
14
14
 
15
15
  // === ENUM CONSTANTS ===
16
16
 
17
+ /**
18
+ * Memory retention tiers for the tiered cognitive memory model (T549).
19
+ *
20
+ * - `short` — Session-scoped working context. Volatile; auto-evicted after 48h if not promoted.
21
+ * - `medium` — Project-scoped verified facts. Retained for weeks; decays if unverified.
22
+ * - `long` — Architectural bedrock. Permanent; supersession-only eviction.
23
+ *
24
+ * NULL semantics for legacy rows: treat NULL as 'medium' at query time.
25
+ * (Legacy rows survived the T523 purge, so medium is a safe tier assumption.)
26
+ */
27
+ export const BRAIN_MEMORY_TIERS = ['short', 'medium', 'long'] as const;
28
+
29
+ /** Discriminated union of all memory retention tiers. */
30
+ export type BrainMemoryTier = (typeof BRAIN_MEMORY_TIERS)[number];
31
+
32
+ /**
33
+ * Cognitive type taxonomy for the tiered memory model (T549).
34
+ *
35
+ * Uses `BRAIN_COGNITIVE_TYPES` (not `BRAIN_MEMORY_TYPES`) to avoid collision
36
+ * with the link table enum `BRAIN_MEMORY_TYPES` (which stores entity type names).
37
+ *
38
+ * - `semantic` — Declarative facts: "what is true about this project"
39
+ * → brain_decisions (always), brain_learnings (default)
40
+ * - `episodic` — Event records: "what happened and when"
41
+ * → brain_observations (always), brain_learnings (transcript-derived)
42
+ * - `procedural` — Process knowledge: "how to do things"
43
+ * → brain_patterns (always)
44
+ */
45
+ export const BRAIN_COGNITIVE_TYPES = ['semantic', 'episodic', 'procedural'] as const;
46
+
47
+ /** Discriminated union of all cognitive memory types. */
48
+ export type BrainCognitiveType = (typeof BRAIN_COGNITIVE_TYPES)[number];
49
+
50
+ /**
51
+ * Source reliability levels for the tiered memory model (T549).
52
+ *
53
+ * Separate dimension from content `quality_score` — captures source trustworthiness.
54
+ * Each level drives a quality multiplier applied at scoring time.
55
+ *
56
+ * | Level | Meaning | Quality multiplier |
57
+ * |---------------|-----------------------------------------|--------------------|
58
+ * | `owner` | Owner explicitly stated this fact | 1.0 |
59
+ * | `task-outcome`| Verified by completed task with result | 0.90 |
60
+ * | `agent` | Agent-inferred during work (default) | 0.70 |
61
+ * | `speculative` | Agent hypothesis, not yet corroborated | 0.40 |
62
+ */
63
+ export const BRAIN_SOURCE_CONFIDENCE = ['owner', 'task-outcome', 'agent', 'speculative'] as const;
64
+
65
+ /** Discriminated union of all source confidence levels. */
66
+ export type BrainSourceConfidence = (typeof BRAIN_SOURCE_CONFIDENCE)[number];
67
+
17
68
  /** Decision types from ADR-009. */
18
69
  export const BRAIN_DECISION_TYPES = [
19
70
  'architecture',
@@ -94,8 +145,54 @@ export const brainDecisions = sqliteTable(
94
145
  contextEpicId: text('context_epic_id'), // soft FK to tasks.id in tasks.db
95
146
  contextTaskId: text('context_task_id'), // soft FK to tasks.id in tasks.db
96
147
  contextPhase: text('context_phase'),
148
+ /**
149
+ * Quality score: 0.0 (noise) – 1.0 (canonical). Null for legacy entries.
150
+ * Computed at insert time from confidence, content richness, and context.
151
+ * Entries below 0.3 are excluded from search results (T531).
152
+ */
153
+ qualityScore: real('quality_score'),
97
154
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
98
155
  updatedAt: text('updated_at'),
156
+
157
+ // T549: Tiered + Typed Memory columns
158
+
159
+ /** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
160
+ memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
161
+
162
+ /** Cognitive type. Decisions are always 'semantic' (declarative architectural facts). */
163
+ memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('semantic'),
164
+
165
+ /**
166
+ * Ground-truth verification flag.
167
+ * false = agent-inferred, pending verification.
168
+ * true = confirmed via owner statement, task outcome, corroboration, or manual `cleo memory verify`.
169
+ */
170
+ verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
171
+
172
+ /**
173
+ * Bitemporal: when this decision became valid (ISO 8601 text).
174
+ * Defaults to creation time. Can be backdated for historical facts.
175
+ */
176
+ validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
177
+
178
+ /**
179
+ * Bitemporal: when this decision stopped being valid.
180
+ * NULL = currently valid. Prefer `supersedes` graph edges for decision supersession
181
+ * (ADR-009); this column is a convenience gate for bulk eviction queries.
182
+ */
183
+ invalidAt: text('invalid_at'),
184
+
185
+ /**
186
+ * Source reliability level — separate from content quality_score (T549 §3.1.5).
187
+ * Drives quality multiplier at scoring time.
188
+ */
189
+ sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
190
+
191
+ /**
192
+ * Number of times this decision has been cited/retrieved (T549 CONFLICT-03).
193
+ * Used by the consolidator for citation-based medium→long promotion.
194
+ */
195
+ citationCount: integer('citation_count').notNull().default(0),
99
196
  },
100
197
  (table) => [
101
198
  index('idx_brain_decisions_type').on(table.type),
@@ -103,6 +200,13 @@ export const brainDecisions = sqliteTable(
103
200
  index('idx_brain_decisions_outcome').on(table.outcome),
104
201
  index('idx_brain_decisions_context_epic').on(table.contextEpicId),
105
202
  index('idx_brain_decisions_context_task').on(table.contextTaskId),
203
+ index('idx_brain_decisions_quality').on(table.qualityScore),
204
+ // T549 indexes
205
+ index('idx_brain_decisions_tier').on(table.memoryTier),
206
+ index('idx_brain_decisions_mem_type').on(table.memoryType),
207
+ index('idx_brain_decisions_verified').on(table.verified),
208
+ index('idx_brain_decisions_valid_at').on(table.validAt),
209
+ index('idx_brain_decisions_source_conf').on(table.sourceConfidence),
106
210
  ],
107
211
  );
108
212
 
@@ -123,11 +227,63 @@ export const brainPatterns = sqliteTable(
123
227
  examplesJson: text('examples_json').default('[]'),
124
228
  extractedAt: text('extracted_at').notNull().default(sql`(datetime('now'))`),
125
229
  updatedAt: text('updated_at'),
230
+ /**
231
+ * Quality score: 0.0 (noise) – 1.0 (canonical). Null for legacy entries.
232
+ * Computed at insert time from type, content richness, and examples.
233
+ * Entries below 0.3 are excluded from search results (T531).
234
+ */
235
+ qualityScore: real('quality_score'),
236
+
237
+ // T549: Tiered + Typed Memory columns
238
+
239
+ /** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
240
+ memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
241
+
242
+ /** Cognitive type. Patterns are always 'procedural' (process/workflow knowledge). */
243
+ memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('procedural'),
244
+
245
+ /**
246
+ * Ground-truth verification flag.
247
+ * For patterns, this is complementary to frequency+successRate verification.
248
+ * false = agent-inferred. true = confirmed via owner statement or task outcome.
249
+ */
250
+ verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
251
+
252
+ /**
253
+ * Bitemporal: when this pattern became valid (ISO 8601 text).
254
+ * Defaults to extraction time.
255
+ */
256
+ validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
257
+
258
+ /**
259
+ * Bitemporal: when this pattern stopped being valid.
260
+ * NULL = currently valid. Set by consolidator when frequency+successRate drops below threshold.
261
+ */
262
+ invalidAt: text('invalid_at'),
263
+
264
+ /**
265
+ * Source reliability level — separate from content quality_score (T549 §3.1.5).
266
+ * Drives quality multiplier at scoring time.
267
+ */
268
+ sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
269
+
270
+ /**
271
+ * Number of times this pattern has been cited/retrieved (T549 CONFLICT-03).
272
+ * Used by the consolidator for citation-based medium→long promotion.
273
+ */
274
+ citationCount: integer('citation_count').notNull().default(0),
126
275
  },
127
276
  (table) => [
128
277
  index('idx_brain_patterns_type').on(table.type),
129
278
  index('idx_brain_patterns_impact').on(table.impact),
130
279
  index('idx_brain_patterns_frequency').on(table.frequency),
280
+ index('idx_brain_patterns_quality').on(table.qualityScore),
281
+ // T549 indexes
282
+ index('idx_brain_patterns_tier').on(table.memoryTier),
283
+ index('idx_brain_patterns_mem_type').on(table.memoryType),
284
+ index('idx_brain_patterns_verified').on(table.verified),
285
+ index('idx_brain_patterns_valid_at').on(table.validAt),
286
+ index('idx_brain_patterns_source_conf').on(table.sourceConfidence),
131
287
  ],
132
288
  );
133
289
 
@@ -145,10 +301,66 @@ export const brainLearnings = sqliteTable(
145
301
  applicableTypesJson: text('applicable_types_json'),
146
302
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
147
303
  updatedAt: text('updated_at'),
304
+ /**
305
+ * Quality score: 0.0 (noise) – 1.0 (canonical). Null for legacy entries.
306
+ * Computed at insert time from confidence, actionability, and content richness.
307
+ * Entries below 0.3 are excluded from search results (T531).
308
+ */
309
+ qualityScore: real('quality_score'),
310
+
311
+ // T549: Tiered + Typed Memory columns
312
+
313
+ /** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
314
+ memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
315
+
316
+ /**
317
+ * Cognitive type. Learnings are 'semantic' by default (declarative facts).
318
+ * Transcript-derived learnings with source containing 'transcript:ses_' are 'episodic'.
319
+ */
320
+ memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('semantic'),
321
+
322
+ /**
323
+ * Ground-truth verification flag.
324
+ * false = agent-inferred, pending verification.
325
+ * true = confirmed via owner statement, task outcome, corroboration, or manual verify.
326
+ */
327
+ verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
328
+
329
+ /**
330
+ * Bitemporal: when this learning became valid (ISO 8601 text).
331
+ * Defaults to creation time. Facts can change — use invalidAt to retire stale ones.
332
+ */
333
+ validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
334
+
335
+ /**
336
+ * Bitemporal: when this learning stopped being valid.
337
+ * NULL = currently valid. Set by consolidator on contradiction detection or TTL decay.
338
+ */
339
+ invalidAt: text('invalid_at'),
340
+
341
+ /**
342
+ * Source reliability level — separate from content quality_score (T549 §3.1.5).
343
+ * Drives quality multiplier at scoring time.
344
+ */
345
+ sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
346
+
347
+ /**
348
+ * Number of times this learning has been cited/retrieved (T549 CONFLICT-03).
349
+ * Used by the consolidator for citation-based medium→long promotion.
350
+ */
351
+ citationCount: integer('citation_count').notNull().default(0),
148
352
  },
149
353
  (table) => [
150
354
  index('idx_brain_learnings_confidence').on(table.confidence),
151
355
  index('idx_brain_learnings_actionable').on(table.actionable),
356
+ index('idx_brain_learnings_quality').on(table.qualityScore),
357
+ // T549 indexes
358
+ index('idx_brain_learnings_tier').on(table.memoryTier),
359
+ index('idx_brain_learnings_mem_type').on(table.memoryType),
360
+ index('idx_brain_learnings_verified').on(table.verified),
361
+ index('idx_brain_learnings_valid_at').on(table.validAt),
362
+ index('idx_brain_learnings_invalid').on(table.invalidAt),
363
+ index('idx_brain_learnings_source_conf').on(table.sourceConfidence),
152
364
  ],
153
365
  );
154
366
 
@@ -176,8 +388,54 @@ export const brainObservations = sqliteTable(
176
388
  agent: text('agent'), // nullable — null for legacy observations
177
389
  contentHash: text('content_hash'), // SHA-256 prefix for dedup
178
390
  discoveryTokens: integer('discovery_tokens'), // cost to produce this observation
391
+ /**
392
+ * Quality score: 0.0 (noise) – 1.0 (canonical). Null for legacy entries.
393
+ * Computed at insert time from content richness and title length.
394
+ * Entries below 0.3 are excluded from search results (T531).
395
+ */
396
+ qualityScore: real('quality_score'),
179
397
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
180
398
  updatedAt: text('updated_at'),
399
+
400
+ // T549: Tiered + Typed Memory columns
401
+
402
+ /** Memory retention tier. NULL on legacy rows → treat as 'medium' at query time. */
403
+ memoryTier: text('memory_tier', { enum: BRAIN_MEMORY_TIERS }).default('short'),
404
+
405
+ /** Cognitive type. Observations are always 'episodic' (time-anchored event records). */
406
+ memoryType: text('memory_type', { enum: BRAIN_COGNITIVE_TYPES }).default('episodic'),
407
+
408
+ /**
409
+ * Ground-truth verification flag.
410
+ * false = agent-inferred, pending verification.
411
+ * true = confirmed via owner statement, task outcome, corroboration, or manual verify.
412
+ */
413
+ verified: integer('verified', { mode: 'boolean' }).notNull().default(false),
414
+
415
+ /**
416
+ * Bitemporal: when this observation became valid (ISO 8601 text).
417
+ * Defaults to creation time. Can be backdated for historical facts.
418
+ */
419
+ validAt: text('valid_at').notNull().default(sql`(datetime('now'))`),
420
+
421
+ /**
422
+ * Bitemporal: when this observation stopped being valid.
423
+ * NULL = currently valid. Set by consolidator on contradiction detection.
424
+ * Temporal query pattern: WHERE valid_at <= :t AND (invalid_at IS NULL OR invalid_at > :t)
425
+ */
426
+ invalidAt: text('invalid_at'),
427
+
428
+ /**
429
+ * Source reliability level — separate from content quality_score (T549 §3.1.5).
430
+ * Drives quality multiplier at scoring time.
431
+ */
432
+ sourceConfidence: text('source_confidence', { enum: BRAIN_SOURCE_CONFIDENCE }).default('agent'),
433
+
434
+ /**
435
+ * Number of times this observation has been cited/retrieved (T549 CONFLICT-03).
436
+ * Used by the consolidator for citation-based medium→long promotion.
437
+ */
438
+ citationCount: integer('citation_count').notNull().default(0),
181
439
  },
182
440
  (table) => [
183
441
  index('idx_brain_observations_type').on(table.type),
@@ -191,6 +449,15 @@ export const brainObservations = sqliteTable(
191
449
  index('idx_brain_observations_type_project').on(table.type, table.project),
192
450
  // T417: agent provenance index for memory.find --agent filter
193
451
  index('idx_brain_observations_agent').on(table.agent),
452
+ // T531: quality score filter index
453
+ index('idx_brain_observations_quality').on(table.qualityScore),
454
+ // T549 indexes
455
+ index('idx_brain_observations_tier').on(table.memoryTier),
456
+ index('idx_brain_observations_mem_type').on(table.memoryType),
457
+ index('idx_brain_observations_verified').on(table.verified),
458
+ index('idx_brain_observations_valid_at').on(table.validAt),
459
+ index('idx_brain_observations_invalid').on(table.invalidAt),
460
+ index('idx_brain_observations_source_conf').on(table.sourceConfidence),
194
461
  ],
195
462
  );
196
463
 
@@ -244,41 +511,163 @@ export const brainSchemaMeta = sqliteTable('brain_schema_meta', {
244
511
  value: text('value').notNull(),
245
512
  });
246
513
 
247
- // === PAGEINDEX GRAPH TABLES (T5160) ===
514
+ // === PAGEINDEX GRAPH TABLES (T5160, expanded T528) ===
515
+
516
+ /**
517
+ * Node types for the graph-native memory model.
518
+ * Mirrors typed tables (decision, pattern, learning, observation, sticky),
519
+ * adds task provenance (task, session, epic), codebase bridging (file, symbol),
520
+ * and abstract/synthesized types (concept, summary).
521
+ */
522
+ export const BRAIN_NODE_TYPES = [
523
+ // Memory entity types (mirror typed tables)
524
+ 'decision',
525
+ 'pattern',
526
+ 'learning',
527
+ 'observation',
528
+ 'sticky',
529
+ // Task provenance (soft FK into tasks.db)
530
+ 'task',
531
+ 'session',
532
+ 'epic',
533
+ // Codebase integration (bridge to nexus.db code_index)
534
+ 'file',
535
+ 'symbol',
536
+ // Abstract / synthesized
537
+ 'concept',
538
+ 'summary',
539
+ ] as const;
540
+
541
+ /** Discriminated union of all supported brain graph node types. */
542
+ export type BrainNodeType = (typeof BRAIN_NODE_TYPES)[number];
248
543
 
249
- /** Node types for PageIndex graph. */
250
- export const BRAIN_NODE_TYPES = ['task', 'doc', 'file', 'concept'] as const;
544
+ /**
545
+ * Edge types for the graph-native memory model.
546
+ * Covers provenance/derivation, semantic relationships, structural links,
547
+ * and graph bridging between memory entities and codebase nodes.
548
+ */
549
+ export const BRAIN_EDGE_TYPES = [
550
+ // Provenance / derivation
551
+ 'derived_from', // learning ← derived_from ← observation
552
+ 'produced_by', // observation ← produced_by ← session
553
+ 'informed_by', // decision ← informed_by ← pattern
554
+ // Semantic relationship
555
+ 'supports', // observation → supports → decision
556
+ 'contradicts', // observation → contradicts → decision
557
+ 'supersedes', // decision → supersedes → decision (older)
558
+ 'applies_to', // decision/pattern → applies_to → task/file/symbol
559
+ // Structural
560
+ 'documents', // observation → documents → symbol/file
561
+ 'summarizes', // summary → summarizes → observation (consolidation)
562
+ 'part_of', // task → part_of → epic
563
+ // Graph bridging (memory ↔ code)
564
+ 'references', // observation → references → symbol
565
+ 'modified_by', // file → modified_by → session
566
+ ] as const;
251
567
 
252
- /** Edge types for PageIndex graph. */
253
- export const BRAIN_EDGE_TYPES = ['depends_on', 'relates_to', 'implements', 'documents'] as const;
568
+ /** Discriminated union of all supported brain graph edge types. */
569
+ export type BrainEdgeType = (typeof BRAIN_EDGE_TYPES)[number];
254
570
 
255
- /** Documents/concepts as graph nodes for cross-document linking. */
571
+ /**
572
+ * Graph nodes table — the traversable knowledge graph layer.
573
+ *
574
+ * Every entity row in a typed table (decisions, patterns, learnings,
575
+ * observations) gets a corresponding node here. The typed table row is
576
+ * the source of truth; the graph node is the index entry for traversal
577
+ * and cross-entity reasoning.
578
+ *
579
+ * Node ID convention: '<type>:<source-id>'
580
+ * Examples: 'decision:D-abc123', 'observation:O-mntphoj6-0',
581
+ * 'task:T523', 'symbol:src/store/brain-schema.ts::brainPageNodes'
582
+ */
256
583
  export const brainPageNodes = sqliteTable(
257
584
  'brain_page_nodes',
258
585
  {
259
- id: text('id').primaryKey(), // 'task:T5241', 'doc:BRAIN-SPEC', 'file:src/store/brain-schema.ts'
586
+ /** Stable composite ID: '<type>:<source-id>' */
587
+ id: text('id').primaryKey(),
588
+
589
+ /** Discriminated type from BRAIN_NODE_TYPES. */
260
590
  nodeType: text('node_type', { enum: BRAIN_NODE_TYPES }).notNull(),
591
+
592
+ /** Human-readable label (title, name, or generated summary). */
261
593
  label: text('label').notNull(),
262
- metadataJson: text('metadata_json'), // JSON blob for extensible metadata
594
+
595
+ /**
596
+ * Quality score: 0.0 (noise) – 1.0 (canonical).
597
+ * Derived from: source confidence, edge density, age decay, agent provenance.
598
+ * Default 0.5 for unknown provenance; 0.0 triggers exclusion from traversal.
599
+ */
600
+ qualityScore: real('quality_score').notNull().default(0.5),
601
+
602
+ /**
603
+ * SHA-256 prefix (first 16 hex chars) of the canonical content.
604
+ * Computed at insert time; duplicate hashes are rejected.
605
+ * Null for external references (task, session, symbol nodes).
606
+ */
607
+ contentHash: text('content_hash'),
608
+
609
+ /**
610
+ * ISO 8601 timestamp of last activity on this node.
611
+ * Updated when new edges are added, quality changes, or content is revised.
612
+ */
613
+ lastActivityAt: text('last_activity_at').notNull().default(sql`(datetime('now'))`),
614
+
615
+ /**
616
+ * Extensible JSON metadata blob — type-specific payload.
617
+ * decision: { type, confidence, outcome }
618
+ * observation: { sourceType, agent, sessionId }
619
+ * symbol: { filePath, kind, startLine, endLine, language }
620
+ * task: { status, priority, epicId }
621
+ */
622
+ metadataJson: text('metadata_json'),
623
+
263
624
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
625
+ updatedAt: text('updated_at'),
264
626
  },
265
- (table) => [index('idx_brain_nodes_type').on(table.nodeType)],
627
+ (table) => [
628
+ index('idx_brain_nodes_type').on(table.nodeType),
629
+ index('idx_brain_nodes_quality').on(table.qualityScore),
630
+ index('idx_brain_nodes_content_hash').on(table.contentHash),
631
+ index('idx_brain_nodes_last_activity').on(table.lastActivityAt),
632
+ ],
266
633
  );
267
634
 
268
- /** Directed links between graph nodes. */
635
+ /**
636
+ * Graph edges table — directed, typed, weighted, provenance-aware links
637
+ * between brain_page_nodes entries (or external nexus node IDs).
638
+ *
639
+ * The composite primary key (fromId, toId, edgeType) prevents duplicate
640
+ * edges of the same type between the same pair of nodes.
641
+ */
269
642
  export const brainPageEdges = sqliteTable(
270
643
  'brain_page_edges',
271
644
  {
272
- fromId: text('from_id').notNull(),
273
- toId: text('to_id').notNull(),
645
+ fromId: text('from_id').notNull(), // brain_page_nodes.id
646
+ toId: text('to_id').notNull(), // brain_page_nodes.id or nexus node id
274
647
  edgeType: text('edge_type', { enum: BRAIN_EDGE_TYPES }).notNull(),
275
- weight: real('weight').default(1.0),
648
+
649
+ /**
650
+ * Edge weight / confidence: 0.0 – 1.0.
651
+ * Semantic edges use extractor confidence (similarity score).
652
+ * Structural edges use 1.0 (deterministic).
653
+ * Contradiction edges store the overlap score that triggered detection.
654
+ */
655
+ weight: real('weight').notNull().default(1.0),
656
+
657
+ /**
658
+ * Human-readable note on why this edge was emitted.
659
+ * Examples: 'auto:task-complete' | 'auto:session-end' |
660
+ * 'auto:contradiction-detected' | 'auto:consolidation' | 'manual'
661
+ */
662
+ provenance: text('provenance'),
663
+
276
664
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
277
665
  },
278
666
  (table) => [
279
667
  primaryKey({ columns: [table.fromId, table.toId, table.edgeType] }),
280
668
  index('idx_brain_edges_from').on(table.fromId),
281
669
  index('idx_brain_edges_to').on(table.toId),
670
+ index('idx_brain_edges_type').on(table.edgeType),
282
671
  ],
283
672
  );
284
673
 
@@ -300,3 +689,4 @@ export type BrainPageEdgeRow = typeof brainPageEdges.$inferSelect;
300
689
  export type NewBrainPageEdgeRow = typeof brainPageEdges.$inferInsert;
301
690
  export type BrainStickyNoteRow = typeof brainStickyNotes.$inferSelect;
302
691
  export type NewBrainStickyNoteRow = typeof brainStickyNotes.$inferInsert;
692
+ // BrainNodeType and BrainEdgeType are declared alongside their enum arrays above.
@@ -22,6 +22,7 @@ import { getCleoDirAbsolute } from '../paths.js';
22
22
  import * as brainSchema from './brain-schema.js';
23
23
  import {
24
24
  createSafetyBackup,
25
+ ensureColumns,
25
26
  migrateWithRetry,
26
27
  reconcileJournal,
27
28
  tableExists,
@@ -96,6 +97,60 @@ function runBrainMigrations(
96
97
  // Pass nativeDb + existenceTable so migrateWithRetry can auto-reconcile any
97
98
  // partial migration (Scenario 3) that slips through the proactive check above.
98
99
  migrateWithRetry(db, migrationsFolder, nativeDb, 'brain_decisions', 'brain');
100
+
101
+ // Safety net: ensure all columns from T528/T531/T549 exist even if the
102
+ // migration files were never committed to git or the journal was not updated.
103
+ // ensureColumns uses PRAGMA table_info + ALTER TABLE ADD COLUMN — idempotent.
104
+
105
+ // T528: graph schema expansion — quality scoring, content hashing, last-activity.
106
+ // Note: last_activity_at uses nullable text (no non-constant default) because
107
+ // ALTER TABLE ADD COLUMN with datetime('now') default fails on non-empty tables.
108
+ ensureColumns(
109
+ nativeDb,
110
+ 'brain_page_nodes',
111
+ [
112
+ { name: 'quality_score', ddl: 'real DEFAULT 0.5' },
113
+ { name: 'content_hash', ddl: 'text' },
114
+ { name: 'last_activity_at', ddl: 'text' },
115
+ { name: 'updated_at', ddl: 'text' },
116
+ ],
117
+ 'brain',
118
+ );
119
+
120
+ // T531: quality score on typed brain tables
121
+ for (const table of [
122
+ 'brain_decisions',
123
+ 'brain_patterns',
124
+ 'brain_learnings',
125
+ 'brain_observations',
126
+ ] as const) {
127
+ ensureColumns(nativeDb, table, [{ name: 'quality_score', ddl: 'real' }], 'brain');
128
+ }
129
+
130
+ // T549: tiered + typed memory architecture
131
+ for (const table of [
132
+ 'brain_decisions',
133
+ 'brain_patterns',
134
+ 'brain_learnings',
135
+ 'brain_observations',
136
+ ] as const) {
137
+ ensureColumns(
138
+ nativeDb,
139
+ table,
140
+ [
141
+ { name: 'memory_tier', ddl: "text DEFAULT 'short'" },
142
+ { name: 'memory_type', ddl: "text DEFAULT 'episodic'" },
143
+ { name: 'verified', ddl: 'integer NOT NULL DEFAULT 0' },
144
+ // valid_at uses nullable text (no datetime('now') default) because
145
+ // ALTER TABLE ADD COLUMN with non-constant defaults fails on non-empty tables.
146
+ { name: 'valid_at', ddl: 'text' },
147
+ { name: 'invalid_at', ddl: 'text' },
148
+ { name: 'source_confidence', ddl: "text DEFAULT 'agent'" },
149
+ { name: 'citation_count', ddl: 'integer NOT NULL DEFAULT 0' },
150
+ ],
151
+ 'brain',
152
+ );
153
+ }
99
154
  }
100
155
 
101
156
  /**
@@ -142,6 +197,30 @@ export function isBrainVecLoaded(): boolean {
142
197
  return _vecLoaded;
143
198
  }
144
199
 
200
+ /**
201
+ * Initialize the default embedding provider when brain.embedding.enabled is true.
202
+ *
203
+ * Called asynchronously after getBrainDb() completes its synchronous setup.
204
+ * Uses dynamic import to avoid circular dependencies and keep the heavy
205
+ * @huggingface/transformers bundle out of the critical startup path.
206
+ *
207
+ * Best-effort: errors are swallowed by the caller so DB access is never blocked.
208
+ *
209
+ * @task T539
210
+ */
211
+ async function initEmbeddingProvider(cwd?: string): Promise<void> {
212
+ try {
213
+ const { loadConfig } = await import('../config.js');
214
+ const config = await loadConfig(cwd);
215
+ if (config.brain?.embedding?.enabled) {
216
+ const { initDefaultProvider } = await import('../memory/brain-embedding.js');
217
+ await initDefaultProvider();
218
+ }
219
+ } catch {
220
+ // Config load or provider init failed — non-fatal, embedding stays unavailable
221
+ }
222
+ }
223
+
145
224
  /**
146
225
  * Initialize the brain.db SQLite database (lazy, singleton).
147
226
  * Creates the database file and tables if they don't exist.
@@ -200,6 +279,17 @@ export async function getBrainDb(cwd?: string): Promise<NodeSQLiteDatabase<typeo
200
279
 
201
280
  // Set singleton only after migrations complete
202
281
  _db = db;
282
+
283
+ // Wire the default embedding provider when vec is loaded and embedding is enabled.
284
+ // Best-effort, async, never blocks DB access. (T539)
285
+ if (_vecLoaded) {
286
+ setImmediate(() => {
287
+ initEmbeddingProvider(cwd).catch(() => {
288
+ // Non-fatal — embedding will be unavailable until next startup
289
+ });
290
+ });
291
+ }
292
+
203
293
  return db;
204
294
  })();
205
295