@cleocode/core 2026.4.30 → 2026.4.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1039) hide show
  1. package/dist/adapters/adapter-registry.js +64 -0
  2. package/dist/adapters/adapter-registry.js.map +1 -0
  3. package/dist/adapters/discovery.js +83 -0
  4. package/dist/adapters/discovery.js.map +1 -0
  5. package/dist/adapters/index.js +9 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/manager.js +260 -0
  8. package/dist/adapters/manager.js.map +1 -0
  9. package/dist/admin/export-tasks.js +171 -0
  10. package/dist/admin/export-tasks.js.map +1 -0
  11. package/dist/admin/export.js +103 -0
  12. package/dist/admin/export.js.map +1 -0
  13. package/dist/admin/help.js +106 -0
  14. package/dist/admin/help.js.map +1 -0
  15. package/dist/admin/import-tasks.js +182 -0
  16. package/dist/admin/import-tasks.js.map +1 -0
  17. package/dist/admin/import.js +129 -0
  18. package/dist/admin/import.js.map +1 -0
  19. package/dist/admin/index.js +13 -0
  20. package/dist/admin/index.js.map +1 -0
  21. package/dist/adrs/find.js +134 -0
  22. package/dist/adrs/find.js.map +1 -0
  23. package/dist/adrs/index.js +15 -0
  24. package/dist/adrs/index.js.map +1 -0
  25. package/dist/adrs/link-pipeline.js +160 -0
  26. package/dist/adrs/link-pipeline.js.map +1 -0
  27. package/dist/adrs/list.js +43 -0
  28. package/dist/adrs/list.js.map +1 -0
  29. package/dist/adrs/parse.js +51 -0
  30. package/dist/adrs/parse.js.map +1 -0
  31. package/dist/adrs/show.js +22 -0
  32. package/dist/adrs/show.js.map +1 -0
  33. package/dist/adrs/sync.js +232 -0
  34. package/dist/adrs/sync.js.map +1 -0
  35. package/dist/adrs/types.js +9 -0
  36. package/dist/adrs/types.js.map +1 -0
  37. package/dist/adrs/validate.js +57 -0
  38. package/dist/adrs/validate.js.map +1 -0
  39. package/dist/agents/agent-registry.js +288 -0
  40. package/dist/agents/agent-registry.js.map +1 -0
  41. package/dist/agents/agent-schema.js +82 -0
  42. package/dist/agents/agent-schema.js.map +1 -0
  43. package/dist/agents/capacity.js +116 -0
  44. package/dist/agents/capacity.js.map +1 -0
  45. package/dist/agents/execution-learning.js +474 -0
  46. package/dist/agents/execution-learning.js.map +1 -0
  47. package/dist/agents/health-monitor.js +217 -0
  48. package/dist/agents/health-monitor.js.map +1 -0
  49. package/dist/agents/index.js +29 -0
  50. package/dist/agents/index.js.map +1 -0
  51. package/dist/agents/registry.js +314 -0
  52. package/dist/agents/registry.js.map +1 -0
  53. package/dist/agents/retry.js +215 -0
  54. package/dist/agents/retry.js.map +1 -0
  55. package/dist/audit-prune.js +94 -0
  56. package/dist/audit-prune.js.map +1 -0
  57. package/dist/audit.js +68 -0
  58. package/dist/audit.js.map +1 -0
  59. package/dist/backfill/index.js +229 -0
  60. package/dist/backfill/index.js.map +1 -0
  61. package/dist/bootstrap.d.ts +35 -0
  62. package/dist/bootstrap.d.ts.map +1 -1
  63. package/dist/bootstrap.js +435 -0
  64. package/dist/bootstrap.js.map +1 -0
  65. package/dist/caamp/adapter.js +259 -0
  66. package/dist/caamp/adapter.js.map +1 -0
  67. package/dist/caamp/capability-check.js +38 -0
  68. package/dist/caamp/capability-check.js.map +1 -0
  69. package/dist/caamp/index.js +21 -0
  70. package/dist/caamp/index.js.map +1 -0
  71. package/dist/caamp-init.js +16 -0
  72. package/dist/caamp-init.js.map +1 -0
  73. package/dist/cleo.js +322 -0
  74. package/dist/cleo.js.map +1 -0
  75. package/dist/code/index.d.ts +8 -4
  76. package/dist/code/index.d.ts.map +1 -1
  77. package/dist/code/index.js +14 -0
  78. package/dist/code/index.js.map +1 -0
  79. package/dist/code/outline.js +165 -0
  80. package/dist/code/outline.js.map +1 -0
  81. package/dist/code/parser.d.ts +22 -9
  82. package/dist/code/parser.d.ts.map +1 -1
  83. package/dist/code/parser.js +420 -0
  84. package/dist/code/parser.js.map +1 -0
  85. package/dist/code/search.js +135 -0
  86. package/dist/code/search.js.map +1 -0
  87. package/dist/code/unfold.js +155 -0
  88. package/dist/code/unfold.js.map +1 -0
  89. package/dist/codebase-map/analyzers/architecture.js +129 -0
  90. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  91. package/dist/codebase-map/analyzers/concerns.js +122 -0
  92. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  93. package/dist/codebase-map/analyzers/conventions.js +149 -0
  94. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  95. package/dist/codebase-map/analyzers/integrations.js +108 -0
  96. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  97. package/dist/codebase-map/analyzers/stack.js +117 -0
  98. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  99. package/dist/codebase-map/analyzers/structure.js +137 -0
  100. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  101. package/dist/codebase-map/analyzers/testing.js +118 -0
  102. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  103. package/dist/codebase-map/index.js +57 -0
  104. package/dist/codebase-map/index.js.map +1 -0
  105. package/dist/codebase-map/store.js +122 -0
  106. package/dist/codebase-map/store.js.map +1 -0
  107. package/dist/codebase-map/summary.js +152 -0
  108. package/dist/codebase-map/summary.js.map +1 -0
  109. package/dist/compliance/index.js +288 -0
  110. package/dist/compliance/index.js.map +1 -0
  111. package/dist/compliance/protocol-enforcement.js +332 -0
  112. package/dist/compliance/protocol-enforcement.js.map +1 -0
  113. package/dist/compliance/protocol-rules.js +786 -0
  114. package/dist/compliance/protocol-rules.js.map +1 -0
  115. package/dist/compliance/protocol-types.js +79 -0
  116. package/dist/compliance/protocol-types.js.map +1 -0
  117. package/dist/compliance/store.js +53 -0
  118. package/dist/compliance/store.js.map +1 -0
  119. package/dist/conduit/conduit-client.js +107 -0
  120. package/dist/conduit/conduit-client.js.map +1 -0
  121. package/dist/conduit/factory.js +52 -0
  122. package/dist/conduit/factory.js.map +1 -0
  123. package/dist/conduit/http-transport.js +155 -0
  124. package/dist/conduit/http-transport.js.map +1 -0
  125. package/dist/conduit/index.js +15 -0
  126. package/dist/conduit/index.js.map +1 -0
  127. package/dist/conduit/local-transport.js +255 -0
  128. package/dist/conduit/local-transport.js.map +1 -0
  129. package/dist/conduit/sse-transport.js +299 -0
  130. package/dist/conduit/sse-transport.js.map +1 -0
  131. package/dist/config/build-config.js +29 -0
  132. package/dist/config/build-config.js.map +1 -0
  133. package/dist/config.js +400 -0
  134. package/dist/config.js.map +1 -0
  135. package/dist/constants.js +18 -0
  136. package/dist/constants.js.map +1 -0
  137. package/dist/context/index.js +137 -0
  138. package/dist/context/index.js.map +1 -0
  139. package/dist/crypto/credentials.js +219 -0
  140. package/dist/crypto/credentials.js.map +1 -0
  141. package/dist/discovery.js +182 -0
  142. package/dist/discovery.js.map +1 -0
  143. package/dist/engine-result.js +12 -0
  144. package/dist/engine-result.js.map +1 -0
  145. package/dist/error-catalog.js +404 -0
  146. package/dist/error-catalog.js.map +1 -0
  147. package/dist/error-registry.js +393 -0
  148. package/dist/error-registry.js.map +1 -0
  149. package/dist/errors.js +173 -0
  150. package/dist/errors.js.map +1 -0
  151. package/dist/hooks/handlers/agent-hooks.js +106 -0
  152. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  153. package/dist/hooks/handlers/context-hooks.js +111 -0
  154. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  155. package/dist/hooks/handlers/error-hooks.js +52 -0
  156. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  157. package/dist/hooks/handlers/file-hooks.js +104 -0
  158. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  159. package/dist/hooks/handlers/handler-helpers.js +61 -0
  160. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  161. package/dist/hooks/handlers/index.d.ts +4 -0
  162. package/dist/hooks/handlers/index.d.ts.map +1 -1
  163. package/dist/hooks/handlers/index.js +34 -0
  164. package/dist/hooks/handlers/index.js.map +1 -0
  165. package/dist/hooks/handlers/intelligence-hooks.d.ts +26 -0
  166. package/dist/hooks/handlers/intelligence-hooks.d.ts.map +1 -0
  167. package/dist/hooks/handlers/intelligence-hooks.js +69 -0
  168. package/dist/hooks/handlers/intelligence-hooks.js.map +1 -0
  169. package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
  170. package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
  171. package/dist/hooks/handlers/notification-hooks.js +62 -0
  172. package/dist/hooks/handlers/notification-hooks.js.map +1 -0
  173. package/dist/hooks/handlers/session-hooks.d.ts +27 -4
  174. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  175. package/dist/hooks/handlers/session-hooks.js +157 -0
  176. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  177. package/dist/hooks/handlers/task-hooks.js +65 -0
  178. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  179. package/dist/hooks/handlers/watchdog-hooks.d.ts +49 -0
  180. package/dist/hooks/handlers/watchdog-hooks.d.ts.map +1 -0
  181. package/dist/hooks/handlers/watchdog-hooks.js +162 -0
  182. package/dist/hooks/handlers/watchdog-hooks.js.map +1 -0
  183. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  184. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  185. package/dist/hooks/index.js +13 -0
  186. package/dist/hooks/index.js.map +1 -0
  187. package/dist/hooks/payload-schemas.d.ts +6 -6
  188. package/dist/hooks/payload-schemas.js +220 -0
  189. package/dist/hooks/payload-schemas.js.map +1 -0
  190. package/dist/hooks/provider-hooks.js +66 -0
  191. package/dist/hooks/provider-hooks.js.map +1 -0
  192. package/dist/hooks/registry.js +229 -0
  193. package/dist/hooks/registry.js.map +1 -0
  194. package/dist/hooks/types.js +66 -0
  195. package/dist/hooks/types.js.map +1 -0
  196. package/dist/hooks.js +136 -0
  197. package/dist/hooks.js.map +1 -0
  198. package/dist/index.d.ts +2 -0
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.js +8765 -6253
  201. package/dist/index.js.map +4 -4
  202. package/dist/init.js +920 -0
  203. package/dist/init.js.map +1 -0
  204. package/dist/inject/index.js +82 -0
  205. package/dist/inject/index.js.map +1 -0
  206. package/dist/injection.d.ts +13 -1
  207. package/dist/injection.d.ts.map +1 -1
  208. package/dist/injection.js +377 -0
  209. package/dist/injection.js.map +1 -0
  210. package/dist/intelligence/adaptive-validation.js +497 -0
  211. package/dist/intelligence/adaptive-validation.js.map +1 -0
  212. package/dist/intelligence/impact.js +675 -0
  213. package/dist/intelligence/impact.js.map +1 -0
  214. package/dist/intelligence/index.js +22 -0
  215. package/dist/intelligence/index.js.map +1 -0
  216. package/dist/intelligence/patterns.js +492 -0
  217. package/dist/intelligence/patterns.js.map +1 -0
  218. package/dist/intelligence/prediction.js +499 -0
  219. package/dist/intelligence/prediction.js.map +1 -0
  220. package/dist/intelligence/types.js +13 -0
  221. package/dist/intelligence/types.js.map +1 -0
  222. package/dist/internal.d.ts +18 -10
  223. package/dist/internal.d.ts.map +1 -1
  224. package/dist/internal.js +320 -0
  225. package/dist/internal.js.map +1 -0
  226. package/dist/issue/create.js +121 -0
  227. package/dist/issue/create.js.map +1 -0
  228. package/dist/issue/diagnostics.js +59 -0
  229. package/dist/issue/diagnostics.js.map +1 -0
  230. package/dist/issue/index.js +10 -0
  231. package/dist/issue/index.js.map +1 -0
  232. package/dist/issue/template-parser.js +267 -0
  233. package/dist/issue/template-parser.js.map +1 -0
  234. package/dist/json-schema-validator.js +76 -0
  235. package/dist/json-schema-validator.js.map +1 -0
  236. package/dist/lib/index.js +11 -0
  237. package/dist/lib/index.js.map +1 -0
  238. package/dist/lib/retry.js +152 -0
  239. package/dist/lib/retry.js.map +1 -0
  240. package/dist/lib/tree-sitter-languages.d.ts +11 -7
  241. package/dist/lib/tree-sitter-languages.d.ts.map +1 -1
  242. package/dist/lib/tree-sitter-languages.js +75 -0
  243. package/dist/lib/tree-sitter-languages.js.map +1 -0
  244. package/dist/lifecycle/chain-composition.js +152 -0
  245. package/dist/lifecycle/chain-composition.js.map +1 -0
  246. package/dist/lifecycle/chain-store.js +246 -0
  247. package/dist/lifecycle/chain-store.js.map +1 -0
  248. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  249. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  250. package/dist/lifecycle/default-chain.js +176 -0
  251. package/dist/lifecycle/default-chain.js.map +1 -0
  252. package/dist/lifecycle/evidence.js +180 -0
  253. package/dist/lifecycle/evidence.js.map +1 -0
  254. package/dist/lifecycle/frontmatter.js +363 -0
  255. package/dist/lifecycle/frontmatter.js.map +1 -0
  256. package/dist/lifecycle/index.js +756 -0
  257. package/dist/lifecycle/index.js.map +1 -0
  258. package/dist/lifecycle/pipeline.js +656 -0
  259. package/dist/lifecycle/pipeline.js.map +1 -0
  260. package/dist/lifecycle/rcasd-index.js +326 -0
  261. package/dist/lifecycle/rcasd-index.js.map +1 -0
  262. package/dist/lifecycle/rcasd-paths.js +220 -0
  263. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  264. package/dist/lifecycle/resume.js +864 -0
  265. package/dist/lifecycle/resume.js.map +1 -0
  266. package/dist/lifecycle/stage-artifacts.js +94 -0
  267. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  268. package/dist/lifecycle/stage-guidance.js +234 -0
  269. package/dist/lifecycle/stage-guidance.js.map +1 -0
  270. package/dist/lifecycle/stages.js +534 -0
  271. package/dist/lifecycle/stages.js.map +1 -0
  272. package/dist/lifecycle/state-machine.js +516 -0
  273. package/dist/lifecycle/state-machine.js.map +1 -0
  274. package/dist/lifecycle/tessera-engine.js +249 -0
  275. package/dist/lifecycle/tessera-engine.js.map +1 -0
  276. package/dist/logger.js +140 -0
  277. package/dist/logger.js.map +1 -0
  278. package/dist/memory/auto-extract.d.ts +27 -15
  279. package/dist/memory/auto-extract.d.ts.map +1 -1
  280. package/dist/memory/auto-extract.js +96 -0
  281. package/dist/memory/auto-extract.js.map +1 -0
  282. package/dist/memory/brain-backfill.d.ts +59 -0
  283. package/dist/memory/brain-backfill.d.ts.map +1 -0
  284. package/dist/memory/brain-backfill.js +389 -0
  285. package/dist/memory/brain-backfill.js.map +1 -0
  286. package/dist/memory/brain-consolidator.d.ts +48 -0
  287. package/dist/memory/brain-consolidator.d.ts.map +1 -0
  288. package/dist/memory/brain-consolidator.js +294 -0
  289. package/dist/memory/brain-consolidator.js.map +1 -0
  290. package/dist/memory/brain-embedding.js +66 -0
  291. package/dist/memory/brain-embedding.js.map +1 -0
  292. package/dist/memory/brain-lifecycle.d.ts +83 -2
  293. package/dist/memory/brain-lifecycle.d.ts.map +1 -1
  294. package/dist/memory/brain-lifecycle.js +807 -0
  295. package/dist/memory/brain-lifecycle.js.map +1 -0
  296. package/dist/memory/brain-links.js +161 -0
  297. package/dist/memory/brain-links.js.map +1 -0
  298. package/dist/memory/brain-maintenance.js +114 -0
  299. package/dist/memory/brain-maintenance.js.map +1 -0
  300. package/dist/memory/brain-migration.js +149 -0
  301. package/dist/memory/brain-migration.js.map +1 -0
  302. package/dist/memory/brain-purge.d.ts +51 -0
  303. package/dist/memory/brain-purge.d.ts.map +1 -0
  304. package/dist/memory/brain-purge.js +243 -0
  305. package/dist/memory/brain-purge.js.map +1 -0
  306. package/dist/memory/brain-reasoning.js +215 -0
  307. package/dist/memory/brain-reasoning.js.map +1 -0
  308. package/dist/memory/brain-retrieval.d.ts +69 -1
  309. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  310. package/dist/memory/brain-retrieval.js +912 -0
  311. package/dist/memory/brain-retrieval.js.map +1 -0
  312. package/dist/memory/brain-row-types.js +10 -0
  313. package/dist/memory/brain-row-types.js.map +1 -0
  314. package/dist/memory/brain-search.d.ts.map +1 -1
  315. package/dist/memory/brain-search.js +528 -0
  316. package/dist/memory/brain-search.js.map +1 -0
  317. package/dist/memory/brain-similarity.js +145 -0
  318. package/dist/memory/brain-similarity.js.map +1 -0
  319. package/dist/memory/claude-mem-migration.js +277 -0
  320. package/dist/memory/claude-mem-migration.js.map +1 -0
  321. package/dist/memory/decisions.d.ts.map +1 -1
  322. package/dist/memory/decisions.js +218 -0
  323. package/dist/memory/decisions.js.map +1 -0
  324. package/dist/memory/embedding-local.js +102 -0
  325. package/dist/memory/embedding-local.js.map +1 -0
  326. package/dist/memory/embedding-queue.js +271 -0
  327. package/dist/memory/embedding-queue.js.map +1 -0
  328. package/dist/memory/embedding-worker.js +58 -0
  329. package/dist/memory/embedding-worker.js.map +1 -0
  330. package/dist/memory/engine-compat.d.ts +71 -0
  331. package/dist/memory/engine-compat.d.ts.map +1 -1
  332. package/dist/memory/engine-compat.js +1564 -0
  333. package/dist/memory/engine-compat.js.map +1 -0
  334. package/dist/memory/extraction-gate.d.ts +139 -0
  335. package/dist/memory/extraction-gate.d.ts.map +1 -0
  336. package/dist/memory/extraction-gate.js +459 -0
  337. package/dist/memory/extraction-gate.js.map +1 -0
  338. package/dist/memory/graph-auto-populate.d.ts +65 -0
  339. package/dist/memory/graph-auto-populate.d.ts.map +1 -0
  340. package/dist/memory/graph-auto-populate.js +148 -0
  341. package/dist/memory/graph-auto-populate.js.map +1 -0
  342. package/dist/memory/graph-queries.d.ts +127 -0
  343. package/dist/memory/graph-queries.d.ts.map +1 -0
  344. package/dist/memory/graph-queries.js +290 -0
  345. package/dist/memory/graph-queries.js.map +1 -0
  346. package/dist/memory/index.d.ts +2 -0
  347. package/dist/memory/index.d.ts.map +1 -1
  348. package/dist/memory/index.js +1144 -0
  349. package/dist/memory/index.js.map +1 -0
  350. package/dist/memory/learnings.d.ts +16 -0
  351. package/dist/memory/learnings.d.ts.map +1 -1
  352. package/dist/memory/learnings.js +178 -0
  353. package/dist/memory/learnings.js.map +1 -0
  354. package/dist/memory/memory-bridge.js +370 -0
  355. package/dist/memory/memory-bridge.js.map +1 -0
  356. package/dist/memory/mental-model-injection.js +61 -0
  357. package/dist/memory/mental-model-injection.js.map +1 -0
  358. package/dist/memory/mental-model-queue.js +211 -0
  359. package/dist/memory/mental-model-queue.js.map +1 -0
  360. package/dist/memory/patterns.d.ts +26 -4
  361. package/dist/memory/patterns.d.ts.map +1 -1
  362. package/dist/memory/patterns.js +174 -0
  363. package/dist/memory/patterns.js.map +1 -0
  364. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  365. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  366. package/dist/memory/quality-scoring.d.ts +127 -0
  367. package/dist/memory/quality-scoring.d.ts.map +1 -0
  368. package/dist/memory/quality-scoring.js +182 -0
  369. package/dist/memory/quality-scoring.js.map +1 -0
  370. package/dist/memory/session-memory.js +331 -0
  371. package/dist/memory/session-memory.js.map +1 -0
  372. package/dist/metrics/ab-test.js +260 -0
  373. package/dist/metrics/ab-test.js.map +1 -0
  374. package/dist/metrics/aggregation.js +363 -0
  375. package/dist/metrics/aggregation.js.map +1 -0
  376. package/dist/metrics/common.js +64 -0
  377. package/dist/metrics/common.js.map +1 -0
  378. package/dist/metrics/enums.js +78 -0
  379. package/dist/metrics/enums.js.map +1 -0
  380. package/dist/metrics/index.js +19 -0
  381. package/dist/metrics/index.js.map +1 -0
  382. package/dist/metrics/model-provider-registry.js +88 -0
  383. package/dist/metrics/model-provider-registry.js.map +1 -0
  384. package/dist/metrics/otel-integration.js +263 -0
  385. package/dist/metrics/otel-integration.js.map +1 -0
  386. package/dist/metrics/provider-detection.js +103 -0
  387. package/dist/metrics/provider-detection.js.map +1 -0
  388. package/dist/metrics/token-estimation.js +253 -0
  389. package/dist/metrics/token-estimation.js.map +1 -0
  390. package/dist/metrics/token-service.js +450 -0
  391. package/dist/metrics/token-service.js.map +1 -0
  392. package/dist/migration/agent-outputs.js +316 -0
  393. package/dist/migration/agent-outputs.js.map +1 -0
  394. package/dist/migration/checksum.js +92 -0
  395. package/dist/migration/checksum.js.map +1 -0
  396. package/dist/migration/index.js +282 -0
  397. package/dist/migration/index.js.map +1 -0
  398. package/dist/migration/logger.js +360 -0
  399. package/dist/migration/logger.js.map +1 -0
  400. package/dist/migration/preflight.js +9 -0
  401. package/dist/migration/preflight.js.map +1 -0
  402. package/dist/migration/state.js +421 -0
  403. package/dist/migration/state.js.map +1 -0
  404. package/dist/migration/validate.js +241 -0
  405. package/dist/migration/validate.js.map +1 -0
  406. package/dist/mvi-helpers.js +73 -0
  407. package/dist/mvi-helpers.js.map +1 -0
  408. package/dist/nexus/deps.js +375 -0
  409. package/dist/nexus/deps.js.map +1 -0
  410. package/dist/nexus/discover.js +288 -0
  411. package/dist/nexus/discover.js.map +1 -0
  412. package/dist/nexus/hash.js +10 -0
  413. package/dist/nexus/hash.js.map +1 -0
  414. package/dist/nexus/index.js +40 -0
  415. package/dist/nexus/index.js.map +1 -0
  416. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  417. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  418. package/dist/nexus/nexus-bridge.d.ts +51 -0
  419. package/dist/nexus/nexus-bridge.d.ts.map +1 -0
  420. package/dist/nexus/nexus-bridge.js +321 -0
  421. package/dist/nexus/nexus-bridge.js.map +1 -0
  422. package/dist/nexus/permissions.js +105 -0
  423. package/dist/nexus/permissions.js.map +1 -0
  424. package/dist/nexus/query.js +175 -0
  425. package/dist/nexus/query.js.map +1 -0
  426. package/dist/nexus/registry.js +584 -0
  427. package/dist/nexus/registry.js.map +1 -0
  428. package/dist/nexus/sharing/index.js +288 -0
  429. package/dist/nexus/sharing/index.js.map +1 -0
  430. package/dist/nexus/transfer-types.js +8 -0
  431. package/dist/nexus/transfer-types.js.map +1 -0
  432. package/dist/nexus/transfer.js +271 -0
  433. package/dist/nexus/transfer.js.map +1 -0
  434. package/dist/nexus/workspace.js +355 -0
  435. package/dist/nexus/workspace.js.map +1 -0
  436. package/dist/observability/index.js +103 -0
  437. package/dist/observability/index.js.map +1 -0
  438. package/dist/observability/log-filter.js +63 -0
  439. package/dist/observability/log-filter.js.map +1 -0
  440. package/dist/observability/log-parser.js +99 -0
  441. package/dist/observability/log-parser.js.map +1 -0
  442. package/dist/observability/log-reader.js +139 -0
  443. package/dist/observability/log-reader.js.map +1 -0
  444. package/dist/observability/types.js +19 -0
  445. package/dist/observability/types.js.map +1 -0
  446. package/dist/orchestration/analyze.js +107 -0
  447. package/dist/orchestration/analyze.js.map +1 -0
  448. package/dist/orchestration/bootstrap.js +132 -0
  449. package/dist/orchestration/bootstrap.js.map +1 -0
  450. package/dist/orchestration/context.js +56 -0
  451. package/dist/orchestration/context.js.map +1 -0
  452. package/dist/orchestration/critical-path.js +100 -0
  453. package/dist/orchestration/critical-path.js.map +1 -0
  454. package/dist/orchestration/hierarchy.js +183 -0
  455. package/dist/orchestration/hierarchy.js.map +1 -0
  456. package/dist/orchestration/index.js +287 -0
  457. package/dist/orchestration/index.js.map +1 -0
  458. package/dist/orchestration/parallel.js +89 -0
  459. package/dist/orchestration/parallel.js.map +1 -0
  460. package/dist/orchestration/protocol-validators.js +815 -0
  461. package/dist/orchestration/protocol-validators.js.map +1 -0
  462. package/dist/orchestration/skill-ops.js +98 -0
  463. package/dist/orchestration/skill-ops.js.map +1 -0
  464. package/dist/orchestration/status.js +107 -0
  465. package/dist/orchestration/status.js.map +1 -0
  466. package/dist/orchestration/unblock.js +103 -0
  467. package/dist/orchestration/unblock.js.map +1 -0
  468. package/dist/orchestration/validate-spawn.js +67 -0
  469. package/dist/orchestration/validate-spawn.js.map +1 -0
  470. package/dist/orchestration/waves.js +86 -0
  471. package/dist/orchestration/waves.js.map +1 -0
  472. package/dist/otel/index.js +163 -0
  473. package/dist/otel/index.js.map +1 -0
  474. package/dist/output.js +164 -0
  475. package/dist/output.js.map +1 -0
  476. package/dist/pagination.js +64 -0
  477. package/dist/pagination.js.map +1 -0
  478. package/dist/paths.js +882 -0
  479. package/dist/paths.js.map +1 -0
  480. package/dist/phases/deps.js +372 -0
  481. package/dist/phases/deps.js.map +1 -0
  482. package/dist/phases/index.js +349 -0
  483. package/dist/phases/index.js.map +1 -0
  484. package/dist/pipeline/index.js +10 -0
  485. package/dist/pipeline/index.js.map +1 -0
  486. package/dist/pipeline/phase.js +45 -0
  487. package/dist/pipeline/phase.js.map +1 -0
  488. package/dist/platform.js +211 -0
  489. package/dist/platform.js.map +1 -0
  490. package/dist/project-info.js +84 -0
  491. package/dist/project-info.js.map +1 -0
  492. package/dist/reconciliation/index.js +10 -0
  493. package/dist/reconciliation/index.js.map +1 -0
  494. package/dist/reconciliation/link-store.js +175 -0
  495. package/dist/reconciliation/link-store.js.map +1 -0
  496. package/dist/reconciliation/reconciliation-engine.js +298 -0
  497. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  498. package/dist/release/artifacts.js +427 -0
  499. package/dist/release/artifacts.js.map +1 -0
  500. package/dist/release/changelog-writer.js +151 -0
  501. package/dist/release/changelog-writer.js.map +1 -0
  502. package/dist/release/channel.js +144 -0
  503. package/dist/release/channel.js.map +1 -0
  504. package/dist/release/ci.js +166 -0
  505. package/dist/release/ci.js.map +1 -0
  506. package/dist/release/github-pr.js +225 -0
  507. package/dist/release/github-pr.js.map +1 -0
  508. package/dist/release/guards.js +116 -0
  509. package/dist/release/guards.js.map +1 -0
  510. package/dist/release/index.js +22 -0
  511. package/dist/release/index.js.map +1 -0
  512. package/dist/release/release-config.js +158 -0
  513. package/dist/release/release-config.js.map +1 -0
  514. package/dist/release/release-manifest.js +1019 -0
  515. package/dist/release/release-manifest.js.map +1 -0
  516. package/dist/release/version-bump.js +255 -0
  517. package/dist/release/version-bump.js.map +1 -0
  518. package/dist/remote/index.js +257 -0
  519. package/dist/remote/index.js.map +1 -0
  520. package/dist/repair.js +130 -0
  521. package/dist/repair.js.map +1 -0
  522. package/dist/research/index.js +2 -0
  523. package/dist/research/index.js.map +1 -0
  524. package/dist/roadmap/index.js +59 -0
  525. package/dist/roadmap/index.js.map +1 -0
  526. package/dist/routing/capability-matrix.js +1556 -0
  527. package/dist/routing/capability-matrix.js.map +1 -0
  528. package/dist/routing/index.js +9 -0
  529. package/dist/routing/index.js.map +1 -0
  530. package/dist/scaffold.d.ts +18 -0
  531. package/dist/scaffold.d.ts.map +1 -1
  532. package/dist/scaffold.js +1798 -0
  533. package/dist/scaffold.js.map +1 -0
  534. package/dist/schema-management.js +295 -0
  535. package/dist/schema-management.js.map +1 -0
  536. package/dist/security/index.js +9 -0
  537. package/dist/security/index.js.map +1 -0
  538. package/dist/security/input-sanitization.js +326 -0
  539. package/dist/security/input-sanitization.js.map +1 -0
  540. package/dist/sequence/index.js +295 -0
  541. package/dist/sequence/index.js.map +1 -0
  542. package/dist/sessions/assumptions.js +54 -0
  543. package/dist/sessions/assumptions.js.map +1 -0
  544. package/dist/sessions/briefing.js +377 -0
  545. package/dist/sessions/briefing.js.map +1 -0
  546. package/dist/sessions/context-alert.js +222 -0
  547. package/dist/sessions/context-alert.js.map +1 -0
  548. package/dist/sessions/context-inject.js +61 -0
  549. package/dist/sessions/context-inject.js.map +1 -0
  550. package/dist/sessions/context-monitor.js +98 -0
  551. package/dist/sessions/context-monitor.js.map +1 -0
  552. package/dist/sessions/decisions.js +65 -0
  553. package/dist/sessions/decisions.js.map +1 -0
  554. package/dist/sessions/find.js +65 -0
  555. package/dist/sessions/find.js.map +1 -0
  556. package/dist/sessions/handoff.js +328 -0
  557. package/dist/sessions/handoff.js.map +1 -0
  558. package/dist/sessions/hitl-warnings.js +254 -0
  559. package/dist/sessions/hitl-warnings.js.map +1 -0
  560. package/dist/sessions/index.js +327 -0
  561. package/dist/sessions/index.js.map +1 -0
  562. package/dist/sessions/session-archive.js +40 -0
  563. package/dist/sessions/session-archive.js.map +1 -0
  564. package/dist/sessions/session-cleanup.js +59 -0
  565. package/dist/sessions/session-cleanup.js.map +1 -0
  566. package/dist/sessions/session-drift.js +134 -0
  567. package/dist/sessions/session-drift.js.map +1 -0
  568. package/dist/sessions/session-enforcement.js +144 -0
  569. package/dist/sessions/session-enforcement.js.map +1 -0
  570. package/dist/sessions/session-grade.js +253 -0
  571. package/dist/sessions/session-grade.js.map +1 -0
  572. package/dist/sessions/session-history.js +42 -0
  573. package/dist/sessions/session-history.js.map +1 -0
  574. package/dist/sessions/session-id.js +81 -0
  575. package/dist/sessions/session-id.js.map +1 -0
  576. package/dist/sessions/session-memory-bridge.d.ts +16 -10
  577. package/dist/sessions/session-memory-bridge.d.ts.map +1 -1
  578. package/dist/sessions/session-memory-bridge.js +30 -0
  579. package/dist/sessions/session-memory-bridge.js.map +1 -0
  580. package/dist/sessions/session-show.js +24 -0
  581. package/dist/sessions/session-show.js.map +1 -0
  582. package/dist/sessions/session-stats.js +69 -0
  583. package/dist/sessions/session-stats.js.map +1 -0
  584. package/dist/sessions/session-suspend.js +39 -0
  585. package/dist/sessions/session-suspend.js.map +1 -0
  586. package/dist/sessions/session-switch.js +51 -0
  587. package/dist/sessions/session-switch.js.map +1 -0
  588. package/dist/sessions/session-view.js +76 -0
  589. package/dist/sessions/session-view.js.map +1 -0
  590. package/dist/sessions/snapshot.js +213 -0
  591. package/dist/sessions/snapshot.js.map +1 -0
  592. package/dist/sessions/statusline-setup.js +85 -0
  593. package/dist/sessions/statusline-setup.js.map +1 -0
  594. package/dist/sessions/types.js +8 -0
  595. package/dist/sessions/types.js.map +1 -0
  596. package/dist/skills/agents/config.js +94 -0
  597. package/dist/skills/agents/config.js.map +1 -0
  598. package/dist/skills/agents/install.js +116 -0
  599. package/dist/skills/agents/install.js.map +1 -0
  600. package/dist/skills/agents/registry.js +161 -0
  601. package/dist/skills/agents/registry.js.map +1 -0
  602. package/dist/skills/discovery.js +333 -0
  603. package/dist/skills/discovery.js.map +1 -0
  604. package/dist/skills/dispatch.js +347 -0
  605. package/dist/skills/dispatch.js.map +1 -0
  606. package/dist/skills/dynamic-skill-generator.js +87 -0
  607. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  608. package/dist/skills/index.js +44 -0
  609. package/dist/skills/index.js.map +1 -0
  610. package/dist/skills/injection/subagent.js +195 -0
  611. package/dist/skills/injection/subagent.js.map +1 -0
  612. package/dist/skills/injection/token.js +260 -0
  613. package/dist/skills/injection/token.js.map +1 -0
  614. package/dist/skills/install.js +40 -0
  615. package/dist/skills/install.js.map +1 -0
  616. package/dist/skills/manifests/contribution.js +175 -0
  617. package/dist/skills/manifests/contribution.js.map +1 -0
  618. package/dist/skills/manifests/research.js +281 -0
  619. package/dist/skills/manifests/research.js.map +1 -0
  620. package/dist/skills/manifests/resolver.js +146 -0
  621. package/dist/skills/manifests/resolver.js.map +1 -0
  622. package/dist/skills/marketplace.js +90 -0
  623. package/dist/skills/marketplace.js.map +1 -0
  624. package/dist/skills/orchestrator/spawn.js +178 -0
  625. package/dist/skills/orchestrator/spawn.js.map +1 -0
  626. package/dist/skills/orchestrator/startup.js +451 -0
  627. package/dist/skills/orchestrator/startup.js.map +1 -0
  628. package/dist/skills/orchestrator/validator.js +301 -0
  629. package/dist/skills/orchestrator/validator.js.map +1 -0
  630. package/dist/skills/precedence-integration.js +73 -0
  631. package/dist/skills/precedence-integration.js.map +1 -0
  632. package/dist/skills/precedence-types.js +16 -0
  633. package/dist/skills/precedence-types.js.map +1 -0
  634. package/dist/skills/routing-table.js +63 -0
  635. package/dist/skills/routing-table.js.map +1 -0
  636. package/dist/skills/skill-paths.js +217 -0
  637. package/dist/skills/skill-paths.js.map +1 -0
  638. package/dist/skills/test-utility.js +55 -0
  639. package/dist/skills/test-utility.js.map +1 -0
  640. package/dist/skills/types.js +118 -0
  641. package/dist/skills/types.js.map +1 -0
  642. package/dist/skills/validation.js +183 -0
  643. package/dist/skills/validation.js.map +1 -0
  644. package/dist/skills/version.js +57 -0
  645. package/dist/skills/version.js.map +1 -0
  646. package/dist/snapshot/index.js +188 -0
  647. package/dist/snapshot/index.js.map +1 -0
  648. package/dist/spawn/adapter-registry.js +246 -0
  649. package/dist/spawn/adapter-registry.js.map +1 -0
  650. package/dist/spawn/index.js +10 -0
  651. package/dist/spawn/index.js.map +1 -0
  652. package/dist/stats/index.d.ts.map +1 -1
  653. package/dist/stats/index.js +350 -0
  654. package/dist/stats/index.js.map +1 -0
  655. package/dist/stats/workflow-telemetry.js +400 -0
  656. package/dist/stats/workflow-telemetry.js.map +1 -0
  657. package/dist/sticky/archive.js +47 -0
  658. package/dist/sticky/archive.js.map +1 -0
  659. package/dist/sticky/convert.js +235 -0
  660. package/dist/sticky/convert.js.map +1 -0
  661. package/dist/sticky/create.js +48 -0
  662. package/dist/sticky/create.js.map +1 -0
  663. package/dist/sticky/id.js +35 -0
  664. package/dist/sticky/id.js.map +1 -0
  665. package/dist/sticky/index.js +16 -0
  666. package/dist/sticky/index.js.map +1 -0
  667. package/dist/sticky/list.js +57 -0
  668. package/dist/sticky/list.js.map +1 -0
  669. package/dist/sticky/purge.js +45 -0
  670. package/dist/sticky/purge.js.map +1 -0
  671. package/dist/sticky/show.js +42 -0
  672. package/dist/sticky/show.js.map +1 -0
  673. package/dist/sticky/types.js +10 -0
  674. package/dist/sticky/types.js.map +1 -0
  675. package/dist/store/agent-registry-accessor.js +886 -0
  676. package/dist/store/agent-registry-accessor.js.map +1 -0
  677. package/dist/store/api-key-kdf.js +84 -0
  678. package/dist/store/api-key-kdf.js.map +1 -0
  679. package/dist/store/atomic.js +167 -0
  680. package/dist/store/atomic.js.map +1 -0
  681. package/dist/store/backup-crypto.js +184 -0
  682. package/dist/store/backup-crypto.js.map +1 -0
  683. package/dist/store/backup-pack.js +581 -0
  684. package/dist/store/backup-pack.js.map +1 -0
  685. package/dist/store/backup-unpack.js +449 -0
  686. package/dist/store/backup-unpack.js.map +1 -0
  687. package/dist/store/backup.js +94 -0
  688. package/dist/store/backup.js.map +1 -0
  689. package/dist/store/brain-accessor.d.ts +7 -0
  690. package/dist/store/brain-accessor.d.ts.map +1 -1
  691. package/dist/store/brain-accessor.js +429 -0
  692. package/dist/store/brain-accessor.js.map +1 -0
  693. package/dist/store/brain-schema.d.ts +712 -45
  694. package/dist/store/brain-schema.d.ts.map +1 -1
  695. package/dist/store/brain-schema.js +549 -0
  696. package/dist/store/brain-schema.js.map +1 -0
  697. package/dist/store/brain-sqlite.d.ts.map +1 -1
  698. package/dist/store/brain-sqlite.js +257 -0
  699. package/dist/store/brain-sqlite.js.map +1 -0
  700. package/dist/store/cache.js +168 -0
  701. package/dist/store/cache.js.map +1 -0
  702. package/dist/store/chain-schema.js +51 -0
  703. package/dist/store/chain-schema.js.map +1 -0
  704. package/dist/store/cleanup-legacy.js +171 -0
  705. package/dist/store/cleanup-legacy.js.map +1 -0
  706. package/dist/store/conduit-sqlite.js +570 -0
  707. package/dist/store/conduit-sqlite.js.map +1 -0
  708. package/dist/store/converters.js +124 -0
  709. package/dist/store/converters.js.map +1 -0
  710. package/dist/store/cross-db-cleanup.js +319 -0
  711. package/dist/store/cross-db-cleanup.js.map +1 -0
  712. package/dist/store/data-accessor.js +26 -0
  713. package/dist/store/data-accessor.js.map +1 -0
  714. package/dist/store/data-safety-central.js +269 -0
  715. package/dist/store/data-safety-central.js.map +1 -0
  716. package/dist/store/data-safety.js +274 -0
  717. package/dist/store/data-safety.js.map +1 -0
  718. package/dist/store/db-helpers.js +224 -0
  719. package/dist/store/db-helpers.js.map +1 -0
  720. package/dist/store/export.js +155 -0
  721. package/dist/store/export.js.map +1 -0
  722. package/dist/store/file-utils.js +270 -0
  723. package/dist/store/file-utils.js.map +1 -0
  724. package/dist/store/git-checkpoint.js +365 -0
  725. package/dist/store/git-checkpoint.js.map +1 -0
  726. package/dist/store/global-salt.js +147 -0
  727. package/dist/store/global-salt.js.map +1 -0
  728. package/dist/store/import-logging.js +139 -0
  729. package/dist/store/import-logging.js.map +1 -0
  730. package/dist/store/import-remap.js +145 -0
  731. package/dist/store/import-remap.js.map +1 -0
  732. package/dist/store/import-sort.js +121 -0
  733. package/dist/store/import-sort.js.map +1 -0
  734. package/dist/store/index.js +29 -0
  735. package/dist/store/index.js.map +1 -0
  736. package/dist/store/json.js +208 -0
  737. package/dist/store/json.js.map +1 -0
  738. package/dist/store/lifecycle-store.js +249 -0
  739. package/dist/store/lifecycle-store.js.map +1 -0
  740. package/dist/store/lock.js +70 -0
  741. package/dist/store/lock.js.map +1 -0
  742. package/dist/store/migrate-signaldock-to-conduit.js +562 -0
  743. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -0
  744. package/dist/store/migration-manager.d.ts +5 -1
  745. package/dist/store/migration-manager.d.ts.map +1 -1
  746. package/dist/store/migration-manager.js +288 -0
  747. package/dist/store/migration-manager.js.map +1 -0
  748. package/dist/store/migration-sqlite.js +676 -0
  749. package/dist/store/migration-sqlite.js.map +1 -0
  750. package/dist/store/nexus-schema.d.ts +480 -2
  751. package/dist/store/nexus-schema.d.ts.map +1 -1
  752. package/dist/store/nexus-schema.js +268 -0
  753. package/dist/store/nexus-schema.js.map +1 -0
  754. package/dist/store/nexus-sqlite.js +242 -0
  755. package/dist/store/nexus-sqlite.js.map +1 -0
  756. package/dist/store/nexus-validation-schemas.js +40 -0
  757. package/dist/store/nexus-validation-schemas.js.map +1 -0
  758. package/dist/store/parsers.js +37 -0
  759. package/dist/store/parsers.js.map +1 -0
  760. package/dist/store/project-detect.js +457 -0
  761. package/dist/store/project-detect.js.map +1 -0
  762. package/dist/store/provider.js +101 -0
  763. package/dist/store/provider.js.map +1 -0
  764. package/dist/store/regenerators.js +207 -0
  765. package/dist/store/regenerators.js.map +1 -0
  766. package/dist/store/restore-conflict-report.js +206 -0
  767. package/dist/store/restore-conflict-report.js.map +1 -0
  768. package/dist/store/restore-json-merge.js +454 -0
  769. package/dist/store/restore-json-merge.js.map +1 -0
  770. package/dist/store/safety-data-accessor.js +257 -0
  771. package/dist/store/safety-data-accessor.js.map +1 -0
  772. package/dist/store/schema.js +7 -0
  773. package/dist/store/schema.js.map +1 -0
  774. package/dist/store/session-store.js +219 -0
  775. package/dist/store/session-store.js.map +1 -0
  776. package/dist/store/signaldock-sqlite.js +550 -0
  777. package/dist/store/signaldock-sqlite.js.map +1 -0
  778. package/dist/store/sqlite-backup.js +498 -0
  779. package/dist/store/sqlite-backup.js.map +1 -0
  780. package/dist/store/sqlite-data-accessor.js +787 -0
  781. package/dist/store/sqlite-data-accessor.js.map +1 -0
  782. package/dist/store/sqlite.js +483 -0
  783. package/dist/store/sqlite.js.map +1 -0
  784. package/dist/store/status-registry.js +8 -0
  785. package/dist/store/status-registry.js.map +1 -0
  786. package/dist/store/t310-readiness.js +115 -0
  787. package/dist/store/t310-readiness.js.map +1 -0
  788. package/dist/store/task-store.js +358 -0
  789. package/dist/store/task-store.js.map +1 -0
  790. package/dist/store/tasks-schema.d.ts +10 -10
  791. package/dist/store/tasks-schema.js +610 -0
  792. package/dist/store/tasks-schema.js.map +1 -0
  793. package/dist/store/typed-query.js +15 -0
  794. package/dist/store/typed-query.js.map +1 -0
  795. package/dist/store/validation-schemas.d.ts +50 -34
  796. package/dist/store/validation-schemas.d.ts.map +1 -1
  797. package/dist/store/validation-schemas.js +278 -0
  798. package/dist/store/validation-schemas.js.map +1 -0
  799. package/dist/system/archive-analytics.js +277 -0
  800. package/dist/system/archive-analytics.js.map +1 -0
  801. package/dist/system/archive-stats.js +64 -0
  802. package/dist/system/archive-stats.js.map +1 -0
  803. package/dist/system/audit.js +145 -0
  804. package/dist/system/audit.js.map +1 -0
  805. package/dist/system/backup.js +280 -0
  806. package/dist/system/backup.js.map +1 -0
  807. package/dist/system/cleanup.js +134 -0
  808. package/dist/system/cleanup.js.map +1 -0
  809. package/dist/system/dependencies.d.ts +43 -0
  810. package/dist/system/dependencies.d.ts.map +1 -0
  811. package/dist/system/dependencies.js +466 -0
  812. package/dist/system/dependencies.js.map +1 -0
  813. package/dist/system/health.d.ts +3 -0
  814. package/dist/system/health.d.ts.map +1 -1
  815. package/dist/system/health.js +1206 -0
  816. package/dist/system/health.js.map +1 -0
  817. package/dist/system/index.js +18 -0
  818. package/dist/system/index.js.map +1 -0
  819. package/dist/system/inject-generate.js +122 -0
  820. package/dist/system/inject-generate.js.map +1 -0
  821. package/dist/system/labels.js +38 -0
  822. package/dist/system/labels.js.map +1 -0
  823. package/dist/system/metrics.js +61 -0
  824. package/dist/system/metrics.js.map +1 -0
  825. package/dist/system/migrate.js +43 -0
  826. package/dist/system/migrate.js.map +1 -0
  827. package/dist/system/platform-paths.js +80 -0
  828. package/dist/system/platform-paths.js.map +1 -0
  829. package/dist/system/runtime.js +161 -0
  830. package/dist/system/runtime.js.map +1 -0
  831. package/dist/system/safestop.js +89 -0
  832. package/dist/system/safestop.js.map +1 -0
  833. package/dist/system/storage-preflight.js +123 -0
  834. package/dist/system/storage-preflight.js.map +1 -0
  835. package/dist/task-work/index.js +159 -0
  836. package/dist/task-work/index.js.map +1 -0
  837. package/dist/tasks/add.js +837 -0
  838. package/dist/tasks/add.js.map +1 -0
  839. package/dist/tasks/analyze.js +85 -0
  840. package/dist/tasks/analyze.js.map +1 -0
  841. package/dist/tasks/archive.js +90 -0
  842. package/dist/tasks/archive.js.map +1 -0
  843. package/dist/tasks/atomicity.js +83 -0
  844. package/dist/tasks/atomicity.js.map +1 -0
  845. package/dist/tasks/cancel-ops.js +83 -0
  846. package/dist/tasks/cancel-ops.js.map +1 -0
  847. package/dist/tasks/complete.d.ts.map +1 -1
  848. package/dist/tasks/complete.js +229 -0
  849. package/dist/tasks/complete.js.map +1 -0
  850. package/dist/tasks/crossref-extract.js +73 -0
  851. package/dist/tasks/crossref-extract.js.map +1 -0
  852. package/dist/tasks/delete-preview.js +192 -0
  853. package/dist/tasks/delete-preview.js.map +1 -0
  854. package/dist/tasks/delete.js +120 -0
  855. package/dist/tasks/delete.js.map +1 -0
  856. package/dist/tasks/deletion-strategy.js +200 -0
  857. package/dist/tasks/deletion-strategy.js.map +1 -0
  858. package/dist/tasks/dependency-check.js +278 -0
  859. package/dist/tasks/dependency-check.js.map +1 -0
  860. package/dist/tasks/deps-ready.js +32 -0
  861. package/dist/tasks/deps-ready.js.map +1 -0
  862. package/dist/tasks/enforcement.js +86 -0
  863. package/dist/tasks/enforcement.js.map +1 -0
  864. package/dist/tasks/epic-enforcement.js +294 -0
  865. package/dist/tasks/epic-enforcement.js.map +1 -0
  866. package/dist/tasks/find.js +163 -0
  867. package/dist/tasks/find.js.map +1 -0
  868. package/dist/tasks/graph-cache.js +127 -0
  869. package/dist/tasks/graph-cache.js.map +1 -0
  870. package/dist/tasks/graph-ops.d.ts.map +1 -1
  871. package/dist/tasks/graph-ops.js +173 -0
  872. package/dist/tasks/graph-ops.js.map +1 -0
  873. package/dist/tasks/graph-rag.js +328 -0
  874. package/dist/tasks/graph-rag.js.map +1 -0
  875. package/dist/tasks/hierarchy-policy.js +149 -0
  876. package/dist/tasks/hierarchy-policy.js.map +1 -0
  877. package/dist/tasks/hierarchy.js +185 -0
  878. package/dist/tasks/hierarchy.js.map +1 -0
  879. package/dist/tasks/id-generator.js +65 -0
  880. package/dist/tasks/id-generator.js.map +1 -0
  881. package/dist/tasks/index.js +14 -0
  882. package/dist/tasks/index.js.map +1 -0
  883. package/dist/tasks/labels.js +55 -0
  884. package/dist/tasks/labels.js.map +1 -0
  885. package/dist/tasks/list.js +75 -0
  886. package/dist/tasks/list.js.map +1 -0
  887. package/dist/tasks/phase-tracking.js +133 -0
  888. package/dist/tasks/phase-tracking.js.map +1 -0
  889. package/dist/tasks/pipeline-stage.js +248 -0
  890. package/dist/tasks/pipeline-stage.js.map +1 -0
  891. package/dist/tasks/plan.js +268 -0
  892. package/dist/tasks/plan.js.map +1 -0
  893. package/dist/tasks/relates.js +101 -0
  894. package/dist/tasks/relates.js.map +1 -0
  895. package/dist/tasks/show.js +83 -0
  896. package/dist/tasks/show.js.map +1 -0
  897. package/dist/tasks/size-weighting.js +86 -0
  898. package/dist/tasks/size-weighting.js.map +1 -0
  899. package/dist/tasks/staleness.js +86 -0
  900. package/dist/tasks/staleness.js.map +1 -0
  901. package/dist/tasks/task-ops.js +1741 -0
  902. package/dist/tasks/task-ops.js.map +1 -0
  903. package/dist/tasks/update.js +303 -0
  904. package/dist/tasks/update.js.map +1 -0
  905. package/dist/templates/index.js +10 -0
  906. package/dist/templates/index.js.map +1 -0
  907. package/dist/templates/parser.js +254 -0
  908. package/dist/templates/parser.js.map +1 -0
  909. package/dist/ui/aliases.js +153 -0
  910. package/dist/ui/aliases.js.map +1 -0
  911. package/dist/ui/changelog.js +184 -0
  912. package/dist/ui/changelog.js.map +1 -0
  913. package/dist/ui/command-registry.js +168 -0
  914. package/dist/ui/command-registry.js.map +1 -0
  915. package/dist/ui/flags.js +94 -0
  916. package/dist/ui/flags.js.map +1 -0
  917. package/dist/ui/index.js +24 -0
  918. package/dist/ui/index.js.map +1 -0
  919. package/dist/upgrade.js +1148 -0
  920. package/dist/upgrade.js.map +1 -0
  921. package/dist/validation/chain-validation.js +146 -0
  922. package/dist/validation/chain-validation.js.map +1 -0
  923. package/dist/validation/compliance.js +155 -0
  924. package/dist/validation/compliance.js.map +1 -0
  925. package/dist/validation/docs-sync.js +212 -0
  926. package/dist/validation/docs-sync.js.map +1 -0
  927. package/dist/validation/doctor/checks.js +1069 -0
  928. package/dist/validation/doctor/checks.js.map +1 -0
  929. package/dist/validation/doctor/index.js +9 -0
  930. package/dist/validation/doctor/index.js.map +1 -0
  931. package/dist/validation/doctor/project-cache.js +160 -0
  932. package/dist/validation/doctor/project-cache.js.map +1 -0
  933. package/dist/validation/doctor/utils.js +155 -0
  934. package/dist/validation/doctor/utils.js.map +1 -0
  935. package/dist/validation/engine.js +914 -0
  936. package/dist/validation/engine.js.map +1 -0
  937. package/dist/validation/gap-check.js +175 -0
  938. package/dist/validation/gap-check.js.map +1 -0
  939. package/dist/validation/index.js +40 -0
  940. package/dist/validation/index.js.map +1 -0
  941. package/dist/validation/manifest.js +237 -0
  942. package/dist/validation/manifest.js.map +1 -0
  943. package/dist/validation/operation-gate-validators.js +724 -0
  944. package/dist/validation/operation-gate-validators.js.map +1 -0
  945. package/dist/validation/operation-verification-gates.js +532 -0
  946. package/dist/validation/operation-verification-gates.js.map +1 -0
  947. package/dist/validation/param-utils.js +141 -0
  948. package/dist/validation/param-utils.js.map +1 -0
  949. package/dist/validation/protocol-common.js +300 -0
  950. package/dist/validation/protocol-common.js.map +1 -0
  951. package/dist/validation/protocols/_shared.js +82 -0
  952. package/dist/validation/protocols/_shared.js.map +1 -0
  953. package/dist/validation/protocols/architecture-decision.js +31 -0
  954. package/dist/validation/protocols/architecture-decision.js.map +1 -0
  955. package/dist/validation/protocols/artifact-publish.js +28 -0
  956. package/dist/validation/protocols/artifact-publish.js.map +1 -0
  957. package/dist/validation/protocols/consensus.js +41 -0
  958. package/dist/validation/protocols/consensus.js.map +1 -0
  959. package/dist/validation/protocols/contribution.js +27 -0
  960. package/dist/validation/protocols/contribution.js.map +1 -0
  961. package/dist/validation/protocols/decomposition.js +28 -0
  962. package/dist/validation/protocols/decomposition.js.map +1 -0
  963. package/dist/validation/protocols/implementation.js +24 -0
  964. package/dist/validation/protocols/implementation.js.map +1 -0
  965. package/dist/validation/protocols/provenance.js +29 -0
  966. package/dist/validation/protocols/provenance.js.map +1 -0
  967. package/dist/validation/protocols/release.js +29 -0
  968. package/dist/validation/protocols/release.js.map +1 -0
  969. package/dist/validation/protocols/research.js +24 -0
  970. package/dist/validation/protocols/research.js.map +1 -0
  971. package/dist/validation/protocols/specification.js +27 -0
  972. package/dist/validation/protocols/specification.js.map +1 -0
  973. package/dist/validation/protocols/testing.js +30 -0
  974. package/dist/validation/protocols/testing.js.map +1 -0
  975. package/dist/validation/protocols/validation.js +30 -0
  976. package/dist/validation/protocols/validation.js.map +1 -0
  977. package/dist/validation/schema-integrity.js +170 -0
  978. package/dist/validation/schema-integrity.js.map +1 -0
  979. package/dist/validation/schema-validator.js +176 -0
  980. package/dist/validation/schema-validator.js.map +1 -0
  981. package/dist/validation/validate-ops.js +937 -0
  982. package/dist/validation/validate-ops.js.map +1 -0
  983. package/dist/validation/validation-rules.js +226 -0
  984. package/dist/validation/validation-rules.js.map +1 -0
  985. package/dist/validation/verification.js +321 -0
  986. package/dist/validation/verification.js.map +1 -0
  987. package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
  988. package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
  989. package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
  990. package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
  991. package/package.json +19 -19
  992. package/src/bootstrap.ts +124 -0
  993. package/src/code/index.ts +20 -4
  994. package/src/code/parser.ts +310 -110
  995. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.ts +19 -45
  996. package/src/hooks/handlers/__tests__/session-hooks.test.ts +42 -54
  997. package/src/hooks/handlers/index.ts +6 -0
  998. package/src/hooks/handlers/intelligence-hooks.ts +80 -0
  999. package/src/hooks/handlers/session-hooks.ts +52 -33
  1000. package/src/hooks/handlers/watchdog-hooks.ts +187 -0
  1001. package/src/index.ts +14 -0
  1002. package/src/injection.ts +41 -2
  1003. package/src/internal.ts +68 -9
  1004. package/src/lib/tree-sitter-languages.ts +11 -7
  1005. package/src/memory/__tests__/auto-extract.test.ts +20 -82
  1006. package/src/memory/__tests__/embedding-pipeline.test.ts +389 -0
  1007. package/src/memory/auto-extract.ts +34 -120
  1008. package/src/memory/brain-backfill.ts +471 -0
  1009. package/src/memory/brain-consolidator.ts +344 -0
  1010. package/src/memory/brain-lifecycle.ts +636 -2
  1011. package/src/memory/brain-purge.ts +315 -0
  1012. package/src/memory/brain-retrieval.ts +486 -2
  1013. package/src/memory/brain-search.ts +61 -10
  1014. package/src/memory/decisions.ts +96 -3
  1015. package/src/memory/engine-compat.ts +177 -11
  1016. package/src/memory/extraction-gate.ts +574 -0
  1017. package/src/memory/graph-auto-populate.ts +173 -0
  1018. package/src/memory/graph-queries.ts +424 -0
  1019. package/src/memory/index.ts +6 -2
  1020. package/src/memory/learnings.ts +87 -7
  1021. package/src/memory/patterns.ts +95 -13
  1022. package/src/memory/quality-scoring.ts +257 -0
  1023. package/src/nexus/nexus-bridge.ts +444 -0
  1024. package/src/scaffold.ts +42 -0
  1025. package/src/sessions/__tests__/session-memory-bridge.test.ts +27 -49
  1026. package/src/sessions/session-memory-bridge.ts +19 -47
  1027. package/src/stats/index.ts +11 -3
  1028. package/src/store/__tests__/brain-accessor-pageindex.test.ts +93 -22
  1029. package/src/store/brain-accessor.ts +48 -2
  1030. package/src/store/brain-schema.ts +403 -13
  1031. package/src/store/brain-sqlite.ts +90 -0
  1032. package/src/store/migration-manager.ts +83 -12
  1033. package/src/store/nexus-schema.ts +257 -3
  1034. package/src/system/dependencies.ts +534 -0
  1035. package/src/system/health.ts +143 -22
  1036. package/src/tasks/complete.ts +40 -0
  1037. package/src/tasks/graph-ops.ts +1 -0
  1038. package/src/tasks/task-ops.ts +1 -1
  1039. package/templates/CLEO-INJECTION.md +15 -0
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Drizzle ORM schema for CLEO nexus.db (SQLite via node:sqlite + sqlite-proxy).
3
+ *
4
+ * Tables: project_registry, nexus_audit_log, nexus_schema_meta,
5
+ * nexus_nodes, nexus_relations
6
+ * Stores cross-project registry and audit infrastructure for the Nexus domain,
7
+ * plus the code intelligence graph layer (nodes + directed edges).
8
+ *
9
+ * @task T5365
10
+ * @task T529
11
+ */
12
+ import { sql } from 'drizzle-orm';
13
+ import { index, integer, real, sqliteTable, text } from 'drizzle-orm/sqlite-core';
14
+ // === PROJECT_REGISTRY TABLE ===
15
+ /** Central registry of all CLEO projects known to the Nexus. */
16
+ export const projectRegistry = sqliteTable('project_registry', {
17
+ projectId: text('project_id').primaryKey(),
18
+ projectHash: text('project_hash').notNull().unique(),
19
+ projectPath: text('project_path').notNull().unique(),
20
+ name: text('name').notNull(),
21
+ registeredAt: text('registered_at').notNull().default(sql `(datetime('now'))`),
22
+ lastSeen: text('last_seen').notNull().default(sql `(datetime('now'))`),
23
+ healthStatus: text('health_status').notNull().default('unknown'),
24
+ healthLastCheck: text('health_last_check'),
25
+ permissions: text('permissions').notNull().default('read'),
26
+ lastSync: text('last_sync').notNull().default(sql `(datetime('now'))`),
27
+ taskCount: integer('task_count').notNull().default(0),
28
+ labelsJson: text('labels_json').notNull().default('[]'),
29
+ }, (table) => [
30
+ index('idx_project_registry_hash').on(table.projectHash),
31
+ index('idx_project_registry_health').on(table.healthStatus),
32
+ index('idx_project_registry_name').on(table.name),
33
+ ]);
34
+ // === NEXUS_AUDIT_LOG TABLE ===
35
+ /** Append-only audit log for all Nexus operations across projects. */
36
+ export const nexusAuditLog = sqliteTable('nexus_audit_log', {
37
+ id: text('id').primaryKey(),
38
+ timestamp: text('timestamp').notNull().default(sql `(datetime('now'))`),
39
+ action: text('action').notNull(),
40
+ projectHash: text('project_hash'),
41
+ projectId: text('project_id'),
42
+ domain: text('domain'),
43
+ operation: text('operation'),
44
+ sessionId: text('session_id'),
45
+ requestId: text('request_id'),
46
+ source: text('source'),
47
+ gateway: text('gateway'),
48
+ success: integer('success'),
49
+ durationMs: integer('duration_ms'),
50
+ detailsJson: text('details_json').default('{}'),
51
+ errorMessage: text('error_message'),
52
+ }, (table) => [
53
+ index('idx_nexus_audit_timestamp').on(table.timestamp),
54
+ index('idx_nexus_audit_action').on(table.action),
55
+ index('idx_nexus_audit_project_hash').on(table.projectHash),
56
+ index('idx_nexus_audit_project_id').on(table.projectId),
57
+ index('idx_nexus_audit_session').on(table.sessionId),
58
+ ]);
59
+ // === SCHEMA METADATA ===
60
+ /** Key-value store for nexus.db schema versioning and metadata. */
61
+ export const nexusSchemaMeta = sqliteTable('nexus_schema_meta', {
62
+ key: text('key').primaryKey(),
63
+ value: text('value').notNull(),
64
+ });
65
+ // === NEXUS_NODES TABLE ===
66
+ /**
67
+ * All node kind values — matches GraphNodeKind in @cleocode/contracts.
68
+ *
69
+ * Kept as a const tuple for use in Drizzle enum column definitions.
70
+ * The ordering is intentional: structural → module → callable → type →
71
+ * value-level → language-specific → graph-level → legacy.
72
+ */
73
+ export const NEXUS_NODE_KINDS = [
74
+ // Structural
75
+ 'file',
76
+ 'folder',
77
+ // Module-level
78
+ 'module',
79
+ 'namespace',
80
+ // Callable
81
+ 'function',
82
+ 'method',
83
+ 'constructor',
84
+ // Type hierarchy
85
+ 'class',
86
+ 'interface',
87
+ 'struct',
88
+ 'trait',
89
+ 'impl',
90
+ 'type_alias',
91
+ 'enum',
92
+ // Value-level
93
+ 'property',
94
+ 'constant',
95
+ 'variable',
96
+ 'static',
97
+ 'record',
98
+ 'delegate',
99
+ // Language-specific constructs
100
+ 'macro',
101
+ 'union',
102
+ 'typedef',
103
+ 'annotation',
104
+ 'template',
105
+ // Graph-level (synthetic nodes from analysis phases)
106
+ 'community',
107
+ 'process',
108
+ 'route',
109
+ // External references
110
+ 'tool',
111
+ 'section',
112
+ // Legacy (kept for T506 compatibility)
113
+ 'import',
114
+ 'export',
115
+ 'type',
116
+ ];
117
+ /**
118
+ * Graph nodes table — one row per symbol or structural element.
119
+ *
120
+ * Stores all code intelligence graph nodes indexed per project.
121
+ * Synthetic nodes (community, process) share this table with
122
+ * source-derived nodes (function, class, file).
123
+ *
124
+ * Both this table and `code_index` are populated from the same parse pass.
125
+ * They serve complementary roles — do NOT merge them.
126
+ *
127
+ * @task T529
128
+ */
129
+ export const nexusNodes = sqliteTable('nexus_nodes', {
130
+ /** Stable node ID. Format: `<filePath>::<name>` for symbols,
131
+ * `<filePath>` for file nodes, `community:<n>` for community nodes,
132
+ * `process:<slug>` for execution flow nodes. */
133
+ id: text('id').primaryKey(),
134
+ /** Foreign key to project_registry.project_id. Scopes the node. */
135
+ projectId: text('project_id').notNull(),
136
+ /** Node kind from GraphNodeKind union. */
137
+ kind: text('kind', { enum: NEXUS_NODE_KINDS }).notNull(),
138
+ /** Human-readable label for display. For symbols, same as name.
139
+ * For communities, the inferred folder label. For processes, the
140
+ * entry point function name. */
141
+ label: text('label').notNull(),
142
+ /** Symbol name as it appears in source code. Null for file/folder nodes. */
143
+ name: text('name'),
144
+ /** File path relative to project root. Null for community/process nodes. */
145
+ filePath: text('file_path'),
146
+ /** Start line in source file (1-based). Null for structural nodes. */
147
+ startLine: integer('start_line'),
148
+ /** End line in source file (1-based). Null for structural nodes. */
149
+ endLine: integer('end_line'),
150
+ /** Source language (typescript, python, go, rust, etc.). */
151
+ language: text('language'),
152
+ /** Whether the symbol is publicly exported from its module. */
153
+ isExported: integer('is_exported', { mode: 'boolean' }).notNull().default(false),
154
+ /** Parent node ID for nested symbols (e.g., method inside class).
155
+ * References nexus_nodes.id in the same project. Soft FK. */
156
+ parentId: text('parent_id'),
157
+ /** JSON array of parameter name strings for functions/methods.
158
+ * Stored as `["param1","param2"]`. Null if not applicable. */
159
+ parametersJson: text('parameters_json'),
160
+ /** Return type annotation text (e.g., "Promise<void>"). */
161
+ returnType: text('return_type'),
162
+ /** First line of the TSDoc/JSDoc comment for this symbol. */
163
+ docSummary: text('doc_summary'),
164
+ /** Community membership ID — references the community node's id.
165
+ * Set during Phase 4.5 community detection. Null until then. */
166
+ communityId: text('community_id'),
167
+ /** JSON blob for kind-specific metadata.
168
+ * For `process` nodes: `{"stepCount": 7, "entryScore": 0.92}`.
169
+ * For `community` nodes: `{"memberCount": 14, "topFolders": ["src/core"]}`.
170
+ * For `route` nodes: `{"method": "GET", "path": "/api/v1/tasks"}`.
171
+ * For all others: null. */
172
+ metaJson: text('meta_json'),
173
+ /** ISO 8601 timestamp when this node was last indexed. */
174
+ indexedAt: text('indexed_at').notNull().default(sql `(datetime('now'))`),
175
+ }, (table) => [
176
+ index('idx_nexus_nodes_project').on(table.projectId),
177
+ index('idx_nexus_nodes_kind').on(table.kind),
178
+ index('idx_nexus_nodes_file').on(table.filePath),
179
+ index('idx_nexus_nodes_name').on(table.name),
180
+ index('idx_nexus_nodes_project_kind').on(table.projectId, table.kind),
181
+ index('idx_nexus_nodes_project_file').on(table.projectId, table.filePath),
182
+ index('idx_nexus_nodes_community').on(table.communityId),
183
+ index('idx_nexus_nodes_parent').on(table.parentId),
184
+ index('idx_nexus_nodes_exported').on(table.isExported),
185
+ ]);
186
+ // === NEXUS_RELATIONS TABLE ===
187
+ /**
188
+ * All relation type values — matches GraphRelationType in @cleocode/contracts.
189
+ *
190
+ * Kept as a const tuple for use in Drizzle enum column definitions.
191
+ */
192
+ export const NEXUS_RELATION_TYPES = [
193
+ // Structural
194
+ 'contains',
195
+ // Definition / usage
196
+ 'defines',
197
+ 'imports',
198
+ 'accesses',
199
+ // Callable
200
+ 'calls',
201
+ // Type hierarchy
202
+ 'extends',
203
+ 'implements',
204
+ 'method_overrides',
205
+ 'method_implements',
206
+ // Class structure
207
+ 'has_method',
208
+ 'has_property',
209
+ // Graph-level (synthetic, from analysis phases)
210
+ 'member_of', // symbol → community
211
+ 'step_in_process', // symbol → process
212
+ // Web / API
213
+ 'handles_route', // function → route node
214
+ 'fetches', // function → external API
215
+ // Tool / agent
216
+ 'handles_tool',
217
+ 'entry_point_of', // function → process
218
+ // Wrapping / delegation
219
+ 'wraps',
220
+ // Data access
221
+ 'queries',
222
+ // Cross-graph (brain link)
223
+ 'documents', // brain_page_node → nexus_nodes
224
+ 'applies_to', // brain_page_node → nexus_nodes
225
+ ];
226
+ /**
227
+ * Graph relations table — one row per directed edge.
228
+ *
229
+ * All graph traversal (impact, context, process detection) reads from
230
+ * this table after ingestion completes.
231
+ *
232
+ * Source and target reference nexus_nodes.id. They are soft FKs —
233
+ * unresolved targets (e.g., external packages) are stored as raw specifiers.
234
+ *
235
+ * @task T529
236
+ */
237
+ export const nexusRelations = sqliteTable('nexus_relations', {
238
+ /** UUID v4 row identifier. */
239
+ id: text('id').primaryKey(),
240
+ /** Foreign key to project_registry.project_id. */
241
+ projectId: text('project_id').notNull(),
242
+ /** Source node ID (nexus_nodes.id). */
243
+ sourceId: text('source_id').notNull(),
244
+ /** Target node ID (nexus_nodes.id) or raw module specifier for
245
+ * unresolved imports. Example: `@cleocode/contracts` or
246
+ * `src/core/parser.ts::parseFile`. */
247
+ targetId: text('target_id').notNull(),
248
+ /** Semantic relation type. */
249
+ type: text('type', { enum: NEXUS_RELATION_TYPES }).notNull(),
250
+ /** Extractor confidence (0.0 to 1.0). */
251
+ confidence: real('confidence').notNull(),
252
+ /** Human-readable note explaining why this relation was emitted. */
253
+ reason: text('reason'),
254
+ /** Step index within an execution flow (for step_in_process relations). */
255
+ step: integer('step'),
256
+ /** ISO 8601 timestamp when this relation was last indexed. */
257
+ indexedAt: text('indexed_at').notNull().default(sql `(datetime('now'))`),
258
+ }, (table) => [
259
+ index('idx_nexus_relations_project').on(table.projectId),
260
+ index('idx_nexus_relations_source').on(table.sourceId),
261
+ index('idx_nexus_relations_target').on(table.targetId),
262
+ index('idx_nexus_relations_type').on(table.type),
263
+ index('idx_nexus_relations_project_type').on(table.projectId, table.type),
264
+ index('idx_nexus_relations_source_type').on(table.sourceId, table.type),
265
+ index('idx_nexus_relations_target_type').on(table.targetId, table.type),
266
+ index('idx_nexus_relations_confidence').on(table.confidence),
267
+ ]);
268
+ //# sourceMappingURL=nexus-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nexus-schema.js","sourceRoot":"","sources":["../../src/store/nexus-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * SQLite store for nexus.db via drizzle-orm/node-sqlite + node:sqlite (DatabaseSync).
3
+ *
4
+ * Separate database from tasks.db and brain.db for cross-project registry
5
+ * and audit infrastructure. Follows the same singleton + WAL + migration
6
+ * pattern as brain-sqlite.ts.
7
+ *
8
+ * nexus.db lives in ~/.cleo/ (global home) rather than per-project .cleo/,
9
+ * since it stores cross-project data.
10
+ *
11
+ * @task T5365
12
+ */
13
+ import { copyFileSync, existsSync, mkdirSync } from 'node:fs';
14
+ import { dirname, join } from 'node:path';
15
+ import { fileURLToPath } from 'node:url';
16
+ import { readMigrationFiles } from 'drizzle-orm/migrator';
17
+ import { drizzle } from 'drizzle-orm/node-sqlite';
18
+ import { migrate } from 'drizzle-orm/node-sqlite/migrator';
19
+ import { getCleoHome } from '../paths.js';
20
+ import * as nexusSchema from './nexus-schema.js';
21
+ import { isSqliteBusy, openNativeDatabase } from './sqlite.js';
22
+ /** Database file name within ~/.cleo/ directory. */
23
+ const DB_FILENAME = 'nexus.db';
24
+ /** Schema version for newly created nexus databases. Single source of truth. */
25
+ export const NEXUS_SCHEMA_VERSION = '1.0.0';
26
+ /** Singleton state for lazy initialization. */
27
+ let _nexusDb = null;
28
+ let _nexusNativeDb = null;
29
+ let _nexusDbPath = null;
30
+ /** Guard against concurrent initialization (async migration). */
31
+ let _nexusInitPromise = null;
32
+ /**
33
+ * Returns the global-tier nexus.db path. ALWAYS under `getCleoHome()`.
34
+ *
35
+ * nexus.db is a cross-project registry and must live in the global CLEO
36
+ * home directory (`~/.local/share/cleo/` on Linux via XDG). It is NEVER
37
+ * written to a per-project `.cleo/` directory.
38
+ *
39
+ * @task T307
40
+ * @epic T299
41
+ * @why ADR-036 §Decision/Global-Tier: nexus.db is global-only. This guard
42
+ * throws immediately if path resolution ever drifts outside getCleoHome(),
43
+ * preventing silent creation of project-tier stray nexus.db files.
44
+ * @throws {Error} If the resolved path is not under `getCleoHome()` — this
45
+ * indicates a code path that bypasses canonical path resolution and is a
46
+ * bug that must be fixed rather than silently tolerated.
47
+ */
48
+ export function getNexusDbPath() {
49
+ const cleoHome = getCleoHome();
50
+ const nexusPath = join(cleoHome, DB_FILENAME);
51
+ // Guard: the resolved path MUST be under the global tier.
52
+ // Under normal operation this invariant is always satisfied because we
53
+ // build nexusPath from cleoHome above. The assertion catches hypothetical
54
+ // future regressions where getCleoHome() is monkey-patched or join()
55
+ // produces an unexpected result on exotic platforms.
56
+ if (!nexusPath.startsWith(cleoHome)) {
57
+ throw new Error(`BUG: getNexusDbPath() resolved to "${nexusPath}" which is NOT under ` +
58
+ `getCleoHome() ("${cleoHome}"). nexus.db is global-only per ADR-036. ` +
59
+ `This indicates a code path that bypasses canonical path resolution — ` +
60
+ `fix the caller, do not suppress this error.`);
61
+ }
62
+ return nexusPath;
63
+ }
64
+ /**
65
+ * Resolve the path to the drizzle-nexus migrations folder.
66
+ * Works from both src/ (dev via tsx) and dist/ (compiled via esbuild bundle).
67
+ *
68
+ * - Source layout: __dirname = src/store/ → need ../../migrations/drizzle-nexus
69
+ * - Bundled layout: __dirname = dist/ → need ../migrations/drizzle-nexus
70
+ */
71
+ export function resolveNexusMigrationsFolder() {
72
+ const __filename = fileURLToPath(import.meta.url);
73
+ const __dirname = dirname(__filename);
74
+ const isBundled = __dirname.endsWith('/dist') || __dirname.endsWith('\\dist');
75
+ const pkgRoot = isBundled ? join(__dirname, '..') : join(__dirname, '..', '..');
76
+ return join(pkgRoot, 'migrations', 'drizzle-nexus');
77
+ }
78
+ /**
79
+ * Check whether a table exists in the SQLite database.
80
+ */
81
+ function tableExists(nativeDb, tableName) {
82
+ const result = nativeDb
83
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?")
84
+ .get(tableName);
85
+ return !!result;
86
+ }
87
+ /**
88
+ * Run drizzle migrations to create/update nexus.db tables.
89
+ *
90
+ * Uses IMMEDIATE transactions to prevent concurrent migration races.
91
+ * Follows the same pattern as brain-sqlite.ts runBrainMigrations().
92
+ *
93
+ * @task T5365
94
+ */
95
+ function runNexusMigrations(nativeDb, db) {
96
+ const migrationsFolder = resolveNexusMigrationsFolder();
97
+ // If existing DB with pending migrations, create safety backup (cleo compat)
98
+ if (tableExists(nativeDb, 'project_registry') && _nexusDbPath) {
99
+ const backupPath = _nexusDbPath.replace(/\.db$/, '-pre-cleo.db.bak');
100
+ if (!existsSync(backupPath)) {
101
+ try {
102
+ copyFileSync(_nexusDbPath, backupPath);
103
+ }
104
+ catch {
105
+ /* non-fatal */
106
+ }
107
+ }
108
+ }
109
+ // Bootstrap existing databases that predate drizzle migrations.
110
+ // Mark baseline migration as already applied if tables exist but
111
+ // __drizzle_migrations doesn't.
112
+ if (tableExists(nativeDb, 'project_registry') && !tableExists(nativeDb, '__drizzle_migrations')) {
113
+ const migrations = readMigrationFiles({ migrationsFolder });
114
+ const baseline = migrations[0];
115
+ if (baseline) {
116
+ nativeDb
117
+ .prepare(`CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)`)
118
+ .run();
119
+ nativeDb
120
+ .prepare(`INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES ('${baseline.hash}', ${baseline.folderMillis})`)
121
+ .run();
122
+ }
123
+ }
124
+ // Run pending migrations via drizzle-orm/node-sqlite/migrator (synchronous).
125
+ const MAX_RETRIES = 5;
126
+ const BASE_DELAY_MS = 100;
127
+ const MAX_DELAY_MS = 2000;
128
+ let lastError;
129
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
130
+ try {
131
+ migrate(db, { migrationsFolder });
132
+ return;
133
+ }
134
+ catch (err) {
135
+ if (!isSqliteBusy(err) || attempt === MAX_RETRIES)
136
+ throw err;
137
+ lastError = err;
138
+ const delay = Math.min(BASE_DELAY_MS * 2 ** (attempt - 1) * (1 + Math.random() * 0.5), MAX_DELAY_MS);
139
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, Math.round(delay));
140
+ }
141
+ }
142
+ /* c8 ignore next */
143
+ throw lastError;
144
+ }
145
+ /**
146
+ * Initialize the nexus.db SQLite database (lazy, singleton).
147
+ * Creates the database file and tables if they don't exist.
148
+ * Returns the drizzle ORM instance (async via sqlite-proxy).
149
+ *
150
+ * Uses a promise guard so concurrent callers wait for the same
151
+ * initialization to complete (migrations are async).
152
+ */
153
+ export async function getNexusDb() {
154
+ const requestedPath = getNexusDbPath();
155
+ // If singleton exists but points to different path, reset it
156
+ if (_nexusDb && _nexusDbPath !== requestedPath) {
157
+ resetNexusDbState();
158
+ }
159
+ if (_nexusDb)
160
+ return _nexusDb;
161
+ // If already initializing, wait for the in-flight init
162
+ if (_nexusInitPromise)
163
+ return _nexusInitPromise;
164
+ _nexusInitPromise = (async () => {
165
+ const dbPath = requestedPath;
166
+ _nexusDbPath = dbPath;
167
+ // Ensure directory exists
168
+ mkdirSync(dirname(dbPath), { recursive: true });
169
+ // Open file-backed SQLite via node:sqlite with WAL mode.
170
+ const nativeDb = openNativeDatabase(dbPath);
171
+ _nexusNativeDb = nativeDb;
172
+ // Create drizzle ORM wrapper via node-sqlite
173
+ const db = drizzle({ client: nativeDb, schema: nexusSchema });
174
+ // Run drizzle migrations (creates/updates tables)
175
+ runNexusMigrations(nativeDb, db);
176
+ // Seed schema version for new databases (no-op if already set)
177
+ nativeDb
178
+ .prepare(`INSERT OR IGNORE INTO nexus_schema_meta (key, value) VALUES ('schemaVersion', '${NEXUS_SCHEMA_VERSION}')`)
179
+ .run();
180
+ // Set singleton only after migrations complete
181
+ _nexusDb = db;
182
+ return db;
183
+ })();
184
+ try {
185
+ return await _nexusInitPromise;
186
+ }
187
+ finally {
188
+ _nexusInitPromise = null;
189
+ }
190
+ }
191
+ /**
192
+ * Close the nexus.db database connection and release resources.
193
+ */
194
+ export function closeNexusDb() {
195
+ if (_nexusNativeDb) {
196
+ try {
197
+ if (_nexusNativeDb.isOpen) {
198
+ _nexusNativeDb.close();
199
+ }
200
+ }
201
+ catch {
202
+ // Ignore close errors
203
+ }
204
+ _nexusNativeDb = null;
205
+ }
206
+ _nexusDb = null;
207
+ _nexusDbPath = null;
208
+ }
209
+ /**
210
+ * Reset nexus.db singleton state without saving.
211
+ * Used during tests or when database file is recreated.
212
+ * Safe to call multiple times.
213
+ */
214
+ export function resetNexusDbState() {
215
+ if (_nexusNativeDb) {
216
+ try {
217
+ if (_nexusNativeDb.isOpen) {
218
+ _nexusNativeDb.close();
219
+ }
220
+ }
221
+ catch {
222
+ // Ignore close errors
223
+ }
224
+ _nexusNativeDb = null;
225
+ }
226
+ _nexusDb = null;
227
+ _nexusDbPath = null;
228
+ _nexusInitPromise = null;
229
+ }
230
+ /**
231
+ * Get the underlying node:sqlite DatabaseSync instance for nexus.db.
232
+ * Useful for direct PRAGMA calls or raw SQL operations.
233
+ * Returns null if the database hasn't been initialized.
234
+ */
235
+ export function getNexusNativeDb() {
236
+ return _nexusNativeDb;
237
+ }
238
+ /**
239
+ * Re-export nexus schema for external use.
240
+ */
241
+ export { nexusSchema };
242
+ //# sourceMappingURL=nexus-sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nexus-sqlite.js","sourceRoot":"","sources":["../../src/store/nexus-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D,oDAAoD;AACpD,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C,+CAA+C;AAC/C,IAAI,QAAQ,GAAkD,IAAI,CAAC;AACnE,IAAI,cAAc,GAAwB,IAAI,CAAC;AAC/C,IAAI,YAAY,GAAkB,IAAI,CAAC;AACvC,iEAAiE;AACjE,IAAI,iBAAiB,GAA2D,IAAI,CAAC;AAErF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE9C,0DAA0D;IAC1D,uEAAuE;IACvE,0EAA0E;IAC1E,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,uBAAuB;YACpE,mBAAmB,QAAQ,2CAA2C;YACtE,uEAAuE;YACvE,6CAA6C,CAChD,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,QAAsB,EAAE,SAAiB;IAC5D,MAAM,MAAM,GAAG,QAAQ;SACpB,OAAO,CAAC,8DAA8D,CAAC;SACvE,GAAG,CAAC,SAAS,CAAwC,CAAC;IACzD,OAAO,CAAC,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,QAAsB,EACtB,EAA0C;IAE1C,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAC;IAExD,6EAA6E;IAC7E,IAAI,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,YAAY,EAAE,CAAC;QAC9D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,iEAAiE;IACjE,gCAAgC;IAChC,IAAI,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,CAAC,EAAE,CAAC;QAChG,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ;iBACL,OAAO,CACN,mHAAmH,CACpH;iBACA,GAAG,EAAE,CAAC;YACT,QAAQ;iBACL,OAAO,CACN,sEAAsE,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,YAAY,GAAG,CAClH;iBACA,GAAG,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,GAAG,CAAC;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,WAAW;gBAAE,MAAM,GAAG,CAAC;YAC7D,SAAS,GAAG,GAAG,CAAC;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAC9D,YAAY,CACb,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,oBAAoB;IACpB,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;IAEvC,6DAA6D;IAC7D,IAAI,QAAQ,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;QAC/C,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,uDAAuD;IACvD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,iBAAiB,GAAG,CAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,aAAa,CAAC;QAC7B,YAAY,GAAG,MAAM,CAAC;QAEtB,0BAA0B;QAC1B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhD,yDAAyD;QACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,cAAc,GAAG,QAAQ,CAAC;QAE1B,6CAA6C;QAC7C,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,kDAAkD;QAClD,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAEjC,+DAA+D;QAC/D,QAAQ;aACL,OAAO,CACN,kFAAkF,oBAAoB,IAAI,CAC3G;aACA,GAAG,EAAE,CAAC;QAET,+CAA+C;QAC/C,QAAQ,GAAG,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC1B,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QACD,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,QAAQ,GAAG,IAAI,CAAC;IAChB,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC1B,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QACD,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,QAAQ,GAAG,IAAI,CAAC;IAChB,YAAY,GAAG,IAAI,CAAC;IACpB,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AAGD;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Drizzle-derived Zod validation schemas for CLEO nexus.db tables.
3
+ *
4
+ * Uses `drizzle-orm/zod` to generate insert/select validation schemas
5
+ * directly from Drizzle table definitions in `./nexus-schema.ts`.
6
+ *
7
+ * Domain types (NexusProject, NexusRegistryFile, etc.) live in
8
+ * `../nexus/registry.ts` as plain interfaces — they have different
9
+ * field names from the DB rows, so they cannot be derived from
10
+ * createSelectSchema. The row-to-domain mapping is handled by
11
+ * `rowToProject()` in `../nexus/registry.ts`.
12
+ *
13
+ * @module nexus-validation-schemas
14
+ */
15
+ import { createSchemaFactory } from 'drizzle-orm/zod';
16
+ import { z } from 'zod';
17
+ // Use factory to bind our zod instance — ensures drizzle-orm/zod uses
18
+ // the same z we use everywhere. The type assertion is needed because
19
+ // drizzle-orm beta.18's CoerceOptions type doesn't match zod's coerce
20
+ // namespace shape (works correctly at runtime).
21
+ const { createInsertSchema, createSelectSchema } = createSchemaFactory(z);
22
+ import { nexusAuditLog, nexusSchemaMeta, projectRegistry } from './nexus-schema.js';
23
+ // === PROJECT REGISTRY ===
24
+ export const insertProjectRegistrySchema = createInsertSchema(projectRegistry, {
25
+ projectId: (s) => s.min(1),
26
+ projectHash: (s) => s.regex(/^[a-f0-9]{12}$/),
27
+ projectPath: (s) => s.min(1),
28
+ name: (s) => s.min(1).max(64),
29
+ });
30
+ export const selectProjectRegistrySchema = createSelectSchema(projectRegistry);
31
+ // === NEXUS AUDIT LOG ===
32
+ export const insertNexusAuditLogSchema = createInsertSchema(nexusAuditLog, {
33
+ id: (s) => s.min(1),
34
+ action: (s) => s.min(1).max(100),
35
+ });
36
+ export const selectNexusAuditLogSchema = createSelectSchema(nexusAuditLog);
37
+ // === NEXUS SCHEMA META ===
38
+ export const insertNexusSchemaMetaSchema = createInsertSchema(nexusSchemaMeta);
39
+ export const selectNexusSchemaMetaSchema = createSelectSchema(nexusSchemaMeta);
40
+ //# sourceMappingURL=nexus-validation-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nexus-validation-schemas.js","sourceRoot":"","sources":["../../src/store/nexus-validation-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,gDAAgD;AAChD,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,CACpE,CAAyD,CAC1D,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpF,2BAA2B;AAE3B,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,eAAe,EAAE;IAC7E,SAAS,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAC1D,WAAW,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAE/E,0BAA0B;AAE1B,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,aAAa,EAAE;IACzE,EAAE,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC9C,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAE3E,4BAA4B;AAE5B,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shared JSON parsing helpers for SQLite store modules.
3
+ *
4
+ * Eliminates duplication across sqlite-data-accessor.ts, task-store.ts,
5
+ * and session-store.ts.
6
+ */
7
+ /**
8
+ * Parse a JSON string, returning undefined on null/undefined input or parse error.
9
+ */
10
+ export function safeParseJson(str) {
11
+ if (!str)
12
+ return undefined;
13
+ try {
14
+ return JSON.parse(str);
15
+ }
16
+ catch {
17
+ return undefined;
18
+ }
19
+ }
20
+ /**
21
+ * Parse a JSON string expected to contain an array.
22
+ * Returns undefined for null/undefined input, empty arrays, or parse errors.
23
+ */
24
+ export function safeParseJsonArray(str) {
25
+ if (!str)
26
+ return undefined;
27
+ try {
28
+ const arr = JSON.parse(str);
29
+ if (Array.isArray(arr) && arr.length === 0)
30
+ return undefined;
31
+ return arr;
32
+ }
33
+ catch {
34
+ return undefined;
35
+ }
36
+ }
37
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/store/parsers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,GAA8B;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAa,GAA8B;IAC3E,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7D,OAAO,GAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}