@cleocode/core 2026.9.22 → 2026.9.23

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 (316) hide show
  1. package/dist/build-provenance.json +6 -0
  2. package/dist/decide/audit.d.ts +7 -1
  3. package/dist/decide/audit.d.ts.map +1 -1
  4. package/dist/decide/audit.js.map +1 -1
  5. package/dist/decide/client.d.ts +46 -4
  6. package/dist/decide/client.d.ts.map +1 -1
  7. package/dist/decide/client.js +328 -33
  8. package/dist/decide/client.js.map +1 -1
  9. package/dist/decide/credentials.d.ts +28 -4
  10. package/dist/decide/credentials.d.ts.map +1 -1
  11. package/dist/decide/credentials.js +50 -12
  12. package/dist/decide/credentials.js.map +1 -1
  13. package/dist/decide/index.d.ts +10 -4
  14. package/dist/decide/index.d.ts.map +1 -1
  15. package/dist/decide/index.js +10 -4
  16. package/dist/decide/index.js.map +1 -1
  17. package/dist/decide/jev-wire.d.ts +100 -8
  18. package/dist/decide/jev-wire.d.ts.map +1 -1
  19. package/dist/decide/jev-wire.js +402 -55
  20. package/dist/decide/jev-wire.js.map +1 -1
  21. package/dist/decide/operations.d.ts +97 -20
  22. package/dist/decide/operations.d.ts.map +1 -1
  23. package/dist/decide/operations.js +180 -28
  24. package/dist/decide/operations.js.map +1 -1
  25. package/dist/decide/provider-state.d.ts +89 -0
  26. package/dist/decide/provider-state.d.ts.map +1 -0
  27. package/dist/decide/provider-state.js +134 -0
  28. package/dist/decide/provider-state.js.map +1 -0
  29. package/dist/decide/provider.d.ts +26 -5
  30. package/dist/decide/provider.d.ts.map +1 -1
  31. package/dist/decide/provider.js.map +1 -1
  32. package/dist/decide/providers.d.ts +58 -0
  33. package/dist/decide/providers.d.ts.map +1 -0
  34. package/dist/decide/providers.js +69 -0
  35. package/dist/decide/providers.js.map +1 -0
  36. package/dist/decide/site.d.ts +2 -2
  37. package/dist/decide/site.d.ts.map +1 -1
  38. package/dist/decide/site.js +2 -0
  39. package/dist/decide/site.js.map +1 -1
  40. package/dist/decide/sites/list.d.ts +46 -0
  41. package/dist/decide/sites/list.d.ts.map +1 -0
  42. package/dist/decide/sites/list.js +206 -0
  43. package/dist/decide/sites/list.js.map +1 -0
  44. package/dist/decide/sites/registry.d.ts +130 -0
  45. package/dist/decide/sites/registry.d.ts.map +1 -0
  46. package/dist/decide/sites/registry.js +375 -0
  47. package/dist/decide/sites/registry.js.map +1 -0
  48. package/dist/decide/spend.d.ts +196 -0
  49. package/dist/decide/spend.d.ts.map +1 -0
  50. package/dist/decide/spend.js +387 -0
  51. package/dist/decide/spend.js.map +1 -0
  52. package/dist/decide/wizard.d.ts +53 -0
  53. package/dist/decide/wizard.d.ts.map +1 -0
  54. package/dist/decide/wizard.js +144 -0
  55. package/dist/decide/wizard.js.map +1 -0
  56. package/dist/docs/docs-audit.d.ts.map +1 -1
  57. package/dist/docs/docs-audit.js +1 -2
  58. package/dist/docs/docs-audit.js.map +1 -1
  59. package/dist/docs/export-document.js +775 -415
  60. package/dist/docs/export-document.js.map +3 -3
  61. package/dist/index.d.ts +2 -2
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/init/scaffold-workflows.d.ts.map +1 -1
  66. package/dist/init/scaffold-workflows.js +6 -3
  67. package/dist/init/scaffold-workflows.js.map +1 -1
  68. package/dist/init/upgrade-workflows.d.ts.map +1 -1
  69. package/dist/init/upgrade-workflows.js +6 -3
  70. package/dist/init/upgrade-workflows.js.map +1 -1
  71. package/dist/internal.d.ts +1 -1
  72. package/dist/internal.d.ts.map +1 -1
  73. package/dist/internal.js +1 -1
  74. package/dist/internal.js.map +1 -1
  75. package/dist/llm/plugin-facade.js +886 -526
  76. package/dist/llm/plugin-facade.js.map +3 -3
  77. package/dist/memory/decision-contradiction.d.ts +3 -3
  78. package/dist/memory/decision-contradiction.d.ts.map +1 -1
  79. package/dist/memory/decision-contradiction.js +4 -3
  80. package/dist/memory/decision-contradiction.js.map +1 -1
  81. package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
  82. package/dist/memory/graph-memory-bridge.js +2 -0
  83. package/dist/memory/graph-memory-bridge.js.map +1 -1
  84. package/dist/memory/observation-type-decision.d.ts +2 -2
  85. package/dist/memory/observation-type-decision.d.ts.map +1 -1
  86. package/dist/memory/observation-type-decision.js +3 -2
  87. package/dist/memory/observation-type-decision.js.map +1 -1
  88. package/dist/memory/pipeline-manifest-sqlite.d.ts +111 -0
  89. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  90. package/dist/memory/pipeline-manifest-sqlite.js +230 -2
  91. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  92. package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
  93. package/dist/nexus/migrations/M-split-graph.js +4 -0
  94. package/dist/nexus/migrations/M-split-graph.js.map +1 -1
  95. package/dist/nexus/store.d.ts.map +1 -1
  96. package/dist/nexus/store.js +2 -0
  97. package/dist/nexus/store.js.map +1 -1
  98. package/dist/orchestrate/pivot.d.ts.map +1 -1
  99. package/dist/orchestrate/pivot.js +13 -8
  100. package/dist/orchestrate/pivot.js.map +1 -1
  101. package/dist/orchestrate/plan.d.ts.map +1 -1
  102. package/dist/orchestrate/plan.js +3 -0
  103. package/dist/orchestrate/plan.js.map +1 -1
  104. package/dist/orchestration/lead-rollup.js +14 -2
  105. package/dist/orchestration/lead-rollup.js.map +1 -1
  106. package/dist/orchestration/owner-decision-readiness.d.ts +2 -2
  107. package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -1
  108. package/dist/orchestration/owner-decision-readiness.js +3 -2
  109. package/dist/orchestration/owner-decision-readiness.js.map +1 -1
  110. package/dist/orchestration/validate-spawn.d.ts.map +1 -1
  111. package/dist/orchestration/validate-spawn.js +2 -0
  112. package/dist/orchestration/validate-spawn.js.map +1 -1
  113. package/dist/project-scope.d.ts +16 -0
  114. package/dist/project-scope.d.ts.map +1 -1
  115. package/dist/project-scope.js +38 -2
  116. package/dist/project-scope.js.map +1 -1
  117. package/dist/release/github-pr.d.ts.map +1 -1
  118. package/dist/release/github-pr.js +2 -1
  119. package/dist/release/github-pr.js.map +1 -1
  120. package/dist/routing/capability-matrix.d.ts.map +1 -1
  121. package/dist/routing/capability-matrix.js +7 -0
  122. package/dist/routing/capability-matrix.js.map +1 -1
  123. package/dist/selfimprove/fix-gen.js +895 -535
  124. package/dist/selfimprove/fix-gen.js.map +3 -3
  125. package/dist/sessions/briefing.d.ts.map +1 -1
  126. package/dist/sessions/briefing.js +23 -62
  127. package/dist/sessions/briefing.js.map +1 -1
  128. package/dist/sessions/focus-state-store.d.ts +6 -1
  129. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  130. package/dist/sessions/focus-state-store.js +5 -2
  131. package/dist/sessions/focus-state-store.js.map +1 -1
  132. package/dist/setup/config-json-merge.d.ts +28 -0
  133. package/dist/setup/config-json-merge.d.ts.map +1 -1
  134. package/dist/setup/config-json-merge.js +51 -0
  135. package/dist/setup/config-json-merge.js.map +1 -1
  136. package/dist/setup/index.d.ts +13 -10
  137. package/dist/setup/index.d.ts.map +1 -1
  138. package/dist/setup/index.js +15 -10
  139. package/dist/setup/index.js.map +1 -1
  140. package/dist/setup/sections/llm.js +1 -1
  141. package/dist/setup/sections/llm.js.map +1 -1
  142. package/dist/setup/sections/system-one.d.ts +28 -0
  143. package/dist/setup/sections/system-one.d.ts.map +1 -0
  144. package/dist/setup/sections/system-one.js +53 -0
  145. package/dist/setup/sections/system-one.js.map +1 -0
  146. package/dist/setup/wizard.d.ts +15 -1
  147. package/dist/setup/wizard.d.ts.map +1 -1
  148. package/dist/setup/wizard.js +15 -0
  149. package/dist/setup/wizard.js.map +1 -1
  150. package/dist/skills/prune-bundled.d.ts +40 -1
  151. package/dist/skills/prune-bundled.d.ts.map +1 -1
  152. package/dist/skills/prune-bundled.js +117 -1
  153. package/dist/skills/prune-bundled.js.map +1 -1
  154. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  155. package/dist/store/agent-registry-accessor.js +2 -0
  156. package/dist/store/agent-registry-accessor.js.map +1 -1
  157. package/dist/store/backup-pack.js +1 -1
  158. package/dist/store/backup-pack.js.map +1 -1
  159. package/dist/store/backup.d.ts +15 -1
  160. package/dist/store/backup.d.ts.map +1 -1
  161. package/dist/store/backup.js +18 -2
  162. package/dist/store/backup.js.map +1 -1
  163. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  164. package/dist/store/conduit-sqlite.js +3 -0
  165. package/dist/store/conduit-sqlite.js.map +1 -1
  166. package/dist/store/credential-transfer.d.ts.map +1 -1
  167. package/dist/store/credential-transfer.js +2 -0
  168. package/dist/store/credential-transfer.js.map +1 -1
  169. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  170. package/dist/store/cross-db-cleanup.js +2 -0
  171. package/dist/store/cross-db-cleanup.js.map +1 -1
  172. package/dist/store/dual-scope-db.d.ts.map +1 -1
  173. package/dist/store/dual-scope-db.js +13 -2
  174. package/dist/store/dual-scope-db.js.map +1 -1
  175. package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
  176. package/dist/store/migrate-signaldock-to-conduit.js +3 -0
  177. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -1
  178. package/dist/store/migration-manager.d.ts.map +1 -1
  179. package/dist/store/migration-manager.js +37 -3
  180. package/dist/store/migration-manager.js.map +1 -1
  181. package/dist/store/migration-sqlite.d.ts.map +1 -1
  182. package/dist/store/migration-sqlite.js +2 -0
  183. package/dist/store/migration-sqlite.js.map +1 -1
  184. package/dist/store/nexus-sqlite.d.ts.map +1 -1
  185. package/dist/store/nexus-sqlite.js +3 -0
  186. package/dist/store/nexus-sqlite.js.map +1 -1
  187. package/dist/store/open-cleo-db.d.ts.map +1 -1
  188. package/dist/store/open-cleo-db.js +3 -0
  189. package/dist/store/open-cleo-db.js.map +1 -1
  190. package/dist/store/portable-bundle-import.d.ts.map +1 -1
  191. package/dist/store/portable-bundle-import.js +2 -0
  192. package/dist/store/portable-bundle-import.js.map +1 -1
  193. package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
  194. package/dist/store/portable-bundle-relocate.js +2 -0
  195. package/dist/store/portable-bundle-relocate.js.map +1 -1
  196. package/dist/store/portable-bundle-scan.js +1 -1
  197. package/dist/store/portable-bundle-scan.js.map +1 -1
  198. package/dist/store/ports/domain-binding.d.ts.map +1 -1
  199. package/dist/store/ports/domain-binding.js +5 -0
  200. package/dist/store/ports/domain-binding.js.map +1 -1
  201. package/dist/store/split-brain-import.d.ts.map +1 -1
  202. package/dist/store/split-brain-import.js +2 -0
  203. package/dist/store/split-brain-import.js.map +1 -1
  204. package/dist/store/sqlite-data-accessor.js +7 -0
  205. package/dist/store/sqlite-data-accessor.js.map +1 -1
  206. package/dist/store/sqlite-native.d.ts.map +1 -1
  207. package/dist/store/sqlite-native.js +1 -0
  208. package/dist/store/sqlite-native.js.map +1 -1
  209. package/dist/store/sqlite.d.ts.map +1 -1
  210. package/dist/store/sqlite.js +5 -0
  211. package/dist/store/sqlite.js.map +1 -1
  212. package/dist/store/worktree-build-guard.d.ts +191 -0
  213. package/dist/store/worktree-build-guard.d.ts.map +1 -0
  214. package/dist/store/worktree-build-guard.js +486 -0
  215. package/dist/store/worktree-build-guard.js.map +1 -0
  216. package/dist/store/worktree-isolation-guard.d.ts +27 -0
  217. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  218. package/dist/store/worktree-isolation-guard.js +67 -1
  219. package/dist/store/worktree-isolation-guard.js.map +1 -1
  220. package/dist/store/writer-lease.d.ts.map +1 -1
  221. package/dist/store/writer-lease.js +2 -0
  222. package/dist/store/writer-lease.js.map +1 -1
  223. package/dist/system/backup.d.ts +6 -2
  224. package/dist/system/backup.d.ts.map +1 -1
  225. package/dist/system/backup.js +6 -3
  226. package/dist/system/backup.js.map +1 -1
  227. package/dist/task-tools/index.d.ts +4 -2
  228. package/dist/task-tools/index.d.ts.map +1 -1
  229. package/dist/task-tools/index.js +3 -2
  230. package/dist/task-tools/index.js.map +1 -1
  231. package/dist/task-tools/score-task-priority.d.ts +93 -18
  232. package/dist/task-tools/score-task-priority.d.ts.map +1 -1
  233. package/dist/task-tools/score-task-priority.js +193 -81
  234. package/dist/task-tools/score-task-priority.js.map +1 -1
  235. package/dist/tasks/affected-packages.d.ts +5 -1
  236. package/dist/tasks/affected-packages.d.ts.map +1 -1
  237. package/dist/tasks/affected-packages.js +21 -3
  238. package/dist/tasks/affected-packages.js.map +1 -1
  239. package/dist/tasks/analyze.d.ts +29 -1
  240. package/dist/tasks/analyze.d.ts.map +1 -1
  241. package/dist/tasks/analyze.js +45 -34
  242. package/dist/tasks/analyze.js.map +1 -1
  243. package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
  244. package/dist/tasks/backfill-child-projections.js +4 -1
  245. package/dist/tasks/backfill-child-projections.js.map +1 -1
  246. package/dist/tasks/change-set.d.ts.map +1 -1
  247. package/dist/tasks/change-set.js +16 -3
  248. package/dist/tasks/change-set.js.map +1 -1
  249. package/dist/tasks/command-line.d.ts +54 -0
  250. package/dist/tasks/command-line.d.ts.map +1 -0
  251. package/dist/tasks/command-line.js +151 -0
  252. package/dist/tasks/command-line.js.map +1 -0
  253. package/dist/tasks/component-pr.d.ts.map +1 -1
  254. package/dist/tasks/component-pr.js +97 -12
  255. package/dist/tasks/component-pr.js.map +1 -1
  256. package/dist/tasks/delete.d.ts.map +1 -1
  257. package/dist/tasks/delete.js +20 -0
  258. package/dist/tasks/delete.js.map +1 -1
  259. package/dist/tasks/duplicate-detector.d.ts +3 -3
  260. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  261. package/dist/tasks/duplicate-detector.js +4 -3
  262. package/dist/tasks/duplicate-detector.js.map +1 -1
  263. package/dist/tasks/engine-wrap-ops.d.ts +29 -0
  264. package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
  265. package/dist/tasks/engine-wrap-ops.js +40 -0
  266. package/dist/tasks/engine-wrap-ops.js.map +1 -1
  267. package/dist/tasks/engine-wrap.d.ts +1 -1
  268. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  269. package/dist/tasks/engine-wrap.js +1 -1
  270. package/dist/tasks/engine-wrap.js.map +1 -1
  271. package/dist/tasks/evidence.d.ts +2 -0
  272. package/dist/tasks/evidence.d.ts.map +1 -1
  273. package/dist/tasks/evidence.js +30 -4
  274. package/dist/tasks/evidence.js.map +1 -1
  275. package/dist/tasks/gate-runner.d.ts.map +1 -1
  276. package/dist/tasks/gate-runner.js +48 -12
  277. package/dist/tasks/gate-runner.js.map +1 -1
  278. package/dist/tasks/index.d.ts +1 -1
  279. package/dist/tasks/index.d.ts.map +1 -1
  280. package/dist/tasks/index.js +1 -1
  281. package/dist/tasks/index.js.map +1 -1
  282. package/dist/tasks/ops.d.ts +1 -0
  283. package/dist/tasks/ops.d.ts.map +1 -1
  284. package/dist/tasks/ranking-audit.d.ts +122 -0
  285. package/dist/tasks/ranking-audit.d.ts.map +1 -0
  286. package/dist/tasks/ranking-audit.js +193 -0
  287. package/dist/tasks/ranking-audit.js.map +1 -0
  288. package/dist/tasks/task-analyze.d.ts.map +1 -1
  289. package/dist/tasks/task-analyze.js +19 -32
  290. package/dist/tasks/task-analyze.js.map +1 -1
  291. package/dist/tasks/task-next.d.ts +44 -2
  292. package/dist/tasks/task-next.d.ts.map +1 -1
  293. package/dist/tasks/task-next.js +80 -102
  294. package/dist/tasks/task-next.js.map +1 -1
  295. package/dist/tasks/task-ops.d.ts +1 -1
  296. package/dist/tasks/task-ops.d.ts.map +1 -1
  297. package/dist/tasks/task-ops.js +1 -1
  298. package/dist/tasks/task-ops.js.map +1 -1
  299. package/dist/tasks/tool-resolver.d.ts +7 -1
  300. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  301. package/dist/tasks/tool-resolver.js +24 -10
  302. package/dist/tasks/tool-resolver.js.map +1 -1
  303. package/dist/tasks/update.d.ts +8 -2
  304. package/dist/tasks/update.d.ts.map +1 -1
  305. package/dist/tasks/update.js +28 -1
  306. package/dist/tasks/update.js.map +1 -1
  307. package/dist/telemetry/sqlite.d.ts.map +1 -1
  308. package/dist/telemetry/sqlite.js +2 -0
  309. package/dist/telemetry/sqlite.js.map +1 -1
  310. package/dist/validation/doctor/checks.d.ts.map +1 -1
  311. package/dist/validation/doctor/checks.js +2 -2
  312. package/dist/validation/doctor/checks.js.map +1 -1
  313. package/package.json +14 -14
  314. package/schemas/config.schema.json +13 -0
  315. package/templates/CLEO-INJECTION.md +1 -1
  316. package/templates/CLEO-REFERENCE.md +5 -1
@@ -0,0 +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"}
@@ -0,0 +1,134 @@
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.
7
+ *
8
+ * Detection (`detectJevCapabilities`) calls `GET /v1/usage` and
9
+ * `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.
14
+ *
15
+ * @task T12664
16
+ * @epic T12486
17
+ */
18
+ import { createHash } from 'node:crypto';
19
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
20
+ import { dirname, join } from 'node:path';
21
+ import { getCleoHome } from '@cleocode/paths';
22
+ /** Minimum interval between usage/capability refreshes: 10 minutes. */
23
+ export const USAGE_REFRESH_MS = 10 * 60 * 1000;
24
+ /** How long the client trusts its in-process copy of the file. */
25
+ const MEMO_MS = 60_000;
26
+ /** Hex characters of the key's sha256 kept in the state (64 bits). */
27
+ const KEY_HASH_CHARS = 16;
28
+ /**
29
+ * Non-reversible short identifier of an API key: the first
30
+ * {@link KEY_HASH_CHARS} hex characters of its sha256. Enough to tell keys
31
+ * apart in the state file; useless for recovering the key.
32
+ *
33
+ * @param apiKey - The API key.
34
+ * @returns Truncated hex sha256.
35
+ */
36
+ export function providerKeyHash(apiKey) {
37
+ return createHash('sha256').update(apiKey, 'utf8').digest('hex').slice(0, KEY_HASH_CHARS);
38
+ }
39
+ /**
40
+ * Default location: `<cleoHome>/decide/provider-state.json`.
41
+ *
42
+ * @returns Absolute path.
43
+ */
44
+ export function defaultProviderStatePath() {
45
+ return join(getCleoHome(), 'decide', 'provider-state.json');
46
+ }
47
+ /** Structural check of a parsed state; anything else is ignored. */
48
+ function isProviderState(value) {
49
+ if (value === null || typeof value !== 'object')
50
+ return false;
51
+ const baseUrl = Reflect.get(value, 'baseUrl');
52
+ const keyHash = Reflect.get(value, 'keyHash');
53
+ const detectedAt = Reflect.get(value, 'detectedAt');
54
+ const capabilities = Reflect.get(value, 'capabilities');
55
+ return (typeof baseUrl === 'string' &&
56
+ typeof keyHash === 'string' &&
57
+ typeof detectedAt === 'number' &&
58
+ capabilities !== null &&
59
+ typeof capabilities === 'object' &&
60
+ typeof Reflect.get(capabilities, 'wire') === 'string' &&
61
+ typeof Reflect.get(capabilities, 'maxQuestionsPerRequest') === 'number' &&
62
+ typeof Reflect.get(capabilities, 'maxStateChars') === 'number');
63
+ }
64
+ /**
65
+ * Read the cached state for a provider URL and key.
66
+ *
67
+ * @param identity - The configured base URL and API key.
68
+ * @param path - State file. Default {@link defaultProviderStatePath}.
69
+ * @returns The state, or `null` when absent, unreadable, or for another URL
70
+ * or key (a state written before keys were recorded counts as another key).
71
+ */
72
+ export function readProviderState(identity, path = defaultProviderStatePath()) {
73
+ 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;
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * Write the cached state (atomic rename). Never throws.
87
+ *
88
+ * @param state - State to store.
89
+ * @param path - State file. Default {@link defaultProviderStatePath}.
90
+ */
91
+ export function writeProviderState(state, path = defaultProviderStatePath()) {
92
+ try {
93
+ mkdirSync(dirname(path), { recursive: true });
94
+ const tmp = `${path}.${process.pid}.tmp`;
95
+ writeFileSync(tmp, JSON.stringify(state), 'utf-8');
96
+ renameSync(tmp, path);
97
+ memo = null;
98
+ }
99
+ catch {
100
+ /* best effort: the next status run detects again */
101
+ }
102
+ }
103
+ let memo = null;
104
+ /**
105
+ * Capabilities the client may use for a provider URL and key, memoised per
106
+ * process for a minute so the hot path does not read the file on every
107
+ * decision.
108
+ *
109
+ * @param identity - The configured base URL and API key.
110
+ * @param now - Clock, epoch ms.
111
+ * @param path - State file. Default {@link defaultProviderStatePath}.
112
+ * @returns Detected capabilities, or `null` (→ the Jev minimum).
113
+ */
114
+ export function cachedCapabilities(identity, now = Date.now(), path = defaultProviderStatePath()) {
115
+ const keyHash = providerKeyHash(identity.apiKey);
116
+ if (memo &&
117
+ memo.baseUrl === identity.baseUrl &&
118
+ memo.keyHash === keyHash &&
119
+ now - memo.at < MEMO_MS) {
120
+ return memo.caps;
121
+ }
122
+ const caps = readProviderState(identity, path)?.capabilities ?? null;
123
+ memo = { baseUrl: identity.baseUrl, keyHash, at: now, caps };
124
+ return caps;
125
+ }
126
+ /**
127
+ * Clear the in-process memo. Tests only.
128
+ *
129
+ * @internal
130
+ */
131
+ export function _resetProviderStateMemoForTest() {
132
+ memo = null;
133
+ }
134
+ //# sourceMappingURL=provider-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-state.js","sourceRoot":"","sources":["../../src/decide/provider-state.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  * @task T12490
15
15
  * @epic T12486
16
16
  */
17
- import type { DecisionOutcome, DecisionProviderConfig, DecisionRequest } from '@cleocode/contracts';
17
+ import type { DecisionBatchItem, DecisionOutcome, DecisionProviderCapabilities, DecisionProviderConfig, DecisionProviderUsage, DecisionRequest } from '@cleocode/contracts';
18
18
  /**
19
19
  * Connection settings for a key-authenticated decision provider: the base URL
20
20
  * from the contract plus the API key. The key is sent as a bearer token and is
@@ -45,26 +45,47 @@ export interface DecisionProvider {
45
45
  * @returns An outcome whose `answers` cover every question in `req`.
46
46
  */
47
47
  decide(req: DecisionRequest, signal: AbortSignal): Promise<DecisionOutcome>;
48
+ /**
49
+ * What the provider supports beyond the Jev minimum. Absent → the Jev
50
+ * minimum (`JEV_MINIMUM_CAPABILITIES`). The client calls an optional method
51
+ * below only when both the method and its capability exist (T12664).
52
+ */
53
+ capabilities?(): DecisionProviderCapabilities;
54
+ /**
55
+ * Execute several requests as one provider call (`capabilities().batch`).
56
+ * Resolves with one item per request, in order; a failed item carries its
57
+ * error kind instead of throwing. Throws a {@link DecisionProviderError}
58
+ * only when the call as a whole failed.
59
+ */
60
+ decideBatch?(reqs: readonly DecisionRequest[], signal: AbortSignal): Promise<readonly DecisionBatchItem[]>;
61
+ /** Account usage and balance (`capabilities().usage`). */
62
+ usage?(signal: AbortSignal): Promise<DecisionProviderUsage>;
63
+ /** A built-in template decision (`capabilities().templates`). Reserved; no site uses it yet. */
64
+ decideTemplate?(template: string, text: string, signal: AbortSignal): Promise<DecisionOutcome>;
48
65
  }
49
66
  /**
50
67
  * Why a provider call failed. Drives the client's fallback reason and, for
51
68
  * `rate_limited`, the shared budget cool-down.
52
69
  *
53
- * - `unauthorized` — 401: bad or missing key.
70
+ * - `unauthorized` — 401, or a 403 that is not a key limit: bad or missing key.
54
71
  * - `insufficient_credits` — 402: the account is out of credit.
72
+ * - `key_limit_exceeded` — 403 `key_limit_exceeded`: the key's monthly decision
73
+ * limit is reached. The key is fine; decisions stop until the UTC month ends.
55
74
  * - `rate_limited` — 429: slow down; see `retryAfterMs`.
75
+ * - `overloaded` — 529 or 503: the provider is overloaded or unavailable;
76
+ * a short circuit-breaker trip honouring `retryAfterMs`.
56
77
  * - `invalid_request` — 422 or another 4xx: the provider rejected the request.
57
- * - `server_error` — 5xx.
78
+ * - `server_error` — any other 5xx.
58
79
  * - `network` — the request never produced an HTTP response.
59
80
  * - `aborted` — the caller's signal fired (timeout).
60
81
  * - `invalid_response` — a 2xx whose body did not match the expected shape.
61
82
  */
62
- export type DecisionProviderErrorKind = 'unauthorized' | 'insufficient_credits' | 'rate_limited' | 'invalid_request' | 'server_error' | 'network' | 'aborted' | 'invalid_response';
83
+ export type DecisionProviderErrorKind = 'unauthorized' | 'insufficient_credits' | 'key_limit_exceeded' | 'rate_limited' | 'overloaded' | 'invalid_request' | 'server_error' | 'network' | 'aborted' | 'invalid_response';
63
84
  /** Construction options for {@link DecisionProviderError}. */
64
85
  export interface DecisionProviderErrorOptions {
65
86
  /** HTTP status, when the failure came from an HTTP response. */
66
87
  readonly status?: number;
67
- /** Server-requested back-off in milliseconds (429 `retry-after`). */
88
+ /** Server-requested back-off in milliseconds (`retry-after` on 429/503/529). */
68
89
  readonly retryAfterMs?: number;
69
90
  /** Underlying cause, for diagnostics. */
70
91
  readonly cause?: Error;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/decide/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEpG;;;;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;CAC7E;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,yBAAyB,GACjC,cAAc,GACd,sBAAsB,GACtB,cAAc,GACd,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,qEAAqE;IACrE,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;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 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/decide/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAsEH;;;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;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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Decision-provider presets — what each {@link DecisionProviderKind} needs
3
+ * from the user and what it defaults.
4
+ *
5
+ * - `layahost` (recommended): a fixed base URL ({@link LAYAHOST_BASE_URL});
6
+ * the user brings only an API key. Model defaults to
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.
10
+ *
11
+ * The URL and model literals live in `@cleocode/contracts` (const data); this
12
+ * module only arranges them.
13
+ *
14
+ * @task T12713
15
+ * @epic T12486
16
+ */
17
+ import { type DecisionProviderKind } from '@cleocode/contracts';
18
+ /** What a provider kind requires and defaults. */
19
+ export interface DecisionProviderPreset {
20
+ /** The provider kind. */
21
+ readonly kind: DecisionProviderKind;
22
+ /** Menu label shown by the setup wizard. */
23
+ readonly label: string;
24
+ /** One-line description for help text and the wizard. */
25
+ readonly description: string;
26
+ /** Base URL used when none is given; absent → the user must supply one. */
27
+ readonly defaultBaseUrl?: string;
28
+ /** Model used when none is given and none is stored; absent → the provider listing decides. */
29
+ readonly defaultModel?: string;
30
+ /** Whether the user must supply the base URL. */
31
+ readonly requiresUrl: boolean;
32
+ /** Whether this is the recommended choice (listed first in the wizard). */
33
+ readonly recommended: boolean;
34
+ }
35
+ /** The preset table, keyed by provider kind. */
36
+ export declare const DECISION_PROVIDER_PRESETS: Readonly<Record<DecisionProviderKind, DecisionProviderPreset>>;
37
+ /**
38
+ * Every preset, recommended first (the order of {@link DECISION_PROVIDER_KINDS}).
39
+ *
40
+ * @returns The presets in menu order.
41
+ */
42
+ export declare function listDecisionProviderPresets(): readonly DecisionProviderPreset[];
43
+ /**
44
+ * Narrow a string to a {@link DecisionProviderKind}.
45
+ *
46
+ * @param value - Candidate, e.g. a `--provider` flag value.
47
+ * @returns The kind, or `undefined` when `value` names no provider.
48
+ */
49
+ export declare function parseDecisionProviderKind(value: string | undefined): DecisionProviderKind | undefined;
50
+ /**
51
+ * Infer the provider kind from a base URL: the layahost origin (scheme, host
52
+ * and port of {@link LAYAHOST_BASE_URL}) → `layahost`, anything else → `jev`.
53
+ *
54
+ * @param baseUrl - Provider base URL.
55
+ * @returns The inferred kind.
56
+ */
57
+ export declare function inferDecisionProviderKind(baseUrl: string): DecisionProviderKind;
58
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Decision-provider presets — what each {@link DecisionProviderKind} needs
3
+ * from the user and what it defaults.
4
+ *
5
+ * - `layahost` (recommended): a fixed base URL ({@link LAYAHOST_BASE_URL});
6
+ * the user brings only an API key. Model defaults to
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.
10
+ *
11
+ * The URL and model literals live in `@cleocode/contracts` (const data); this
12
+ * module only arranges them.
13
+ *
14
+ * @task T12713
15
+ * @epic T12486
16
+ */
17
+ import { DECISION_PROVIDER_KINDS, LAYAHOST_BASE_URL, LAYAHOST_DEFAULT_MODEL, } from '@cleocode/contracts';
18
+ /** The preset table, keyed by provider kind. */
19
+ export const DECISION_PROVIDER_PRESETS = {
20
+ layahost: {
21
+ kind: 'layahost',
22
+ label: 'layahost (recommended): bring only an API key',
23
+ description: `Hosted System One at ${LAYAHOST_BASE_URL}; default model ${LAYAHOST_DEFAULT_MODEL}.`,
24
+ defaultBaseUrl: LAYAHOST_BASE_URL,
25
+ defaultModel: LAYAHOST_DEFAULT_MODEL,
26
+ requiresUrl: false,
27
+ recommended: true,
28
+ },
29
+ jev: {
30
+ 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,
34
+ recommended: false,
35
+ },
36
+ };
37
+ /**
38
+ * Every preset, recommended first (the order of {@link DECISION_PROVIDER_KINDS}).
39
+ *
40
+ * @returns The presets in menu order.
41
+ */
42
+ export function listDecisionProviderPresets() {
43
+ return DECISION_PROVIDER_KINDS.map((kind) => DECISION_PROVIDER_PRESETS[kind]);
44
+ }
45
+ /**
46
+ * Narrow a string to a {@link DecisionProviderKind}.
47
+ *
48
+ * @param value - Candidate, e.g. a `--provider` flag value.
49
+ * @returns The kind, or `undefined` when `value` names no provider.
50
+ */
51
+ export function parseDecisionProviderKind(value) {
52
+ return DECISION_PROVIDER_KINDS.find((kind) => kind === value?.trim().toLowerCase());
53
+ }
54
+ /**
55
+ * Infer the provider kind from a base URL: the layahost origin (scheme, host
56
+ * and port of {@link LAYAHOST_BASE_URL}) → `layahost`, anything else → `jev`.
57
+ *
58
+ * @param baseUrl - Provider base URL.
59
+ * @returns The inferred kind.
60
+ */
61
+ export function inferDecisionProviderKind(baseUrl) {
62
+ try {
63
+ return new URL(baseUrl).origin === new URL(LAYAHOST_BASE_URL).origin ? 'layahost' : 'jev';
64
+ }
65
+ catch {
66
+ return 'jev';
67
+ }
68
+ }
69
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +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"}
@@ -10,7 +10,7 @@
10
10
  * @task T12493
11
11
  * @epic T12486
12
12
  */
13
- import type { DecisionAnswer, DecisionOutcomeSource, DecisionRequest } from '@cleocode/contracts';
13
+ import type { DecisionAnswer, DecisionOutcomeSource, DecisionRequest, DecisionSiteModeValue } from '@cleocode/contracts';
14
14
  import type { DecisionAuditAnswer, DecisionShadowRecord } from './audit.js';
15
15
  import type { DecideOptions } from './client.js';
16
16
  /**
@@ -20,7 +20,7 @@ import type { DecideOptions } from './client.js';
20
20
  * - `shadow` — ask, audit both answers, act on the heuristic.
21
21
  * - `on` — ask and act on the decision when it is confident enough.
22
22
  */
23
- export type DecisionSiteMode = 'off' | 'shadow' | 'on';
23
+ export type DecisionSiteMode = DecisionSiteModeValue;
24
24
  /** Resolved settings for one call-site invocation. */
25
25
  export interface DecisionSiteSettings {
26
26
  /** Effective mode; always `off` when no provider is configured. */
@@ -1 +1 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/decide/site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/decide/site.ts"],"names":[],"mappings":"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"}
@@ -158,6 +158,8 @@ export async function askSiteDecision(input) {
158
158
  }
159
159
  : null;
160
160
  const remaining = Math.max(0, input.budgetMs - (performance.now() - started));
161
+ // Generic plumbing: each caller's siteId is checked at its askSiteDecision call (gate 35).
162
+ // model-site-allowed: plumbing for every askSiteDecision caller
161
163
  const outcome = await decide(input.siteId, req, () => input.heuristicAnswers, {
162
164
  ...wiring,
163
165
  audit,
@@ -1 +1 @@
1
- {"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/decide/site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/decide/site.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * `cleo decide sites` — list every registered decision site with its rung,
3
+ * ladder, fallback, owner-escalation rule, configured and effective mode,
4
+ * go-live evidence and last-7-day audit activity (spec
5
+ * `system-one-integration` §3.4).
6
+ *
7
+ * Read-only. The effective mode follows the rule `resolveDecisionSiteSettings`
8
+ * applies at the call sites: a site that uses System One (as its primary rung
9
+ * or on its ladder) is `off` while no provider is configured.
10
+ *
11
+ * @task T12662
12
+ * @epic T12486
13
+ */
14
+ import type { DecisionRung, DecisionSiteDefinition, DecisionSiteModeValue, DecisionSitesListResult } from '@cleocode/contracts';
15
+ /** Window for {@link DecisionSiteSummary.last7d}, ms. */
16
+ export declare const DECISION_SITE_ACTIVITY_WINDOW_MS: number;
17
+ /** Filters and injectable dependencies for {@link listDecisionSites}. */
18
+ export interface ListDecisionSitesOptions {
19
+ /** Only sites whose primary rung is this. */
20
+ readonly rung?: DecisionRung;
21
+ /** Only sites whose effective mode is this. */
22
+ readonly mode?: DecisionSiteModeValue;
23
+ /** Only the site with this id. */
24
+ readonly id?: string;
25
+ /** Only sites that have recorded go-live evidence. */
26
+ readonly evidenceOnly?: boolean;
27
+ /** Project root (config and audit). Default: the resolved CLEO project root. */
28
+ readonly projectRoot?: string;
29
+ /** Whether a System One provider is configured. Default: the stored connection. */
30
+ readonly providerConfigured?: boolean;
31
+ /** Config reader. Default: the config registry. */
32
+ readonly readConfig?: (key: string, projectRoot: string) => Promise<unknown>;
33
+ /** Registry to list. Default: {@link DECISION_SITES}. */
34
+ readonly sites?: readonly DecisionSiteDefinition[];
35
+ /** Clock for the activity window. Default: now. */
36
+ readonly now?: Date;
37
+ }
38
+ /**
39
+ * List the registered decision sites with their configured and effective
40
+ * modes and recent activity. Never throws on unreadable config or audit.
41
+ *
42
+ * @param opts - Filters and injectable dependencies.
43
+ * @returns Provider state, registry size and the matching sites.
44
+ */
45
+ export declare function listDecisionSites(opts?: ListDecisionSitesOptions): Promise<DecisionSitesListResult>;
46
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/decide/sites/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACV,YAAY,EAEZ,sBAAsB,EACtB,qBAAqB,EAErB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAK7B,yDAAyD;AACzD,eAAO,MAAM,gCAAgC,QAA0B,CAAC;AAExE,yEAAyE;AACzE,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC;IACtC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,mDAAmD;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,yDAAyD;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,mDAAmD;IACnD,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;CACrB;AAgID;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,uBAAuB,CAAC,CAmElC"}