@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
package/src/scaffold.ts CHANGED
@@ -1348,6 +1348,48 @@ export function checkMemoryBridge(projectRoot: string): CheckResult {
1348
1348
  };
1349
1349
  }
1350
1350
 
1351
+ /**
1352
+ * Verify .cleo/nexus-bridge.md exists.
1353
+ * Warning level if missing (not failure) — it is auto-generated after `cleo nexus analyze`.
1354
+ *
1355
+ * @param projectRoot - Absolute path to the project root directory
1356
+ * @returns Check result indicating presence of the nexus bridge file
1357
+ *
1358
+ * @remarks
1359
+ * Read-only diagnostic. The nexus bridge is auto-generated from nexus.db
1360
+ * content after `cleo nexus analyze` runs, so its absence is only a warning.
1361
+ *
1362
+ * @example
1363
+ * ```typescript
1364
+ * const check = checkNexusBridge('/my/project');
1365
+ * if (check.status === 'warning') console.log('Run: cleo nexus analyze');
1366
+ * ```
1367
+ */
1368
+ export function checkNexusBridge(projectRoot: string): CheckResult {
1369
+ const cleoDir = getCleoDirAbsolute(projectRoot);
1370
+ const bridgePath = join(cleoDir, 'nexus-bridge.md');
1371
+
1372
+ if (!existsSync(bridgePath)) {
1373
+ return {
1374
+ id: 'nexus_bridge',
1375
+ category: 'scaffold',
1376
+ status: 'warning',
1377
+ message: 'nexus-bridge.md not found',
1378
+ details: { path: bridgePath, exists: false },
1379
+ fix: 'cleo nexus analyze',
1380
+ };
1381
+ }
1382
+
1383
+ return {
1384
+ id: 'nexus_bridge',
1385
+ category: 'scaffold',
1386
+ status: 'passed',
1387
+ message: 'nexus-bridge.md exists',
1388
+ details: { path: bridgePath, exists: true },
1389
+ fix: null,
1390
+ };
1391
+ }
1392
+
1351
1393
  // ── Global (~/.cleo) scaffold functions ──────────────────────────────
1352
1394
 
1353
1395
  /**
@@ -7,6 +7,7 @@
7
7
  import type { Task } from '@cleocode/contracts';
8
8
  import { ExitCode } from '@cleocode/contracts';
9
9
  import { CleoError } from '../errors.js';
10
+ import { getProjectInfoSync } from '../project-info.js';
10
11
  import type { DataAccessor } from '../store/data-accessor.js';
11
12
  import { getAccessor } from '../store/data-accessor.js';
12
13
 
@@ -296,8 +297,14 @@ export async function getDashboard(
296
297
  }
297
298
 
298
299
  const meta = await acc.getMetaValue<import('@cleocode/contracts').ProjectMeta>('project_meta');
299
- const project = meta?.name ?? 'Unknown Project';
300
- const currentPhase = meta?.currentPhase ?? null;
300
+ // Fall back to the legacy 'project' key, then to the directory name from project-info.json
301
+ const legacyMeta = meta
302
+ ? null
303
+ : await acc.getMetaValue<{ name?: string; currentPhase?: string }>('project');
304
+ const resolvedName =
305
+ meta?.name ?? legacyMeta?.name ?? getProjectInfoSync(opts.cwd)?.projectName ?? null;
306
+ const project = resolvedName ?? 'Unknown Project';
307
+ const currentPhase = meta?.currentPhase ?? legacyMeta?.currentPhase ?? null;
301
308
 
302
309
  const focus = await acc.getMetaValue<import('@cleocode/contracts').TaskWorkState>('focus_state');
303
310
  const focusId = focus?.currentTask ?? null;
@@ -311,7 +318,8 @@ export async function getDashboard(
311
318
  (t) =>
312
319
  (t.priority === 'critical' || t.priority === 'high') &&
313
320
  t.status !== 'done' &&
314
- t.status !== 'cancelled',
321
+ t.status !== 'cancelled' &&
322
+ !t.cancelledAt,
315
323
  )
316
324
  .sort((a, b) => {
317
325
  const pDiff =
@@ -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',
@@ -102,6 +153,46 @@ export const brainDecisions = sqliteTable(
102
153
  qualityScore: real('quality_score'),
103
154
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
104
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),
105
196
  },
106
197
  (table) => [
107
198
  index('idx_brain_decisions_type').on(table.type),
@@ -110,6 +201,12 @@ export const brainDecisions = sqliteTable(
110
201
  index('idx_brain_decisions_context_epic').on(table.contextEpicId),
111
202
  index('idx_brain_decisions_context_task').on(table.contextTaskId),
112
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),
113
210
  ],
114
211
  );
115
212
 
@@ -136,12 +233,57 @@ export const brainPatterns = sqliteTable(
136
233
  * Entries below 0.3 are excluded from search results (T531).
137
234
  */
138
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),
139
275
  },
140
276
  (table) => [
141
277
  index('idx_brain_patterns_type').on(table.type),
142
278
  index('idx_brain_patterns_impact').on(table.impact),
143
279
  index('idx_brain_patterns_frequency').on(table.frequency),
144
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),
145
287
  ],
146
288
  );
147
289
 
@@ -165,11 +307,60 @@ export const brainLearnings = sqliteTable(
165
307
  * Entries below 0.3 are excluded from search results (T531).
166
308
  */
167
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),
168
352
  },
169
353
  (table) => [
170
354
  index('idx_brain_learnings_confidence').on(table.confidence),
171
355
  index('idx_brain_learnings_actionable').on(table.actionable),
172
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),
173
364
  ],
174
365
  );
175
366
 
@@ -205,6 +396,46 @@ export const brainObservations = sqliteTable(
205
396
  qualityScore: real('quality_score'),
206
397
  createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
207
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),
208
439
  },
209
440
  (table) => [
210
441
  index('idx_brain_observations_type').on(table.type),
@@ -220,6 +451,13 @@ export const brainObservations = sqliteTable(
220
451
  index('idx_brain_observations_agent').on(table.agent),
221
452
  // T531: quality score filter index
222
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),
223
461
  ],
224
462
  );
225
463
 
@@ -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
  /**
@@ -67,10 +67,41 @@ export function createSafetyBackup(dbPath: string): void {
67
67
  }
68
68
  }
69
69
 
70
+ /**
71
+ * Insert a journal entry including `name` so Drizzle v1 beta (which checks by name,
72
+ * not hash) correctly identifies the migration as already applied.
73
+ *
74
+ * Emits INSERT OR IGNORE to avoid duplicate-row errors when called defensively.
75
+ */
76
+ function insertJournalEntry(
77
+ nativeDb: DatabaseSync,
78
+ hash: string,
79
+ createdAt: number,
80
+ name: string,
81
+ ): void {
82
+ // Ensure the name and applied_at columns exist (Drizzle v1 beta schema).
83
+ // These are added by upgradeSyncIfNeeded, but reconcileJournal may run before
84
+ // the first migrate() call that triggers the upgrade.
85
+ const columns = nativeDb.prepare('PRAGMA table_info("__drizzle_migrations")').all() as Array<{
86
+ name: string;
87
+ }>;
88
+ const colNames = new Set(columns.map((c) => c.name));
89
+ if (!colNames.has('name')) {
90
+ nativeDb.exec('ALTER TABLE "__drizzle_migrations" ADD COLUMN "name" text');
91
+ }
92
+ if (!colNames.has('applied_at')) {
93
+ nativeDb.exec('ALTER TABLE "__drizzle_migrations" ADD COLUMN "applied_at" TEXT');
94
+ }
95
+
96
+ nativeDb.exec(
97
+ `INSERT OR IGNORE INTO "__drizzle_migrations" ("hash", "created_at", "name") VALUES ('${hash}', ${createdAt}, '${name}')`,
98
+ );
99
+ }
100
+
70
101
  /**
71
102
  * Bootstrap and reconcile the Drizzle migration journal.
72
103
  *
73
- * Handles three scenarios:
104
+ * Handles four scenarios:
74
105
  * 1. Tables exist but no __drizzle_migrations — bootstrap baseline as applied
75
106
  * 2. Journal has orphaned hashes (from older CLEO version) — clear and re-mark all as applied
76
107
  * 3. Journal exists but is missing entries for migrations whose DDL has already been applied
@@ -78,6 +109,10 @@ export function createSafetyBackup(dbPath: string): void {
78
109
  * migrations are cherry-picked from worktrees or the process crashes mid-migration).
79
110
  * Auto-inserts the missing journal entry so Drizzle skips the migration instead of
80
111
  * re-running ALTER TABLE and crashing on "duplicate column name".
112
+ * 4. Journal entries exist but have null `name` — Drizzle v1 beta identifies applied
113
+ * migrations by name, so entries without a name are invisible to it, causing already-
114
+ * applied migrations to be re-run and fail with "duplicate column name". Backfills
115
+ * the name from the local migration file matched by hash.
81
116
  *
82
117
  * @param nativeDb - Native SQLite database handle
83
118
  * @param migrationsFolder - Path to the drizzle migrations folder
@@ -97,14 +132,14 @@ export function reconcileJournal(
97
132
  if (baseline) {
98
133
  nativeDb.exec(`
99
134
  CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (
100
- id SERIAL PRIMARY KEY,
135
+ id INTEGER PRIMARY KEY,
101
136
  hash text NOT NULL,
102
- created_at numeric
137
+ created_at numeric,
138
+ name text,
139
+ applied_at TEXT
103
140
  )
104
141
  `);
105
- nativeDb.exec(
106
- `INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${baseline.hash}', ${baseline.folderMillis})`,
107
- );
142
+ insertJournalEntry(nativeDb, baseline.hash, baseline.folderMillis, baseline.name ?? '');
108
143
  }
109
144
  }
110
145
 
@@ -125,9 +160,7 @@ export function reconcileJournal(
125
160
  );
126
161
  nativeDb.exec('DELETE FROM "__drizzle_migrations"');
127
162
  for (const m of localMigrations) {
128
- nativeDb.exec(
129
- `INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${m.hash}', ${m.folderMillis})`,
130
- );
163
+ insertJournalEntry(nativeDb, m.hash, m.folderMillis, m.name ?? '');
131
164
  }
132
165
  }
133
166
  }
@@ -177,12 +210,50 @@ export function reconcileJournal(
177
210
  { migration: migration.name, columns: alterMatches },
178
211
  `Detected partially-applied migration ${migration.name} — columns exist but journal entry missing. Auto-reconciling.`,
179
212
  );
180
- nativeDb.exec(
181
- `INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${migration.hash}', ${migration.folderMillis})`,
182
- );
213
+ insertJournalEntry(nativeDb, migration.hash, migration.folderMillis, migration.name ?? '');
183
214
  }
184
215
  }
185
216
  }
217
+
218
+ // Scenario 4: Journal entries exist but have null `name`.
219
+ //
220
+ // Drizzle v1 beta changed getMigrationsToRun to filter by `name` (not hash).
221
+ // Journal entries inserted by older CLEO code (INSERT without "name") have
222
+ // name = null, which Drizzle filters out — making it treat those migrations as
223
+ // unapplied and re-run them. This causes "duplicate column name" failures for
224
+ // migrations whose DDL has already been applied.
225
+ //
226
+ // Fix: backfill `name` for any journal entries that have name = null but whose
227
+ // hash matches a known local migration file.
228
+ if (tableExists(nativeDb, '__drizzle_migrations') && tableExists(nativeDb, existenceTable)) {
229
+ // Check if the name column exists before querying it
230
+ const migCols = nativeDb.prepare('PRAGMA table_info("__drizzle_migrations")').all() as Array<{
231
+ name: string;
232
+ }>;
233
+ const hasMigNameCol = migCols.some((c) => c.name === 'name');
234
+ if (!hasMigNameCol) return; // name column absent — upgradeSyncIfNeeded will handle it
235
+
236
+ const localMigrations = readMigrationFiles({ migrationsFolder });
237
+ const hashToName = new Map(localMigrations.map((m) => [m.hash, m.name ?? '']));
238
+
239
+ const unnamedEntries = nativeDb
240
+ .prepare('SELECT id, hash FROM "__drizzle_migrations" WHERE name IS NULL')
241
+ .all() as Array<{ id: number; hash: string }>;
242
+
243
+ for (const entry of unnamedEntries) {
244
+ const migrationName = hashToName.get(entry.hash);
245
+ if (!migrationName) continue; // orphaned entry — leave for Scenario 2
246
+
247
+ const log = getLogger(logSubsystem);
248
+ log.warn(
249
+ { id: entry.id, hash: entry.hash, name: migrationName },
250
+ `Backfilling missing name on journal entry id=${entry.id} — Drizzle v1 beta requires name for applied-migration detection.`,
251
+ );
252
+ nativeDb.exec(
253
+ `UPDATE "__drizzle_migrations" SET "name" = '${migrationName}' WHERE id = ${entry.id}`,
254
+ );
255
+ }
256
+ }
186
257
  }
187
258
 
188
259
  /**
@@ -21,6 +21,7 @@ import {
21
21
  checkGlobalTemplates,
22
22
  checkLogDir,
23
23
  checkMemoryBridge,
24
+ checkNexusBridge,
24
25
  checkProjectContext,
25
26
  checkProjectInfo,
26
27
  checkSqliteDb,
@@ -894,6 +895,14 @@ export async function coreDoctorReport(projectRoot: string): Promise<DoctorRepor
894
895
  ...(memBridgeCheckResult.fix ? { fix: memBridgeCheckResult.fix } : {}),
895
896
  });
896
897
 
898
+ const nexusBridgeCheckResult = checkNexusBridge(projectRoot);
899
+ checks.push({
900
+ check: 'nexus_bridge',
901
+ status: nexusBridgeCheckResult.status === 'passed' ? 'ok' : 'warning',
902
+ message: nexusBridgeCheckResult.message,
903
+ ...(nexusBridgeCheckResult.fix ? { fix: nexusBridgeCheckResult.fix } : {}),
904
+ });
905
+
897
906
  // 5f. Adapter health checks (T511 — wire adapter health into doctor)
898
907
  // `cleo adapter health` was previously isolated from the doctor report.
899
908
  // The doctor is the comprehensive diagnostic view so adapter health belongs here.
@@ -1384,6 +1393,14 @@ export async function startupHealthCheck(projectRoot?: string): Promise<StartupH
1384
1393
  message: memBridgeCheck.message,
1385
1394
  });
1386
1395
 
1396
+ // Nexus bridge: info-level check (T552)
1397
+ const nexusBridgeCheck = checkNexusBridge(root);
1398
+ checks.push({
1399
+ check: 'nexus_bridge',
1400
+ status: nexusBridgeCheck.status === 'passed' ? 'pass' : 'warn',
1401
+ message: nexusBridgeCheck.message,
1402
+ });
1403
+
1387
1404
  // NEXUS auto-registration (best-effort, never blocks startup)
1388
1405
  try {
1389
1406
  const { nexusReconcile } = await import('../nexus/registry.js');
@@ -95,6 +95,7 @@ export function getNextTask(tasks: Task[]): Task | null {
95
95
  const ready = tasks
96
96
  .filter((t) => {
97
97
  if (t.status === 'done' || t.status === 'cancelled') return false;
98
+ if (t.cancelledAt) return false; // Exclude soft-cancelled tasks regardless of status
98
99
  if (t.status === 'active') return true; // Already active = highest priority
99
100
  if (!t.depends?.length) return true;
100
101
  return t.depends.every((d) => completedIds.has(d));
@@ -219,7 +219,7 @@ export async function coreTaskNext(
219
219
  const currentPhase = projectMeta?.currentPhase ?? null;
220
220
 
221
221
  const candidates = allTasks.filter(
222
- (t) => t.status === 'pending' && depsReady(t.depends, taskMap),
222
+ (t) => t.status === 'pending' && !t.cancelledAt && depsReady(t.depends, taskMap),
223
223
  );
224
224
 
225
225
  if (candidates.length === 0) {
@@ -66,6 +66,21 @@ Check exit code (`0` = success) and `"success"` in JSON output after every comma
66
66
  - Token budget: avoid `cleo list` without `--parent`, avoid `cleo help --tier 2` before tier 0
67
67
  - Do not read full task details for tasks you won't work on
68
68
 
69
+ ## Memory Protocol (JIT)
70
+
71
+ Pull context on demand — don't pre-load everything:
72
+
73
+ | Need | Command |
74
+ |------|---------|
75
+ | Prior decisions | `cleo memory find "<topic>" --type decision` |
76
+ | Known patterns | `cleo memory find "<domain>" --type pattern` |
77
+ | Timeline context | `cleo memory timeline <id>` |
78
+ | Full details | `cleo memory fetch <id>` |
79
+ | Code context | `cleo nexus context <symbol>` |
80
+ | Impact analysis | `cleo nexus impact <symbol>` |
81
+
82
+ Budget: 3 JIT calls per task phase. More = task is underspecified.
83
+
69
84
  ## Escalation
70
85
 
71
86
  - Load **ct-cleo** skill for full protocol details