@cleocode/core 2026.9.23 → 2026.9.24

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 (651) 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/build-provenance.json +2 -2
  8. package/dist/cloud/http.d.ts +8 -0
  9. package/dist/cloud/http.d.ts.map +1 -1
  10. package/dist/cloud/http.js +8 -1
  11. package/dist/cloud/http.js.map +1 -1
  12. package/dist/cloud/index.d.ts +6 -1
  13. package/dist/cloud/index.d.ts.map +1 -1
  14. package/dist/cloud/index.js +6 -1
  15. package/dist/cloud/index.js.map +1 -1
  16. package/dist/cloud/nexus-auth.d.ts +169 -0
  17. package/dist/cloud/nexus-auth.d.ts.map +1 -0
  18. package/dist/cloud/nexus-auth.js +372 -0
  19. package/dist/cloud/nexus-auth.js.map +1 -0
  20. package/dist/cloud/nexus-credentials.d.ts +188 -0
  21. package/dist/cloud/nexus-credentials.d.ts.map +1 -0
  22. package/dist/cloud/nexus-credentials.js +323 -0
  23. package/dist/cloud/nexus-credentials.js.map +1 -0
  24. package/dist/cloud/nexus-link.d.ts +85 -0
  25. package/dist/cloud/nexus-link.d.ts.map +1 -0
  26. package/dist/cloud/nexus-link.js +226 -0
  27. package/dist/cloud/nexus-link.js.map +1 -0
  28. package/dist/cloud/presence.d.ts +88 -0
  29. package/dist/cloud/presence.d.ts.map +1 -0
  30. package/dist/cloud/presence.js +137 -0
  31. package/dist/cloud/presence.js.map +1 -0
  32. package/dist/cloud/projects.d.ts +3 -1
  33. package/dist/cloud/projects.d.ts.map +1 -1
  34. package/dist/cloud/projects.js +4 -2
  35. package/dist/cloud/projects.js.map +1 -1
  36. package/dist/crypto/credentials.d.ts +14 -4
  37. package/dist/crypto/credentials.d.ts.map +1 -1
  38. package/dist/crypto/credentials.js +15 -1
  39. package/dist/crypto/credentials.js.map +1 -1
  40. package/dist/decide/bench/dataset.d.ts +125 -0
  41. package/dist/decide/bench/dataset.d.ts.map +1 -0
  42. package/dist/decide/bench/dataset.js +457 -0
  43. package/dist/decide/bench/dataset.js.map +1 -0
  44. package/dist/decide/bench/index.d.ts +23 -0
  45. package/dist/decide/bench/index.d.ts.map +1 -0
  46. package/dist/decide/bench/index.js +23 -0
  47. package/dist/decide/bench/index.js.map +1 -0
  48. package/dist/decide/bench/metrics.d.ts +55 -0
  49. package/dist/decide/bench/metrics.d.ts.map +1 -0
  50. package/dist/decide/bench/metrics.js +100 -0
  51. package/dist/decide/bench/metrics.js.map +1 -0
  52. package/dist/decide/bench/operation.d.ts +119 -0
  53. package/dist/decide/bench/operation.d.ts.map +1 -0
  54. package/dist/decide/bench/operation.js +171 -0
  55. package/dist/decide/bench/operation.js.map +1 -0
  56. package/dist/decide/bench/profiles.d.ts +74 -0
  57. package/dist/decide/bench/profiles.d.ts.map +1 -0
  58. package/dist/decide/bench/profiles.js +131 -0
  59. package/dist/decide/bench/profiles.js.map +1 -0
  60. package/dist/decide/bench/questions.d.ts +40 -0
  61. package/dist/decide/bench/questions.d.ts.map +1 -0
  62. package/dist/decide/bench/questions.js +107 -0
  63. package/dist/decide/bench/questions.js.map +1 -0
  64. package/dist/decide/bench/report.d.ts +21 -0
  65. package/dist/decide/bench/report.d.ts.map +1 -0
  66. package/dist/decide/bench/report.js +120 -0
  67. package/dist/decide/bench/report.js.map +1 -0
  68. package/dist/decide/bench/runner.d.ts +203 -0
  69. package/dist/decide/bench/runner.d.ts.map +1 -0
  70. package/dist/decide/bench/runner.js +335 -0
  71. package/dist/decide/bench/runner.js.map +1 -0
  72. package/dist/decide/bench/source.d.ts +21 -0
  73. package/dist/decide/bench/source.d.ts.map +1 -0
  74. package/dist/decide/bench/source.js +67 -0
  75. package/dist/decide/bench/source.js.map +1 -0
  76. package/dist/decide/bench/spot-check.d.ts +117 -0
  77. package/dist/decide/bench/spot-check.d.ts.map +1 -0
  78. package/dist/decide/bench/spot-check.js +221 -0
  79. package/dist/decide/bench/spot-check.js.map +1 -0
  80. package/dist/decide/bench/stats.d.ts +57 -0
  81. package/dist/decide/bench/stats.d.ts.map +1 -0
  82. package/dist/decide/bench/stats.js +82 -0
  83. package/dist/decide/bench/stats.js.map +1 -0
  84. package/dist/decide/bench/types.d.ts +216 -0
  85. package/dist/decide/bench/types.d.ts.map +1 -0
  86. package/dist/decide/bench/types.js +104 -0
  87. package/dist/decide/bench/types.js.map +1 -0
  88. package/dist/decide/client.d.ts +35 -1
  89. package/dist/decide/client.d.ts.map +1 -1
  90. package/dist/decide/client.js +124 -30
  91. package/dist/decide/client.js.map +1 -1
  92. package/dist/decide/credentials.d.ts +177 -17
  93. package/dist/decide/credentials.d.ts.map +1 -1
  94. package/dist/decide/credentials.js +505 -41
  95. package/dist/decide/credentials.js.map +1 -1
  96. package/dist/decide/index.d.ts +8 -8
  97. package/dist/decide/index.d.ts.map +1 -1
  98. package/dist/decide/index.js +8 -8
  99. package/dist/decide/index.js.map +1 -1
  100. package/dist/decide/jev-wire.d.ts +25 -19
  101. package/dist/decide/jev-wire.d.ts.map +1 -1
  102. package/dist/decide/jev-wire.js +56 -31
  103. package/dist/decide/jev-wire.js.map +1 -1
  104. package/dist/decide/operations.d.ts +63 -12
  105. package/dist/decide/operations.d.ts.map +1 -1
  106. package/dist/decide/operations.js +116 -58
  107. package/dist/decide/operations.js.map +1 -1
  108. package/dist/decide/provider-state.d.ts +85 -12
  109. package/dist/decide/provider-state.d.ts.map +1 -1
  110. package/dist/decide/provider-state.js +154 -21
  111. package/dist/decide/provider-state.js.map +1 -1
  112. package/dist/decide/provider.d.ts +5 -0
  113. package/dist/decide/provider.d.ts.map +1 -1
  114. package/dist/decide/provider.js.map +1 -1
  115. package/dist/decide/providers.d.ts +15 -2
  116. package/dist/decide/providers.d.ts.map +1 -1
  117. package/dist/decide/providers.js +22 -6
  118. package/dist/decide/providers.js.map +1 -1
  119. package/dist/decide/sites/registry.d.ts +22 -0
  120. package/dist/decide/sites/registry.d.ts.map +1 -1
  121. package/dist/decide/sites/registry.js +23 -0
  122. package/dist/decide/sites/registry.js.map +1 -1
  123. package/dist/decide/wizard.d.ts +12 -4
  124. package/dist/decide/wizard.d.ts.map +1 -1
  125. package/dist/decide/wizard.js +79 -26
  126. package/dist/decide/wizard.js.map +1 -1
  127. package/dist/dispatch/mvi-projection.d.ts +15 -2
  128. package/dist/dispatch/mvi-projection.d.ts.map +1 -1
  129. package/dist/dispatch/mvi-projection.js +73 -12
  130. package/dist/dispatch/mvi-projection.js.map +1 -1
  131. package/dist/docs/adr-allocator.d.ts +2 -2
  132. package/dist/docs/adr-allocator.d.ts.map +1 -1
  133. package/dist/docs/adr-allocator.js +17 -4
  134. package/dist/docs/adr-allocator.js.map +1 -1
  135. package/dist/docs/blob-consolidation.js +1 -1
  136. package/dist/docs/blob-consolidation.js.map +1 -1
  137. package/dist/docs/display-alias.d.ts +1 -1
  138. package/dist/docs/display-alias.d.ts.map +1 -1
  139. package/dist/docs/display-alias.js +7 -4
  140. package/dist/docs/display-alias.js.map +1 -1
  141. package/dist/docs/docs-inconsistency-detector.js +1 -1
  142. package/dist/docs/docs-inconsistency-detector.js.map +1 -1
  143. package/dist/docs/docs-update.d.ts.map +1 -1
  144. package/dist/docs/docs-update.js +6 -1
  145. package/dist/docs/docs-update.js.map +1 -1
  146. package/dist/docs/export-document.js +2928 -1053
  147. package/dist/docs/export-document.js.map +3 -3
  148. package/dist/docs/numbering.js +1 -1
  149. package/dist/docs/numbering.js.map +1 -1
  150. package/dist/docs/supersede.d.ts.map +1 -1
  151. package/dist/docs/supersede.js +6 -3
  152. package/dist/docs/supersede.js.map +1 -1
  153. package/dist/docs/version-ssot.js +1 -1
  154. package/dist/docs/version-ssot.js.map +1 -1
  155. package/dist/doctor/db-substrate.d.ts.map +1 -1
  156. package/dist/doctor/db-substrate.js +39 -24
  157. package/dist/doctor/db-substrate.js.map +1 -1
  158. package/dist/doctor/knowledge-summary.d.ts +10 -3
  159. package/dist/doctor/knowledge-summary.d.ts.map +1 -1
  160. package/dist/doctor/knowledge-summary.js +10 -3
  161. package/dist/doctor/knowledge-summary.js.map +1 -1
  162. package/dist/doctor/project-identity.d.ts +128 -37
  163. package/dist/doctor/project-identity.d.ts.map +1 -1
  164. package/dist/doctor/project-identity.js +476 -63
  165. package/dist/doctor/project-identity.js.map +1 -1
  166. package/dist/doctor/twin-collapse.d.ts +52 -2
  167. package/dist/doctor/twin-collapse.d.ts.map +1 -1
  168. package/dist/doctor/twin-collapse.js +108 -4
  169. package/dist/doctor/twin-collapse.js.map +1 -1
  170. package/dist/error-catalog.js +2 -2
  171. package/dist/error-catalog.js.map +1 -1
  172. package/dist/error-registry.js +1 -1
  173. package/dist/error-registry.js.map +1 -1
  174. package/dist/gateway-client/generated/types.gen.d.ts +22 -2
  175. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
  176. package/dist/index.d.ts +1 -1
  177. package/dist/index.d.ts.map +1 -1
  178. package/dist/index.js +1 -1
  179. package/dist/index.js.map +1 -1
  180. package/dist/init.d.ts.map +1 -1
  181. package/dist/init.js +20 -11
  182. package/dist/init.js.map +1 -1
  183. package/dist/inject/index.d.ts.map +1 -1
  184. package/dist/inject/index.js +2 -3
  185. package/dist/inject/index.js.map +1 -1
  186. package/dist/internal.d.ts +5 -4
  187. package/dist/internal.d.ts.map +1 -1
  188. package/dist/internal.js +6 -4
  189. package/dist/internal.js.map +1 -1
  190. package/dist/llm/credential-remove-entry.d.ts +59 -0
  191. package/dist/llm/credential-remove-entry.d.ts.map +1 -0
  192. package/dist/llm/credential-remove-entry.js +101 -0
  193. package/dist/llm/credential-remove-entry.js.map +1 -0
  194. package/dist/llm/oauth/device-code.d.ts +26 -6
  195. package/dist/llm/oauth/device-code.d.ts.map +1 -1
  196. package/dist/llm/oauth/device-code.js +44 -12
  197. package/dist/llm/oauth/device-code.js.map +1 -1
  198. package/dist/llm/plugin-facade.js +3017 -1142
  199. package/dist/llm/plugin-facade.js.map +3 -3
  200. package/dist/memory/attention.d.ts.map +1 -1
  201. package/dist/memory/attention.js +5 -3
  202. package/dist/memory/attention.js.map +1 -1
  203. package/dist/memory/decisions.d.ts +48 -3
  204. package/dist/memory/decisions.d.ts.map +1 -1
  205. package/dist/memory/decisions.js +98 -14
  206. package/dist/memory/decisions.js.map +1 -1
  207. package/dist/memory/learnings.d.ts +6 -6
  208. package/dist/memory/patterns.d.ts +4 -4
  209. package/dist/migration/manual/T10165-backfill-adr-index.d.ts.map +1 -1
  210. package/dist/migration/manual/T10165-backfill-adr-index.js +5 -1
  211. package/dist/migration/manual/T10165-backfill-adr-index.js.map +1 -1
  212. package/dist/nexus/fleet-status.d.ts +83 -0
  213. package/dist/nexus/fleet-status.d.ts.map +1 -0
  214. package/dist/nexus/fleet-status.js +414 -0
  215. package/dist/nexus/fleet-status.js.map +1 -0
  216. package/dist/nexus/git-state.d.ts +15 -0
  217. package/dist/nexus/git-state.d.ts.map +1 -1
  218. package/dist/nexus/git-state.js +67 -2
  219. package/dist/nexus/git-state.js.map +1 -1
  220. package/dist/nexus/identity.d.ts.map +1 -1
  221. package/dist/nexus/identity.js +4 -0
  222. package/dist/nexus/identity.js.map +1 -1
  223. package/dist/nexus/index.d.ts +4 -1
  224. package/dist/nexus/index.d.ts.map +1 -1
  225. package/dist/nexus/index.js +7 -1
  226. package/dist/nexus/index.js.map +1 -1
  227. package/dist/nexus/migrate-json-to-sqlite.d.ts +3 -2
  228. package/dist/nexus/migrate-json-to-sqlite.d.ts.map +1 -1
  229. package/dist/nexus/migrate-json-to-sqlite.js +9 -17
  230. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
  231. package/dist/nexus/ops.d.ts +1 -0
  232. package/dist/nexus/ops.d.ts.map +1 -1
  233. package/dist/nexus/project-activity.d.ts +104 -0
  234. package/dist/nexus/project-activity.d.ts.map +1 -0
  235. package/dist/nexus/project-activity.js +150 -0
  236. package/dist/nexus/project-activity.js.map +1 -0
  237. package/dist/nexus/query.d.ts +2 -2
  238. package/dist/nexus/query.d.ts.map +1 -1
  239. package/dist/nexus/query.js +4 -19
  240. package/dist/nexus/query.js.map +1 -1
  241. package/dist/nexus/registry-errors.d.ts +61 -0
  242. package/dist/nexus/registry-errors.d.ts.map +1 -0
  243. package/dist/nexus/registry-errors.js +85 -0
  244. package/dist/nexus/registry-errors.js.map +1 -0
  245. package/dist/nexus/registry.d.ts +30 -5
  246. package/dist/nexus/registry.d.ts.map +1 -1
  247. package/dist/nexus/registry.js +115 -70
  248. package/dist/nexus/registry.js.map +1 -1
  249. package/dist/orchestrate/pivot.d.ts +4 -0
  250. package/dist/orchestrate/pivot.d.ts.map +1 -1
  251. package/dist/orchestrate/pivot.js +75 -12
  252. package/dist/orchestrate/pivot.js.map +1 -1
  253. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  254. package/dist/orchestrate/query-ops.js +29 -27
  255. package/dist/orchestrate/query-ops.js.map +1 -1
  256. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  257. package/dist/orchestrate/spawn-ops.js +29 -3
  258. package/dist/orchestrate/spawn-ops.js.map +1 -1
  259. package/dist/orchestration/bootstrap.d.ts.map +1 -1
  260. package/dist/orchestration/bootstrap.js +20 -14
  261. package/dist/orchestration/bootstrap.js.map +1 -1
  262. package/dist/orchestration/index.d.ts +15 -1
  263. package/dist/orchestration/index.d.ts.map +1 -1
  264. package/dist/orchestration/index.js +25 -6
  265. package/dist/orchestration/index.js.map +1 -1
  266. package/dist/orchestration/lead-rollup.d.ts +7 -1
  267. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  268. package/dist/orchestration/lead-rollup.js +6 -3
  269. package/dist/orchestration/lead-rollup.js.map +1 -1
  270. package/dist/orchestration/spawn-prompt.js +1 -1
  271. package/dist/orchestration/spawn-prompt.js.map +1 -1
  272. package/dist/orchestration/waves.d.ts +21 -10
  273. package/dist/orchestration/waves.d.ts.map +1 -1
  274. package/dist/orchestration/waves.js +38 -35
  275. package/dist/orchestration/waves.js.map +1 -1
  276. package/dist/paths.d.ts +9 -2
  277. package/dist/paths.d.ts.map +1 -1
  278. package/dist/paths.js +30 -13
  279. package/dist/paths.js.map +1 -1
  280. package/dist/phases/index.d.ts +1 -1
  281. package/dist/phases/index.d.ts.map +1 -1
  282. package/dist/phases/index.js +3 -4
  283. package/dist/phases/index.js.map +1 -1
  284. package/dist/project-info.d.ts +40 -3
  285. package/dist/project-info.d.ts.map +1 -1
  286. package/dist/project-info.js +74 -6
  287. package/dist/project-info.js.map +1 -1
  288. package/dist/project-lifecycle.d.ts +28 -7
  289. package/dist/project-lifecycle.d.ts.map +1 -1
  290. package/dist/project-lifecycle.js +114 -47
  291. package/dist/project-lifecycle.js.map +1 -1
  292. package/dist/project-scope.d.ts +70 -3
  293. package/dist/project-scope.d.ts.map +1 -1
  294. package/dist/project-scope.js +154 -15
  295. package/dist/project-scope.js.map +1 -1
  296. package/dist/release/open.d.ts +12 -2
  297. package/dist/release/open.d.ts.map +1 -1
  298. package/dist/release/open.js +32 -3
  299. package/dist/release/open.js.map +1 -1
  300. package/dist/release/preflight-skip.d.ts +73 -0
  301. package/dist/release/preflight-skip.d.ts.map +1 -0
  302. package/dist/release/preflight-skip.js +254 -0
  303. package/dist/release/preflight-skip.js.map +1 -0
  304. package/dist/render/decide/index.d.ts +51 -0
  305. package/dist/render/decide/index.d.ts.map +1 -0
  306. package/dist/render/decide/index.js +289 -0
  307. package/dist/render/decide/index.js.map +1 -0
  308. package/dist/render/index.d.ts +1 -0
  309. package/dist/render/index.d.ts.map +1 -1
  310. package/dist/render/index.js +1 -0
  311. package/dist/render/index.js.map +1 -1
  312. package/dist/render/nexus/graph/index.d.ts +5 -0
  313. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  314. package/dist/render/nexus/graph/index.js +53 -0
  315. package/dist/render/nexus/graph/index.js.map +1 -1
  316. package/dist/scaffold/ensure-config.d.ts +14 -6
  317. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  318. package/dist/scaffold/ensure-config.js +39 -17
  319. package/dist/scaffold/ensure-config.js.map +1 -1
  320. package/dist/scaffold/project-identity.d.ts +115 -23
  321. package/dist/scaffold/project-identity.d.ts.map +1 -1
  322. package/dist/scaffold/project-identity.js +196 -44
  323. package/dist/scaffold/project-identity.js.map +1 -1
  324. package/dist/selfimprove/fix-gen.js +3027 -1152
  325. package/dist/selfimprove/fix-gen.js.map +3 -3
  326. package/dist/sentient/cross-project-hygiene.d.ts +12 -6
  327. package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
  328. package/dist/sentient/cross-project-hygiene.js +15 -10
  329. package/dist/sentient/cross-project-hygiene.js.map +1 -1
  330. package/dist/session/engine-ops.d.ts +13 -4
  331. package/dist/session/engine-ops.d.ts.map +1 -1
  332. package/dist/session/engine-ops.js +38 -45
  333. package/dist/session/engine-ops.js.map +1 -1
  334. package/dist/sessions/briefing.d.ts +7 -3
  335. package/dist/sessions/briefing.d.ts.map +1 -1
  336. package/dist/sessions/briefing.js +10 -10
  337. package/dist/sessions/briefing.js.map +1 -1
  338. package/dist/sessions/drift-watchdog.d.ts.map +1 -1
  339. package/dist/sessions/drift-watchdog.js +11 -19
  340. package/dist/sessions/drift-watchdog.js.map +1 -1
  341. package/dist/sessions/focus-state-store.d.ts +103 -26
  342. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  343. package/dist/sessions/focus-state-store.js +166 -37
  344. package/dist/sessions/focus-state-store.js.map +1 -1
  345. package/dist/sessions/handoff.d.ts.map +1 -1
  346. package/dist/sessions/handoff.js +9 -18
  347. package/dist/sessions/handoff.js.map +1 -1
  348. package/dist/sessions/index.d.ts +4 -2
  349. package/dist/sessions/index.d.ts.map +1 -1
  350. package/dist/sessions/index.js +35 -6
  351. package/dist/sessions/index.js.map +1 -1
  352. package/dist/sessions/session-drift.d.ts.map +1 -1
  353. package/dist/sessions/session-drift.js +4 -2
  354. package/dist/sessions/session-drift.js.map +1 -1
  355. package/dist/sessions/session-view.d.ts +8 -1
  356. package/dist/sessions/session-view.d.ts.map +1 -1
  357. package/dist/sessions/session-view.js +9 -2
  358. package/dist/sessions/session-view.js.map +1 -1
  359. package/dist/setup/config-json-merge.d.ts.map +1 -1
  360. package/dist/setup/config-json-merge.js +1 -0
  361. package/dist/setup/config-json-merge.js.map +1 -1
  362. package/dist/setup/index.d.ts +4 -2
  363. package/dist/setup/index.d.ts.map +1 -1
  364. package/dist/setup/index.js +6 -2
  365. package/dist/setup/index.js.map +1 -1
  366. package/dist/setup/sections/nexus-account.d.ts +32 -0
  367. package/dist/setup/sections/nexus-account.d.ts.map +1 -0
  368. package/dist/setup/sections/nexus-account.js +64 -0
  369. package/dist/setup/sections/nexus-account.js.map +1 -0
  370. package/dist/setup/wizard.d.ts +1 -1
  371. package/dist/setup/wizard.d.ts.map +1 -1
  372. package/dist/setup/wizard.js.map +1 -1
  373. package/dist/skills/orchestrator/startup.d.ts.map +1 -1
  374. package/dist/skills/orchestrator/startup.js +18 -31
  375. package/dist/skills/orchestrator/startup.js.map +1 -1
  376. package/dist/snapshot/index.d.ts.map +1 -1
  377. package/dist/snapshot/index.js +60 -53
  378. package/dist/snapshot/index.js.map +1 -1
  379. package/dist/spawn/agent-identity.d.ts +33 -1
  380. package/dist/spawn/agent-identity.d.ts.map +1 -1
  381. package/dist/spawn/agent-identity.js +53 -1
  382. package/dist/spawn/agent-identity.js.map +1 -1
  383. package/dist/spawn/index.d.ts +1 -1
  384. package/dist/spawn/index.d.ts.map +1 -1
  385. package/dist/spawn/index.js +1 -1
  386. package/dist/spawn/index.js.map +1 -1
  387. package/dist/stats/index.d.ts.map +1 -1
  388. package/dist/stats/index.js +3 -4
  389. package/dist/stats/index.js.map +1 -1
  390. package/dist/status/index.d.ts +12 -3
  391. package/dist/status/index.d.ts.map +1 -1
  392. package/dist/status/index.js +47 -5
  393. package/dist/status/index.js.map +1 -1
  394. package/dist/store/attachment-repair.d.ts.map +1 -1
  395. package/dist/store/attachment-repair.js +42 -3
  396. package/dist/store/attachment-repair.js.map +1 -1
  397. package/dist/store/attachment-store.d.ts.map +1 -1
  398. package/dist/store/attachment-store.js +30 -46
  399. package/dist/store/attachment-store.js.map +1 -1
  400. package/dist/store/backup-recover-brain.d.ts +4 -0
  401. package/dist/store/backup-recover-brain.d.ts.map +1 -1
  402. package/dist/store/backup-recover-brain.js +2 -0
  403. package/dist/store/backup-recover-brain.js.map +1 -1
  404. package/dist/store/backup-recover.d.ts +9 -0
  405. package/dist/store/backup-recover.d.ts.map +1 -1
  406. package/dist/store/backup-recover.js +28 -1
  407. package/dist/store/backup-recover.js.map +1 -1
  408. package/dist/store/backup-sidecar.d.ts +30 -0
  409. package/dist/store/backup-sidecar.d.ts.map +1 -1
  410. package/dist/store/backup-sidecar.js +90 -2
  411. package/dist/store/backup-sidecar.js.map +1 -1
  412. package/dist/store/blob-keep.d.ts +135 -0
  413. package/dist/store/blob-keep.d.ts.map +1 -0
  414. package/dist/store/blob-keep.js +283 -0
  415. package/dist/store/blob-keep.js.map +1 -0
  416. package/dist/store/converters.d.ts.map +1 -1
  417. package/dist/store/converters.js +11 -0
  418. package/dist/store/converters.js.map +1 -1
  419. package/dist/store/credential-transfer.d.ts +37 -5
  420. package/dist/store/credential-transfer.d.ts.map +1 -1
  421. package/dist/store/credential-transfer.js +73 -18
  422. package/dist/store/credential-transfer.js.map +1 -1
  423. package/dist/store/data-accessor.d.ts +1 -1
  424. package/dist/store/data-accessor.d.ts.map +1 -1
  425. package/dist/store/data-accessor.js.map +1 -1
  426. package/dist/store/db-helpers.d.ts +18 -0
  427. package/dist/store/db-helpers.d.ts.map +1 -1
  428. package/dist/store/db-helpers.js +46 -0
  429. package/dist/store/db-helpers.js.map +1 -1
  430. package/dist/store/exodus/on-open.d.ts.map +1 -1
  431. package/dist/store/exodus/on-open.js +35 -0
  432. package/dist/store/exodus/on-open.js.map +1 -1
  433. package/dist/store/exodus/runtime-targets.d.ts +3 -3
  434. package/dist/store/exodus/runtime-targets.js +3 -3
  435. package/dist/store/import-remap.d.ts +12 -1
  436. package/dist/store/import-remap.d.ts.map +1 -1
  437. package/dist/store/import-remap.js +14 -0
  438. package/dist/store/import-remap.js.map +1 -1
  439. package/dist/store/legacy-tasks-lineage.d.ts +3 -1
  440. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  441. package/dist/store/legacy-tasks-lineage.js +3 -1
  442. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  443. package/dist/store/memory-accessor.js +1 -1
  444. package/dist/store/memory-accessor.js.map +1 -1
  445. package/dist/store/migration-manager.d.ts +61 -0
  446. package/dist/store/migration-manager.d.ts.map +1 -1
  447. package/dist/store/migration-manager.js +102 -4
  448. package/dist/store/migration-manager.js.map +1 -1
  449. package/dist/store/nexus-validation-schemas.d.ts +64 -0
  450. package/dist/store/nexus-validation-schemas.d.ts.map +1 -1
  451. package/dist/store/portable-bundle-import.d.ts +8 -0
  452. package/dist/store/portable-bundle-import.d.ts.map +1 -1
  453. package/dist/store/portable-bundle-import.js +10 -0
  454. package/dist/store/portable-bundle-import.js.map +1 -1
  455. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  456. package/dist/store/portable-bundle-scan.js +1 -0
  457. package/dist/store/portable-bundle-scan.js.map +1 -1
  458. package/dist/store/portable-bundle.d.ts.map +1 -1
  459. package/dist/store/portable-bundle.js +15 -14
  460. package/dist/store/portable-bundle.js.map +1 -1
  461. package/dist/store/pre-repair-snapshot.d.ts +4 -1
  462. package/dist/store/pre-repair-snapshot.d.ts.map +1 -1
  463. package/dist/store/pre-repair-snapshot.js +5 -1
  464. package/dist/store/pre-repair-snapshot.js.map +1 -1
  465. package/dist/store/regenerators.d.ts +4 -2
  466. package/dist/store/regenerators.d.ts.map +1 -1
  467. package/dist/store/regenerators.js +7 -3
  468. package/dist/store/regenerators.js.map +1 -1
  469. package/dist/store/repair-malformed-dbs.d.ts +4 -0
  470. package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
  471. package/dist/store/repair-malformed-dbs.js +3 -0
  472. package/dist/store/repair-malformed-dbs.js.map +1 -1
  473. package/dist/store/safety-data-accessor.d.ts +8 -3
  474. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  475. package/dist/store/safety-data-accessor.js +11 -4
  476. package/dist/store/safety-data-accessor.js.map +1 -1
  477. package/dist/store/schema/cleo-global/nexus.d.ts +48 -0
  478. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  479. package/dist/store/schema/cleo-global/nexus.js +17 -0
  480. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  481. package/dist/store/schema/cleo-project/docs.d.ts +16 -0
  482. package/dist/store/schema/cleo-project/docs.d.ts.map +1 -1
  483. package/dist/store/schema/cleo-project/docs.js +10 -0
  484. package/dist/store/schema/cleo-project/docs.js.map +1 -1
  485. package/dist/store/schema/cleo-project/tasks-core.d.ts +80 -0
  486. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  487. package/dist/store/schema/cleo-project/tasks-core.js +25 -1
  488. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  489. package/dist/store/schema/cleo-shared/brain.d.ts +1 -1
  490. package/dist/store/schema/memory-schema.d.ts +1 -1
  491. package/dist/store/schema/nexus-schema.d.ts +48 -0
  492. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  493. package/dist/store/schema/nexus-schema.js +28 -7
  494. package/dist/store/schema/nexus-schema.js.map +1 -1
  495. package/dist/store/session-store.d.ts +65 -0
  496. package/dist/store/session-store.d.ts.map +1 -1
  497. package/dist/store/session-store.js +108 -7
  498. package/dist/store/session-store.js.map +1 -1
  499. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  500. package/dist/store/sqlite-data-accessor.js +245 -47
  501. package/dist/store/sqlite-data-accessor.js.map +1 -1
  502. package/dist/store/sqlite.d.ts +15 -3
  503. package/dist/store/sqlite.d.ts.map +1 -1
  504. package/dist/store/sqlite.js +52 -20
  505. package/dist/store/sqlite.js.map +1 -1
  506. package/dist/store/store-write-guard.d.ts +9 -3
  507. package/dist/store/store-write-guard.d.ts.map +1 -1
  508. package/dist/store/store-write-guard.js +25 -4
  509. package/dist/store/store-write-guard.js.map +1 -1
  510. package/dist/store/table-classification.d.ts +1 -1
  511. package/dist/store/table-classification.d.ts.map +1 -1
  512. package/dist/store/table-classification.js +34 -8
  513. package/dist/store/table-classification.js.map +1 -1
  514. package/dist/store/task-claim.d.ts +144 -0
  515. package/dist/store/task-claim.d.ts.map +1 -0
  516. package/dist/store/task-claim.js +195 -0
  517. package/dist/store/task-claim.js.map +1 -0
  518. package/dist/store/task-version.d.ts +43 -5
  519. package/dist/store/task-version.d.ts.map +1 -1
  520. package/dist/store/task-version.js +113 -17
  521. package/dist/store/task-version.js.map +1 -1
  522. package/dist/store/tasks-schema.d.ts +2 -0
  523. package/dist/store/tasks-schema.d.ts.map +1 -1
  524. package/dist/store/tasks-schema.js +1 -0
  525. package/dist/store/tasks-schema.js.map +1 -1
  526. package/dist/store/tasks-sqlite.js +1 -1
  527. package/dist/store/tasks-sqlite.js.map +1 -1
  528. package/dist/store/twin-collapse.d.ts +339 -22
  529. package/dist/store/twin-collapse.d.ts.map +1 -1
  530. package/dist/store/twin-collapse.js +1323 -48
  531. package/dist/store/twin-collapse.js.map +1 -1
  532. package/dist/store/umbrella-data-accessor.d.ts +8 -3
  533. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  534. package/dist/store/umbrella-data-accessor.js +10 -4
  535. package/dist/store/umbrella-data-accessor.js.map +1 -1
  536. package/dist/store/validation-schemas.d.ts +161 -1
  537. package/dist/store/validation-schemas.d.ts.map +1 -1
  538. package/dist/store/with-retry.d.ts +36 -0
  539. package/dist/store/with-retry.d.ts.map +1 -1
  540. package/dist/store/with-retry.js +51 -0
  541. package/dist/store/with-retry.js.map +1 -1
  542. package/dist/store/worktree-build-guard.d.ts +13 -4
  543. package/dist/store/worktree-build-guard.d.ts.map +1 -1
  544. package/dist/store/worktree-build-guard.js +21 -10
  545. package/dist/store/worktree-build-guard.js.map +1 -1
  546. package/dist/store/worktree-isolation-guard.d.ts +121 -10
  547. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  548. package/dist/store/worktree-isolation-guard.js +155 -34
  549. package/dist/store/worktree-isolation-guard.js.map +1 -1
  550. package/dist/system/backup.d.ts +7 -0
  551. package/dist/system/backup.d.ts.map +1 -1
  552. package/dist/system/backup.js +5 -0
  553. package/dist/system/backup.js.map +1 -1
  554. package/dist/system/health.d.ts.map +1 -1
  555. package/dist/system/health.js +3 -1
  556. package/dist/system/health.js.map +1 -1
  557. package/dist/system/inject-generate.d.ts.map +1 -1
  558. package/dist/system/inject-generate.js +23 -10
  559. package/dist/system/inject-generate.js.map +1 -1
  560. package/dist/system/project-health.d.ts +8 -0
  561. package/dist/system/project-health.d.ts.map +1 -1
  562. package/dist/system/project-health.js +13 -5
  563. package/dist/system/project-health.js.map +1 -1
  564. package/dist/task-tools/index.d.ts +1 -1
  565. package/dist/task-tools/index.d.ts.map +1 -1
  566. package/dist/task-tools/index.js +1 -1
  567. package/dist/task-tools/index.js.map +1 -1
  568. package/dist/task-tools/score-task-priority.d.ts +38 -0
  569. package/dist/task-tools/score-task-priority.d.ts.map +1 -1
  570. package/dist/task-tools/score-task-priority.js +51 -0
  571. package/dist/task-tools/score-task-priority.js.map +1 -1
  572. package/dist/task-work/claims.d.ts +215 -0
  573. package/dist/task-work/claims.d.ts.map +1 -0
  574. package/dist/task-work/claims.js +272 -0
  575. package/dist/task-work/claims.js.map +1 -0
  576. package/dist/task-work/index.d.ts +47 -3
  577. package/dist/task-work/index.d.ts.map +1 -1
  578. package/dist/task-work/index.js +74 -41
  579. package/dist/task-work/index.js.map +1 -1
  580. package/dist/tasks/add.d.ts.map +1 -1
  581. package/dist/tasks/add.js +3 -2
  582. package/dist/tasks/add.js.map +1 -1
  583. package/dist/tasks/analyze.d.ts.map +1 -1
  584. package/dist/tasks/analyze.js +3 -4
  585. package/dist/tasks/analyze.js.map +1 -1
  586. package/dist/tasks/change-set.d.ts +5 -0
  587. package/dist/tasks/change-set.d.ts.map +1 -1
  588. package/dist/tasks/change-set.js +59 -3
  589. package/dist/tasks/change-set.js.map +1 -1
  590. package/dist/tasks/complete.d.ts +16 -0
  591. package/dist/tasks/complete.d.ts.map +1 -1
  592. package/dist/tasks/complete.js +27 -7
  593. package/dist/tasks/complete.js.map +1 -1
  594. package/dist/tasks/component-pr.d.ts +162 -1
  595. package/dist/tasks/component-pr.d.ts.map +1 -1
  596. package/dist/tasks/component-pr.js +560 -59
  597. package/dist/tasks/component-pr.js.map +1 -1
  598. package/dist/tasks/done-record.d.ts +14 -1
  599. package/dist/tasks/done-record.d.ts.map +1 -1
  600. package/dist/tasks/done-record.js +37 -0
  601. package/dist/tasks/done-record.js.map +1 -1
  602. package/dist/tasks/duplicate-detector.d.ts +20 -1
  603. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  604. package/dist/tasks/duplicate-detector.js +10 -2
  605. package/dist/tasks/duplicate-detector.js.map +1 -1
  606. package/dist/tasks/engine-wrap-ops.d.ts +19 -10
  607. package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
  608. package/dist/tasks/engine-wrap-ops.js +38 -10
  609. package/dist/tasks/engine-wrap-ops.js.map +1 -1
  610. package/dist/tasks/graph-ops.d.ts +9 -2
  611. package/dist/tasks/graph-ops.d.ts.map +1 -1
  612. package/dist/tasks/graph-ops.js +24 -32
  613. package/dist/tasks/graph-ops.js.map +1 -1
  614. package/dist/tasks/plan.d.ts.map +1 -1
  615. package/dist/tasks/plan.js +16 -60
  616. package/dist/tasks/plan.js.map +1 -1
  617. package/dist/tasks/task-context.d.ts.map +1 -1
  618. package/dist/tasks/task-context.js +13 -0
  619. package/dist/tasks/task-context.js.map +1 -1
  620. package/dist/tasks/task-import.d.ts.map +1 -1
  621. package/dist/tasks/task-import.js +21 -12
  622. package/dist/tasks/task-import.js.map +1 -1
  623. package/dist/tasks/task-next.d.ts +25 -2
  624. package/dist/tasks/task-next.d.ts.map +1 -1
  625. package/dist/tasks/task-next.js +32 -13
  626. package/dist/tasks/task-next.js.map +1 -1
  627. package/dist/tasks/update.d.ts.map +1 -1
  628. package/dist/tasks/update.js +7 -5
  629. package/dist/tasks/update.js.map +1 -1
  630. package/dist/upgrade.d.ts +1 -1
  631. package/dist/upgrade.d.ts.map +1 -1
  632. package/dist/upgrade.js +48 -9
  633. package/dist/upgrade.js.map +1 -1
  634. package/dist/validation/doctor/checks.d.ts +20 -6
  635. package/dist/validation/doctor/checks.d.ts.map +1 -1
  636. package/dist/validation/doctor/checks.js +51 -8
  637. package/dist/validation/doctor/checks.js.map +1 -1
  638. package/dist/validation/validate-ops.d.ts.map +1 -1
  639. package/dist/validation/validate-ops.js +2 -3
  640. package/dist/validation/validate-ops.js.map +1 -1
  641. package/migrations/drizzle-cleo-global/20260929010000_t12512-registry-probed-opened/migration.sql +35 -0
  642. package/migrations/drizzle-cleo-global/20260929020000_t12721-git-state-head-committed-at/migration.sql +25 -0
  643. package/migrations/drizzle-cleo-project/20260929000000_t12535-docs-attachments-union-shape/migration.sql +21 -0
  644. package/migrations/drizzle-cleo-project/20260929120000_t12502-task-claim-leases/migration.sql +77 -0
  645. package/migrations/drizzle-cleo-project/20260929130000_t12736-claim-lease-iso-repair/migration.sql +37 -0
  646. package/package.json +23 -13
  647. package/schemas/project-info.schema.json +10 -4
  648. package/templates/CLEO-INJECTION.md +1 -1
  649. package/templates/CLEO-REFERENCE.md +3 -3
  650. package/templates/cleo-gitignore +11 -0
  651. package/templates/workflows/release-prepare.yml.tmpl +156 -10
@@ -8,7 +8,7 @@
8
8
  * @task T12491
9
9
  * @epic T12486
10
10
  */
11
- import { type DecisionAnswer, type DecisionProviderCapabilities, type DecisionProviderKind, type DecisionProviderUsage } from '@cleocode/contracts';
11
+ import { type DecideProfileListResult, type DecideProviderState as DecideProviderStateContract, type DecisionAnswer, type DecisionProviderCapabilities, type DecisionProviderKind, type DecisionProviderUsage } from '@cleocode/contracts';
12
12
  import { type DecideCredentialsSummary, type SealedDecideConnection } from './credentials.js';
13
13
  import { type SpendLedger, type SpendLedgerHealth, type SpendResetOptions, type SpendResetReceipt } from './spend.js';
14
14
  /** Default deadline for the `GET /v1/models` probe, ms. */
@@ -25,7 +25,7 @@ export declare const DEFAULT_DECIDE_ASK_TIMEOUT_MS = 10000;
25
25
  * - `unconfigured` — no valid base URL + key stored.
26
26
  * - `unreachable` — network failure, timeout, or any other HTTP status.
27
27
  */
28
- export type DecideProviderState = 'reachable' | 'unauthorized' | 'key_limit_reached' | 'unconfigured' | 'unreachable';
28
+ export type DecideProviderState = DecideProviderStateContract;
29
29
  /** Month-to-date spend against the CLEO cap (D11159). */
30
30
  export interface DecideSpendSummary {
31
31
  /** UTC month, `YYYY-MM`. */
@@ -45,6 +45,8 @@ export interface DecideSpendSummary {
45
45
  export interface DecideProbeResult {
46
46
  /** Reachability verdict. */
47
47
  readonly state: DecideProviderState;
48
+ /** Profile id probed (`<provider>/<name>`, T12733), when known. */
49
+ readonly profile?: string;
48
50
  /** Configured base URL. */
49
51
  readonly baseUrl?: string;
50
52
  /** Masked key preview. */
@@ -111,18 +113,31 @@ export declare function probeDecideProvider(opts?: DecideProbeOptions): Promise<
111
113
  /** Input for {@link configureDecide}. */
112
114
  export interface DecideConfigureInput {
113
115
  /**
114
- * Provider kind. Omitted → the stored kind when the host is unchanged,
115
- * else inferred from `baseUrl` (the layahost host → `layahost`, any other →
116
- * `jev`), else `layahost`.
116
+ * Provider kind. Omitted → the provider of a `<provider>/<name>` profile,
117
+ * else inferred from an override `baseUrl` (the layahost origin →
118
+ * `layahost`, any other → `jev`), else the active profile's provider, else
119
+ * `layahost`.
117
120
  */
118
121
  readonly provider?: DecisionProviderKind;
119
122
  /**
120
- * Provider base URL. Omitted → the stored URL for the same provider, else
121
- * the provider's preset URL. Required for `jev` when nothing is stored.
123
+ * `default` (the provider's preset URL, resolved at call time) or an
124
+ * override URL. Omitted → the profile's stored setting, else `default`.
122
125
  */
123
126
  readonly baseUrl?: string;
124
- /** API key. Omitted → the stored key is kept. */
127
+ /** API key. Omitted → the profile's stored key is kept. */
125
128
  readonly apiKey?: string;
129
+ /**
130
+ * Profile to add or update (T12733): `<provider>/<name>` or a bare name;
131
+ * other profiles are kept. Omitted → the active profile when it has the
132
+ * same provider, else `<provider>/default`.
133
+ */
134
+ readonly profile?: string;
135
+ /**
136
+ * Make the profile active. Omitted → true for the first profile or one that
137
+ * is already active, else false (adding a second key never silently
138
+ * switches everyday decisions).
139
+ */
140
+ readonly activate?: boolean;
126
141
  /**
127
142
  * Default model. Omitted → the stored model when the URL is unchanged;
128
143
  * otherwise the preset default (`layahost`), else the first model the
@@ -136,6 +151,8 @@ export interface DecideConfigureInput {
136
151
  }
137
152
  /** Result of {@link configureDecide}. */
138
153
  export interface DecideConfigureResult extends DecideCredentialsSummary {
154
+ /** Whether the configured profile is now the active one. */
155
+ readonly active: boolean;
139
156
  /** Where the stored model came from. */
140
157
  readonly modelSource: 'flag' | 'stored' | 'preset' | 'provider-listing' | 'none';
141
158
  /** Reachability verdict of the probe run after saving. */
@@ -146,7 +163,7 @@ export interface DecideConfigureResult extends DecideCredentialsSummary {
146
163
  readonly warning?: string;
147
164
  }
148
165
  /**
149
- * Store the provider settings, merging omitted values with the stored ones,
166
+ * Store a profile's settings, merging omitted values with the stored ones,
150
167
  * then probe the provider and re-detect its capabilities so its extensions
151
168
  * apply immediately.
152
169
  *
@@ -161,12 +178,38 @@ export interface DecideConfigureResult extends DecideCredentialsSummary {
161
178
  * A URL whose host differs from the stored one must come with a fresh key:
162
179
  * the stored key is never re-used (or sent in the model probe) for a new host.
163
180
  *
164
- * @param input - Provider, URL, key, optional model.
181
+ * Profiles (T12733): the settings go to one profile, `<provider>/<name>`
182
+ * (see {@link DecideConfigureInput.profile}); every other profile is kept,
183
+ * and a new profile needs its own key. The URL is stored as `default` unless
184
+ * overridden. The post-save probe targets that profile, active or not.
185
+ *
186
+ * @param input - Provider, URL, key, optional model, profile and activation.
165
187
  * @returns Secret-free summary plus the model's provenance and the probe verdict.
166
- * @throws {DecideCredentialsError} On an invalid URL, `jev` without a URL, a
167
- * blank key, an invalid model name, or a host change without a fresh key.
188
+ * @throws {DecideCredentialsError} On an invalid URL or profile, a provider
189
+ * without a preset URL and no override, a blank key, an invalid model name,
190
+ * a new profile without a key, or a host change without a fresh key.
168
191
  */
169
192
  export declare function configureDecide(input: DecideConfigureInput): Promise<DecideConfigureResult>;
193
+ /** Options for {@link listDecideProfilesReport}. */
194
+ export interface DecideProfilesReportOptions {
195
+ /** Probe each profile's `GET /v1/models`. Default false (no network). */
196
+ readonly probe?: boolean;
197
+ /** `fetch` for the probes; tests inject a stub. */
198
+ readonly fetch?: typeof fetch;
199
+ /** Deadline per probe, ms. Default {@link DEFAULT_DECIDE_PROBE_TIMEOUT_MS}. */
200
+ readonly timeoutMs?: number;
201
+ /** Provider-state file for the probes. Default: `<cleoHome>/decide/provider-state.json`. */
202
+ readonly providerStatePath?: string;
203
+ }
204
+ /**
205
+ * `cleo decide profiles`: every stored profile with the active one marked and
206
+ * keys masked; with `probe`, each profile's reachability (probed in parallel).
207
+ * Never throws.
208
+ *
209
+ * @param opts - Whether to probe, plus the injectable `fetch` and deadline.
210
+ * @returns The secret-free profile list.
211
+ */
212
+ export declare function listDecideProfilesReport(opts?: DecideProfilesReportOptions): Promise<DecideProfileListResult>;
170
213
  /**
171
214
  * Remove the stored settings (and rotated backups of them).
172
215
  *
@@ -185,9 +228,17 @@ export interface DecideAskInput {
185
228
  readonly timeoutMs?: number;
186
229
  /** Project root for the audit line. Default: the resolved project root. */
187
230
  readonly projectRoot?: string;
231
+ /** Profile to ask through (T12733), `<provider>/<name>`. Default: the active profile. */
232
+ readonly profile?: string;
188
233
  }
189
234
  /** Result of {@link askDecideDebug}. */
190
235
  export interface DecideAskResult {
236
+ /** The yes/no question that was asked (so a human render can show it). */
237
+ readonly question?: string;
238
+ /** The state that was judged (echoed for the human render). */
239
+ readonly state?: string;
240
+ /** Id of the profile asked through, when one was configured (T12733). */
241
+ readonly profile?: string;
191
242
  /** The typed answer. */
192
243
  readonly answer: DecisionAnswer;
193
244
  /** `provider`, `cache` or `fallback`. */
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/decide/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/decide/operations.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,15 @@
8
8
  * @task T12491
9
9
  * @epic T12486
10
10
  */
11
- import { JEV_MINIMUM_CAPABILITIES, } from '@cleocode/contracts';
11
+ import { DECIDE_DEFAULT_PROFILE_NAME, DECIDE_PROFILE_DEFAULT_URL, JEV_MINIMUM_CAPABILITIES, } from '@cleocode/contracts';
12
12
  import { getProjectRoot } from '../paths.js';
13
13
  import { createJsonlDecisionAudit, } from './audit.js';
14
14
  import { decide } from './client.js';
15
- import { clearDecideCredentials, DecideCredentialsError, describeDecideCredentials, loadDecideConnection, sameDecideHost, saveDecideCredentials, } from './credentials.js';
16
- import { detectJevCapabilities, listJevModels } from './jev-wire.js';
15
+ import { clearDecideCredentials, DecideCredentialsError, decideProfileId, describeDecideCredentials, describeDecideProfile, isValidDecideProfileName, listDecideProfiles, loadDecideConnection, loadDecideProfile, parseDecideProfileRef, sameDecideHost, saveDecideCredentials, } from './credentials.js';
16
+ import { listJevModels } from './jev-wire.js';
17
17
  import { DecisionProviderError } from './provider.js';
18
- import { providerKeyHash, readProviderState, USAGE_REFRESH_MS, writeProviderState, } from './provider-state.js';
19
- import { DECISION_PROVIDER_PRESETS, inferDecisionProviderKind } from './providers.js';
18
+ import { refreshProviderState } from './provider-state.js';
19
+ import { DECISION_PROVIDER_PRESETS, inferDecisionProviderKind, presetBaseUrl, } from './providers.js';
20
20
  import { DECIDE_ASK_DECISION_SITE, DECISION_SITES } from './sites/registry.js';
21
21
  import { createFileSpendLedger, DEFAULT_MONTHLY_SPEND_CAP_MICROS, inspectSpendLedger, MONTHLY_SPEND_CAP_KEY, resetSpendLedger, } from './spend.js';
22
22
  /** Default deadline for the `GET /v1/models` probe, ms. */
@@ -105,6 +105,7 @@ export async function probeDecideProvider(opts = {}) {
105
105
  };
106
106
  }
107
107
  const base = {
108
+ ...(sealed.profile ? { profile: sealed.profile } : {}),
108
109
  baseUrl: sealed.baseUrl,
109
110
  keyPreview: sealed.keyPreview,
110
111
  ...(sealed.model ? { model: sealed.model } : {}),
@@ -116,24 +117,14 @@ export async function probeDecideProvider(opts = {}) {
116
117
  const started = performance.now();
117
118
  const signal = AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_DECIDE_PROBE_TIMEOUT_MS);
118
119
  // Capabilities + usage: reuse the cached read unless it is older than 10 minutes.
119
- const identity = sealed.connection();
120
- const cached = readProviderState(identity, opts.providerStatePath);
121
- let state = cached;
122
- if (!cached ||
123
- opts.refreshCapabilities === true ||
124
- now() - cached.detectedAt >= USAGE_REFRESH_MS) {
125
- const detected = await detectJevCapabilities(sealed.connection(), signal, {
126
- fetch: opts.fetch,
127
- });
128
- state = {
129
- baseUrl: sealed.baseUrl,
130
- keyHash: providerKeyHash(identity.apiKey),
131
- detectedAt: now(),
132
- capabilities: detected.capabilities,
133
- ...(detected.usage ? { usage: detected.usage } : {}),
134
- };
135
- writeProviderState(state, opts.providerStatePath);
136
- }
120
+ // Shared with decideBatch's lazy detection: at most one detection per
121
+ // identity per USAGE_REFRESH_MS, transient failures keep the old state.
122
+ const state = await refreshProviderState(sealed.connection(), signal, {
123
+ ...(opts.fetch ? { fetch: opts.fetch } : {}),
124
+ now,
125
+ ...(opts.providerStatePath !== undefined ? { path: opts.providerStatePath } : {}),
126
+ force: opts.refreshCapabilities === true,
127
+ });
137
128
  const extras = {
138
129
  capabilities: state?.capabilities ?? JEV_MINIMUM_CAPABILITIES,
139
130
  ...(state?.usage
@@ -170,31 +161,34 @@ export async function probeDecideProvider(opts = {}) {
170
161
  };
171
162
  }
172
163
  }
173
- /** Resolve the provider kind for {@link configureDecide}. */
174
- function resolveProviderKind(input, stored) {
175
- if (input.provider)
176
- return input.provider;
164
+ /** The profile {@link configureDecide} writes. */
165
+ function configureTarget(input) {
166
+ const raw = input.profile?.trim();
167
+ if (raw?.includes('/')) {
168
+ const ref = parseDecideProfileRef(raw);
169
+ if (!ref) {
170
+ throw new DecideCredentialsError(`invalid profile '${raw}' (use <provider>/<name>, e.g. layahost/work)`);
171
+ }
172
+ if (input.provider && input.provider !== ref.provider) {
173
+ throw new DecideCredentialsError(`profile '${ref.id}' belongs to ${ref.provider}, not ${input.provider}`);
174
+ }
175
+ return ref;
176
+ }
177
+ const active = listDecideProfiles().active;
178
+ const activeRef = active ? parseDecideProfileRef(active) : null;
177
179
  const url = input.baseUrl?.trim();
178
- if (!url)
179
- return stored?.provider ?? 'layahost';
180
- if (stored && sameDecideHost(stored.baseUrl, url))
181
- return stored.provider;
182
- return inferDecisionProviderKind(url);
183
- }
184
- /** Resolve the base URL for {@link configureDecide}; throws when `jev` has none. */
185
- function resolveBaseUrl(input, provider, stored) {
186
- const explicit = input.baseUrl?.trim();
187
- if (explicit)
188
- return explicit;
189
- if (stored && stored.provider === provider)
190
- return stored.baseUrl;
191
- const preset = DECISION_PROVIDER_PRESETS[provider];
192
- if (preset.defaultBaseUrl)
193
- return preset.defaultBaseUrl;
194
- throw new DecideCredentialsError(`the ${provider} provider needs a base URL: pass --url https://your-provider.example (https, or http only for localhost)`);
180
+ const provider = input.provider ??
181
+ (url && url !== DECIDE_PROFILE_DEFAULT_URL
182
+ ? inferDecisionProviderKind(url)
183
+ : (activeRef?.provider ?? 'layahost'));
184
+ const name = raw || (activeRef?.provider === provider ? activeRef.name : DECIDE_DEFAULT_PROFILE_NAME);
185
+ if (!isValidDecideProfileName(name)) {
186
+ throw new DecideCredentialsError(`invalid profile name '${name}' (use 1-32 lowercase letters, digits or -, starting and ending with a letter or digit)`);
187
+ }
188
+ return { provider, name, id: decideProfileId(provider, name) };
195
189
  }
196
190
  /**
197
- * Store the provider settings, merging omitted values with the stored ones,
191
+ * Store a profile's settings, merging omitted values with the stored ones,
198
192
  * then probe the provider and re-detect its capabilities so its extensions
199
193
  * apply immediately.
200
194
  *
@@ -209,21 +203,37 @@ function resolveBaseUrl(input, provider, stored) {
209
203
  * A URL whose host differs from the stored one must come with a fresh key:
210
204
  * the stored key is never re-used (or sent in the model probe) for a new host.
211
205
  *
212
- * @param input - Provider, URL, key, optional model.
206
+ * Profiles (T12733): the settings go to one profile, `<provider>/<name>`
207
+ * (see {@link DecideConfigureInput.profile}); every other profile is kept,
208
+ * and a new profile needs its own key. The URL is stored as `default` unless
209
+ * overridden. The post-save probe targets that profile, active or not.
210
+ *
211
+ * @param input - Provider, URL, key, optional model, profile and activation.
213
212
  * @returns Secret-free summary plus the model's provenance and the probe verdict.
214
- * @throws {DecideCredentialsError} On an invalid URL, `jev` without a URL, a
215
- * blank key, an invalid model name, or a host change without a fresh key.
213
+ * @throws {DecideCredentialsError} On an invalid URL or profile, a provider
214
+ * without a preset URL and no override, a blank key, an invalid model name,
215
+ * a new profile without a key, or a host change without a fresh key.
216
216
  */
217
217
  export async function configureDecide(input) {
218
- const stored = loadDecideConnection();
219
- const provider = resolveProviderKind(input, stored);
220
- const baseUrl = resolveBaseUrl(input, provider, stored);
218
+ const target = configureTarget(input);
219
+ const stored = loadDecideProfile(target.id);
220
+ const storedSetting = stored && describeDecideProfile(target.id).urlSource === 'override'
221
+ ? stored.baseUrl
222
+ : DECIDE_PROFILE_DEFAULT_URL;
223
+ const urlSetting = input.baseUrl?.trim() || storedSetting;
224
+ const baseUrl = urlSetting === DECIDE_PROFILE_DEFAULT_URL ? presetBaseUrl(target.provider) : urlSetting;
225
+ if (!baseUrl) {
226
+ throw new DecideCredentialsError(`the ${target.provider} provider has no default URL: pass --url https://your-provider.example (https, or http only for localhost)`);
227
+ }
221
228
  const freshKey = input.apiKey?.trim();
229
+ if (!freshKey && !stored) {
230
+ throw new DecideCredentialsError(`profile '${target.id}' has no stored key; pass --key-stdin (keys are never copied between profiles)`);
231
+ }
222
232
  if (!freshKey && stored && !sameDecideHost(stored.baseUrl, baseUrl)) {
223
233
  throw new DecideCredentialsError('changing the provider host requires a fresh key; pass --key-stdin (the stored key is never sent to a new host)');
224
234
  }
225
235
  const apiKey = freshKey || stored?.connection().apiKey || '';
226
- const preset = DECISION_PROVIDER_PRESETS[provider];
236
+ const preset = DECISION_PROVIDER_PRESETS[target.provider];
227
237
  const explicit = input.model?.trim();
228
238
  let model;
229
239
  let modelSource = 'none';
@@ -239,19 +249,25 @@ export async function configureDecide(input) {
239
249
  model = preset.defaultModel;
240
250
  modelSource = 'preset';
241
251
  }
242
- const saved = await saveDecideCredentials({
243
- provider,
244
- baseUrl,
252
+ const settings = {
253
+ provider: target.provider,
254
+ profile: target.id,
255
+ baseUrl: urlSetting,
245
256
  apiKey,
257
+ };
258
+ const saved = await saveDecideCredentials({
259
+ ...settings,
246
260
  ...(model ? { model } : {}),
261
+ ...(input.activate !== undefined ? { activate: input.activate } : {}),
247
262
  });
248
263
  const probe = await probeDecideProvider({
249
- connection: loadDecideConnection(),
264
+ connection: loadDecideProfile(target.id),
250
265
  fetch: input.fetch,
251
266
  timeoutMs: input.timeoutMs,
252
267
  refreshCapabilities: true,
253
268
  });
254
269
  const verdict = {
270
+ active: saved.activeProfile === target.id,
255
271
  providerState: probe.state,
256
272
  ...(probe.capabilities ? { capabilities: probe.capabilities } : {}),
257
273
  };
@@ -267,9 +283,45 @@ export async function configureDecide(input) {
267
283
  warning: `No model stored (${why}). ${NO_MODEL_WARNING}`,
268
284
  };
269
285
  }
270
- const withModel = await saveDecideCredentials({ provider, baseUrl, apiKey, model: first });
286
+ const withModel = await saveDecideCredentials({
287
+ ...settings,
288
+ model: first,
289
+ activate: verdict.active,
290
+ });
271
291
  return { ...withModel, modelSource: 'provider-listing', ...verdict };
272
292
  }
293
+ /**
294
+ * `cleo decide profiles`: every stored profile with the active one marked and
295
+ * keys masked; with `probe`, each profile's reachability (probed in parallel).
296
+ * Never throws.
297
+ *
298
+ * @param opts - Whether to probe, plus the injectable `fetch` and deadline.
299
+ * @returns The secret-free profile list.
300
+ */
301
+ export async function listDecideProfilesReport(opts = {}) {
302
+ const list = listDecideProfiles();
303
+ if (opts.probe !== true)
304
+ return list;
305
+ const profiles = await Promise.all(list.profiles.map(async (summary) => {
306
+ const result = await probeDecideProvider({
307
+ connection: loadDecideProfile(summary.id),
308
+ spend: null,
309
+ ...(opts.fetch ? { fetch: opts.fetch } : {}),
310
+ ...(opts.timeoutMs !== undefined ? { timeoutMs: opts.timeoutMs } : {}),
311
+ ...(opts.providerStatePath !== undefined
312
+ ? { providerStatePath: opts.providerStatePath }
313
+ : {}),
314
+ });
315
+ const probe = {
316
+ state: result.state,
317
+ ...(result.httpStatus !== undefined ? { httpStatus: result.httpStatus } : {}),
318
+ ...(result.latencyMs !== undefined ? { latencyMs: result.latencyMs } : {}),
319
+ ...(result.detail ? { detail: result.detail } : {}),
320
+ };
321
+ return { ...summary, probe };
322
+ }));
323
+ return { ...list, profiles };
324
+ }
273
325
  /**
274
326
  * Remove the stored settings (and rotated backups of them).
275
327
  *
@@ -313,7 +365,10 @@ function teeAudit(projectRoot) {
313
365
  * @returns The typed answer with source, fallback reason, latency and cost.
314
366
  */
315
367
  export async function askDecideDebug(input) {
316
- const sealed = loadDecideConnection();
368
+ const sealed = input.profile ? loadDecideProfile(input.profile) : loadDecideConnection();
369
+ const profile = input.profile
370
+ ? parseDecideProfileRef(input.profile)?.id
371
+ : (listDecideProfiles().active ?? undefined);
317
372
  const audit = teeAudit(input.projectRoot);
318
373
  const outcome = await decide(DECIDE_ASK_DECISION_SITE.id, { state: input.state, questions: { answer: { type: 'noul', criteria: input.question } } }, () => ({ answer: NEUTRAL_NOUL }), {
319
374
  connection: sealed?.connection() ?? null,
@@ -323,6 +378,9 @@ export async function askDecideDebug(input) {
323
378
  });
324
379
  const reason = audit.last()?.fallbackReason;
325
380
  return {
381
+ question: input.question,
382
+ state: input.state,
383
+ ...(sealed && profile ? { profile } : {}),
326
384
  answer: outcome.answers['answer'] ?? NEUTRAL_NOUL,
327
385
  source: outcome.source,
328
386
  ...(reason ? { fallbackReason: reason } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/decide/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/decide/operations.ts"],"names":[],"mappings":"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"}
@@ -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
  */