@cleocode/core 2026.9.23 → 2026.9.25

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 (865) hide show
  1. package/dist/admin/import-tasks.d.ts.map +1 -1
  2. package/dist/admin/import-tasks.js +35 -6
  3. package/dist/admin/import-tasks.js.map +1 -1
  4. package/dist/admin/import.d.ts.map +1 -1
  5. package/dist/admin/import.js +25 -6
  6. package/dist/admin/import.js.map +1 -1
  7. package/dist/audit-prune.d.ts +32 -0
  8. package/dist/audit-prune.d.ts.map +1 -1
  9. package/dist/audit-prune.js +37 -3
  10. package/dist/audit-prune.js.map +1 -1
  11. package/dist/build-provenance.json +2 -2
  12. package/dist/cloud/crypto.d.ts +1 -2
  13. package/dist/cloud/crypto.d.ts.map +1 -1
  14. package/dist/cloud/crypto.js +1 -11
  15. package/dist/cloud/crypto.js.map +1 -1
  16. package/dist/cloud/http.d.ts +8 -0
  17. package/dist/cloud/http.d.ts.map +1 -1
  18. package/dist/cloud/http.js +8 -1
  19. package/dist/cloud/http.js.map +1 -1
  20. package/dist/cloud/index.d.ts +6 -1
  21. package/dist/cloud/index.d.ts.map +1 -1
  22. package/dist/cloud/index.js +6 -1
  23. package/dist/cloud/index.js.map +1 -1
  24. package/dist/cloud/nexus-auth.d.ts +169 -0
  25. package/dist/cloud/nexus-auth.d.ts.map +1 -0
  26. package/dist/cloud/nexus-auth.js +372 -0
  27. package/dist/cloud/nexus-auth.js.map +1 -0
  28. package/dist/cloud/nexus-credentials.d.ts +188 -0
  29. package/dist/cloud/nexus-credentials.d.ts.map +1 -0
  30. package/dist/cloud/nexus-credentials.js +323 -0
  31. package/dist/cloud/nexus-credentials.js.map +1 -0
  32. package/dist/cloud/nexus-link.d.ts +85 -0
  33. package/dist/cloud/nexus-link.d.ts.map +1 -0
  34. package/dist/cloud/nexus-link.js +226 -0
  35. package/dist/cloud/nexus-link.js.map +1 -0
  36. package/dist/cloud/presence.d.ts +88 -0
  37. package/dist/cloud/presence.d.ts.map +1 -0
  38. package/dist/cloud/presence.js +137 -0
  39. package/dist/cloud/presence.js.map +1 -0
  40. package/dist/cloud/projects.d.ts +3 -1
  41. package/dist/cloud/projects.d.ts.map +1 -1
  42. package/dist/cloud/projects.js +4 -2
  43. package/dist/cloud/projects.js.map +1 -1
  44. package/dist/cloud/uuidv7.d.ts +9 -0
  45. package/dist/cloud/uuidv7.d.ts.map +1 -0
  46. package/dist/cloud/uuidv7.js +19 -0
  47. package/dist/cloud/uuidv7.js.map +1 -0
  48. package/dist/crypto/credentials.d.ts +14 -4
  49. package/dist/crypto/credentials.d.ts.map +1 -1
  50. package/dist/crypto/credentials.js +15 -1
  51. package/dist/crypto/credentials.js.map +1 -1
  52. package/dist/decide/bench/dataset.d.ts +125 -0
  53. package/dist/decide/bench/dataset.d.ts.map +1 -0
  54. package/dist/decide/bench/dataset.js +457 -0
  55. package/dist/decide/bench/dataset.js.map +1 -0
  56. package/dist/decide/bench/index.d.ts +23 -0
  57. package/dist/decide/bench/index.d.ts.map +1 -0
  58. package/dist/decide/bench/index.js +23 -0
  59. package/dist/decide/bench/index.js.map +1 -0
  60. package/dist/decide/bench/metrics.d.ts +55 -0
  61. package/dist/decide/bench/metrics.d.ts.map +1 -0
  62. package/dist/decide/bench/metrics.js +100 -0
  63. package/dist/decide/bench/metrics.js.map +1 -0
  64. package/dist/decide/bench/operation.d.ts +119 -0
  65. package/dist/decide/bench/operation.d.ts.map +1 -0
  66. package/dist/decide/bench/operation.js +171 -0
  67. package/dist/decide/bench/operation.js.map +1 -0
  68. package/dist/decide/bench/profiles.d.ts +102 -0
  69. package/dist/decide/bench/profiles.d.ts.map +1 -0
  70. package/dist/decide/bench/profiles.js +175 -0
  71. package/dist/decide/bench/profiles.js.map +1 -0
  72. package/dist/decide/bench/questions.d.ts +40 -0
  73. package/dist/decide/bench/questions.d.ts.map +1 -0
  74. package/dist/decide/bench/questions.js +107 -0
  75. package/dist/decide/bench/questions.js.map +1 -0
  76. package/dist/decide/bench/report.d.ts +21 -0
  77. package/dist/decide/bench/report.d.ts.map +1 -0
  78. package/dist/decide/bench/report.js +125 -0
  79. package/dist/decide/bench/report.js.map +1 -0
  80. package/dist/decide/bench/runner.d.ts +208 -0
  81. package/dist/decide/bench/runner.d.ts.map +1 -0
  82. package/dist/decide/bench/runner.js +336 -0
  83. package/dist/decide/bench/runner.js.map +1 -0
  84. package/dist/decide/bench/source.d.ts +21 -0
  85. package/dist/decide/bench/source.d.ts.map +1 -0
  86. package/dist/decide/bench/source.js +67 -0
  87. package/dist/decide/bench/source.js.map +1 -0
  88. package/dist/decide/bench/spot-check.d.ts +117 -0
  89. package/dist/decide/bench/spot-check.d.ts.map +1 -0
  90. package/dist/decide/bench/spot-check.js +221 -0
  91. package/dist/decide/bench/spot-check.js.map +1 -0
  92. package/dist/decide/bench/stats.d.ts +57 -0
  93. package/dist/decide/bench/stats.d.ts.map +1 -0
  94. package/dist/decide/bench/stats.js +82 -0
  95. package/dist/decide/bench/stats.js.map +1 -0
  96. package/dist/decide/bench/types.d.ts +216 -0
  97. package/dist/decide/bench/types.d.ts.map +1 -0
  98. package/dist/decide/bench/types.js +104 -0
  99. package/dist/decide/bench/types.js.map +1 -0
  100. package/dist/decide/client.d.ts +35 -1
  101. package/dist/decide/client.d.ts.map +1 -1
  102. package/dist/decide/client.js +135 -35
  103. package/dist/decide/client.js.map +1 -1
  104. package/dist/decide/credentials.d.ts +177 -17
  105. package/dist/decide/credentials.d.ts.map +1 -1
  106. package/dist/decide/credentials.js +505 -41
  107. package/dist/decide/credentials.js.map +1 -1
  108. package/dist/decide/index.d.ts +8 -8
  109. package/dist/decide/index.d.ts.map +1 -1
  110. package/dist/decide/index.js +8 -8
  111. package/dist/decide/index.js.map +1 -1
  112. package/dist/decide/jev-wire.d.ts +55 -19
  113. package/dist/decide/jev-wire.d.ts.map +1 -1
  114. package/dist/decide/jev-wire.js +116 -37
  115. package/dist/decide/jev-wire.js.map +1 -1
  116. package/dist/decide/operations.d.ts +63 -12
  117. package/dist/decide/operations.d.ts.map +1 -1
  118. package/dist/decide/operations.js +116 -58
  119. package/dist/decide/operations.js.map +1 -1
  120. package/dist/decide/provider-state.d.ts +85 -12
  121. package/dist/decide/provider-state.d.ts.map +1 -1
  122. package/dist/decide/provider-state.js +154 -21
  123. package/dist/decide/provider-state.js.map +1 -1
  124. package/dist/decide/provider.d.ts +5 -0
  125. package/dist/decide/provider.d.ts.map +1 -1
  126. package/dist/decide/provider.js.map +1 -1
  127. package/dist/decide/providers.d.ts +15 -2
  128. package/dist/decide/providers.d.ts.map +1 -1
  129. package/dist/decide/providers.js +22 -6
  130. package/dist/decide/providers.js.map +1 -1
  131. package/dist/decide/sites/registry.d.ts +22 -0
  132. package/dist/decide/sites/registry.d.ts.map +1 -1
  133. package/dist/decide/sites/registry.js +23 -0
  134. package/dist/decide/sites/registry.js.map +1 -1
  135. package/dist/decide/wizard.d.ts +12 -4
  136. package/dist/decide/wizard.d.ts.map +1 -1
  137. package/dist/decide/wizard.js +79 -26
  138. package/dist/decide/wizard.js.map +1 -1
  139. package/dist/dispatch/mvi-projection.d.ts +15 -2
  140. package/dist/dispatch/mvi-projection.d.ts.map +1 -1
  141. package/dist/dispatch/mvi-projection.js +73 -12
  142. package/dist/dispatch/mvi-projection.js.map +1 -1
  143. package/dist/docs/adr-allocator.d.ts +2 -2
  144. package/dist/docs/adr-allocator.d.ts.map +1 -1
  145. package/dist/docs/adr-allocator.js +17 -4
  146. package/dist/docs/adr-allocator.js.map +1 -1
  147. package/dist/docs/blob-consolidation.js +1 -1
  148. package/dist/docs/blob-consolidation.js.map +1 -1
  149. package/dist/docs/display-alias.d.ts +1 -1
  150. package/dist/docs/display-alias.d.ts.map +1 -1
  151. package/dist/docs/display-alias.js +7 -4
  152. package/dist/docs/display-alias.js.map +1 -1
  153. package/dist/docs/docs-inconsistency-detector.js +1 -1
  154. package/dist/docs/docs-inconsistency-detector.js.map +1 -1
  155. package/dist/docs/docs-update.d.ts.map +1 -1
  156. package/dist/docs/docs-update.js +6 -1
  157. package/dist/docs/docs-update.js.map +1 -1
  158. package/dist/docs/export-document.js +18058 -14538
  159. package/dist/docs/export-document.js.map +3 -3
  160. package/dist/docs/numbering.js +1 -1
  161. package/dist/docs/numbering.js.map +1 -1
  162. package/dist/docs/supersede.d.ts.map +1 -1
  163. package/dist/docs/supersede.js +6 -3
  164. package/dist/docs/supersede.js.map +1 -1
  165. package/dist/docs/version-ssot.js +1 -1
  166. package/dist/docs/version-ssot.js.map +1 -1
  167. package/dist/doctor/db-substrate.d.ts.map +1 -1
  168. package/dist/doctor/db-substrate.js +39 -24
  169. package/dist/doctor/db-substrate.js.map +1 -1
  170. package/dist/doctor/knowledge-summary.d.ts +10 -3
  171. package/dist/doctor/knowledge-summary.d.ts.map +1 -1
  172. package/dist/doctor/knowledge-summary.js +10 -3
  173. package/dist/doctor/knowledge-summary.js.map +1 -1
  174. package/dist/doctor/orphan-ac-bindings.d.ts +64 -0
  175. package/dist/doctor/orphan-ac-bindings.d.ts.map +1 -0
  176. package/dist/doctor/orphan-ac-bindings.js +59 -0
  177. package/dist/doctor/orphan-ac-bindings.js.map +1 -0
  178. package/dist/doctor/project-identity.d.ts +128 -37
  179. package/dist/doctor/project-identity.d.ts.map +1 -1
  180. package/dist/doctor/project-identity.js +476 -63
  181. package/dist/doctor/project-identity.js.map +1 -1
  182. package/dist/doctor/projects.d.ts.map +1 -1
  183. package/dist/doctor/projects.js +43 -29
  184. package/dist/doctor/projects.js.map +1 -1
  185. package/dist/doctor/row-identity.d.ts +31 -0
  186. package/dist/doctor/row-identity.d.ts.map +1 -0
  187. package/dist/doctor/row-identity.js +93 -0
  188. package/dist/doctor/row-identity.js.map +1 -0
  189. package/dist/doctor/twin-collapse.d.ts +108 -2
  190. package/dist/doctor/twin-collapse.d.ts.map +1 -1
  191. package/dist/doctor/twin-collapse.js +309 -7
  192. package/dist/doctor/twin-collapse.js.map +1 -1
  193. package/dist/error-catalog.js +2 -2
  194. package/dist/error-catalog.js.map +1 -1
  195. package/dist/error-registry.js +1 -1
  196. package/dist/error-registry.js.map +1 -1
  197. package/dist/gateway-client/generated/types.gen.d.ts +22 -2
  198. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
  199. package/dist/index.d.ts +1 -1
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +1 -1
  202. package/dist/index.js.map +1 -1
  203. package/dist/init.d.ts.map +1 -1
  204. package/dist/init.js +20 -11
  205. package/dist/init.js.map +1 -1
  206. package/dist/inject/index.d.ts.map +1 -1
  207. package/dist/inject/index.js +2 -3
  208. package/dist/inject/index.js.map +1 -1
  209. package/dist/internal.d.ts +5 -4
  210. package/dist/internal.d.ts.map +1 -1
  211. package/dist/internal.js +6 -4
  212. package/dist/internal.js.map +1 -1
  213. package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
  214. package/dist/lifecycle/verification/satisfies-validator.js +10 -0
  215. package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
  216. package/dist/llm/credential-remove-entry.d.ts +59 -0
  217. package/dist/llm/credential-remove-entry.d.ts.map +1 -0
  218. package/dist/llm/credential-remove-entry.js +101 -0
  219. package/dist/llm/credential-remove-entry.js.map +1 -0
  220. package/dist/llm/oauth/device-code.d.ts +26 -6
  221. package/dist/llm/oauth/device-code.d.ts.map +1 -1
  222. package/dist/llm/oauth/device-code.js +44 -12
  223. package/dist/llm/oauth/device-code.js.map +1 -1
  224. package/dist/llm/plugin-facade.js +18202 -14682
  225. package/dist/llm/plugin-facade.js.map +3 -3
  226. package/dist/memory/attention.d.ts.map +1 -1
  227. package/dist/memory/attention.js +5 -3
  228. package/dist/memory/attention.js.map +1 -1
  229. package/dist/memory/decisions.d.ts +48 -3
  230. package/dist/memory/decisions.d.ts.map +1 -1
  231. package/dist/memory/decisions.js +98 -14
  232. package/dist/memory/decisions.js.map +1 -1
  233. package/dist/memory/index.d.ts.map +1 -1
  234. package/dist/memory/index.js +19 -10
  235. package/dist/memory/index.js.map +1 -1
  236. package/dist/memory/learnings.d.ts +6 -6
  237. package/dist/memory/manifest-identity.d.ts +171 -0
  238. package/dist/memory/manifest-identity.d.ts.map +1 -0
  239. package/dist/memory/manifest-identity.js +345 -0
  240. package/dist/memory/manifest-identity.js.map +1 -0
  241. package/dist/memory/mental-model-queue.d.ts +14 -4
  242. package/dist/memory/mental-model-queue.d.ts.map +1 -1
  243. package/dist/memory/mental-model-queue.js +64 -35
  244. package/dist/memory/mental-model-queue.js.map +1 -1
  245. package/dist/memory/patterns.d.ts +4 -4
  246. package/dist/memory/pipeline-manifest-sqlite.d.ts +47 -5
  247. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  248. package/dist/memory/pipeline-manifest-sqlite.js +130 -14
  249. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  250. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  251. package/dist/memory/retrieval/observe.js +2 -0
  252. package/dist/memory/retrieval/observe.js.map +1 -1
  253. package/dist/memory/transcript-scanner.js +1 -1
  254. package/dist/migration/manual/T10165-backfill-adr-index.d.ts.map +1 -1
  255. package/dist/migration/manual/T10165-backfill-adr-index.js +5 -1
  256. package/dist/migration/manual/T10165-backfill-adr-index.js.map +1 -1
  257. package/dist/nexus/deps.d.ts.map +1 -1
  258. package/dist/nexus/deps.js +7 -14
  259. package/dist/nexus/deps.js.map +1 -1
  260. package/dist/nexus/discover.d.ts.map +1 -1
  261. package/dist/nexus/discover.js +6 -9
  262. package/dist/nexus/discover.js.map +1 -1
  263. package/dist/nexus/fleet-status.d.ts +83 -0
  264. package/dist/nexus/fleet-status.d.ts.map +1 -0
  265. package/dist/nexus/fleet-status.js +414 -0
  266. package/dist/nexus/fleet-status.js.map +1 -0
  267. package/dist/nexus/git-state.d.ts +15 -0
  268. package/dist/nexus/git-state.d.ts.map +1 -1
  269. package/dist/nexus/git-state.js +77 -3
  270. package/dist/nexus/git-state.js.map +1 -1
  271. package/dist/nexus/identity.d.ts.map +1 -1
  272. package/dist/nexus/identity.js +4 -0
  273. package/dist/nexus/identity.js.map +1 -1
  274. package/dist/nexus/index.d.ts +4 -1
  275. package/dist/nexus/index.d.ts.map +1 -1
  276. package/dist/nexus/index.js +7 -1
  277. package/dist/nexus/index.js.map +1 -1
  278. package/dist/nexus/migrate-json-to-sqlite.d.ts +3 -2
  279. package/dist/nexus/migrate-json-to-sqlite.d.ts.map +1 -1
  280. package/dist/nexus/migrate-json-to-sqlite.js +9 -17
  281. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
  282. package/dist/nexus/ops.d.ts +1 -0
  283. package/dist/nexus/ops.d.ts.map +1 -1
  284. package/dist/nexus/project-activity.d.ts +104 -0
  285. package/dist/nexus/project-activity.d.ts.map +1 -0
  286. package/dist/nexus/project-activity.js +150 -0
  287. package/dist/nexus/project-activity.js.map +1 -0
  288. package/dist/nexus/projects-clean.d.ts.map +1 -1
  289. package/dist/nexus/projects-clean.js +22 -11
  290. package/dist/nexus/projects-clean.js.map +1 -1
  291. package/dist/nexus/projects-scan.d.ts.map +1 -1
  292. package/dist/nexus/projects-scan.js +8 -13
  293. package/dist/nexus/projects-scan.js.map +1 -1
  294. package/dist/nexus/query.d.ts +2 -2
  295. package/dist/nexus/query.d.ts.map +1 -1
  296. package/dist/nexus/query.js +8 -31
  297. package/dist/nexus/query.js.map +1 -1
  298. package/dist/nexus/registry-errors.d.ts +61 -0
  299. package/dist/nexus/registry-errors.d.ts.map +1 -0
  300. package/dist/nexus/registry-errors.js +85 -0
  301. package/dist/nexus/registry-errors.js.map +1 -0
  302. package/dist/nexus/registry-roots.d.ts +5 -2
  303. package/dist/nexus/registry-roots.d.ts.map +1 -1
  304. package/dist/nexus/registry-roots.js +8 -10
  305. package/dist/nexus/registry-roots.js.map +1 -1
  306. package/dist/nexus/registry.d.ts +48 -5
  307. package/dist/nexus/registry.d.ts.map +1 -1
  308. package/dist/nexus/registry.js +151 -85
  309. package/dist/nexus/registry.js.map +1 -1
  310. package/dist/orchestrate/pivot.d.ts +4 -0
  311. package/dist/orchestrate/pivot.d.ts.map +1 -1
  312. package/dist/orchestrate/pivot.js +75 -12
  313. package/dist/orchestrate/pivot.js.map +1 -1
  314. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  315. package/dist/orchestrate/query-ops.js +29 -27
  316. package/dist/orchestrate/query-ops.js.map +1 -1
  317. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  318. package/dist/orchestrate/spawn-ops.js +29 -3
  319. package/dist/orchestrate/spawn-ops.js.map +1 -1
  320. package/dist/orchestrate/worktree-complete.d.ts.map +1 -1
  321. package/dist/orchestrate/worktree-complete.js +40 -2
  322. package/dist/orchestrate/worktree-complete.js.map +1 -1
  323. package/dist/orchestration/bootstrap.d.ts.map +1 -1
  324. package/dist/orchestration/bootstrap.js +20 -14
  325. package/dist/orchestration/bootstrap.js.map +1 -1
  326. package/dist/orchestration/index.d.ts +15 -1
  327. package/dist/orchestration/index.d.ts.map +1 -1
  328. package/dist/orchestration/index.js +25 -6
  329. package/dist/orchestration/index.js.map +1 -1
  330. package/dist/orchestration/lead-rollup.d.ts +7 -1
  331. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  332. package/dist/orchestration/lead-rollup.js +6 -3
  333. package/dist/orchestration/lead-rollup.js.map +1 -1
  334. package/dist/orchestration/spawn-prompt.d.ts +26 -0
  335. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  336. package/dist/orchestration/spawn-prompt.js +63 -92
  337. package/dist/orchestration/spawn-prompt.js.map +1 -1
  338. package/dist/orchestration/waves.d.ts +21 -10
  339. package/dist/orchestration/waves.d.ts.map +1 -1
  340. package/dist/orchestration/waves.js +38 -35
  341. package/dist/orchestration/waves.js.map +1 -1
  342. package/dist/paths.d.ts +9 -2
  343. package/dist/paths.d.ts.map +1 -1
  344. package/dist/paths.js +30 -13
  345. package/dist/paths.js.map +1 -1
  346. package/dist/phases/index.d.ts +1 -1
  347. package/dist/phases/index.d.ts.map +1 -1
  348. package/dist/phases/index.js +3 -4
  349. package/dist/phases/index.js.map +1 -1
  350. package/dist/project-info.d.ts +40 -3
  351. package/dist/project-info.d.ts.map +1 -1
  352. package/dist/project-info.js +74 -6
  353. package/dist/project-info.js.map +1 -1
  354. package/dist/project-lifecycle.d.ts +28 -7
  355. package/dist/project-lifecycle.d.ts.map +1 -1
  356. package/dist/project-lifecycle.js +114 -47
  357. package/dist/project-lifecycle.js.map +1 -1
  358. package/dist/project-scope.d.ts +70 -3
  359. package/dist/project-scope.d.ts.map +1 -1
  360. package/dist/project-scope.js +154 -15
  361. package/dist/project-scope.js.map +1 -1
  362. package/dist/release/ci-evidence.d.ts +190 -0
  363. package/dist/release/ci-evidence.d.ts.map +1 -1
  364. package/dist/release/ci-evidence.js +436 -4
  365. package/dist/release/ci-evidence.js.map +1 -1
  366. package/dist/release/open.d.ts +12 -2
  367. package/dist/release/open.d.ts.map +1 -1
  368. package/dist/release/open.js +32 -3
  369. package/dist/release/open.js.map +1 -1
  370. package/dist/release/preflight-skip.d.ts +73 -0
  371. package/dist/release/preflight-skip.d.ts.map +1 -0
  372. package/dist/release/preflight-skip.js +254 -0
  373. package/dist/release/preflight-skip.js.map +1 -0
  374. package/dist/render/decide/index.d.ts +51 -0
  375. package/dist/render/decide/index.d.ts.map +1 -0
  376. package/dist/render/decide/index.js +289 -0
  377. package/dist/render/decide/index.js.map +1 -0
  378. package/dist/render/index.d.ts +1 -0
  379. package/dist/render/index.d.ts.map +1 -1
  380. package/dist/render/index.js +1 -0
  381. package/dist/render/index.js.map +1 -1
  382. package/dist/render/nexus/graph/index.d.ts +5 -0
  383. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  384. package/dist/render/nexus/graph/index.js +53 -0
  385. package/dist/render/nexus/graph/index.js.map +1 -1
  386. package/dist/scaffold/ensure-config.d.ts +14 -6
  387. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  388. package/dist/scaffold/ensure-config.js +39 -17
  389. package/dist/scaffold/ensure-config.js.map +1 -1
  390. package/dist/scaffold/project-identity.d.ts +115 -23
  391. package/dist/scaffold/project-identity.d.ts.map +1 -1
  392. package/dist/scaffold/project-identity.js +196 -44
  393. package/dist/scaffold/project-identity.js.map +1 -1
  394. package/dist/sdk/validator-ac-pull.d.ts.map +1 -1
  395. package/dist/sdk/validator-ac-pull.js +2 -1
  396. package/dist/sdk/validator-ac-pull.js.map +1 -1
  397. package/dist/selfimprove/fix-gen.js +18221 -14701
  398. package/dist/selfimprove/fix-gen.js.map +3 -3
  399. package/dist/sentient/cross-project-hygiene.d.ts +17 -6
  400. package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
  401. package/dist/sentient/cross-project-hygiene.js +22 -11
  402. package/dist/sentient/cross-project-hygiene.js.map +1 -1
  403. package/dist/sentient/propose-tick.d.ts.map +1 -1
  404. package/dist/sentient/propose-tick.js +2 -3
  405. package/dist/sentient/propose-tick.js.map +1 -1
  406. package/dist/sentient/stage-drift-tick.d.ts.map +1 -1
  407. package/dist/sentient/stage-drift-tick.js +2 -3
  408. package/dist/sentient/stage-drift-tick.js.map +1 -1
  409. package/dist/session/engine-ops.d.ts +13 -4
  410. package/dist/session/engine-ops.d.ts.map +1 -1
  411. package/dist/session/engine-ops.js +38 -45
  412. package/dist/session/engine-ops.js.map +1 -1
  413. package/dist/sessions/briefing.d.ts +7 -3
  414. package/dist/sessions/briefing.d.ts.map +1 -1
  415. package/dist/sessions/briefing.js +10 -10
  416. package/dist/sessions/briefing.js.map +1 -1
  417. package/dist/sessions/drift-watchdog.d.ts.map +1 -1
  418. package/dist/sessions/drift-watchdog.js +11 -19
  419. package/dist/sessions/drift-watchdog.js.map +1 -1
  420. package/dist/sessions/focus-state-store.d.ts +103 -26
  421. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  422. package/dist/sessions/focus-state-store.js +166 -37
  423. package/dist/sessions/focus-state-store.js.map +1 -1
  424. package/dist/sessions/handoff.d.ts.map +1 -1
  425. package/dist/sessions/handoff.js +9 -18
  426. package/dist/sessions/handoff.js.map +1 -1
  427. package/dist/sessions/index.d.ts +4 -2
  428. package/dist/sessions/index.d.ts.map +1 -1
  429. package/dist/sessions/index.js +35 -6
  430. package/dist/sessions/index.js.map +1 -1
  431. package/dist/sessions/session-drift.d.ts.map +1 -1
  432. package/dist/sessions/session-drift.js +4 -2
  433. package/dist/sessions/session-drift.js.map +1 -1
  434. package/dist/sessions/session-view.d.ts +8 -1
  435. package/dist/sessions/session-view.d.ts.map +1 -1
  436. package/dist/sessions/session-view.js +9 -2
  437. package/dist/sessions/session-view.js.map +1 -1
  438. package/dist/setup/config-json-merge.d.ts.map +1 -1
  439. package/dist/setup/config-json-merge.js +1 -0
  440. package/dist/setup/config-json-merge.js.map +1 -1
  441. package/dist/setup/index.d.ts +4 -2
  442. package/dist/setup/index.d.ts.map +1 -1
  443. package/dist/setup/index.js +6 -2
  444. package/dist/setup/index.js.map +1 -1
  445. package/dist/setup/sections/nexus-account.d.ts +32 -0
  446. package/dist/setup/sections/nexus-account.d.ts.map +1 -0
  447. package/dist/setup/sections/nexus-account.js +64 -0
  448. package/dist/setup/sections/nexus-account.js.map +1 -0
  449. package/dist/setup/wizard.d.ts +1 -1
  450. package/dist/setup/wizard.d.ts.map +1 -1
  451. package/dist/setup/wizard.js.map +1 -1
  452. package/dist/skills/manifests/research.js +2 -0
  453. package/dist/skills/manifests/research.js.map +1 -1
  454. package/dist/skills/orchestrator/startup.d.ts.map +1 -1
  455. package/dist/skills/orchestrator/startup.js +18 -31
  456. package/dist/skills/orchestrator/startup.js.map +1 -1
  457. package/dist/skills/orchestrator/validator.d.ts.map +1 -1
  458. package/dist/skills/orchestrator/validator.js +9 -2
  459. package/dist/skills/orchestrator/validator.js.map +1 -1
  460. package/dist/skills/validation.d.ts +4 -1
  461. package/dist/skills/validation.d.ts.map +1 -1
  462. package/dist/skills/validation.js +11 -3
  463. package/dist/skills/validation.js.map +1 -1
  464. package/dist/snapshot/index.d.ts.map +1 -1
  465. package/dist/snapshot/index.js +60 -53
  466. package/dist/snapshot/index.js.map +1 -1
  467. package/dist/spawn/agent-identity.d.ts +33 -1
  468. package/dist/spawn/agent-identity.d.ts.map +1 -1
  469. package/dist/spawn/agent-identity.js +53 -1
  470. package/dist/spawn/agent-identity.js.map +1 -1
  471. package/dist/spawn/branch-lock.d.ts +111 -7
  472. package/dist/spawn/branch-lock.d.ts.map +1 -1
  473. package/dist/spawn/branch-lock.js +296 -8
  474. package/dist/spawn/branch-lock.js.map +1 -1
  475. package/dist/spawn/index.d.ts +1 -1
  476. package/dist/spawn/index.d.ts.map +1 -1
  477. package/dist/spawn/index.js +1 -1
  478. package/dist/spawn/index.js.map +1 -1
  479. package/dist/stats/index.d.ts.map +1 -1
  480. package/dist/stats/index.js +3 -4
  481. package/dist/stats/index.js.map +1 -1
  482. package/dist/status/index.d.ts +12 -3
  483. package/dist/status/index.d.ts.map +1 -1
  484. package/dist/status/index.js +47 -5
  485. package/dist/status/index.js.map +1 -1
  486. package/dist/store/ac-binding-prune.d.ts +144 -0
  487. package/dist/store/ac-binding-prune.d.ts.map +1 -0
  488. package/dist/store/ac-binding-prune.js +293 -0
  489. package/dist/store/ac-binding-prune.js.map +1 -0
  490. package/dist/store/agent-registry-store.d.ts.map +1 -1
  491. package/dist/store/agent-registry-store.js +3 -2
  492. package/dist/store/agent-registry-store.js.map +1 -1
  493. package/dist/store/attachment-repair.d.ts.map +1 -1
  494. package/dist/store/attachment-repair.js +42 -3
  495. package/dist/store/attachment-repair.js.map +1 -1
  496. package/dist/store/attachment-store.d.ts.map +1 -1
  497. package/dist/store/attachment-store.js +30 -46
  498. package/dist/store/attachment-store.js.map +1 -1
  499. package/dist/store/backup-recover-brain.d.ts +4 -0
  500. package/dist/store/backup-recover-brain.d.ts.map +1 -1
  501. package/dist/store/backup-recover-brain.js +2 -0
  502. package/dist/store/backup-recover-brain.js.map +1 -1
  503. package/dist/store/backup-recover.d.ts +9 -0
  504. package/dist/store/backup-recover.d.ts.map +1 -1
  505. package/dist/store/backup-recover.js +28 -1
  506. package/dist/store/backup-recover.js.map +1 -1
  507. package/dist/store/backup-sidecar.d.ts +115 -2
  508. package/dist/store/backup-sidecar.d.ts.map +1 -1
  509. package/dist/store/backup-sidecar.js +263 -3
  510. package/dist/store/backup-sidecar.js.map +1 -1
  511. package/dist/store/blob-keep.d.ts +135 -0
  512. package/dist/store/blob-keep.d.ts.map +1 -0
  513. package/dist/store/blob-keep.js +283 -0
  514. package/dist/store/blob-keep.js.map +1 -0
  515. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  516. package/dist/store/conduit-sqlite.js +3 -2
  517. package/dist/store/conduit-sqlite.js.map +1 -1
  518. package/dist/store/converters.d.ts.map +1 -1
  519. package/dist/store/converters.js +11 -0
  520. package/dist/store/converters.js.map +1 -1
  521. package/dist/store/credential-transfer.d.ts +37 -5
  522. package/dist/store/credential-transfer.d.ts.map +1 -1
  523. package/dist/store/credential-transfer.js +76 -18
  524. package/dist/store/credential-transfer.js.map +1 -1
  525. package/dist/store/data-accessor.d.ts +1 -1
  526. package/dist/store/data-accessor.d.ts.map +1 -1
  527. package/dist/store/data-accessor.js.map +1 -1
  528. package/dist/store/db-helpers.d.ts +35 -11
  529. package/dist/store/db-helpers.d.ts.map +1 -1
  530. package/dist/store/db-helpers.js +107 -38
  531. package/dist/store/db-helpers.js.map +1 -1
  532. package/dist/store/display-id-alias.d.ts +529 -0
  533. package/dist/store/display-id-alias.d.ts.map +1 -0
  534. package/dist/store/display-id-alias.js +1063 -0
  535. package/dist/store/display-id-alias.js.map +1 -0
  536. package/dist/store/dual-scope-db.d.ts.map +1 -1
  537. package/dist/store/dual-scope-db.js +21 -0
  538. package/dist/store/dual-scope-db.js.map +1 -1
  539. package/dist/store/exodus/on-open.d.ts.map +1 -1
  540. package/dist/store/exodus/on-open.js +35 -0
  541. package/dist/store/exodus/on-open.js.map +1 -1
  542. package/dist/store/exodus/reconcile.d.ts.map +1 -1
  543. package/dist/store/exodus/reconcile.js +7 -2
  544. package/dist/store/exodus/reconcile.js.map +1 -1
  545. package/dist/store/exodus/recovery.d.ts.map +1 -1
  546. package/dist/store/exodus/recovery.js +20 -1
  547. package/dist/store/exodus/recovery.js.map +1 -1
  548. package/dist/store/exodus/runtime-targets.d.ts +3 -3
  549. package/dist/store/exodus/runtime-targets.js +3 -3
  550. package/dist/store/import-remap.d.ts +12 -1
  551. package/dist/store/import-remap.d.ts.map +1 -1
  552. package/dist/store/import-remap.js +14 -0
  553. package/dist/store/import-remap.js.map +1 -1
  554. package/dist/store/legacy-tasks-lineage.d.ts +3 -1
  555. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  556. package/dist/store/legacy-tasks-lineage.js +22 -3
  557. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  558. package/dist/store/memory-accessor.js +1 -1
  559. package/dist/store/memory-accessor.js.map +1 -1
  560. package/dist/store/migration-manager.d.ts +61 -0
  561. package/dist/store/migration-manager.d.ts.map +1 -1
  562. package/dist/store/migration-manager.js +102 -4
  563. package/dist/store/migration-manager.js.map +1 -1
  564. package/dist/store/nexus-validation-schemas.d.ts +64 -0
  565. package/dist/store/nexus-validation-schemas.d.ts.map +1 -1
  566. package/dist/store/portable-bundle-import.d.ts +8 -0
  567. package/dist/store/portable-bundle-import.d.ts.map +1 -1
  568. package/dist/store/portable-bundle-import.js +10 -0
  569. package/dist/store/portable-bundle-import.js.map +1 -1
  570. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  571. package/dist/store/portable-bundle-scan.js +1 -0
  572. package/dist/store/portable-bundle-scan.js.map +1 -1
  573. package/dist/store/portable-bundle.d.ts.map +1 -1
  574. package/dist/store/portable-bundle.js +15 -14
  575. package/dist/store/portable-bundle.js.map +1 -1
  576. package/dist/store/pre-repair-snapshot.d.ts +4 -1
  577. package/dist/store/pre-repair-snapshot.d.ts.map +1 -1
  578. package/dist/store/pre-repair-snapshot.js +5 -1
  579. package/dist/store/pre-repair-snapshot.js.map +1 -1
  580. package/dist/store/regenerators.d.ts +4 -2
  581. package/dist/store/regenerators.d.ts.map +1 -1
  582. package/dist/store/regenerators.js +7 -3
  583. package/dist/store/regenerators.js.map +1 -1
  584. package/dist/store/repair-malformed-dbs.d.ts +4 -0
  585. package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
  586. package/dist/store/repair-malformed-dbs.js +3 -0
  587. package/dist/store/repair-malformed-dbs.js.map +1 -1
  588. package/dist/store/row-identity-flag.d.ts +26 -0
  589. package/dist/store/row-identity-flag.d.ts.map +1 -0
  590. package/dist/store/row-identity-flag.js +31 -0
  591. package/dist/store/row-identity-flag.js.map +1 -0
  592. package/dist/store/row-identity-registry.d.ts +61 -0
  593. package/dist/store/row-identity-registry.d.ts.map +1 -0
  594. package/dist/store/row-identity-registry.js +198 -0
  595. package/dist/store/row-identity-registry.js.map +1 -0
  596. package/dist/store/row-identity.d.ts +390 -0
  597. package/dist/store/row-identity.d.ts.map +1 -0
  598. package/dist/store/row-identity.js +1240 -0
  599. package/dist/store/row-identity.js.map +1 -0
  600. package/dist/store/safety-data-accessor.d.ts +10 -3
  601. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  602. package/dist/store/safety-data-accessor.js +15 -4
  603. package/dist/store/safety-data-accessor.js.map +1 -1
  604. package/dist/store/schema/attachments.d.ts +1 -1
  605. package/dist/store/schema/audit.d.ts +4 -4
  606. package/dist/store/schema/background-jobs.d.ts +1 -1
  607. package/dist/store/schema/cleo-global/nexus.d.ts +49 -1
  608. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  609. package/dist/store/schema/cleo-global/nexus.js +17 -0
  610. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  611. package/dist/store/schema/cleo-global/skills.d.ts +2 -2
  612. package/dist/store/schema/cleo-project/audit.d.ts +4 -4
  613. package/dist/store/schema/cleo-project/docs.d.ts +17 -1
  614. package/dist/store/schema/cleo-project/docs.d.ts.map +1 -1
  615. package/dist/store/schema/cleo-project/docs.js +10 -0
  616. package/dist/store/schema/cleo-project/docs.js.map +1 -1
  617. package/dist/store/schema/cleo-project/lifecycle.d.ts +4 -4
  618. package/dist/store/schema/cleo-project/nexus-graph.d.ts +3 -3
  619. package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
  620. package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
  621. package/dist/store/schema/cleo-project/runtime.d.ts +3 -3
  622. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +87 -1
  623. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts.map +1 -1
  624. package/dist/store/schema/cleo-project/tasks-core-batch2.js +35 -0
  625. package/dist/store/schema/cleo-project/tasks-core-batch2.js.map +1 -1
  626. package/dist/store/schema/cleo-project/tasks-core.d.ts +263 -7
  627. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  628. package/dist/store/schema/cleo-project/tasks-core.js +77 -2
  629. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  630. package/dist/store/schema/cleo-shared/brain.d.ts +7 -7
  631. package/dist/store/schema/lifecycle.d.ts +4 -4
  632. package/dist/store/schema/manifest.d.ts +1 -1
  633. package/dist/store/schema/memory-schema.d.ts +6 -6
  634. package/dist/store/schema/nexus-schema.d.ts +51 -3
  635. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  636. package/dist/store/schema/nexus-schema.js +28 -7
  637. package/dist/store/schema/nexus-schema.js.map +1 -1
  638. package/dist/store/schema/provenance/releases.d.ts +1 -1
  639. package/dist/store/schema/skills-schema.d.ts +2 -2
  640. package/dist/store/schema/tasks.d.ts +6 -6
  641. package/dist/store/session-store.d.ts +65 -0
  642. package/dist/store/session-store.d.ts.map +1 -1
  643. package/dist/store/session-store.js +108 -7
  644. package/dist/store/session-store.js.map +1 -1
  645. package/dist/store/split-brain-import.d.ts +2 -14
  646. package/dist/store/split-brain-import.d.ts.map +1 -1
  647. package/dist/store/split-brain-import.js +4 -19
  648. package/dist/store/split-brain-import.js.map +1 -1
  649. package/dist/store/sqlite-data-accessor.d.ts +279 -2
  650. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  651. package/dist/store/sqlite-data-accessor.js +789 -91
  652. package/dist/store/sqlite-data-accessor.js.map +1 -1
  653. package/dist/store/sqlite.d.ts +15 -3
  654. package/dist/store/sqlite.d.ts.map +1 -1
  655. package/dist/store/sqlite.js +52 -20
  656. package/dist/store/sqlite.js.map +1 -1
  657. package/dist/store/store-write-guard.d.ts +9 -3
  658. package/dist/store/store-write-guard.d.ts.map +1 -1
  659. package/dist/store/store-write-guard.js +25 -4
  660. package/dist/store/store-write-guard.js.map +1 -1
  661. package/dist/store/sync/clock-store.d.ts +67 -0
  662. package/dist/store/sync/clock-store.d.ts.map +1 -0
  663. package/dist/store/sync/clock-store.js +117 -0
  664. package/dist/store/sync/clock-store.js.map +1 -0
  665. package/dist/store/sync/flags.d.ts +51 -0
  666. package/dist/store/sync/flags.d.ts.map +1 -0
  667. package/dist/store/sync/flags.js +81 -0
  668. package/dist/store/sync/flags.js.map +1 -0
  669. package/dist/store/sync/hlc.d.ts +115 -0
  670. package/dist/store/sync/hlc.d.ts.map +1 -0
  671. package/dist/store/sync/hlc.js +172 -0
  672. package/dist/store/sync/hlc.js.map +1 -0
  673. package/dist/store/sync/index.d.ts +20 -0
  674. package/dist/store/sync/index.d.ts.map +1 -0
  675. package/dist/store/sync/index.js +20 -0
  676. package/dist/store/sync/index.js.map +1 -0
  677. package/dist/store/sync/replica-registry.d.ts +85 -0
  678. package/dist/store/sync/replica-registry.d.ts.map +1 -0
  679. package/dist/store/sync/replica-registry.js +147 -0
  680. package/dist/store/sync/replica-registry.js.map +1 -0
  681. package/dist/store/sync/replica.d.ts +181 -0
  682. package/dist/store/sync/replica.d.ts.map +1 -0
  683. package/dist/store/sync/replica.js +305 -0
  684. package/dist/store/sync/replica.js.map +1 -0
  685. package/dist/store/sync/schema.d.ts +68 -0
  686. package/dist/store/sync/schema.d.ts.map +1 -0
  687. package/dist/store/sync/schema.js +130 -0
  688. package/dist/store/sync/schema.js.map +1 -0
  689. package/dist/store/sync/skew-hold.d.ts +71 -0
  690. package/dist/store/sync/skew-hold.d.ts.map +1 -0
  691. package/dist/store/sync/skew-hold.js +89 -0
  692. package/dist/store/sync/skew-hold.js.map +1 -0
  693. package/dist/store/table-classification.d.ts +11 -9
  694. package/dist/store/table-classification.d.ts.map +1 -1
  695. package/dist/store/table-classification.js +127 -33
  696. package/dist/store/table-classification.js.map +1 -1
  697. package/dist/store/task-claim.d.ts +144 -0
  698. package/dist/store/task-claim.d.ts.map +1 -0
  699. package/dist/store/task-claim.js +195 -0
  700. package/dist/store/task-claim.js.map +1 -0
  701. package/dist/store/task-version.d.ts +43 -5
  702. package/dist/store/task-version.d.ts.map +1 -1
  703. package/dist/store/task-version.js +113 -17
  704. package/dist/store/task-version.js.map +1 -1
  705. package/dist/store/tasks-schema.d.ts +2 -0
  706. package/dist/store/tasks-schema.d.ts.map +1 -1
  707. package/dist/store/tasks-schema.js +1 -0
  708. package/dist/store/tasks-schema.js.map +1 -1
  709. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  710. package/dist/store/tasks-sqlite.js +10 -2
  711. package/dist/store/tasks-sqlite.js.map +1 -1
  712. package/dist/store/twin-collapse.d.ts +450 -22
  713. package/dist/store/twin-collapse.d.ts.map +1 -1
  714. package/dist/store/twin-collapse.js +1552 -49
  715. package/dist/store/twin-collapse.js.map +1 -1
  716. package/dist/store/umbrella-data-accessor.d.ts +10 -3
  717. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  718. package/dist/store/umbrella-data-accessor.js +14 -4
  719. package/dist/store/umbrella-data-accessor.js.map +1 -1
  720. package/dist/store/validation-schemas.d.ts +402 -50
  721. package/dist/store/validation-schemas.d.ts.map +1 -1
  722. package/dist/store/with-retry.d.ts +36 -0
  723. package/dist/store/with-retry.d.ts.map +1 -1
  724. package/dist/store/with-retry.js +51 -0
  725. package/dist/store/with-retry.js.map +1 -1
  726. package/dist/store/worktree-build-guard.d.ts +13 -4
  727. package/dist/store/worktree-build-guard.d.ts.map +1 -1
  728. package/dist/store/worktree-build-guard.js +21 -10
  729. package/dist/store/worktree-build-guard.js.map +1 -1
  730. package/dist/store/worktree-isolation-guard.d.ts +121 -10
  731. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  732. package/dist/store/worktree-isolation-guard.js +155 -34
  733. package/dist/store/worktree-isolation-guard.js.map +1 -1
  734. package/dist/system/backup.d.ts +7 -0
  735. package/dist/system/backup.d.ts.map +1 -1
  736. package/dist/system/backup.js +5 -0
  737. package/dist/system/backup.js.map +1 -1
  738. package/dist/system/health.d.ts.map +1 -1
  739. package/dist/system/health.js +6 -1
  740. package/dist/system/health.js.map +1 -1
  741. package/dist/system/inject-generate.d.ts.map +1 -1
  742. package/dist/system/inject-generate.js +23 -10
  743. package/dist/system/inject-generate.js.map +1 -1
  744. package/dist/system/project-health.d.ts +17 -2
  745. package/dist/system/project-health.d.ts.map +1 -1
  746. package/dist/system/project-health.js +19 -6
  747. package/dist/system/project-health.js.map +1 -1
  748. package/dist/task-tools/index.d.ts +1 -1
  749. package/dist/task-tools/index.d.ts.map +1 -1
  750. package/dist/task-tools/index.js +1 -1
  751. package/dist/task-tools/index.js.map +1 -1
  752. package/dist/task-tools/score-task-priority.d.ts +38 -0
  753. package/dist/task-tools/score-task-priority.d.ts.map +1 -1
  754. package/dist/task-tools/score-task-priority.js +51 -0
  755. package/dist/task-tools/score-task-priority.js.map +1 -1
  756. package/dist/task-work/claims.d.ts +215 -0
  757. package/dist/task-work/claims.d.ts.map +1 -0
  758. package/dist/task-work/claims.js +272 -0
  759. package/dist/task-work/claims.js.map +1 -0
  760. package/dist/task-work/index.d.ts +47 -3
  761. package/dist/task-work/index.d.ts.map +1 -1
  762. package/dist/task-work/index.js +74 -41
  763. package/dist/task-work/index.js.map +1 -1
  764. package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
  765. package/dist/tasks/ac-coverage-gate.js +3 -0
  766. package/dist/tasks/ac-coverage-gate.js.map +1 -1
  767. package/dist/tasks/ac-table.d.ts +35 -7
  768. package/dist/tasks/ac-table.d.ts.map +1 -1
  769. package/dist/tasks/ac-table.js +119 -14
  770. package/dist/tasks/ac-table.js.map +1 -1
  771. package/dist/tasks/add.d.ts.map +1 -1
  772. package/dist/tasks/add.js +51 -4
  773. package/dist/tasks/add.js.map +1 -1
  774. package/dist/tasks/analyze.d.ts.map +1 -1
  775. package/dist/tasks/analyze.js +3 -4
  776. package/dist/tasks/analyze.js.map +1 -1
  777. package/dist/tasks/backfill-child-projections.js +47 -6
  778. package/dist/tasks/backfill-child-projections.js.map +1 -1
  779. package/dist/tasks/change-set.d.ts +5 -0
  780. package/dist/tasks/change-set.d.ts.map +1 -1
  781. package/dist/tasks/change-set.js +59 -3
  782. package/dist/tasks/change-set.js.map +1 -1
  783. package/dist/tasks/complete.d.ts +16 -0
  784. package/dist/tasks/complete.d.ts.map +1 -1
  785. package/dist/tasks/complete.js +33 -8
  786. package/dist/tasks/complete.js.map +1 -1
  787. package/dist/tasks/completion-evaluation.d.ts.map +1 -1
  788. package/dist/tasks/completion-evaluation.js +3 -0
  789. package/dist/tasks/completion-evaluation.js.map +1 -1
  790. package/dist/tasks/component-pr.d.ts +162 -1
  791. package/dist/tasks/component-pr.d.ts.map +1 -1
  792. package/dist/tasks/component-pr.js +560 -59
  793. package/dist/tasks/component-pr.js.map +1 -1
  794. package/dist/tasks/done-record.d.ts +14 -1
  795. package/dist/tasks/done-record.d.ts.map +1 -1
  796. package/dist/tasks/done-record.js +37 -0
  797. package/dist/tasks/done-record.js.map +1 -1
  798. package/dist/tasks/duplicate-detector.d.ts +20 -1
  799. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  800. package/dist/tasks/duplicate-detector.js +10 -2
  801. package/dist/tasks/duplicate-detector.js.map +1 -1
  802. package/dist/tasks/engine-wrap-ops.d.ts +19 -10
  803. package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
  804. package/dist/tasks/engine-wrap-ops.js +38 -10
  805. package/dist/tasks/engine-wrap-ops.js.map +1 -1
  806. package/dist/tasks/evidence.d.ts.map +1 -1
  807. package/dist/tasks/evidence.js +14 -3
  808. package/dist/tasks/evidence.js.map +1 -1
  809. package/dist/tasks/graph-ops.d.ts +9 -2
  810. package/dist/tasks/graph-ops.d.ts.map +1 -1
  811. package/dist/tasks/graph-ops.js +24 -32
  812. package/dist/tasks/graph-ops.js.map +1 -1
  813. package/dist/tasks/plan.d.ts.map +1 -1
  814. package/dist/tasks/plan.js +16 -60
  815. package/dist/tasks/plan.js.map +1 -1
  816. package/dist/tasks/task-context.d.ts.map +1 -1
  817. package/dist/tasks/task-context.js +13 -0
  818. package/dist/tasks/task-context.js.map +1 -1
  819. package/dist/tasks/task-import.d.ts.map +1 -1
  820. package/dist/tasks/task-import.js +21 -12
  821. package/dist/tasks/task-import.js.map +1 -1
  822. package/dist/tasks/task-next.d.ts +25 -2
  823. package/dist/tasks/task-next.d.ts.map +1 -1
  824. package/dist/tasks/task-next.js +32 -13
  825. package/dist/tasks/task-next.js.map +1 -1
  826. package/dist/tasks/update.d.ts.map +1 -1
  827. package/dist/tasks/update.js +7 -5
  828. package/dist/tasks/update.js.map +1 -1
  829. package/dist/upgrade.d.ts +1 -1
  830. package/dist/upgrade.d.ts.map +1 -1
  831. package/dist/upgrade.js +48 -9
  832. package/dist/upgrade.js.map +1 -1
  833. package/dist/validation/compliance.d.ts +5 -1
  834. package/dist/validation/compliance.d.ts.map +1 -1
  835. package/dist/validation/compliance.js +24 -3
  836. package/dist/validation/compliance.js.map +1 -1
  837. package/dist/validation/doctor/checks.d.ts +20 -6
  838. package/dist/validation/doctor/checks.d.ts.map +1 -1
  839. package/dist/validation/doctor/checks.js +51 -8
  840. package/dist/validation/doctor/checks.js.map +1 -1
  841. package/dist/validation/index.d.ts +1 -1
  842. package/dist/validation/index.d.ts.map +1 -1
  843. package/dist/validation/index.js +1 -1
  844. package/dist/validation/index.js.map +1 -1
  845. package/dist/validation/protocol-common.d.ts +47 -2
  846. package/dist/validation/protocol-common.d.ts.map +1 -1
  847. package/dist/validation/protocol-common.js +86 -21
  848. package/dist/validation/protocol-common.js.map +1 -1
  849. package/dist/validation/validate-ops.d.ts.map +1 -1
  850. package/dist/validation/validate-ops.js +2 -3
  851. package/dist/validation/validate-ops.js.map +1 -1
  852. package/migrations/README.md +12 -0
  853. package/migrations/drizzle-cleo-global/20260929010000_t12512-registry-probed-opened/migration.sql +35 -0
  854. package/migrations/drizzle-cleo-global/20260929020000_t12721-git-state-head-committed-at/migration.sql +25 -0
  855. package/migrations/drizzle-cleo-project/20260928120000_t12341-row-uids/migration.sql +169 -0
  856. package/migrations/drizzle-cleo-project/20260929000000_t12535-docs-attachments-union-shape/migration.sql +21 -0
  857. package/migrations/drizzle-cleo-project/20260929120000_t12502-task-claim-leases/migration.sql +77 -0
  858. package/migrations/drizzle-cleo-project/20260929130000_t12736-claim-lease-iso-repair/migration.sql +37 -0
  859. package/migrations/sync-journal/20260929140000_t12342-sync-clock/migration.sql +42 -0
  860. package/package.json +23 -13
  861. package/schemas/project-info.schema.json +10 -4
  862. package/templates/CLEO-INJECTION.md +1 -1
  863. package/templates/CLEO-REFERENCE.md +7 -3
  864. package/templates/cleo-gitignore +11 -0
  865. package/templates/workflows/release-prepare.yml.tmpl +156 -10
@@ -1,21 +1,44 @@
1
1
  /**
2
- * Detected provider capabilities and the last usage read, cached per base URL
3
- * AND API key in `<cleoHome>/decide/provider-state.json` (T12664). The key is
4
- * never stored: the state carries a truncated sha256 of it
5
- * ({@link providerKeyHash}), so a different key on the same URL (another
6
- * account or plan, with other capabilities) never reuses the cached state.
2
+ * Detected provider capabilities and the last usage read, cached PER PROFILE
3
+ * in `<cleoHome>/decide/provider-state.json` (T12664, T12733). The file maps
4
+ * a state key (the profile id `<provider>/<name>`, or `<baseUrl>#<keyHash>`
5
+ * for a connection without a profile) to that identity's state, so two
6
+ * profiles on the same URL (two layahost accounts) or a benchmark alternating
7
+ * profiles never overwrite each other's detection. The key is never stored:
8
+ * each state carries a truncated sha256 of it ({@link providerKeyHash}) as a
9
+ * guard, so a different key on the same profile or URL (another account or
10
+ * plan, with other capabilities) never reuses the cached state. A file in the
11
+ * pre-T12733 single-state shape is still read (guarded the same way) and is
12
+ * replaced by the map on the next write.
7
13
  *
8
14
  * Detection (`detectJevCapabilities`) calls `GET /v1/usage` and
9
15
  * `GET /v1/templates`, both of which count toward the provider's rate limit,
10
- * so `cleo decide status` refreshes this file at most once every
11
- * {@link USAGE_REFRESH_MS}. The client reads it (memoised per process) to
12
- * know which extensions the configured provider supports; with no file, or a
13
- * file for another base URL or key, the provider is treated as the Jev minimum.
16
+ * so {@link refreshProviderState} re-detects at most once every
17
+ * {@link USAGE_REFRESH_MS} per provider identity: a failed detection is
18
+ * written too (keeping the previous capabilities on a transient failure; with
19
+ * nothing cached, a transient failure is not written and is retried after
20
+ * {@link TRANSIENT_DETECTION_RETRY_MS}), and an in-process attempt memo covers
21
+ * an unwritable state file. The client
22
+ * reads the file (memoised per process) to know which extensions the
23
+ * configured provider supports; with no file, or a file for another base URL
24
+ * or key, the provider is treated as the Jev minimum.
25
+ *
26
+ * Who detects (T12715): `cleo decide config` (forced), `cleo decide status`,
27
+ * and — lazily, on first use — `decideBatch`, whose 30 s deadline is not
28
+ * latency-critical. A single 300 ms `decide()` NEVER detects: it neither
29
+ * waits for detection nor starts one in the background, because a pending
30
+ * detection request would keep a one-shot CLI process alive past its work
31
+ * (the CLI's success path relies on the event loop draining, T12492). A single
32
+ * decision therefore uses the Jev minimum until one of the paths above has
33
+ * written the state; the minimum only omits the optional `lang`/`cache` body
34
+ * fields, so the answer itself is unaffected.
14
35
  *
15
36
  * @task T12664
37
+ * @task T12733
16
38
  * @epic T12486
17
39
  */
18
40
  import type { DecisionProviderCapabilities, DecisionProviderUsage } from '@cleocode/contracts';
41
+ import type { DecideFetch } from './transport.js';
19
42
  /** Minimum interval between usage/capability refreshes: 10 minutes. */
20
43
  export declare const USAGE_REFRESH_MS: number;
21
44
  /** The provider identity a cached state belongs to. */
@@ -24,6 +47,8 @@ export interface ProviderStateIdentity {
24
47
  readonly baseUrl: string;
25
48
  /** API key; only its truncated hash is ever compared or stored. */
26
49
  readonly apiKey: string;
50
+ /** Profile id (`<provider>/<name>`, T12733); keys the state when present. */
51
+ readonly profile?: string;
27
52
  }
28
53
  /**
29
54
  * Non-reversible short identifier of an API key: the first
@@ -53,6 +78,14 @@ export interface ProviderState {
53
78
  * @returns Absolute path.
54
79
  */
55
80
  export declare function defaultProviderStatePath(): string;
81
+ /**
82
+ * The key a state is filed under: the profile id, or `<baseUrl>#<keyHash>`
83
+ * for a connection without one.
84
+ *
85
+ * @param identity - Base URL, key and optional profile.
86
+ * @returns The state key.
87
+ */
88
+ export declare function providerStateKey(identity: ProviderStateIdentity): string;
56
89
  /**
57
90
  * Read the cached state for a provider URL and key.
58
91
  *
@@ -63,12 +96,14 @@ export declare function defaultProviderStatePath(): string;
63
96
  */
64
97
  export declare function readProviderState(identity: ProviderStateIdentity, path?: string): ProviderState | null;
65
98
  /**
66
- * Write the cached state (atomic rename). Never throws.
99
+ * Write one identity's cached state (atomic rename), keeping every other
100
+ * identity's state. Never throws.
67
101
  *
68
102
  * @param state - State to store.
69
103
  * @param path - State file. Default {@link defaultProviderStatePath}.
104
+ * @param key - State key ({@link providerStateKey}). Default: `<baseUrl>#<keyHash>`.
70
105
  */
71
- export declare function writeProviderState(state: ProviderState, path?: string): void;
106
+ export declare function writeProviderState(state: ProviderState, path?: string, key?: string): void;
72
107
  /**
73
108
  * Capabilities the client may use for a provider URL and key, memoised per
74
109
  * process for a minute so the hot path does not read the file on every
@@ -81,7 +116,45 @@ export declare function writeProviderState(state: ProviderState, path?: string):
81
116
  */
82
117
  export declare function cachedCapabilities(identity: ProviderStateIdentity, now?: number, path?: string): DecisionProviderCapabilities | null;
83
118
  /**
84
- * Clear the in-process memo. Tests only.
119
+ * Retry interval after a transient detection failure with nothing cached
120
+ * (T12715): the result is not written (it would pin a partial or failed
121
+ * detection for {@link USAGE_REFRESH_MS}), so only this in-process wait
122
+ * spaces out the retries.
123
+ */
124
+ export declare const TRANSIENT_DETECTION_RETRY_MS = 30000;
125
+ /** Options for {@link refreshProviderState}. */
126
+ export interface RefreshProviderStateOptions {
127
+ /** Transport for the detection probes; tests inject a stub. */
128
+ readonly fetch?: DecideFetch;
129
+ /** Wall clock, epoch ms. Default `Date.now`. */
130
+ readonly now?: () => number;
131
+ /** State file. Default {@link defaultProviderStatePath}. */
132
+ readonly path?: string;
133
+ /** Detect even when the cached state is fresh (after a settings change). */
134
+ readonly force?: boolean;
135
+ }
136
+ /**
137
+ * Return the cached provider state, re-detecting it first when it is absent
138
+ * or older than {@link USAGE_REFRESH_MS} (or when `force` is set).
139
+ *
140
+ * At most one detection runs per identity per {@link USAGE_REFRESH_MS}: the
141
+ * result is written even when detection failed, and a per-process attempt
142
+ * memo stops a retry loop when the file cannot be written. A transient
143
+ * failure (network, timeout, 5xx, 429 — of either probe) keeps the previous
144
+ * capabilities and usage instead of downgrading them. With nothing cached, a
145
+ * transient failure is NOT written: its result serves this process (via the
146
+ * in-process memo) and detection is retried after
147
+ * {@link TRANSIENT_DETECTION_RETRY_MS}. Never throws.
148
+ *
149
+ * @param connection - Base URL and API key of the configured provider.
150
+ * @param signal - Aborts the detection probes.
151
+ * @param opts - Transport, clock, state path, force.
152
+ * @returns The fresh or cached state, or `null` when detection was skipped
153
+ * (attempted recently in this process) and nothing is cached.
154
+ */
155
+ export declare function refreshProviderState(connection: ProviderStateIdentity, signal: AbortSignal, opts?: RefreshProviderStateOptions): Promise<ProviderState | null>;
156
+ /**
157
+ * Clear the in-process memo and detection-attempt memo. Tests only.
85
158
  *
86
159
  * @internal
87
160
  */
@@ -1 +1 @@
1
- {"version":3,"file":"provider-state.d.ts","sourceRoot":"","sources":["../../src/decide/provider-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/F,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAQ/C,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC;IACpD,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAqBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,SAA6B,GAChC,aAAa,GAAG,IAAI,CAWtB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,SAA6B,GAAG,IAAI,CAUhG;AASD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,GAAE,MAAmB,EACxB,IAAI,SAA6B,GAChC,4BAA4B,GAAG,IAAI,CAarC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
1
+ {"version":3,"file":"provider-state.d.ts","sourceRoot":"","sources":["../../src/decide/provider-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAKH,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAQ/C,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC;IACpD,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAExE;AAqBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,qBAAqB,EAC/B,IAAI,SAA6B,GAChC,aAAa,GAAG,IAAI,CAQtB;AA4BD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,IAAI,SAA6B,EACjC,GAAG,SAAsC,GACxC,IAAI,CAWN;AAUD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,GAAE,MAAmB,EACxB,IAAI,SAA6B,GAChC,4BAA4B,GAAG,IAAI,CAerC;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAKnD,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,EACjC,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAiD/B;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD"}
@@ -1,24 +1,47 @@
1
1
  /**
2
- * Detected provider capabilities and the last usage read, cached per base URL
3
- * AND API key in `<cleoHome>/decide/provider-state.json` (T12664). The key is
4
- * never stored: the state carries a truncated sha256 of it
5
- * ({@link providerKeyHash}), so a different key on the same URL (another
6
- * account or plan, with other capabilities) never reuses the cached state.
2
+ * Detected provider capabilities and the last usage read, cached PER PROFILE
3
+ * in `<cleoHome>/decide/provider-state.json` (T12664, T12733). The file maps
4
+ * a state key (the profile id `<provider>/<name>`, or `<baseUrl>#<keyHash>`
5
+ * for a connection without a profile) to that identity's state, so two
6
+ * profiles on the same URL (two layahost accounts) or a benchmark alternating
7
+ * profiles never overwrite each other's detection. The key is never stored:
8
+ * each state carries a truncated sha256 of it ({@link providerKeyHash}) as a
9
+ * guard, so a different key on the same profile or URL (another account or
10
+ * plan, with other capabilities) never reuses the cached state. A file in the
11
+ * pre-T12733 single-state shape is still read (guarded the same way) and is
12
+ * replaced by the map on the next write.
7
13
  *
8
14
  * Detection (`detectJevCapabilities`) calls `GET /v1/usage` and
9
15
  * `GET /v1/templates`, both of which count toward the provider's rate limit,
10
- * so `cleo decide status` refreshes this file at most once every
11
- * {@link USAGE_REFRESH_MS}. The client reads it (memoised per process) to
12
- * know which extensions the configured provider supports; with no file, or a
13
- * file for another base URL or key, the provider is treated as the Jev minimum.
16
+ * so {@link refreshProviderState} re-detects at most once every
17
+ * {@link USAGE_REFRESH_MS} per provider identity: a failed detection is
18
+ * written too (keeping the previous capabilities on a transient failure; with
19
+ * nothing cached, a transient failure is not written and is retried after
20
+ * {@link TRANSIENT_DETECTION_RETRY_MS}), and an in-process attempt memo covers
21
+ * an unwritable state file. The client
22
+ * reads the file (memoised per process) to know which extensions the
23
+ * configured provider supports; with no file, or a file for another base URL
24
+ * or key, the provider is treated as the Jev minimum.
25
+ *
26
+ * Who detects (T12715): `cleo decide config` (forced), `cleo decide status`,
27
+ * and — lazily, on first use — `decideBatch`, whose 30 s deadline is not
28
+ * latency-critical. A single 300 ms `decide()` NEVER detects: it neither
29
+ * waits for detection nor starts one in the background, because a pending
30
+ * detection request would keep a one-shot CLI process alive past its work
31
+ * (the CLI's success path relies on the event loop draining, T12492). A single
32
+ * decision therefore uses the Jev minimum until one of the paths above has
33
+ * written the state; the minimum only omits the optional `lang`/`cache` body
34
+ * fields, so the answer itself is unaffected.
14
35
  *
15
36
  * @task T12664
37
+ * @task T12733
16
38
  * @epic T12486
17
39
  */
18
40
  import { createHash } from 'node:crypto';
19
41
  import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
20
42
  import { dirname, join } from 'node:path';
21
43
  import { getCleoHome } from '@cleocode/paths';
44
+ import { detectJevCapabilities, TRANSIENT_DETECTION_ERRORS } from './jev-wire.js';
22
45
  /** Minimum interval between usage/capability refreshes: 10 minutes. */
23
46
  export const USAGE_REFRESH_MS = 10 * 60 * 1000;
24
47
  /** How long the client trusts its in-process copy of the file. */
@@ -44,6 +67,16 @@ export function providerKeyHash(apiKey) {
44
67
  export function defaultProviderStatePath() {
45
68
  return join(getCleoHome(), 'decide', 'provider-state.json');
46
69
  }
70
+ /**
71
+ * The key a state is filed under: the profile id, or `<baseUrl>#<keyHash>`
72
+ * for a connection without one.
73
+ *
74
+ * @param identity - Base URL, key and optional profile.
75
+ * @returns The state key.
76
+ */
77
+ export function providerStateKey(identity) {
78
+ return identity.profile ?? `${identity.baseUrl}#${providerKeyHash(identity.apiKey)}`;
79
+ }
47
80
  /** Structural check of a parsed state; anything else is ignored. */
48
81
  function isProviderState(value) {
49
82
  if (value === null || typeof value !== 'object')
@@ -70,29 +103,49 @@ function isProviderState(value) {
70
103
  * or key (a state written before keys were recorded counts as another key).
71
104
  */
72
105
  export function readProviderState(identity, path = defaultProviderStatePath()) {
106
+ const file = readStateFile(path);
107
+ const candidate = file.states[providerStateKey(identity)] ?? file.legacy;
108
+ return candidate &&
109
+ candidate.baseUrl === identity.baseUrl &&
110
+ candidate.keyHash === providerKeyHash(identity.apiKey)
111
+ ? candidate
112
+ : null;
113
+ }
114
+ /** Read the state file. Never throws; anything unreadable is empty. */
115
+ function readStateFile(path) {
116
+ let parsed;
73
117
  try {
74
- const parsed = JSON.parse(readFileSync(path, 'utf-8'));
75
- return isProviderState(parsed) &&
76
- parsed.baseUrl === identity.baseUrl &&
77
- parsed.keyHash === providerKeyHash(identity.apiKey)
78
- ? parsed
79
- : null;
118
+ parsed = JSON.parse(readFileSync(path, 'utf-8'));
80
119
  }
81
120
  catch {
82
- return null;
121
+ return { states: {} };
122
+ }
123
+ if (isProviderState(parsed))
124
+ return { states: {}, legacy: parsed };
125
+ const raw = parsed !== null && typeof parsed === 'object' ? Reflect.get(parsed, 'states') : undefined;
126
+ const states = {};
127
+ if (raw !== null && typeof raw === 'object') {
128
+ for (const [key, value] of Object.entries(raw)) {
129
+ if (isProviderState(value))
130
+ states[key] = value;
131
+ }
83
132
  }
133
+ return { states };
84
134
  }
85
135
  /**
86
- * Write the cached state (atomic rename). Never throws.
136
+ * Write one identity's cached state (atomic rename), keeping every other
137
+ * identity's state. Never throws.
87
138
  *
88
139
  * @param state - State to store.
89
140
  * @param path - State file. Default {@link defaultProviderStatePath}.
141
+ * @param key - State key ({@link providerStateKey}). Default: `<baseUrl>#<keyHash>`.
90
142
  */
91
- export function writeProviderState(state, path = defaultProviderStatePath()) {
143
+ export function writeProviderState(state, path = defaultProviderStatePath(), key = `${state.baseUrl}#${state.keyHash}`) {
92
144
  try {
93
145
  mkdirSync(dirname(path), { recursive: true });
94
146
  const tmp = `${path}.${process.pid}.tmp`;
95
- writeFileSync(tmp, JSON.stringify(state), 'utf-8');
147
+ const states = { ...readStateFile(path).states, [key]: state };
148
+ writeFileSync(tmp, JSON.stringify({ states }), 'utf-8');
96
149
  renameSync(tmp, path);
97
150
  memo = null;
98
151
  }
@@ -113,22 +166,102 @@ let memo = null;
113
166
  */
114
167
  export function cachedCapabilities(identity, now = Date.now(), path = defaultProviderStatePath()) {
115
168
  const keyHash = providerKeyHash(identity.apiKey);
169
+ const stateKey = providerStateKey(identity);
116
170
  if (memo &&
171
+ memo.stateKey === stateKey &&
117
172
  memo.baseUrl === identity.baseUrl &&
118
173
  memo.keyHash === keyHash &&
119
174
  now - memo.at < MEMO_MS) {
120
175
  return memo.caps;
121
176
  }
122
177
  const caps = readProviderState(identity, path)?.capabilities ?? null;
123
- memo = { baseUrl: identity.baseUrl, keyHash, at: now, caps };
178
+ memo = { stateKey, baseUrl: identity.baseUrl, keyHash, at: now, caps };
124
179
  return caps;
125
180
  }
126
181
  /**
127
- * Clear the in-process memo. Tests only.
182
+ * Retry interval after a transient detection failure with nothing cached
183
+ * (T12715): the result is not written (it would pin a partial or failed
184
+ * detection for {@link USAGE_REFRESH_MS}), so only this in-process wait
185
+ * spaces out the retries.
186
+ */
187
+ export const TRANSIENT_DETECTION_RETRY_MS = 30_000;
188
+ /** Epoch ms before which this process does not re-detect, per identity. */
189
+ const retryAt = new Map();
190
+ /**
191
+ * Return the cached provider state, re-detecting it first when it is absent
192
+ * or older than {@link USAGE_REFRESH_MS} (or when `force` is set).
193
+ *
194
+ * At most one detection runs per identity per {@link USAGE_REFRESH_MS}: the
195
+ * result is written even when detection failed, and a per-process attempt
196
+ * memo stops a retry loop when the file cannot be written. A transient
197
+ * failure (network, timeout, 5xx, 429 — of either probe) keeps the previous
198
+ * capabilities and usage instead of downgrading them. With nothing cached, a
199
+ * transient failure is NOT written: its result serves this process (via the
200
+ * in-process memo) and detection is retried after
201
+ * {@link TRANSIENT_DETECTION_RETRY_MS}. Never throws.
202
+ *
203
+ * @param connection - Base URL and API key of the configured provider.
204
+ * @param signal - Aborts the detection probes.
205
+ * @param opts - Transport, clock, state path, force.
206
+ * @returns The fresh or cached state, or `null` when detection was skipped
207
+ * (attempted recently in this process) and nothing is cached.
208
+ */
209
+ export async function refreshProviderState(connection, signal, opts = {}) {
210
+ const now = opts.now ?? Date.now;
211
+ const cached = readProviderState(connection, opts.path);
212
+ if (opts.force !== true && cached && now() - cached.detectedAt < USAGE_REFRESH_MS) {
213
+ return cached;
214
+ }
215
+ const keyHash = providerKeyHash(connection.apiKey);
216
+ const stateKey = providerStateKey(connection);
217
+ const attemptKey = `${stateKey}\u0000${connection.baseUrl}\u0000${keyHash}`;
218
+ const notBefore = retryAt.get(attemptKey);
219
+ if (opts.force !== true && notBefore !== undefined && now() < notBefore) {
220
+ return cached;
221
+ }
222
+ retryAt.set(attemptKey, now() + USAGE_REFRESH_MS);
223
+ const detected = await detectJevCapabilities(connection, signal, {
224
+ ...(opts.fetch ? { fetch: opts.fetch } : {}),
225
+ });
226
+ const transient = detected.error !== undefined && TRANSIENT_DETECTION_ERRORS.has(detected.error.kind);
227
+ if (transient && !cached) {
228
+ // Nothing to keep, and a failed or partial detection (e.g. /v1/usage
229
+ // answered but /v1/templates timed out) is not "capability absent": do not
230
+ // write it for 10 minutes. Use it in this process only, and retry soon.
231
+ retryAt.set(attemptKey, now() + TRANSIENT_DETECTION_RETRY_MS);
232
+ memo = {
233
+ stateKey,
234
+ baseUrl: connection.baseUrl,
235
+ keyHash,
236
+ at: now(),
237
+ caps: detected.capabilities,
238
+ };
239
+ return {
240
+ baseUrl: connection.baseUrl,
241
+ keyHash,
242
+ detectedAt: now(),
243
+ capabilities: detected.capabilities,
244
+ ...(detected.usage ? { usage: detected.usage } : {}),
245
+ };
246
+ }
247
+ const kept = transient ? cached : undefined;
248
+ const state = {
249
+ baseUrl: connection.baseUrl,
250
+ keyHash,
251
+ detectedAt: now(),
252
+ capabilities: kept?.capabilities ?? detected.capabilities,
253
+ ...(detected.usage ? { usage: detected.usage } : kept?.usage ? { usage: kept.usage } : {}),
254
+ };
255
+ writeProviderState(state, opts.path, stateKey);
256
+ return state;
257
+ }
258
+ /**
259
+ * Clear the in-process memo and detection-attempt memo. Tests only.
128
260
  *
129
261
  * @internal
130
262
  */
131
263
  export function _resetProviderStateMemoForTest() {
132
264
  memo = null;
265
+ retryAt.clear();
133
266
  }
134
267
  //# sourceMappingURL=provider-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-state.js","sourceRoot":"","sources":["../../src/decide/provider-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-state.js","sourceRoot":"","sources":["../../src/decide/provider-state.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,11 @@ export interface DecisionProviderConnection extends DecisionProviderConfig {
28
28
  * sent without a model and the provider's own default (if any) applies.
29
29
  */
30
30
  readonly model?: string;
31
+ /**
32
+ * Profile id (`<provider>/<name>`, T12733) the connection was resolved
33
+ * from, when known. Keys the cached provider state per profile; never sent.
34
+ */
35
+ readonly profile?: string;
31
36
  }
32
37
  /**
33
38
  * A typed-decision backend.
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/decide/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5E;;;;OAIG;IACH,YAAY,CAAC,IAAI,4BAA4B,CAAC;IAC9C;;;;;OAKG;IACH,WAAW,CAAC,CACV,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;IACzC,0DAA0D;IAC1D,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,gGAAgG;IAChG,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAChG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,yBAAyB,GACjC,cAAc,GACd,sBAAsB,GACtB,oBAAoB,GACpB,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,cAAc,GACd,SAAS,GACT,SAAS,GACT,kBAAkB,CAAC;AAEvB,8DAA8D;AAC9D,MAAM,WAAW,4BAA4B;IAC3C,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;gBAED,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,4BAAiC;CAQ1C"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/decide/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5E;;;;OAIG;IACH,YAAY,CAAC,IAAI,4BAA4B,CAAC;IAC9C;;;;;OAKG;IACH,WAAW,CAAC,CACV,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;IACzC,0DAA0D;IAC1D,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,gGAAgG;IAChG,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAChG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,yBAAyB,GACjC,cAAc,GACd,sBAAsB,GACtB,oBAAoB,GACpB,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,cAAc,GACd,SAAS,GACT,SAAS,GACT,kBAAkB,CAAC;AAEvB,8DAA8D;AAC9D,MAAM,WAAW,4BAA4B;IAC3C,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;OAIG;gBAED,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,4BAAiC;CAQ1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/decide/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAuGH;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,8BAA8B;IACrB,IAAI,CAA4B;IACzC,+BAA+B;IACtB,MAAM,CAAU;IACzB,6DAA6D;IACpD,YAAY,CAAU;IAE/B;;;;OAIG;IACH,YACE,IAA+B,EAC/B,OAAe,EACf,OAAqC,EAAE;QAEvC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/decide/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA4GH;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,8BAA8B;IACrB,IAAI,CAA4B;IACzC,+BAA+B;IACtB,MAAM,CAAU;IACzB,6DAA6D;IACpD,YAAY,CAAU;IAE/B;;;;OAIG;IACH,YACE,IAA+B,EAC/B,OAAe,EACf,OAAqC,EAAE;QAEvC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7E,CAAC;CACF"}
@@ -5,13 +5,18 @@
5
5
  * - `layahost` (recommended): a fixed base URL ({@link LAYAHOST_BASE_URL});
6
6
  * the user brings only an API key. Model defaults to
7
7
  * {@link LAYAHOST_DEFAULT_MODEL}.
8
- * - `jev`: any Jev-compatible endpoint; the user supplies the URL, and the
9
- * model comes from the provider's `GET /v1/models` listing.
8
+ * - `jev`: Jev's own API ({@link JEV_DEFAULT_BASE_URL}) by default, or any
9
+ * Jev-compatible endpoint as an override URL; the model comes from the
10
+ * provider's `GET /v1/models` listing.
11
+ *
12
+ * A profile that keeps the preset URL stores the literal `default`
13
+ * (T12733), resolved here at call time.
10
14
  *
11
15
  * The URL and model literals live in `@cleocode/contracts` (const data); this
12
16
  * module only arranges them.
13
17
  *
14
18
  * @task T12713
19
+ * @task T12733
15
20
  * @epic T12486
16
21
  */
17
22
  import { type DecisionProviderKind } from '@cleocode/contracts';
@@ -55,4 +60,12 @@ export declare function parseDecisionProviderKind(value: string | undefined): De
55
60
  * @returns The inferred kind.
56
61
  */
57
62
  export declare function inferDecisionProviderKind(baseUrl: string): DecisionProviderKind;
63
+ /**
64
+ * The preset base URL of a provider kind, which a profile storing `default`
65
+ * resolves to at call time.
66
+ *
67
+ * @param kind - Provider kind.
68
+ * @returns The preset URL, or `undefined` when the kind has none.
69
+ */
70
+ export declare function presetBaseUrl(kind: DecisionProviderKind): string | undefined;
58
71
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/decide/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAG1B,MAAM,qBAAqB,CAAC;AAE7B,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAC9C,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAmBrD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,SAAS,sBAAsB,EAAE,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,oBAAoB,GAAG,SAAS,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAM/E"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/decide/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAI1B,MAAM,qBAAqB,CAAC;AAE7B,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+FAA+F;IAC/F,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAC9C,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAmBrD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,SAAS,sBAAsB,EAAE,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,oBAAoB,GAAG,SAAS,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAM/E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAE5E"}
@@ -5,16 +5,21 @@
5
5
  * - `layahost` (recommended): a fixed base URL ({@link LAYAHOST_BASE_URL});
6
6
  * the user brings only an API key. Model defaults to
7
7
  * {@link LAYAHOST_DEFAULT_MODEL}.
8
- * - `jev`: any Jev-compatible endpoint; the user supplies the URL, and the
9
- * model comes from the provider's `GET /v1/models` listing.
8
+ * - `jev`: Jev's own API ({@link JEV_DEFAULT_BASE_URL}) by default, or any
9
+ * Jev-compatible endpoint as an override URL; the model comes from the
10
+ * provider's `GET /v1/models` listing.
11
+ *
12
+ * A profile that keeps the preset URL stores the literal `default`
13
+ * (T12733), resolved here at call time.
10
14
  *
11
15
  * The URL and model literals live in `@cleocode/contracts` (const data); this
12
16
  * module only arranges them.
13
17
  *
14
18
  * @task T12713
19
+ * @task T12733
15
20
  * @epic T12486
16
21
  */
17
- import { DECISION_PROVIDER_KINDS, LAYAHOST_BASE_URL, LAYAHOST_DEFAULT_MODEL, } from '@cleocode/contracts';
22
+ import { DECISION_PROVIDER_KINDS, JEV_DEFAULT_BASE_URL, LAYAHOST_BASE_URL, LAYAHOST_DEFAULT_MODEL, } from '@cleocode/contracts';
18
23
  /** The preset table, keyed by provider kind. */
19
24
  export const DECISION_PROVIDER_PRESETS = {
20
25
  layahost: {
@@ -28,9 +33,10 @@ export const DECISION_PROVIDER_PRESETS = {
28
33
  },
29
34
  jev: {
30
35
  kind: 'jev',
31
- label: 'jev: custom Jev-compatible URL',
32
- description: 'Any Jev-compatible endpoint; you supply the URL, the model comes from /v1/models.',
33
- requiresUrl: true,
36
+ label: 'jev: Jev API or any Jev-compatible URL',
37
+ description: `Jev at ${JEV_DEFAULT_BASE_URL} by default, or any Jev-compatible URL; the model comes from /v1/models.`,
38
+ defaultBaseUrl: JEV_DEFAULT_BASE_URL,
39
+ requiresUrl: false,
34
40
  recommended: false,
35
41
  },
36
42
  };
@@ -66,4 +72,14 @@ export function inferDecisionProviderKind(baseUrl) {
66
72
  return 'jev';
67
73
  }
68
74
  }
75
+ /**
76
+ * The preset base URL of a provider kind, which a profile storing `default`
77
+ * resolves to at call time.
78
+ *
79
+ * @param kind - Provider kind.
80
+ * @returns The preset URL, or `undefined` when the kind has none.
81
+ */
82
+ export function presetBaseUrl(kind) {
83
+ return DECISION_PROVIDER_PRESETS[kind].defaultBaseUrl;
84
+ }
69
85
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/decide/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,uBAAuB,EAEvB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAoB7B,gDAAgD;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAElC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,+CAA+C;QACtD,WAAW,EAAE,wBAAwB,iBAAiB,mBAAmB,sBAAsB,GAAG;QAClG,cAAc,EAAE,iBAAiB;QACjC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;KAClB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mFAAmF;QACrF,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAyB;IAEzB,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/decide/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,uBAAuB,EAEvB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAoB7B,gDAAgD;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAElC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,+CAA+C;QACtD,WAAW,EAAE,wBAAwB,iBAAiB,mBAAmB,sBAAsB,GAAG;QAClG,cAAc,EAAE,iBAAiB;QACjC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;KAClB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE,UAAU,oBAAoB,0EAA0E;QACrH,cAAc,EAAE,oBAAoB;QACpC,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAyB;IAEzB,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;AACxD,CAAC"}
@@ -115,6 +115,28 @@ export declare const DECIDE_ASK_DECISION_SITE: {
115
115
  readonly task: "T12491";
116
116
  readonly note: "Debug verb: the operator supplies the text; nothing acts on the answer.";
117
117
  };
118
+ /**
119
+ * `cli.decide-bench` — the `cleo decide bench` accuracy benchmark (T12495).
120
+ *
121
+ * Replays labelled rows built from CLEO's own history through each compared
122
+ * provider. Its answers are scored against the labels and never acted on, so
123
+ * it runs `on` without go-live evidence (it produces that evidence).
124
+ */
125
+ export declare const DECIDE_BENCH_DECISION_SITE: {
126
+ readonly id: "cli.decide-bench";
127
+ readonly title: "cleo decide bench (accuracy benchmark)";
128
+ readonly files: readonly ["packages/core/src/decide/bench/runner.ts"];
129
+ readonly questionType: "choice";
130
+ readonly primaryRung: "system-one";
131
+ readonly ladder: readonly [];
132
+ readonly fallback: "rule";
133
+ readonly ownerEscalation: "never";
134
+ readonly defaultMode: "on";
135
+ readonly writePath: false;
136
+ readonly sends: readonly ["task-text", "memory-text"];
137
+ readonly task: "T12495";
138
+ readonly note: "Benchmark verb: replays the duplicate, observation-type and contradiction questions; answers are scored, never acted on.";
139
+ };
118
140
  /**
119
141
  * Every registered decision site. The System One sites come first, then the
120
142
  * generative and agent-rung sites.
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/decide/sites/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,uFAAuF;AACvF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;CAkBM,CAAC;AAE5C,8FAA8F;AAC9F,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;CAoBN,CAAC;AAE5C,yEAAyE;AACzE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;CAgBA,CAAC;AAE5C,uFAAuF;AACvF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;CAmBE,CAAC;AAE5C,wEAAwE;AACxE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAcM,CAAC;AAkP5C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,sBAAsB,EAO3D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAE9E"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/decide/sites/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,uFAAuF;AACvF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;CAkBM,CAAC;AAE5C,8FAA8F;AAC9F,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;CAoBN,CAAC;AAE5C,yEAAyE;AACzE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;CAgBA,CAAC;AAE5C,uFAAuF;AACvF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;CAmBE,CAAC;AAE5C,wEAAwE;AACxE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAcM,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;CAcI,CAAC;AAkP5C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,sBAAsB,EAQ3D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAE9E"}
@@ -112,6 +112,28 @@ export const DECIDE_ASK_DECISION_SITE = {
112
112
  task: 'T12491',
113
113
  note: 'Debug verb: the operator supplies the text; nothing acts on the answer.',
114
114
  };
115
+ /**
116
+ * `cli.decide-bench` — the `cleo decide bench` accuracy benchmark (T12495).
117
+ *
118
+ * Replays labelled rows built from CLEO's own history through each compared
119
+ * provider. Its answers are scored against the labels and never acted on, so
120
+ * it runs `on` without go-live evidence (it produces that evidence).
121
+ */
122
+ export const DECIDE_BENCH_DECISION_SITE = {
123
+ id: 'cli.decide-bench',
124
+ title: 'cleo decide bench (accuracy benchmark)',
125
+ files: ['packages/core/src/decide/bench/runner.ts'],
126
+ questionType: 'choice',
127
+ primaryRung: 'system-one',
128
+ ladder: [],
129
+ fallback: 'rule',
130
+ ownerEscalation: 'never',
131
+ defaultMode: 'on',
132
+ writePath: false,
133
+ sends: ['task-text', 'memory-text'],
134
+ task: 'T12495',
135
+ note: 'Benchmark verb: replays the duplicate, observation-type and contradiction questions; answers are scored, never acted on.',
136
+ };
115
137
  /**
116
138
  * Generative and agent-rung sites that predate the ladder: registered so every
117
139
  * model call site is listed (spec §3.3). All `on`; none uses System One.
@@ -361,6 +383,7 @@ export const DECISION_SITES = [
361
383
  OBSERVATION_TYPE_DECISION_SITE,
362
384
  OWNER_DECISION_DECISION_SITE,
363
385
  DECIDE_ASK_DECISION_SITE,
386
+ DECIDE_BENCH_DECISION_SITE,
364
387
  ...GENERATIVE_SITES,
365
388
  ];
366
389
  /**