@cleocode/core 2026.9.20 → 2026.9.22

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 (961) hide show
  1. package/dist/adapters/discovery.d.ts.map +1 -1
  2. package/dist/adapters/discovery.js +3 -10
  3. package/dist/adapters/discovery.js.map +1 -1
  4. package/dist/adrs/link-pipeline.js +2 -2
  5. package/dist/adrs/link-pipeline.js.map +1 -1
  6. package/dist/adrs/parse.js +3 -3
  7. package/dist/adrs/parse.js.map +1 -1
  8. package/dist/agents/invoke-meta-agent.d.ts.map +1 -1
  9. package/dist/agents/invoke-meta-agent.js +8 -4
  10. package/dist/agents/invoke-meta-agent.js.map +1 -1
  11. package/dist/agents/scaffold.d.ts.map +1 -1
  12. package/dist/agents/scaffold.js +0 -1
  13. package/dist/agents/scaffold.js.map +1 -1
  14. package/dist/bootstrap.d.ts +5 -1
  15. package/dist/bootstrap.d.ts.map +1 -1
  16. package/dist/bootstrap.js +45 -21
  17. package/dist/bootstrap.js.map +1 -1
  18. package/dist/cloud/crypto.d.ts +47 -0
  19. package/dist/cloud/crypto.d.ts.map +1 -0
  20. package/dist/cloud/crypto.js +223 -0
  21. package/dist/cloud/crypto.js.map +1 -0
  22. package/dist/cloud/http.d.ts +52 -0
  23. package/dist/cloud/http.d.ts.map +1 -0
  24. package/dist/cloud/http.js +98 -0
  25. package/dist/cloud/http.js.map +1 -0
  26. package/dist/cloud/index.d.ts +19 -0
  27. package/dist/cloud/index.d.ts.map +1 -0
  28. package/dist/cloud/index.js +19 -0
  29. package/dist/cloud/index.js.map +1 -0
  30. package/dist/cloud/journal.d.ts +169 -0
  31. package/dist/cloud/journal.d.ts.map +1 -0
  32. package/dist/cloud/journal.js +428 -0
  33. package/dist/cloud/journal.js.map +1 -0
  34. package/dist/cloud/keys.d.ts +213 -0
  35. package/dist/cloud/keys.d.ts.map +1 -0
  36. package/dist/cloud/keys.js +362 -0
  37. package/dist/cloud/keys.js.map +1 -0
  38. package/dist/cloud/manifest-check.d.ts +36 -0
  39. package/dist/cloud/manifest-check.d.ts.map +1 -0
  40. package/dist/cloud/manifest-check.js +70 -0
  41. package/dist/cloud/manifest-check.js.map +1 -0
  42. package/dist/cloud/projects.d.ts +13 -0
  43. package/dist/cloud/projects.d.ts.map +1 -0
  44. package/dist/cloud/projects.js +11 -0
  45. package/dist/cloud/projects.js.map +1 -0
  46. package/dist/cloud/signing.d.ts +105 -0
  47. package/dist/cloud/signing.d.ts.map +1 -0
  48. package/dist/cloud/signing.js +117 -0
  49. package/dist/cloud/signing.js.map +1 -0
  50. package/dist/cloud/streams.d.ts +6 -0
  51. package/dist/cloud/streams.d.ts.map +1 -0
  52. package/dist/cloud/streams.js +5 -0
  53. package/dist/cloud/streams.js.map +1 -0
  54. package/dist/decide/audit.d.ts +131 -0
  55. package/dist/decide/audit.d.ts.map +1 -0
  56. package/dist/decide/audit.js +98 -0
  57. package/dist/decide/audit.js.map +1 -0
  58. package/dist/decide/budget.d.ts +91 -0
  59. package/dist/decide/budget.d.ts.map +1 -0
  60. package/dist/decide/budget.js +194 -0
  61. package/dist/decide/budget.js.map +1 -0
  62. package/dist/decide/cache.d.ts +49 -0
  63. package/dist/decide/cache.d.ts.map +1 -0
  64. package/dist/decide/cache.js +87 -0
  65. package/dist/decide/cache.js.map +1 -0
  66. package/dist/decide/client.d.ts +103 -0
  67. package/dist/decide/client.d.ts.map +1 -0
  68. package/dist/decide/client.js +262 -0
  69. package/dist/decide/client.js.map +1 -0
  70. package/dist/decide/credentials.d.ts +159 -0
  71. package/dist/decide/credentials.d.ts.map +1 -0
  72. package/dist/decide/credentials.js +383 -0
  73. package/dist/decide/credentials.js.map +1 -0
  74. package/dist/decide/index.d.ts +18 -0
  75. package/dist/decide/index.d.ts.map +1 -0
  76. package/dist/decide/index.js +18 -0
  77. package/dist/decide/index.js.map +1 -0
  78. package/dist/decide/jev-wire.d.ts +155 -0
  79. package/dist/decide/jev-wire.d.ts.map +1 -0
  80. package/dist/decide/jev-wire.js +420 -0
  81. package/dist/decide/jev-wire.js.map +1 -0
  82. package/dist/decide/operations.d.ts +152 -0
  83. package/dist/decide/operations.d.ts.map +1 -0
  84. package/dist/decide/operations.js +199 -0
  85. package/dist/decide/operations.js.map +1 -0
  86. package/dist/decide/provider.d.ts +90 -0
  87. package/dist/decide/provider.d.ts.map +1 -0
  88. package/dist/decide/provider.js +43 -0
  89. package/dist/decide/provider.js.map +1 -0
  90. package/dist/decide/site.d.ts +148 -0
  91. package/dist/decide/site.d.ts.map +1 -0
  92. package/dist/decide/site.js +181 -0
  93. package/dist/decide/site.js.map +1 -0
  94. package/dist/decide/transport.d.ts +67 -0
  95. package/dist/decide/transport.d.ts.map +1 -0
  96. package/dist/decide/transport.js +350 -0
  97. package/dist/decide/transport.js.map +1 -0
  98. package/dist/dispatch/mutate-projection.d.ts.map +1 -1
  99. package/dist/dispatch/mutate-projection.js +5 -0
  100. package/dist/dispatch/mutate-projection.js.map +1 -1
  101. package/dist/docs/docs-update.d.ts.map +1 -1
  102. package/dist/docs/docs-update.js +25 -9
  103. package/dist/docs/docs-update.js.map +1 -1
  104. package/dist/docs/export-document.js +5963 -2406
  105. package/dist/docs/export-document.js.map +3 -3
  106. package/dist/docs/index.d.ts +2 -2
  107. package/dist/docs/index.d.ts.map +1 -1
  108. package/dist/docs/index.js +1 -1
  109. package/dist/docs/index.js.map +1 -1
  110. package/dist/docs/projection.d.ts.map +1 -1
  111. package/dist/docs/projection.js +2 -3
  112. package/dist/docs/projection.js.map +1 -1
  113. package/dist/docs/publish-pr.d.ts +69 -1
  114. package/dist/docs/publish-pr.d.ts.map +1 -1
  115. package/dist/docs/publish-pr.js +112 -10
  116. package/dist/docs/publish-pr.js.map +1 -1
  117. package/dist/doctor/db-substrate.d.ts +13 -8
  118. package/dist/doctor/db-substrate.d.ts.map +1 -1
  119. package/dist/doctor/db-substrate.js +39 -26
  120. package/dist/doctor/db-substrate.js.map +1 -1
  121. package/dist/doctor/index.d.ts +2 -0
  122. package/dist/doctor/index.d.ts.map +1 -1
  123. package/dist/doctor/index.js +1 -0
  124. package/dist/doctor/index.js.map +1 -1
  125. package/dist/doctor/knowledge.d.ts +16 -1
  126. package/dist/doctor/knowledge.d.ts.map +1 -1
  127. package/dist/doctor/knowledge.js +58 -32
  128. package/dist/doctor/knowledge.js.map +1 -1
  129. package/dist/doctor/nexus-schema-residency.d.ts +1 -1
  130. package/dist/doctor/nexus-schema-residency.d.ts.map +1 -1
  131. package/dist/doctor/nexus-schema-residency.js +3 -0
  132. package/dist/doctor/nexus-schema-residency.js.map +1 -1
  133. package/dist/doctor/project-identity.d.ts +44 -1
  134. package/dist/doctor/project-identity.d.ts.map +1 -1
  135. package/dist/doctor/project-identity.js +237 -10
  136. package/dist/doctor/project-identity.js.map +1 -1
  137. package/dist/doctor/projects.d.ts +170 -0
  138. package/dist/doctor/projects.d.ts.map +1 -0
  139. package/dist/doctor/projects.js +1075 -0
  140. package/dist/doctor/projects.js.map +1 -0
  141. package/dist/doctor/twin-collapse.d.ts +97 -0
  142. package/dist/doctor/twin-collapse.d.ts.map +1 -0
  143. package/dist/doctor/twin-collapse.js +168 -0
  144. package/dist/doctor/twin-collapse.js.map +1 -0
  145. package/dist/doctor/worktree-orphans.d.ts.map +1 -1
  146. package/dist/doctor/worktree-orphans.js +13 -29
  147. package/dist/doctor/worktree-orphans.js.map +1 -1
  148. package/dist/doctor/worktree-stores.d.ts +128 -0
  149. package/dist/doctor/worktree-stores.d.ts.map +1 -0
  150. package/dist/doctor/worktree-stores.js +374 -0
  151. package/dist/doctor/worktree-stores.js.map +1 -0
  152. package/dist/engine/engine-ops.d.ts +36 -6
  153. package/dist/engine/engine-ops.d.ts.map +1 -1
  154. package/dist/engine/engine-ops.js +115 -14
  155. package/dist/engine/engine-ops.js.map +1 -1
  156. package/dist/error-catalog.d.ts.map +1 -1
  157. package/dist/error-catalog.js +21 -0
  158. package/dist/error-catalog.js.map +1 -1
  159. package/dist/error-registry.d.ts.map +1 -1
  160. package/dist/error-registry.js +40 -0
  161. package/dist/error-registry.js.map +1 -1
  162. package/dist/gateway-client/generated/types.gen.d.ts +1 -1
  163. package/dist/gc/cleanup.d.ts.map +1 -1
  164. package/dist/gc/cleanup.js +32 -19
  165. package/dist/gc/cleanup.js.map +1 -1
  166. package/dist/git/bounded-git.d.ts +170 -0
  167. package/dist/git/bounded-git.d.ts.map +1 -0
  168. package/dist/git/bounded-git.js +371 -0
  169. package/dist/git/bounded-git.js.map +1 -0
  170. package/dist/git/work-tree.d.ts +20 -0
  171. package/dist/git/work-tree.d.ts.map +1 -1
  172. package/dist/git/work-tree.js +20 -2
  173. package/dist/git/work-tree.js.map +1 -1
  174. package/dist/hooks/handlers/session-hooks.d.ts +11 -26
  175. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  176. package/dist/hooks/handlers/session-hooks.js +18 -47
  177. package/dist/hooks/handlers/session-hooks.js.map +1 -1
  178. package/dist/hooks/payload-schemas.d.ts +2 -2
  179. package/dist/index.d.ts +8 -5
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +6 -3
  182. package/dist/index.js.map +1 -1
  183. package/dist/init/engine-ops.d.ts.map +1 -1
  184. package/dist/init/engine-ops.js +23 -1
  185. package/dist/init/engine-ops.js.map +1 -1
  186. package/dist/init.d.ts +158 -1
  187. package/dist/init.d.ts.map +1 -1
  188. package/dist/init.js +578 -53
  189. package/dist/init.js.map +1 -1
  190. package/dist/inject/index.d.ts.map +1 -1
  191. package/dist/inject/index.js +8 -3
  192. package/dist/inject/index.js.map +1 -1
  193. package/dist/injection.d.ts +55 -0
  194. package/dist/injection.d.ts.map +1 -1
  195. package/dist/injection.js +102 -6
  196. package/dist/injection.js.map +1 -1
  197. package/dist/internal.d.ts +11 -7
  198. package/dist/internal.d.ts.map +1 -1
  199. package/dist/internal.js +9 -5
  200. package/dist/internal.js.map +1 -1
  201. package/dist/issue/diagnostics.d.ts.map +1 -1
  202. package/dist/issue/diagnostics.js +2 -1
  203. package/dist/issue/diagnostics.js.map +1 -1
  204. package/dist/lib/concurrency.d.ts +25 -0
  205. package/dist/lib/concurrency.d.ts.map +1 -0
  206. package/dist/lib/concurrency.js +43 -0
  207. package/dist/lib/concurrency.js.map +1 -0
  208. package/dist/lib/index.d.ts +1 -0
  209. package/dist/lib/index.d.ts.map +1 -1
  210. package/dist/lib/index.js +1 -0
  211. package/dist/lib/index.js.map +1 -1
  212. package/dist/lifecycle/engine-ops.d.ts.map +1 -1
  213. package/dist/lifecycle/engine-ops.js +4 -2
  214. package/dist/lifecycle/engine-ops.js.map +1 -1
  215. package/dist/lifecycle/stage-guidance.d.ts +5 -0
  216. package/dist/lifecycle/stage-guidance.d.ts.map +1 -1
  217. package/dist/lifecycle/stage-guidance.js +14 -4
  218. package/dist/lifecycle/stage-guidance.js.map +1 -1
  219. package/dist/llm/catalog-cache.d.ts +3 -2
  220. package/dist/llm/catalog-cache.d.ts.map +1 -1
  221. package/dist/llm/catalog-cache.js +5 -5
  222. package/dist/llm/catalog-cache.js.map +1 -1
  223. package/dist/llm/credentials.d.ts +4 -4
  224. package/dist/llm/credentials.js +6 -6
  225. package/dist/llm/credentials.js.map +1 -1
  226. package/dist/llm/plugin-facade.js +4400 -1801
  227. package/dist/llm/plugin-facade.js.map +3 -3
  228. package/dist/llm/stable-device-id.d.ts.map +1 -1
  229. package/dist/llm/stable-device-id.js +3 -5
  230. package/dist/llm/stable-device-id.js.map +1 -1
  231. package/dist/memory/attention.js +31 -31
  232. package/dist/memory/attention.js.map +1 -1
  233. package/dist/memory/decision-contradiction.d.ts +152 -0
  234. package/dist/memory/decision-contradiction.d.ts.map +1 -0
  235. package/dist/memory/decision-contradiction.js +273 -0
  236. package/dist/memory/decision-contradiction.js.map +1 -0
  237. package/dist/memory/decisions.d.ts +42 -11
  238. package/dist/memory/decisions.d.ts.map +1 -1
  239. package/dist/memory/decisions.js +153 -56
  240. package/dist/memory/decisions.js.map +1 -1
  241. package/dist/memory/dialectic-evaluator.d.ts +7 -0
  242. package/dist/memory/dialectic-evaluator.d.ts.map +1 -1
  243. package/dist/memory/dialectic-evaluator.js +23 -8
  244. package/dist/memory/dialectic-evaluator.js.map +1 -1
  245. package/dist/memory/dispatch-trace-format.d.ts +39 -0
  246. package/dist/memory/dispatch-trace-format.d.ts.map +1 -0
  247. package/dist/memory/dispatch-trace-format.js +54 -0
  248. package/dist/memory/dispatch-trace-format.js.map +1 -0
  249. package/dist/memory/dispatch-trace.d.ts.map +1 -1
  250. package/dist/memory/dispatch-trace.js +1 -27
  251. package/dist/memory/dispatch-trace.js.map +1 -1
  252. package/dist/memory/engine-compat.d.ts +2 -0
  253. package/dist/memory/engine-compat.d.ts.map +1 -1
  254. package/dist/memory/engine-compat.js +1 -0
  255. package/dist/memory/engine-compat.js.map +1 -1
  256. package/dist/memory/import-from-provider.js +3 -3
  257. package/dist/memory/import-from-provider.js.map +1 -1
  258. package/dist/memory/learnings.d.ts +2 -2
  259. package/dist/memory/observation-type-decision.d.ts +96 -0
  260. package/dist/memory/observation-type-decision.d.ts.map +1 -0
  261. package/dist/memory/observation-type-decision.js +218 -0
  262. package/dist/memory/observation-type-decision.js.map +1 -0
  263. package/dist/memory/redaction.js +2 -0
  264. package/dist/memory/redaction.js.map +1 -1
  265. package/dist/memory/retrieval/build-retrieval-bundle.d.ts +9 -2
  266. package/dist/memory/retrieval/build-retrieval-bundle.d.ts.map +1 -1
  267. package/dist/memory/retrieval/build-retrieval-bundle.js +42 -11
  268. package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
  269. package/dist/memory/retrieval/get-current-session-id.d.ts +5 -0
  270. package/dist/memory/retrieval/get-current-session-id.d.ts.map +1 -1
  271. package/dist/memory/retrieval/get-current-session-id.js +7 -2
  272. package/dist/memory/retrieval/get-current-session-id.js.map +1 -1
  273. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  274. package/dist/memory/retrieval/observe.js +30 -29
  275. package/dist/memory/retrieval/observe.js.map +1 -1
  276. package/dist/nexus/analyze-orchestrator.d.ts +38 -0
  277. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  278. package/dist/nexus/analyze-orchestrator.js +136 -48
  279. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  280. package/dist/nexus/assessment-projection.d.ts +76 -0
  281. package/dist/nexus/assessment-projection.d.ts.map +1 -0
  282. package/dist/nexus/assessment-projection.js +143 -0
  283. package/dist/nexus/assessment-projection.js.map +1 -0
  284. package/dist/nexus/assessment-store.d.ts +14 -2
  285. package/dist/nexus/assessment-store.d.ts.map +1 -1
  286. package/dist/nexus/assessment-store.js +21 -3
  287. package/dist/nexus/assessment-store.js.map +1 -1
  288. package/dist/nexus/checkout-nonce.d.ts +48 -0
  289. package/dist/nexus/checkout-nonce.d.ts.map +1 -0
  290. package/dist/nexus/checkout-nonce.js +84 -0
  291. package/dist/nexus/checkout-nonce.js.map +1 -0
  292. package/dist/nexus/devices.d.ts +93 -0
  293. package/dist/nexus/devices.d.ts.map +1 -0
  294. package/dist/nexus/devices.js +141 -0
  295. package/dist/nexus/devices.js.map +1 -0
  296. package/dist/nexus/freshness.d.ts.map +1 -1
  297. package/dist/nexus/freshness.js +25 -6
  298. package/dist/nexus/freshness.js.map +1 -1
  299. package/dist/nexus/git-state.d.ts +225 -0
  300. package/dist/nexus/git-state.d.ts.map +1 -0
  301. package/dist/nexus/git-state.js +677 -0
  302. package/dist/nexus/git-state.js.map +1 -0
  303. package/dist/nexus/graph-manifest.d.ts +20 -4
  304. package/dist/nexus/graph-manifest.d.ts.map +1 -1
  305. package/dist/nexus/graph-manifest.js +40 -5
  306. package/dist/nexus/graph-manifest.js.map +1 -1
  307. package/dist/nexus/identity.d.ts +68 -23
  308. package/dist/nexus/identity.d.ts.map +1 -1
  309. package/dist/nexus/identity.js +99 -22
  310. package/dist/nexus/identity.js.map +1 -1
  311. package/dist/nexus/index.d.ts +5 -2
  312. package/dist/nexus/index.d.ts.map +1 -1
  313. package/dist/nexus/index.js +10 -4
  314. package/dist/nexus/index.js.map +1 -1
  315. package/dist/nexus/knowledge.d.ts +5 -0
  316. package/dist/nexus/knowledge.d.ts.map +1 -1
  317. package/dist/nexus/knowledge.js +40 -5
  318. package/dist/nexus/knowledge.js.map +1 -1
  319. package/dist/nexus/legacy-alias.d.ts +60 -0
  320. package/dist/nexus/legacy-alias.d.ts.map +1 -0
  321. package/dist/nexus/legacy-alias.js +68 -0
  322. package/dist/nexus/legacy-alias.js.map +1 -0
  323. package/dist/nexus/migrate-json-to-sqlite.js +2 -2
  324. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
  325. package/dist/nexus/ops.d.ts +1 -0
  326. package/dist/nexus/ops.d.ts.map +1 -1
  327. package/dist/nexus/path-map.d.ts +264 -20
  328. package/dist/nexus/path-map.d.ts.map +1 -1
  329. package/dist/nexus/path-map.js +580 -44
  330. package/dist/nexus/path-map.js.map +1 -1
  331. package/dist/nexus/projects-clean.d.ts +9 -1
  332. package/dist/nexus/projects-clean.d.ts.map +1 -1
  333. package/dist/nexus/projects-clean.js +126 -14
  334. package/dist/nexus/projects-clean.js.map +1 -1
  335. package/dist/nexus/projects-scan.d.ts +56 -1
  336. package/dist/nexus/projects-scan.d.ts.map +1 -1
  337. package/dist/nexus/projects-scan.js +144 -3
  338. package/dist/nexus/projects-scan.js.map +1 -1
  339. package/dist/nexus/registry-hygiene.d.ts +18 -2
  340. package/dist/nexus/registry-hygiene.d.ts.map +1 -1
  341. package/dist/nexus/registry-hygiene.js +37 -11
  342. package/dist/nexus/registry-hygiene.js.map +1 -1
  343. package/dist/nexus/registry-roots.d.ts +47 -0
  344. package/dist/nexus/registry-roots.d.ts.map +1 -0
  345. package/dist/nexus/registry-roots.js +79 -0
  346. package/dist/nexus/registry-roots.js.map +1 -0
  347. package/dist/nexus/registry.d.ts +50 -9
  348. package/dist/nexus/registry.d.ts.map +1 -1
  349. package/dist/nexus/registry.js +311 -156
  350. package/dist/nexus/registry.js.map +1 -1
  351. package/dist/nexus/stored-roots.d.ts +171 -0
  352. package/dist/nexus/stored-roots.d.ts.map +1 -0
  353. package/dist/nexus/stored-roots.js +253 -0
  354. package/dist/nexus/stored-roots.js.map +1 -0
  355. package/dist/nexus/transfer.d.ts.map +1 -1
  356. package/dist/nexus/transfer.js +3 -0
  357. package/dist/nexus/transfer.js.map +1 -1
  358. package/dist/nexus/user-profile-hygiene.d.ts +168 -0
  359. package/dist/nexus/user-profile-hygiene.d.ts.map +1 -0
  360. package/dist/nexus/user-profile-hygiene.js +305 -0
  361. package/dist/nexus/user-profile-hygiene.js.map +1 -0
  362. package/dist/nexus/user-profile.d.ts +53 -2
  363. package/dist/nexus/user-profile.d.ts.map +1 -1
  364. package/dist/nexus/user-profile.js +106 -4
  365. package/dist/nexus/user-profile.js.map +1 -1
  366. package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
  367. package/dist/orchestrate/lifecycle-ops.js +4 -1
  368. package/dist/orchestrate/lifecycle-ops.js.map +1 -1
  369. package/dist/orchestrate/pivot.d.ts.map +1 -1
  370. package/dist/orchestrate/pivot.js +5 -1
  371. package/dist/orchestrate/pivot.js.map +1 -1
  372. package/dist/orchestrate/plan.d.ts.map +1 -1
  373. package/dist/orchestrate/plan.js +5 -2
  374. package/dist/orchestrate/plan.js.map +1 -1
  375. package/dist/orchestrate/query-ops.d.ts +7 -2
  376. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  377. package/dist/orchestrate/query-ops.js +17 -6
  378. package/dist/orchestrate/query-ops.js.map +1 -1
  379. package/dist/orchestrate/spawn-ops.d.ts +12 -0
  380. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  381. package/dist/orchestrate/spawn-ops.js +157 -71
  382. package/dist/orchestrate/spawn-ops.js.map +1 -1
  383. package/dist/orchestration/bootstrap.d.ts.map +1 -1
  384. package/dist/orchestration/bootstrap.js +4 -2
  385. package/dist/orchestration/bootstrap.js.map +1 -1
  386. package/dist/orchestration/classify-readiness.d.ts +37 -1
  387. package/dist/orchestration/classify-readiness.d.ts.map +1 -1
  388. package/dist/orchestration/classify-readiness.js +48 -19
  389. package/dist/orchestration/classify-readiness.js.map +1 -1
  390. package/dist/orchestration/index.d.ts +4 -2
  391. package/dist/orchestration/index.d.ts.map +1 -1
  392. package/dist/orchestration/index.js +6 -4
  393. package/dist/orchestration/index.js.map +1 -1
  394. package/dist/orchestration/lead-rollup.d.ts +8 -5
  395. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  396. package/dist/orchestration/lead-rollup.js +32 -15
  397. package/dist/orchestration/lead-rollup.js.map +1 -1
  398. package/dist/orchestration/owner-decision-readiness.d.ts +88 -0
  399. package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -0
  400. package/dist/orchestration/owner-decision-readiness.js +152 -0
  401. package/dist/orchestration/owner-decision-readiness.js.map +1 -0
  402. package/dist/orchestration/parallel.d.ts.map +1 -1
  403. package/dist/orchestration/parallel.js +10 -17
  404. package/dist/orchestration/parallel.js.map +1 -1
  405. package/dist/orchestration/psyche-memory-budget.d.ts +105 -0
  406. package/dist/orchestration/psyche-memory-budget.d.ts.map +1 -0
  407. package/dist/orchestration/psyche-memory-budget.js +383 -0
  408. package/dist/orchestration/psyche-memory-budget.js.map +1 -0
  409. package/dist/orchestration/spawn-prompt.d.ts +16 -2
  410. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  411. package/dist/orchestration/spawn-prompt.js +144 -181
  412. package/dist/orchestration/spawn-prompt.js.map +1 -1
  413. package/dist/orchestration/spawn.d.ts +7 -0
  414. package/dist/orchestration/spawn.d.ts.map +1 -1
  415. package/dist/orchestration/spawn.js +1 -0
  416. package/dist/orchestration/spawn.js.map +1 -1
  417. package/dist/orchestration/status.d.ts +8 -3
  418. package/dist/orchestration/status.d.ts.map +1 -1
  419. package/dist/orchestration/status.js +9 -6
  420. package/dist/orchestration/status.js.map +1 -1
  421. package/dist/orchestration/wave-topic.d.ts +54 -0
  422. package/dist/orchestration/wave-topic.d.ts.map +1 -0
  423. package/dist/orchestration/wave-topic.js +68 -0
  424. package/dist/orchestration/wave-topic.js.map +1 -0
  425. package/dist/orchestration/waves.d.ts +47 -8
  426. package/dist/orchestration/waves.d.ts.map +1 -1
  427. package/dist/orchestration/waves.js +152 -43
  428. package/dist/orchestration/waves.js.map +1 -1
  429. package/dist/paths.d.ts +24 -8
  430. package/dist/paths.d.ts.map +1 -1
  431. package/dist/paths.js +135 -71
  432. package/dist/paths.js.map +1 -1
  433. package/dist/phases/index.d.ts.map +1 -1
  434. package/dist/phases/index.js +6 -2
  435. package/dist/phases/index.js.map +1 -1
  436. package/dist/platform.d.ts +6 -1
  437. package/dist/platform.d.ts.map +1 -1
  438. package/dist/platform.js +8 -19
  439. package/dist/platform.js.map +1 -1
  440. package/dist/project-info.d.ts +18 -0
  441. package/dist/project-info.d.ts.map +1 -1
  442. package/dist/project-info.js +29 -1
  443. package/dist/project-info.js.map +1 -1
  444. package/dist/project-lifecycle.d.ts +91 -32
  445. package/dist/project-lifecycle.d.ts.map +1 -1
  446. package/dist/project-lifecycle.js +639 -75
  447. package/dist/project-lifecycle.js.map +1 -1
  448. package/dist/project-scope.d.ts +104 -4
  449. package/dist/project-scope.d.ts.map +1 -1
  450. package/dist/project-scope.js +263 -13
  451. package/dist/project-scope.js.map +1 -1
  452. package/dist/project-tombstone.d.ts +111 -0
  453. package/dist/project-tombstone.d.ts.map +1 -0
  454. package/dist/project-tombstone.js +220 -0
  455. package/dist/project-tombstone.js.map +1 -0
  456. package/dist/release/artifacts.d.ts.map +1 -1
  457. package/dist/release/artifacts.js +14 -9
  458. package/dist/release/artifacts.js.map +1 -1
  459. package/dist/release/ci-evidence.d.ts +233 -0
  460. package/dist/release/ci-evidence.d.ts.map +1 -0
  461. package/dist/release/ci-evidence.js +668 -0
  462. package/dist/release/ci-evidence.js.map +1 -0
  463. package/dist/release/engine-ops.d.ts.map +1 -1
  464. package/dist/release/engine-ops.js +3 -3
  465. package/dist/release/engine-ops.js.map +1 -1
  466. package/dist/release/github-pr.d.ts +30 -0
  467. package/dist/release/github-pr.d.ts.map +1 -1
  468. package/dist/release/github-pr.js +40 -0
  469. package/dist/release/github-pr.js.map +1 -1
  470. package/dist/release/plan.d.ts.map +1 -1
  471. package/dist/release/plan.js +11 -7
  472. package/dist/release/plan.js.map +1 -1
  473. package/dist/release/pr-evidence.d.ts +38 -0
  474. package/dist/release/pr-evidence.d.ts.map +1 -1
  475. package/dist/release/pr-evidence.js +79 -15
  476. package/dist/release/pr-evidence.js.map +1 -1
  477. package/dist/release/reconcile.d.ts.map +1 -1
  478. package/dist/release/reconcile.js +3 -2
  479. package/dist/release/reconcile.js.map +1 -1
  480. package/dist/release/release-manifest.d.ts +2 -1
  481. package/dist/release/release-manifest.d.ts.map +1 -1
  482. package/dist/release/release-manifest.js +6 -5
  483. package/dist/release/release-manifest.js.map +1 -1
  484. package/dist/render/nexus/graph/index.d.ts +4 -0
  485. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  486. package/dist/render/nexus/graph/index.js +57 -0
  487. package/dist/render/nexus/graph/index.js.map +1 -1
  488. package/dist/resources/spawn-wrapper.d.ts +8 -1
  489. package/dist/resources/spawn-wrapper.d.ts.map +1 -1
  490. package/dist/resources/spawn-wrapper.js +42 -5
  491. package/dist/resources/spawn-wrapper.js.map +1 -1
  492. package/dist/routing/build-command-groups.d.ts.map +1 -1
  493. package/dist/routing/build-command-groups.js +1 -0
  494. package/dist/routing/build-command-groups.js.map +1 -1
  495. package/dist/sagas/index.d.ts +1 -1
  496. package/dist/sagas/index.d.ts.map +1 -1
  497. package/dist/sagas/index.js +1 -1
  498. package/dist/sagas/index.js.map +1 -1
  499. package/dist/sagas/reconcile.d.ts +24 -4
  500. package/dist/sagas/reconcile.d.ts.map +1 -1
  501. package/dist/sagas/reconcile.js +226 -100
  502. package/dist/sagas/reconcile.js.map +1 -1
  503. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  504. package/dist/scaffold/ensure-config.js +31 -1
  505. package/dist/scaffold/ensure-config.js.map +1 -1
  506. package/dist/scaffold/project-identity.d.ts +2 -8
  507. package/dist/scaffold/project-identity.d.ts.map +1 -1
  508. package/dist/scaffold/project-identity.js +5 -21
  509. package/dist/scaffold/project-identity.js.map +1 -1
  510. package/dist/security/input-sanitization.d.ts +9 -1
  511. package/dist/security/input-sanitization.d.ts.map +1 -1
  512. package/dist/security/input-sanitization.js +20 -3
  513. package/dist/security/input-sanitization.js.map +1 -1
  514. package/dist/selfimprove/fix-gen.js +4409 -1810
  515. package/dist/selfimprove/fix-gen.js.map +3 -3
  516. package/dist/sentient/propose-tick.d.ts.map +1 -1
  517. package/dist/sentient/propose-tick.js +4 -2
  518. package/dist/sentient/propose-tick.js.map +1 -1
  519. package/dist/sequence/index.d.ts.map +1 -1
  520. package/dist/sequence/index.js +6 -23
  521. package/dist/sequence/index.js.map +1 -1
  522. package/dist/session/engine-ops.d.ts +15 -0
  523. package/dist/session/engine-ops.d.ts.map +1 -1
  524. package/dist/session/engine-ops.js +146 -22
  525. package/dist/session/engine-ops.js.map +1 -1
  526. package/dist/sessions/assumptions.d.ts.map +1 -1
  527. package/dist/sessions/assumptions.js +7 -4
  528. package/dist/sessions/assumptions.js.map +1 -1
  529. package/dist/sessions/briefing.d.ts +23 -0
  530. package/dist/sessions/briefing.d.ts.map +1 -1
  531. package/dist/sessions/briefing.js +59 -9
  532. package/dist/sessions/briefing.js.map +1 -1
  533. package/dist/sessions/decisions.d.ts +38 -3
  534. package/dist/sessions/decisions.d.ts.map +1 -1
  535. package/dist/sessions/decisions.js +235 -21
  536. package/dist/sessions/decisions.js.map +1 -1
  537. package/dist/sessions/drift-watchdog.d.ts.map +1 -1
  538. package/dist/sessions/drift-watchdog.js +8 -5
  539. package/dist/sessions/drift-watchdog.js.map +1 -1
  540. package/dist/sessions/focus-state-store.d.ts +89 -1
  541. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  542. package/dist/sessions/focus-state-store.js +97 -1
  543. package/dist/sessions/focus-state-store.js.map +1 -1
  544. package/dist/sessions/index.d.ts +2 -2
  545. package/dist/sessions/index.d.ts.map +1 -1
  546. package/dist/sessions/index.js +34 -5
  547. package/dist/sessions/index.js.map +1 -1
  548. package/dist/sessions/session-drift.d.ts.map +1 -1
  549. package/dist/sessions/session-drift.js +4 -3
  550. package/dist/sessions/session-drift.js.map +1 -1
  551. package/dist/sessions/session-end-snapshot-entry.d.ts +26 -0
  552. package/dist/sessions/session-end-snapshot-entry.d.ts.map +1 -0
  553. package/dist/sessions/session-end-snapshot-entry.js +59 -0
  554. package/dist/sessions/session-end-snapshot-entry.js.map +1 -0
  555. package/dist/sessions/session-end-snapshot.d.ts +114 -0
  556. package/dist/sessions/session-end-snapshot.d.ts.map +1 -0
  557. package/dist/sessions/session-end-snapshot.js +446 -0
  558. package/dist/sessions/session-end-snapshot.js.map +1 -0
  559. package/dist/sessions/session-manifest-mirror.d.ts.map +1 -1
  560. package/dist/sessions/session-manifest-mirror.js +10 -17
  561. package/dist/sessions/session-manifest-mirror.js.map +1 -1
  562. package/dist/sessions/session-switch.d.ts.map +1 -1
  563. package/dist/sessions/session-switch.js +5 -3
  564. package/dist/sessions/session-switch.js.map +1 -1
  565. package/dist/sessions/snapshot.d.ts.map +1 -1
  566. package/dist/sessions/snapshot.js +5 -4
  567. package/dist/sessions/snapshot.js.map +1 -1
  568. package/dist/sessions/terminal-identity.d.ts +169 -0
  569. package/dist/sessions/terminal-identity.d.ts.map +1 -0
  570. package/dist/sessions/terminal-identity.js +273 -0
  571. package/dist/sessions/terminal-identity.js.map +1 -0
  572. package/dist/setup/sections/verification.d.ts +1 -1
  573. package/dist/setup/sections/verification.d.ts.map +1 -1
  574. package/dist/setup/sections/verification.js +11 -15
  575. package/dist/setup/sections/verification.js.map +1 -1
  576. package/dist/skills/discovery.d.ts +20 -3
  577. package/dist/skills/discovery.d.ts.map +1 -1
  578. package/dist/skills/discovery.js +41 -4
  579. package/dist/skills/discovery.js.map +1 -1
  580. package/dist/skills/dispatch.d.ts +5 -2
  581. package/dist/skills/dispatch.d.ts.map +1 -1
  582. package/dist/skills/dispatch.js +5 -2
  583. package/dist/skills/dispatch.js.map +1 -1
  584. package/dist/skills/doctor.d.ts.map +1 -1
  585. package/dist/skills/doctor.js +5 -1
  586. package/dist/skills/doctor.js.map +1 -1
  587. package/dist/skills/federated-search.js +2 -2
  588. package/dist/skills/federated-search.js.map +1 -1
  589. package/dist/skills/index.d.ts +3 -3
  590. package/dist/skills/index.d.ts.map +1 -1
  591. package/dist/skills/index.js +1 -1
  592. package/dist/skills/index.js.map +1 -1
  593. package/dist/skills/migration.d.ts +5 -5
  594. package/dist/skills/migration.d.ts.map +1 -1
  595. package/dist/skills/migration.js +7 -9
  596. package/dist/skills/migration.js.map +1 -1
  597. package/dist/skills/orchestrator/startup.d.ts.map +1 -1
  598. package/dist/skills/orchestrator/startup.js +14 -7
  599. package/dist/skills/orchestrator/startup.js.map +1 -1
  600. package/dist/skills/prune-bundled.d.ts +267 -0
  601. package/dist/skills/prune-bundled.d.ts.map +1 -0
  602. package/dist/skills/prune-bundled.js +536 -0
  603. package/dist/skills/prune-bundled.js.map +1 -0
  604. package/dist/skills/skill-paths.d.ts +30 -3
  605. package/dist/skills/skill-paths.d.ts.map +1 -1
  606. package/dist/skills/skill-paths.js +28 -9
  607. package/dist/skills/skill-paths.js.map +1 -1
  608. package/dist/skills/skill-root.d.ts +60 -11
  609. package/dist/skills/skill-root.d.ts.map +1 -1
  610. package/dist/skills/skill-root.js +100 -14
  611. package/dist/skills/skill-root.js.map +1 -1
  612. package/dist/skills/skills-guard.js +5 -5
  613. package/dist/skills/skills-guard.js.map +1 -1
  614. package/dist/skills/types.d.ts +32 -1
  615. package/dist/skills/types.d.ts.map +1 -1
  616. package/dist/skills/types.js +17 -34
  617. package/dist/skills/types.js.map +1 -1
  618. package/dist/spawn/agent-identity.d.ts +51 -2
  619. package/dist/spawn/agent-identity.d.ts.map +1 -1
  620. package/dist/spawn/agent-identity.js +89 -26
  621. package/dist/spawn/agent-identity.js.map +1 -1
  622. package/dist/spawn/branch-lock.d.ts.map +1 -1
  623. package/dist/spawn/branch-lock.js +80 -79
  624. package/dist/spawn/branch-lock.js.map +1 -1
  625. package/dist/spawn/index.d.ts +2 -2
  626. package/dist/spawn/index.d.ts.map +1 -1
  627. package/dist/spawn/index.js +1 -1
  628. package/dist/spawn/index.js.map +1 -1
  629. package/dist/spawn/worktree-lock-holder.d.ts +37 -0
  630. package/dist/spawn/worktree-lock-holder.d.ts.map +1 -0
  631. package/dist/spawn/worktree-lock-holder.js +41 -0
  632. package/dist/spawn/worktree-lock-holder.js.map +1 -0
  633. package/dist/stats/index.d.ts.map +1 -1
  634. package/dist/stats/index.js +4 -2
  635. package/dist/stats/index.js.map +1 -1
  636. package/dist/sticky/convert.d.ts.map +1 -1
  637. package/dist/sticky/convert.js +16 -4
  638. package/dist/sticky/convert.js.map +1 -1
  639. package/dist/store/attachment-store.d.ts +14 -0
  640. package/dist/store/attachment-store.d.ts.map +1 -1
  641. package/dist/store/attachment-store.js +11 -1
  642. package/dist/store/attachment-store.js.map +1 -1
  643. package/dist/store/backup-inspect.d.ts +7 -3
  644. package/dist/store/backup-inspect.d.ts.map +1 -1
  645. package/dist/store/backup-inspect.js +18 -7
  646. package/dist/store/backup-inspect.js.map +1 -1
  647. package/dist/store/backup-sidecar.d.ts +60 -0
  648. package/dist/store/backup-sidecar.d.ts.map +1 -0
  649. package/dist/store/backup-sidecar.js +96 -0
  650. package/dist/store/backup-sidecar.js.map +1 -0
  651. package/dist/store/data-accessor.d.ts +1 -1
  652. package/dist/store/data-accessor.d.ts.map +1 -1
  653. package/dist/store/data-accessor.js +6 -6
  654. package/dist/store/data-accessor.js.map +1 -1
  655. package/dist/store/data-safety-central.d.ts +13 -4
  656. package/dist/store/data-safety-central.d.ts.map +1 -1
  657. package/dist/store/data-safety-central.js +31 -4
  658. package/dist/store/data-safety-central.js.map +1 -1
  659. package/dist/store/dual-scope-db.d.ts.map +1 -1
  660. package/dist/store/dual-scope-db.js +10 -0
  661. package/dist/store/dual-scope-db.js.map +1 -1
  662. package/dist/store/exodus/__fixtures__/representative-fixture.d.ts.map +1 -1
  663. package/dist/store/exodus/__fixtures__/representative-fixture.js +4 -0
  664. package/dist/store/exodus/__fixtures__/representative-fixture.js.map +1 -1
  665. package/dist/store/exodus/migrate.js +1 -1
  666. package/dist/store/exodus/migrate.js.map +1 -1
  667. package/dist/store/exodus/reconcile.js +1 -1
  668. package/dist/store/exodus/reconcile.js.map +1 -1
  669. package/dist/store/exodus/runtime-targets.d.ts +4 -3
  670. package/dist/store/exodus/runtime-targets.d.ts.map +1 -1
  671. package/dist/store/exodus/runtime-targets.js +4 -3
  672. package/dist/store/exodus/runtime-targets.js.map +1 -1
  673. package/dist/store/import-logging.d.ts.map +1 -1
  674. package/dist/store/import-logging.js +5 -4
  675. package/dist/store/import-logging.js.map +1 -1
  676. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  677. package/dist/store/legacy-tasks-lineage.js +2 -7
  678. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  679. package/dist/store/lock.d.ts +1 -0
  680. package/dist/store/lock.d.ts.map +1 -1
  681. package/dist/store/lock.js +1 -0
  682. package/dist/store/lock.js.map +1 -1
  683. package/dist/store/memory-accessor.d.ts +8 -3
  684. package/dist/store/memory-accessor.d.ts.map +1 -1
  685. package/dist/store/memory-accessor.js +29 -13
  686. package/dist/store/memory-accessor.js.map +1 -1
  687. package/dist/store/memory-sqlite.d.ts.map +1 -1
  688. package/dist/store/memory-sqlite.js +5 -0
  689. package/dist/store/memory-sqlite.js.map +1 -1
  690. package/dist/store/open-cleo-db.d.ts.map +1 -1
  691. package/dist/store/open-cleo-db.js +11 -6
  692. package/dist/store/open-cleo-db.js.map +1 -1
  693. package/dist/store/portable-bundle-relocate.d.ts +13 -8
  694. package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
  695. package/dist/store/portable-bundle-relocate.js +75 -31
  696. package/dist/store/portable-bundle-relocate.js.map +1 -1
  697. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  698. package/dist/store/portable-bundle-scan.js +2 -1
  699. package/dist/store/portable-bundle-scan.js.map +1 -1
  700. package/dist/store/portable-bundle.d.ts.map +1 -1
  701. package/dist/store/portable-bundle.js +7 -3
  702. package/dist/store/portable-bundle.js.map +1 -1
  703. package/dist/store/pre-repair-snapshot.d.ts +77 -0
  704. package/dist/store/pre-repair-snapshot.d.ts.map +1 -0
  705. package/dist/store/pre-repair-snapshot.js +122 -0
  706. package/dist/store/pre-repair-snapshot.js.map +1 -0
  707. package/dist/store/regenerators.d.ts +2 -1
  708. package/dist/store/regenerators.d.ts.map +1 -1
  709. package/dist/store/regenerators.js +17 -3
  710. package/dist/store/regenerators.js.map +1 -1
  711. package/dist/store/relocated-store-guard.d.ts +71 -0
  712. package/dist/store/relocated-store-guard.d.ts.map +1 -0
  713. package/dist/store/relocated-store-guard.js +138 -0
  714. package/dist/store/relocated-store-guard.js.map +1 -0
  715. package/dist/store/safety-data-accessor.d.ts +2 -2
  716. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  717. package/dist/store/safety-data-accessor.js +2 -2
  718. package/dist/store/safety-data-accessor.js.map +1 -1
  719. package/dist/store/schema/attachments.d.ts +2 -2
  720. package/dist/store/schema/audit.d.ts +5 -5
  721. package/dist/store/schema/background-jobs.d.ts +1 -1
  722. package/dist/store/schema/cleo-global/models-catalog.d.ts +1 -1
  723. package/dist/store/schema/cleo-global/nexus.d.ts +686 -0
  724. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  725. package/dist/store/schema/cleo-global/nexus.js +175 -7
  726. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  727. package/dist/store/schema/cleo-global/skills.d.ts +2 -2
  728. package/dist/store/schema/cleo-project/audit.d.ts +5 -5
  729. package/dist/store/schema/cleo-project/docs.d.ts +3 -3
  730. package/dist/store/schema/cleo-project/lifecycle.d.ts +3 -3
  731. package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
  732. package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
  733. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +1 -1
  734. package/dist/store/schema/cleo-project/tasks-core.d.ts +6 -6
  735. package/dist/store/schema/cleo-shared/brain.d.ts +26 -26
  736. package/dist/store/schema/lifecycle.d.ts +3 -3
  737. package/dist/store/schema/manifest.d.ts +1 -1
  738. package/dist/store/schema/memory-schema.d.ts +26 -26
  739. package/dist/store/schema/nexus-schema.d.ts +696 -2
  740. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  741. package/dist/store/schema/nexus-schema.js +175 -19
  742. package/dist/store/schema/nexus-schema.js.map +1 -1
  743. package/dist/store/schema/provenance/releases.d.ts +1 -1
  744. package/dist/store/schema/skills-schema.d.ts +2 -2
  745. package/dist/store/schema/tasks.d.ts +5 -5
  746. package/dist/store/session-binding-schema.d.ts +132 -0
  747. package/dist/store/session-binding-schema.d.ts.map +1 -0
  748. package/dist/store/session-binding-schema.js +53 -0
  749. package/dist/store/session-binding-schema.js.map +1 -0
  750. package/dist/store/session-store.d.ts +262 -4
  751. package/dist/store/session-store.d.ts.map +1 -1
  752. package/dist/store/session-store.js +486 -26
  753. package/dist/store/session-store.js.map +1 -1
  754. package/dist/store/skills-db.d.ts +17 -0
  755. package/dist/store/skills-db.d.ts.map +1 -1
  756. package/dist/store/skills-db.js +30 -0
  757. package/dist/store/skills-db.js.map +1 -1
  758. package/dist/store/snapshot-gate.d.ts +239 -0
  759. package/dist/store/snapshot-gate.d.ts.map +1 -0
  760. package/dist/store/snapshot-gate.js +401 -0
  761. package/dist/store/snapshot-gate.js.map +1 -0
  762. package/dist/store/split-brain-import.js +2 -2
  763. package/dist/store/split-brain-import.js.map +1 -1
  764. package/dist/store/sqlite-backup.d.ts +55 -13
  765. package/dist/store/sqlite-backup.d.ts.map +1 -1
  766. package/dist/store/sqlite-backup.js +414 -106
  767. package/dist/store/sqlite-backup.js.map +1 -1
  768. package/dist/store/sqlite-data-accessor.d.ts +15 -0
  769. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  770. package/dist/store/sqlite-data-accessor.js +73 -4
  771. package/dist/store/sqlite-data-accessor.js.map +1 -1
  772. package/dist/store/sqlite.d.ts +15 -1
  773. package/dist/store/sqlite.d.ts.map +1 -1
  774. package/dist/store/sqlite.js +75 -5
  775. package/dist/store/sqlite.js.map +1 -1
  776. package/dist/store/store-write-guard.d.ts +28 -0
  777. package/dist/store/store-write-guard.d.ts.map +1 -0
  778. package/dist/store/store-write-guard.js +50 -0
  779. package/dist/store/store-write-guard.js.map +1 -0
  780. package/dist/store/table-classification.d.ts +143 -0
  781. package/dist/store/table-classification.d.ts.map +1 -0
  782. package/dist/store/table-classification.js +1866 -0
  783. package/dist/store/table-classification.js.map +1 -0
  784. package/dist/store/task-version.d.ts +72 -0
  785. package/dist/store/task-version.d.ts.map +1 -0
  786. package/dist/store/task-version.js +93 -0
  787. package/dist/store/task-version.js.map +1 -0
  788. package/dist/store/tasks-schema.d.ts +1 -0
  789. package/dist/store/tasks-schema.d.ts.map +1 -1
  790. package/dist/store/tasks-schema.js +13 -0
  791. package/dist/store/tasks-schema.js.map +1 -1
  792. package/dist/store/tasks-sqlite.d.ts +10 -3
  793. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  794. package/dist/store/tasks-sqlite.js +12 -3
  795. package/dist/store/tasks-sqlite.js.map +1 -1
  796. package/dist/store/twin-collapse.d.ts +320 -0
  797. package/dist/store/twin-collapse.d.ts.map +1 -0
  798. package/dist/store/twin-collapse.js +931 -0
  799. package/dist/store/twin-collapse.js.map +1 -0
  800. package/dist/store/umbrella-data-accessor.d.ts +2 -2
  801. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  802. package/dist/store/umbrella-data-accessor.js +2 -2
  803. package/dist/store/umbrella-data-accessor.js.map +1 -1
  804. package/dist/store/validation-schemas.d.ts +63 -63
  805. package/dist/store/worktree-isolation-guard.d.ts +46 -24
  806. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  807. package/dist/store/worktree-isolation-guard.js +71 -50
  808. package/dist/store/worktree-isolation-guard.js.map +1 -1
  809. package/dist/system/backup.d.ts.map +1 -1
  810. package/dist/system/backup.js +3 -67
  811. package/dist/system/backup.js.map +1 -1
  812. package/dist/system/cleo-link.d.ts +163 -0
  813. package/dist/system/cleo-link.d.ts.map +1 -0
  814. package/dist/system/cleo-link.js +246 -0
  815. package/dist/system/cleo-link.js.map +1 -0
  816. package/dist/system/dependencies.d.ts.map +1 -1
  817. package/dist/system/dependencies.js +3 -6
  818. package/dist/system/dependencies.js.map +1 -1
  819. package/dist/system/global-delivery.d.ts +205 -0
  820. package/dist/system/global-delivery.d.ts.map +1 -0
  821. package/dist/system/global-delivery.js +320 -0
  822. package/dist/system/global-delivery.js.map +1 -0
  823. package/dist/system/health.d.ts.map +1 -1
  824. package/dist/system/health.js +29 -6
  825. package/dist/system/health.js.map +1 -1
  826. package/dist/system/inject-generate.d.ts.map +1 -1
  827. package/dist/system/inject-generate.js +4 -4
  828. package/dist/system/inject-generate.js.map +1 -1
  829. package/dist/system/project-health.d.ts.map +1 -1
  830. package/dist/system/project-health.js +1 -20
  831. package/dist/system/project-health.js.map +1 -1
  832. package/dist/system/runtime.d.ts.map +1 -1
  833. package/dist/system/runtime.js +2 -12
  834. package/dist/system/runtime.js.map +1 -1
  835. package/dist/system/safestop.d.ts.map +1 -1
  836. package/dist/system/safestop.js +5 -2
  837. package/dist/system/safestop.js.map +1 -1
  838. package/dist/system/skill-fixtures.d.ts +200 -0
  839. package/dist/system/skill-fixtures.d.ts.map +1 -0
  840. package/dist/system/skill-fixtures.js +331 -0
  841. package/dist/system/skill-fixtures.js.map +1 -0
  842. package/dist/task-work/index.d.ts +6 -0
  843. package/dist/task-work/index.d.ts.map +1 -1
  844. package/dist/task-work/index.js +6 -3
  845. package/dist/task-work/index.js.map +1 -1
  846. package/dist/tasks/add.d.ts.map +1 -1
  847. package/dist/tasks/add.js +4 -2
  848. package/dist/tasks/add.js.map +1 -1
  849. package/dist/tasks/affected-packages.d.ts +218 -0
  850. package/dist/tasks/affected-packages.d.ts.map +1 -0
  851. package/dist/tasks/affected-packages.js +496 -0
  852. package/dist/tasks/affected-packages.js.map +1 -0
  853. package/dist/tasks/affected-scope.d.ts +59 -0
  854. package/dist/tasks/affected-scope.d.ts.map +1 -0
  855. package/dist/tasks/affected-scope.js +81 -0
  856. package/dist/tasks/affected-scope.js.map +1 -0
  857. package/dist/tasks/analyze.d.ts.map +1 -1
  858. package/dist/tasks/analyze.js +7 -2
  859. package/dist/tasks/analyze.js.map +1 -1
  860. package/dist/tasks/change-set.d.ts +175 -0
  861. package/dist/tasks/change-set.d.ts.map +1 -0
  862. package/dist/tasks/change-set.js +753 -0
  863. package/dist/tasks/change-set.js.map +1 -0
  864. package/dist/tasks/complete.d.ts +10 -0
  865. package/dist/tasks/complete.d.ts.map +1 -1
  866. package/dist/tasks/complete.js +59 -5
  867. package/dist/tasks/complete.js.map +1 -1
  868. package/dist/tasks/component-pr.d.ts +106 -0
  869. package/dist/tasks/component-pr.d.ts.map +1 -0
  870. package/dist/tasks/component-pr.js +190 -0
  871. package/dist/tasks/component-pr.js.map +1 -0
  872. package/dist/tasks/done-plan.d.ts +123 -0
  873. package/dist/tasks/done-plan.d.ts.map +1 -0
  874. package/dist/tasks/done-plan.js +696 -0
  875. package/dist/tasks/done-plan.js.map +1 -0
  876. package/dist/tasks/done-record.d.ts +127 -0
  877. package/dist/tasks/done-record.d.ts.map +1 -0
  878. package/dist/tasks/done-record.js +302 -0
  879. package/dist/tasks/done-record.js.map +1 -0
  880. package/dist/tasks/duplicate-detector.d.ts +68 -11
  881. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  882. package/dist/tasks/duplicate-detector.js +314 -58
  883. package/dist/tasks/duplicate-detector.js.map +1 -1
  884. package/dist/tasks/evidence-paths.d.ts +78 -0
  885. package/dist/tasks/evidence-paths.d.ts.map +1 -0
  886. package/dist/tasks/evidence-paths.js +150 -0
  887. package/dist/tasks/evidence-paths.js.map +1 -0
  888. package/dist/tasks/evidence.d.ts +101 -1
  889. package/dist/tasks/evidence.d.ts.map +1 -1
  890. package/dist/tasks/evidence.js +278 -31
  891. package/dist/tasks/evidence.js.map +1 -1
  892. package/dist/tasks/gate-preview.d.ts +5 -0
  893. package/dist/tasks/gate-preview.d.ts.map +1 -1
  894. package/dist/tasks/gate-preview.js +25 -21
  895. package/dist/tasks/gate-preview.js.map +1 -1
  896. package/dist/tasks/gate-result-cache.d.ts +205 -0
  897. package/dist/tasks/gate-result-cache.d.ts.map +1 -0
  898. package/dist/tasks/gate-result-cache.js +285 -0
  899. package/dist/tasks/gate-result-cache.js.map +1 -0
  900. package/dist/tasks/gate-runner.d.ts +126 -3
  901. package/dist/tasks/gate-runner.d.ts.map +1 -1
  902. package/dist/tasks/gate-runner.js +483 -28
  903. package/dist/tasks/gate-runner.js.map +1 -1
  904. package/dist/tasks/session-scope.d.ts +3 -1
  905. package/dist/tasks/session-scope.d.ts.map +1 -1
  906. package/dist/tasks/session-scope.js +18 -3
  907. package/dist/tasks/session-scope.js.map +1 -1
  908. package/dist/tasks/task-next.d.ts +4 -0
  909. package/dist/tasks/task-next.d.ts.map +1 -1
  910. package/dist/tasks/task-next.js +32 -28
  911. package/dist/tasks/task-next.js.map +1 -1
  912. package/dist/tasks/tool-resolver.d.ts +23 -6
  913. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  914. package/dist/tasks/tool-resolver.js +146 -8
  915. package/dist/tasks/tool-resolver.js.map +1 -1
  916. package/dist/tasks/tool-vacuity.d.ts +71 -0
  917. package/dist/tasks/tool-vacuity.d.ts.map +1 -0
  918. package/dist/tasks/tool-vacuity.js +334 -0
  919. package/dist/tasks/tool-vacuity.js.map +1 -0
  920. package/dist/tasks/update.d.ts +8 -0
  921. package/dist/tasks/update.d.ts.map +1 -1
  922. package/dist/tasks/update.js +159 -78
  923. package/dist/tasks/update.js.map +1 -1
  924. package/dist/upgrade.d.ts.map +1 -1
  925. package/dist/upgrade.js +18 -2
  926. package/dist/upgrade.js.map +1 -1
  927. package/dist/validation/doctor/checks.d.ts +20 -2
  928. package/dist/validation/doctor/checks.d.ts.map +1 -1
  929. package/dist/validation/doctor/checks.js +64 -4
  930. package/dist/validation/doctor/checks.js.map +1 -1
  931. package/dist/validation/doctor/index.d.ts +1 -1
  932. package/dist/validation/doctor/index.d.ts.map +1 -1
  933. package/dist/validation/doctor/index.js +1 -1
  934. package/dist/validation/doctor/index.js.map +1 -1
  935. package/dist/validation/doctor/utils.d.ts.map +1 -1
  936. package/dist/validation/doctor/utils.js +7 -2
  937. package/dist/validation/doctor/utils.js.map +1 -1
  938. package/dist/validation/engine-ops.d.ts +24 -1
  939. package/dist/validation/engine-ops.d.ts.map +1 -1
  940. package/dist/validation/engine-ops.js +272 -98
  941. package/dist/validation/engine-ops.js.map +1 -1
  942. package/dist/validation/validate-ops.d.ts.map +1 -1
  943. package/dist/validation/validate-ops.js +9 -3
  944. package/dist/validation/validate-ops.js.map +1 -1
  945. package/dist/worktree/worktree-adopt.d.ts.map +1 -1
  946. package/dist/worktree/worktree-adopt.js +5 -2
  947. package/dist/worktree/worktree-adopt.js.map +1 -1
  948. package/migrations/drizzle-cleo-global/20260927000000_t12469-project-locations/migration.sql +121 -0
  949. package/migrations/drizzle-cleo-global/20260927010000_t12543-user-profile-project-scope/migration.sql +23 -0
  950. package/migrations/drizzle-cleo-global/20260928010000_t12470-location-candidates/migration.sql +72 -0
  951. package/migrations/drizzle-cleo-global/20260928020000_t12510-nexus-devices/migration.sql +34 -0
  952. package/migrations/drizzle-cleo-global/20260928030000_t12511-project-git-state/migration.sql +62 -0
  953. package/migrations/drizzle-cleo-project/20260927000000_t12499-session-terminal-bindings/migration.sql +34 -0
  954. package/migrations/drizzle-cleo-project/20260928000000_t12500-binding-provider-flag/migration.sql +15 -0
  955. package/package.json +23 -13
  956. package/schemas/config.schema.json +54 -0
  957. package/schemas/project-context.schema.json +51 -3
  958. package/schemas/project-info.schema.json +28 -1
  959. package/templates/CLEO-INJECTION.md +40 -332
  960. package/templates/CLEO-REFERENCE.md +303 -0
  961. package/templates/workflows/README.md +36 -14
@@ -1 +1 @@
1
- {"version":3,"file":"stable-device-id.d.ts","sourceRoot":"","sources":["../../src/llm/stable-device-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAuC1C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
1
+ {"version":3,"file":"stable-device-id.d.ts","sourceRoot":"","sources":["../../src/llm/stable-device-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAuC1C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
@@ -16,10 +16,8 @@
16
16
  */
17
17
  import { randomUUID } from 'node:crypto';
18
18
  import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
19
- import { dirname, join } from 'node:path';
20
- import { getCleoHome } from '@cleocode/paths';
21
- /** Filename within `getCleoHome()` storing the persisted UUID. */
22
- const DEVICE_ID_FILE = 'device-id';
19
+ import { dirname } from 'node:path';
20
+ import { resolveStableDeviceIdPath } from '@cleocode/paths';
23
21
  /** Process-lifetime cache so repeat callers do not re-read the disk. */
24
22
  let _cachedDeviceId = null;
25
23
  /**
@@ -39,7 +37,7 @@ let _cachedDeviceId = null;
39
37
  export function getStableDeviceId() {
40
38
  if (_cachedDeviceId !== null)
41
39
  return _cachedDeviceId;
42
- const path = join(getCleoHome(), DEVICE_ID_FILE);
40
+ const path = resolveStableDeviceIdPath();
43
41
  if (existsSync(path)) {
44
42
  try {
45
43
  const raw = readFileSync(path, 'utf-8').trim();
@@ -1 +1 @@
1
- {"version":3,"file":"stable-device-id.js","sourceRoot":"","sources":["../../src/llm/stable-device-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,kEAAkE;AAClE,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,wEAAwE;AACxE,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC;IAErD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;IAEjD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,eAAe,GAAG,GAAG,CAAC;gBACtB,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,4DAA4D;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,qEAAqE;QACrE,wCAAwC;QACxC,MAAM,OAAO,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,qEAAqE;QACrE,iEAAiE;IACnE,CAAC;IAED,eAAe,GAAG,KAAK,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"stable-device-id.js","sourceRoot":"","sources":["../../src/llm/stable-device-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,wEAAwE;AACxE,IAAI,eAAe,GAAkB,IAAI,CAAC;AAE1C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC;IAErD,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IAEzC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,eAAe,GAAG,GAAG,CAAC;gBACtB,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,4DAA4D;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,qEAAqE;QACrE,wCAAwC;QACxC,MAAM,OAAO,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,qEAAqE;QACrE,iEAAiE;IACnE,CAAC;IAED,eAAe,GAAG,KAAK,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC"}
@@ -42,7 +42,7 @@
42
42
  */
43
43
  import { randomBytes } from 'node:crypto';
44
44
  import { resolveSagaMemberIds } from '../sagas/storage.js';
45
- import { readFocusState } from '../sessions/focus-state-store.js';
45
+ import { readLiveFocus } from '../sessions/focus-state-store.js';
46
46
  import { resolveAgentIdFromEnv, resolveSessionIdFromEnv } from '../sessions/session-id.js';
47
47
  import { getTaskAccessor } from '../store/data-accessor.js';
48
48
  import { getBrainAccessor } from '../store/memory-accessor.js';
@@ -89,41 +89,41 @@ export const DEFAULT_DECAY_THRESHOLD = 0.1;
89
89
  export async function resolveAttentionIdentity(projectRoot, options = {}) {
90
90
  const sessionId = resolveSessionIdFromEnv();
91
91
  const agentId = resolveAgentIdFromEnv();
92
+ // T12590: the accessor wraps the SHARED project handle — do NOT close it.
93
+ // `close()` evicts every project-scope binding in the process, so a digest
94
+ // built beside other reads (`cleo focus` runs memory search and the ready
95
+ // wave concurrently) failed them mid-query. Lifecycle is owned by the
96
+ // dual-scope chokepoint.
92
97
  const accessor = await getTaskAccessor(projectRoot);
93
- try {
94
- // Current task: explicit override (spawn) wins; else per-session focus_state.
95
- const currentTaskId = options.taskId ?? (await readFocusState(accessor, sessionId))?.currentTask ?? null;
96
- const chain = [];
97
- if (agentId)
98
- chain.push({ kind: 'agent', id: agentId });
99
- // Walk task → epic → saga ancestry via parentId chain (no parallel resolver;
100
- // reuse loadSingleTask + saga membership per the decomposition guidance).
101
- if (currentTaskId) {
102
- chain.push({ kind: 'task', id: currentTaskId });
103
- const task = await accessor.loadSingleTask(currentTaskId).catch(() => null);
104
- const epicId = task?.parentId ?? null;
105
- if (epicId) {
106
- chain.push({ kind: 'epic', id: epicId });
107
- // The epic's parent (when it is a saga member) is the saga.
108
- const epic = await accessor.loadSingleTask(epicId).catch(() => null);
109
- const sagaCandidate = epic?.parentId ?? null;
110
- if (sagaCandidate) {
111
- // Confirm the candidate is genuinely a saga (its members include epicId).
112
- const memberIds = await resolveSagaMemberIds(accessor, sagaCandidate).catch(() => null);
113
- if (memberIds?.includes(epicId)) {
114
- chain.push({ kind: 'saga', id: sagaCandidate });
115
- }
98
+ // Current task: explicit override (spawn) wins; else per-session focus_state.
99
+ const currentTaskId = options.taskId ?? (await readLiveFocus(accessor, sessionId)).currentTask;
100
+ const chain = [];
101
+ if (agentId)
102
+ chain.push({ kind: 'agent', id: agentId });
103
+ // Walk task → epic → saga ancestry via parentId chain (no parallel resolver;
104
+ // reuse loadSingleTask + saga membership per the decomposition guidance).
105
+ if (currentTaskId) {
106
+ chain.push({ kind: 'task', id: currentTaskId });
107
+ const task = await accessor.loadSingleTask(currentTaskId).catch(() => null);
108
+ const epicId = task?.parentId ?? null;
109
+ if (epicId) {
110
+ chain.push({ kind: 'epic', id: epicId });
111
+ // The epic's parent (when it is a saga member) is the saga.
112
+ const epic = await accessor.loadSingleTask(epicId).catch(() => null);
113
+ const sagaCandidate = epic?.parentId ?? null;
114
+ if (sagaCandidate) {
115
+ // Confirm the candidate is genuinely a saga (its members include epicId).
116
+ const memberIds = await resolveSagaMemberIds(accessor, sagaCandidate).catch(() => null);
117
+ if (memberIds?.includes(epicId)) {
118
+ chain.push({ kind: 'saga', id: sagaCandidate });
116
119
  }
117
120
  }
118
121
  }
119
- if (sessionId)
120
- chain.push({ kind: 'session', id: sessionId });
121
- chain.push({ kind: 'global', id: 'global' });
122
- return { sessionId, agentId, currentTaskId, chain };
123
- }
124
- finally {
125
- await accessor.close();
126
122
  }
123
+ if (sessionId)
124
+ chain.push({ kind: 'session', id: sessionId });
125
+ chain.push({ kind: 'global', id: 'global' });
126
+ return { sessionId, agentId, currentTaskId, chain };
127
127
  }
128
128
  /**
129
129
  * Pick the write target scope from a resolved chain, honoring an optional
@@ -1 +1 @@
1
- {"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/memory/attention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/memory/attention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * System One contradiction check for ADR decision writes (T12493).
3
+ *
4
+ * `validateDecisionConflicts` used to find contradictions by asking a
5
+ * generative model for free-form "insights", then scraping decision ids out of
6
+ * the prose with `/\bD\d{3,}\b/` and keeping any insight whose key mentioned
7
+ * "contradict". That call had no timeout, so it could hold a decision write
8
+ * open indefinitely.
9
+ *
10
+ * This module replaces it with ONE `decide()` request:
11
+ *
12
+ * - Candidates are the top {@link MAX_CONTRADICTION_CANDIDATES} prior
13
+ * decisions by the validator's own word-Jaccard score (score > 0).
14
+ * - Each candidate gets one `choice` question with the options in
15
+ * {@link CONTRADICTION_RELATIONS}. A contradiction is a typed answer naming a
16
+ * known candidate id — never an id found in prose. `supersedes` about any
17
+ * decision other than a validly declared `supersedes` target also counts
18
+ * (undeclared supersession); see {@link countsAsContradiction}.
19
+ * - The whole step, module load included, is bounded by
20
+ * {@link DECISION_CONTRADICTION_BUDGET_MS}.
21
+ * - Every text field is redacted, then clipped, before it leaves the machine.
22
+ * - A `choice` outside the offered options is rejected here (the client only
23
+ * checks the answer type), and the heuristic acts.
24
+ *
25
+ * Mode comes from `decide.sites.decisionContradiction` (`off | shadow | on`):
26
+ * `shadow` (the default once a provider is configured) audits the decision
27
+ * next to the heuristic and acts on the heuristic; `on` acts on the decision
28
+ * when every answer has confidence ≥ {@link DECISION_CONTRADICTION_MIN_CONFIDENCE}.
29
+ * No provider configured → `off`, no network call.
30
+ *
31
+ * @task T12493
32
+ * @epic T12486
33
+ */
34
+ import type { DecisionRequest } from '@cleocode/contracts';
35
+ import type { DecideOptions } from '../decide/client.js';
36
+ import { type DecisionSiteMode } from '../decide/site.js';
37
+ /**
38
+ * End-to-end budget for the contradiction decision, in milliseconds: module
39
+ * load, redaction, the shared request budget and the HTTP round trip.
40
+ */
41
+ export declare const DECISION_CONTRADICTION_BUDGET_MS = 300;
42
+ /** Minimum confidence EVERY answer needs before `on` mode acts on the decision. */
43
+ export declare const DECISION_CONTRADICTION_MIN_CONFIDENCE = 0.6;
44
+ /** Maximum prior decisions offered to the decision. */
45
+ export declare const MAX_CONTRADICTION_CANDIDATES = 3;
46
+ /** Call-site id for the contradiction decision; keys the audit line. */
47
+ export declare const DECISION_CONTRADICTION_SITE = "memory.decision-contradiction";
48
+ /** Config key selecting the System One mode for the contradiction check. */
49
+ export declare const DECISION_CONTRADICTION_MODE_KEY = "decide.sites.decisionContradiction";
50
+ /**
51
+ * Config key for the older generative-LLM contradiction check (T1828).
52
+ * Absent → on in every mode except `on` (unconfigured, `off` and `shadow`
53
+ * keep today's behaviour); only `on` replaces it.
54
+ */
55
+ export declare const DECISION_CONTRADICTION_LLM_KEY = "decide.generativeFallback.decisionContradiction";
56
+ /** The relations a candidate can have to the new decision; the `choice` options. */
57
+ export declare const CONTRADICTION_RELATIONS: readonly ["contradicts", "supersedes", "refines", "unrelated"];
58
+ /** One of {@link CONTRADICTION_RELATIONS}. */
59
+ export type ContradictionRelation = (typeof CONTRADICTION_RELATIONS)[number];
60
+ /** The candidate decision being written. */
61
+ export interface ContradictionSubject {
62
+ /** Decision type (e.g. `architecture`). */
63
+ readonly type: string;
64
+ /** Decision text. */
65
+ readonly decision: string;
66
+ /** Rationale text. */
67
+ readonly rationale: string;
68
+ /** Id of the decision this one declares it supersedes, if any. Sent in `state.new`. */
69
+ readonly supersedes?: string;
70
+ /**
71
+ * Whether the declared supersession passed the validator's graph check
72
+ * (target exists and is not already superseded). Only a valid declaration
73
+ * exempts its target from being counted.
74
+ */
75
+ readonly supersessionValid?: boolean;
76
+ }
77
+ /** A prior decision offered to the decision, with its lexical score. */
78
+ export interface ContradictionCandidate {
79
+ /** Decision id (e.g. `D042`). */
80
+ readonly id: string;
81
+ /** Decision text. */
82
+ readonly decision: string;
83
+ /** Rationale text. */
84
+ readonly rationale: string;
85
+ /** Word-Jaccard score against the new decision (the heuristic's signal). */
86
+ readonly score: number;
87
+ }
88
+ /** Options for {@link askContradictionDecision}. */
89
+ export interface ContradictionDecisionOptions {
90
+ /** Effective mode (`off` never reaches this function). */
91
+ readonly mode: Exclude<DecisionSiteMode, 'off'>;
92
+ /** The heuristic's overall verdict, in the site's vocabulary (`clear` or `collision`). */
93
+ readonly heuristicVerdict: string;
94
+ /** Collision threshold the heuristic uses per candidate. */
95
+ readonly collisionThreshold: number;
96
+ /** Provider, connection, budget, cache and audit wiring forwarded to `decide()`. */
97
+ readonly decide?: DecideOptions;
98
+ /** Project root for the default audit sink. */
99
+ readonly projectRoot?: string;
100
+ }
101
+ /** The decision's verdict, when a provider (or its cache) answered with valid options. */
102
+ export interface ContradictionVerdict {
103
+ /** Candidate id → decided relation. */
104
+ readonly relations: Readonly<Record<string, ContradictionRelation>>;
105
+ /** Candidate ids counted as contradicted; see {@link countsAsContradiction}. */
106
+ readonly contradictions: readonly string[];
107
+ /** Candidate id → probability of the counted relation, for every counted contradiction. */
108
+ readonly contradictionProbabilities: Readonly<Record<string, number>>;
109
+ /** Whether every answer met {@link DECISION_CONTRADICTION_MIN_CONFIDENCE}; only then may `on` act. */
110
+ readonly confident: boolean;
111
+ }
112
+ /**
113
+ * Whether a decided relation counts as a contradiction of candidate `id`.
114
+ *
115
+ * - `contradicts` counts, and `supersedes` counts too: replacing a decision
116
+ * without declaring it is an undeclared supersession, and letting it through
117
+ * would store two live decisions that cannot both hold.
118
+ * - Neither counts for the candidate the new decision validly declares it
119
+ * supersedes (declared, and the graph check found no violation).
120
+ * - `refines` and `unrelated` never count.
121
+ *
122
+ * @param subject - The decision being written.
123
+ * @param id - Candidate decision id.
124
+ * @param relation - The decided relation.
125
+ * @returns Whether the relation is a counted contradiction.
126
+ */
127
+ export declare function countsAsContradiction(subject: ContradictionSubject, id: string, relation: ContradictionRelation): boolean;
128
+ /**
129
+ * Build ONE decision request: the new decision plus up to
130
+ * {@link MAX_CONTRADICTION_CANDIDATES} prior decisions as structured state,
131
+ * and one `choice` question per prior decision.
132
+ *
133
+ * @param subject - The decision being written.
134
+ * @param candidates - Prior decisions, highest score first.
135
+ * @param redact - Redaction applied to every text field BEFORE clipping.
136
+ * @returns The request.
137
+ */
138
+ export declare function buildContradictionRequest(subject: ContradictionSubject, candidates: readonly ContradictionCandidate[], redact: (s: string) => string): DecisionRequest;
139
+ /**
140
+ * Ask System One how each candidate relates to the new decision.
141
+ *
142
+ * Never throws and never waits longer than {@link DECISION_CONTRADICTION_BUDGET_MS}
143
+ * from its own start. The audit line carries the heuristic answers next to the
144
+ * decision answers.
145
+ *
146
+ * @param subject - The decision being written.
147
+ * @param candidates - Prior decisions, highest score first (at most {@link MAX_CONTRADICTION_CANDIDATES}).
148
+ * @param opts - Mode, heuristic verdict and `decide()` wiring.
149
+ * @returns The verdict, or `null` when the heuristic answered (fallback or an out-of-range choice).
150
+ */
151
+ export declare function askContradictionDecision(subject: ContradictionSubject, candidates: readonly ContradictionCandidate[], opts: ContradictionDecisionOptions): Promise<ContradictionVerdict | null>;
152
+ //# sourceMappingURL=decision-contradiction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-contradiction.d.ts","sourceRoot":"","sources":["../../src/memory/decision-contradiction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * System One contradiction check for ADR decision writes (T12493).
3
+ *
4
+ * `validateDecisionConflicts` used to find contradictions by asking a
5
+ * generative model for free-form "insights", then scraping decision ids out of
6
+ * the prose with `/\bD\d{3,}\b/` and keeping any insight whose key mentioned
7
+ * "contradict". That call had no timeout, so it could hold a decision write
8
+ * open indefinitely.
9
+ *
10
+ * This module replaces it with ONE `decide()` request:
11
+ *
12
+ * - Candidates are the top {@link MAX_CONTRADICTION_CANDIDATES} prior
13
+ * decisions by the validator's own word-Jaccard score (score > 0).
14
+ * - Each candidate gets one `choice` question with the options in
15
+ * {@link CONTRADICTION_RELATIONS}. A contradiction is a typed answer naming a
16
+ * known candidate id — never an id found in prose. `supersedes` about any
17
+ * decision other than a validly declared `supersedes` target also counts
18
+ * (undeclared supersession); see {@link countsAsContradiction}.
19
+ * - The whole step, module load included, is bounded by
20
+ * {@link DECISION_CONTRADICTION_BUDGET_MS}.
21
+ * - Every text field is redacted, then clipped, before it leaves the machine.
22
+ * - A `choice` outside the offered options is rejected here (the client only
23
+ * checks the answer type), and the heuristic acts.
24
+ *
25
+ * Mode comes from `decide.sites.decisionContradiction` (`off | shadow | on`):
26
+ * `shadow` (the default once a provider is configured) audits the decision
27
+ * next to the heuristic and acts on the heuristic; `on` acts on the decision
28
+ * when every answer has confidence ≥ {@link DECISION_CONTRADICTION_MIN_CONFIDENCE}.
29
+ * No provider configured → `off`, no network call.
30
+ *
31
+ * @task T12493
32
+ * @epic T12486
33
+ */
34
+ import { redactThenClip } from '../decide/site.js';
35
+ /**
36
+ * End-to-end budget for the contradiction decision, in milliseconds: module
37
+ * load, redaction, the shared request budget and the HTTP round trip.
38
+ */
39
+ export const DECISION_CONTRADICTION_BUDGET_MS = 300;
40
+ /** Minimum confidence EVERY answer needs before `on` mode acts on the decision. */
41
+ export const DECISION_CONTRADICTION_MIN_CONFIDENCE = 0.6;
42
+ /** Maximum prior decisions offered to the decision. */
43
+ export const MAX_CONTRADICTION_CANDIDATES = 3;
44
+ /** Call-site id for the contradiction decision; keys the audit line. */
45
+ export const DECISION_CONTRADICTION_SITE = 'memory.decision-contradiction';
46
+ /** Config key selecting the System One mode for the contradiction check. */
47
+ export const DECISION_CONTRADICTION_MODE_KEY = 'decide.sites.decisionContradiction';
48
+ /**
49
+ * Config key for the older generative-LLM contradiction check (T1828).
50
+ * Absent → on in every mode except `on` (unconfigured, `off` and `shadow`
51
+ * keep today's behaviour); only `on` replaces it.
52
+ */
53
+ export const DECISION_CONTRADICTION_LLM_KEY = 'decide.generativeFallback.decisionContradiction';
54
+ /** The relations a candidate can have to the new decision; the `choice` options. */
55
+ export const CONTRADICTION_RELATIONS = [
56
+ 'contradicts',
57
+ 'supersedes',
58
+ 'refines',
59
+ 'unrelated',
60
+ ];
61
+ /** Per-field character caps; four decisions stay near 2.5 KB of text. */
62
+ const DECISION_TEXT_MAX_CHARS = 160;
63
+ const DECISION_RATIONALE_MAX_CHARS = 440;
64
+ /** Criteria for each option, phrased about question `name`. */
65
+ function relationCriteria(name) {
66
+ return {
67
+ contradicts: `The "new" decision conflicts with decision "${name}": both cannot hold at once, and "new" does not declare that it replaces "${name}".`,
68
+ supersedes: `The "new" decision deliberately replaces or retires decision "${name}" (a change of course).`,
69
+ refines: `The "new" decision narrows, extends or adds detail to decision "${name}" and is consistent with it.`,
70
+ unrelated: `The "new" decision and decision "${name}" concern different subjects, or both can hold independently.`,
71
+ };
72
+ }
73
+ /** Whether `value` is one of the offered options. */
74
+ function isRelation(value) {
75
+ return CONTRADICTION_RELATIONS.includes(value);
76
+ }
77
+ /** Every question answered with a `choice` whose value is an offered option. */
78
+ function answersAreValid(answers, names) {
79
+ return names.every((n) => answers[n]?.type === 'choice' && isRelation(answers[n]?.value));
80
+ }
81
+ function isConfident(answers) {
82
+ return Object.values(answers).every((a) => a.confidence >= DECISION_CONTRADICTION_MIN_CONFIDENCE);
83
+ }
84
+ /**
85
+ * Whether a decided relation counts as a contradiction of candidate `id`.
86
+ *
87
+ * - `contradicts` counts, and `supersedes` counts too: replacing a decision
88
+ * without declaring it is an undeclared supersession, and letting it through
89
+ * would store two live decisions that cannot both hold.
90
+ * - Neither counts for the candidate the new decision validly declares it
91
+ * supersedes (declared, and the graph check found no violation).
92
+ * - `refines` and `unrelated` never count.
93
+ *
94
+ * @param subject - The decision being written.
95
+ * @param id - Candidate decision id.
96
+ * @param relation - The decided relation.
97
+ * @returns Whether the relation is a counted contradiction.
98
+ */
99
+ export function countsAsContradiction(subject, id, relation) {
100
+ if (relation !== 'contradicts' && relation !== 'supersedes')
101
+ return false;
102
+ return !(subject.supersessionValid === true && subject.supersedes === id);
103
+ }
104
+ /** Question name for the candidate at `index` (0-based). */
105
+ function questionName(index) {
106
+ return `c${index + 1}`;
107
+ }
108
+ /**
109
+ * Build ONE decision request: the new decision plus up to
110
+ * {@link MAX_CONTRADICTION_CANDIDATES} prior decisions as structured state,
111
+ * and one `choice` question per prior decision.
112
+ *
113
+ * @param subject - The decision being written.
114
+ * @param candidates - Prior decisions, highest score first.
115
+ * @param redact - Redaction applied to every text field BEFORE clipping.
116
+ * @returns The request.
117
+ */
118
+ export function buildContradictionRequest(subject, candidates, redact) {
119
+ const clip = (text, max) => redactThenClip(text, max, redact);
120
+ const state = {
121
+ new: {
122
+ type: subject.type,
123
+ ...(subject.supersedes ? { supersedes: subject.supersedes } : {}),
124
+ decision: clip(subject.decision, DECISION_TEXT_MAX_CHARS),
125
+ rationale: clip(subject.rationale, DECISION_RATIONALE_MAX_CHARS),
126
+ },
127
+ };
128
+ const questions = {};
129
+ candidates.forEach((c, i) => {
130
+ const name = questionName(i);
131
+ state[name] = {
132
+ id: c.id,
133
+ decision: clip(c.decision, DECISION_TEXT_MAX_CHARS),
134
+ rationale: clip(c.rationale, DECISION_RATIONALE_MAX_CHARS),
135
+ };
136
+ questions[name] = { type: 'choice', criteria: relationCriteria(name) };
137
+ });
138
+ return { state, questions };
139
+ }
140
+ /**
141
+ * The heuristic's answer for one candidate. The lexical heuristic cannot see
142
+ * contradiction, so it always answers `unrelated`; its per-candidate verdict
143
+ * (`collision` / `none`) and raw score go in the shadow record beside it.
144
+ */
145
+ function heuristicAnswer() {
146
+ return {
147
+ type: 'choice',
148
+ value: 'unrelated',
149
+ probabilities: { contradicts: 0, supersedes: 0, refines: 0, unrelated: 1 },
150
+ confidence: 0.5,
151
+ };
152
+ }
153
+ /**
154
+ * Ask System One how each candidate relates to the new decision.
155
+ *
156
+ * Never throws and never waits longer than {@link DECISION_CONTRADICTION_BUDGET_MS}
157
+ * from its own start. The audit line carries the heuristic answers next to the
158
+ * decision answers.
159
+ *
160
+ * @param subject - The decision being written.
161
+ * @param candidates - Prior decisions, highest score first (at most {@link MAX_CONTRADICTION_CANDIDATES}).
162
+ * @param opts - Mode, heuristic verdict and `decide()` wiring.
163
+ * @returns The verdict, or `null` when the heuristic answered (fallback or an out-of-range choice).
164
+ */
165
+ export async function askContradictionDecision(subject, candidates, opts) {
166
+ const started = performance.now();
167
+ const deadline = AbortSignal.timeout(DECISION_CONTRADICTION_BUDGET_MS);
168
+ try {
169
+ const { decide } = await import('../decide/client.js');
170
+ const { auditAnswers, createJsonlDecisionAudit } = await import('../decide/audit.js');
171
+ const { redactContent } = await import('./redaction.js');
172
+ const req = buildContradictionRequest(subject, candidates, (text) => redactContent(text).content);
173
+ const names = candidates.map((_, i) => questionName(i));
174
+ const heuristicAnswers = {};
175
+ const subjects = {};
176
+ const heuristicVerdicts = {};
177
+ const heuristicScores = {};
178
+ candidates.forEach((c, i) => {
179
+ const name = questionName(i);
180
+ heuristicAnswers[name] = heuristicAnswer();
181
+ heuristicVerdicts[name] = c.score >= opts.collisionThreshold ? 'collision' : 'none';
182
+ heuristicScores[name] = c.score;
183
+ subjects[name] = c.id;
184
+ });
185
+ const heuristicAudit = auditAnswers({
186
+ answers: heuristicAnswers,
187
+ source: 'fallback',
188
+ latencyMs: 0,
189
+ });
190
+ const wiring = opts.decide ?? {};
191
+ let sink = wiring.audit;
192
+ if (sink === undefined) {
193
+ try {
194
+ const { getProjectRoot } = await import('../paths.js');
195
+ sink = createJsonlDecisionAudit(wiring.projectRoot ?? opts.projectRoot ?? getProjectRoot());
196
+ }
197
+ catch {
198
+ sink = null;
199
+ }
200
+ }
201
+ const base = sink;
202
+ const audit = base
203
+ ? {
204
+ write: (entry) => {
205
+ const answered = entry.source !== 'fallback';
206
+ const valid = answered && answersAreValid(entry.answers, names);
207
+ base.write({
208
+ ...entry,
209
+ shadow: {
210
+ mode: opts.mode,
211
+ acted: opts.mode === 'on' && valid && isConfident(entry.answers)
212
+ ? 'decision'
213
+ : 'heuristic',
214
+ heuristicVerdict: opts.heuristicVerdict,
215
+ heuristicAnswers: heuristicAudit,
216
+ // Compared on the acted axis: the heuristic never counts a
217
+ // contradiction, so they agree when the decision counts none.
218
+ agree: valid
219
+ ? names.every((n, i) => {
220
+ const value = entry.answers[n]?.value;
221
+ const id = candidates[i]?.id;
222
+ return !(isRelation(value) &&
223
+ id &&
224
+ countsAsContradiction(subject, id, value));
225
+ })
226
+ : null,
227
+ heuristicVerdicts,
228
+ heuristicScores,
229
+ subjects,
230
+ ...(answered && !valid ? { rejected: 'invalid_choice' } : {}),
231
+ },
232
+ });
233
+ },
234
+ }
235
+ : null;
236
+ // The abort signal pins the budget to THIS function's start, so the
237
+ // client's own setup (connection, redaction, validation) is inside it.
238
+ const remaining = Math.max(0, DECISION_CONTRADICTION_BUDGET_MS - (performance.now() - started));
239
+ const outcome = await decide(DECISION_CONTRADICTION_SITE, req, () => heuristicAnswers, {
240
+ ...wiring,
241
+ audit,
242
+ timeoutMs: Math.min(wiring.timeoutMs ?? remaining, remaining),
243
+ signal: wiring.signal ? AbortSignal.any([wiring.signal, deadline]) : deadline,
244
+ });
245
+ if (outcome.source === 'fallback')
246
+ return null;
247
+ if (!answersAreValid(outcome.answers, names))
248
+ return null;
249
+ const relations = {};
250
+ const contradictions = [];
251
+ const contradictionProbabilities = {};
252
+ candidates.forEach((c, i) => {
253
+ const answer = outcome.answers[questionName(i)];
254
+ if (answer?.type !== 'choice' || !isRelation(answer.value))
255
+ return;
256
+ relations[c.id] = answer.value;
257
+ if (countsAsContradiction(subject, c.id, answer.value)) {
258
+ contradictions.push(c.id);
259
+ contradictionProbabilities[c.id] = answer.probabilities[answer.value] ?? 1;
260
+ }
261
+ });
262
+ return {
263
+ relations,
264
+ contradictions,
265
+ contradictionProbabilities,
266
+ confident: isConfident(outcome.answers),
267
+ };
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ }
273
+ //# sourceMappingURL=decision-contradiction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-contradiction.js","sourceRoot":"","sources":["../../src/memory/decision-contradiction.ts"],"names":[],"mappings":"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"}