@cleocode/core 2026.9.21 → 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.
- package/dist/agents/scaffold.d.ts.map +1 -1
- package/dist/agents/scaffold.js +0 -1
- package/dist/agents/scaffold.js.map +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +4 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/build-provenance.json +6 -0
- package/dist/decide/audit.d.ts +7 -1
- package/dist/decide/audit.d.ts.map +1 -1
- package/dist/decide/audit.js.map +1 -1
- package/dist/decide/client.d.ts +46 -4
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +328 -33
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/credentials.d.ts +28 -4
- package/dist/decide/credentials.d.ts.map +1 -1
- package/dist/decide/credentials.js +50 -12
- package/dist/decide/credentials.js.map +1 -1
- package/dist/decide/index.d.ts +10 -4
- package/dist/decide/index.d.ts.map +1 -1
- package/dist/decide/index.js +10 -4
- package/dist/decide/index.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +100 -8
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +402 -55
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/decide/operations.d.ts +97 -20
- package/dist/decide/operations.d.ts.map +1 -1
- package/dist/decide/operations.js +180 -28
- package/dist/decide/operations.js.map +1 -1
- package/dist/decide/provider-state.d.ts +89 -0
- package/dist/decide/provider-state.d.ts.map +1 -0
- package/dist/decide/provider-state.js +134 -0
- package/dist/decide/provider-state.js.map +1 -0
- package/dist/decide/provider.d.ts +26 -5
- package/dist/decide/provider.d.ts.map +1 -1
- package/dist/decide/provider.js.map +1 -1
- package/dist/decide/providers.d.ts +58 -0
- package/dist/decide/providers.d.ts.map +1 -0
- package/dist/decide/providers.js +69 -0
- package/dist/decide/providers.js.map +1 -0
- package/dist/decide/site.d.ts +2 -2
- package/dist/decide/site.d.ts.map +1 -1
- package/dist/decide/site.js +2 -0
- package/dist/decide/site.js.map +1 -1
- package/dist/decide/sites/list.d.ts +46 -0
- package/dist/decide/sites/list.d.ts.map +1 -0
- package/dist/decide/sites/list.js +206 -0
- package/dist/decide/sites/list.js.map +1 -0
- package/dist/decide/sites/registry.d.ts +130 -0
- package/dist/decide/sites/registry.d.ts.map +1 -0
- package/dist/decide/sites/registry.js +375 -0
- package/dist/decide/sites/registry.js.map +1 -0
- package/dist/decide/spend.d.ts +196 -0
- package/dist/decide/spend.d.ts.map +1 -0
- package/dist/decide/spend.js +387 -0
- package/dist/decide/spend.js.map +1 -0
- package/dist/decide/wizard.d.ts +53 -0
- package/dist/decide/wizard.d.ts.map +1 -0
- package/dist/decide/wizard.js +144 -0
- package/dist/decide/wizard.js.map +1 -0
- package/dist/dispatch/mutate-projection.d.ts.map +1 -1
- package/dist/dispatch/mutate-projection.js +5 -0
- package/dist/dispatch/mutate-projection.js.map +1 -1
- package/dist/docs/docs-audit.d.ts.map +1 -1
- package/dist/docs/docs-audit.js +1 -2
- package/dist/docs/docs-audit.js.map +1 -1
- package/dist/docs/docs-update.d.ts.map +1 -1
- package/dist/docs/docs-update.js +25 -9
- package/dist/docs/docs-update.js.map +1 -1
- package/dist/docs/export-document.js +1073 -628
- package/dist/docs/export-document.js.map +3 -3
- package/dist/doctor/knowledge.d.ts +16 -1
- package/dist/doctor/knowledge.d.ts.map +1 -1
- package/dist/doctor/knowledge.js +53 -17
- package/dist/doctor/knowledge.js.map +1 -1
- package/dist/engine/engine-ops.d.ts +36 -6
- package/dist/engine/engine-ops.d.ts.map +1 -1
- package/dist/engine/engine-ops.js +115 -14
- package/dist/engine/engine-ops.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init/scaffold-workflows.d.ts.map +1 -1
- package/dist/init/scaffold-workflows.js +6 -3
- package/dist/init/scaffold-workflows.js.map +1 -1
- package/dist/init/upgrade-workflows.d.ts.map +1 -1
- package/dist/init/upgrade-workflows.js +6 -3
- package/dist/init/upgrade-workflows.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +51 -11
- package/dist/init.js.map +1 -1
- package/dist/inject/index.d.ts.map +1 -1
- package/dist/inject/index.js +8 -3
- package/dist/inject/index.js.map +1 -1
- package/dist/internal.d.ts +3 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -2
- package/dist/internal.js.map +1 -1
- package/dist/llm/plugin-facade.js +1184 -739
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/attention.d.ts.map +1 -1
- package/dist/memory/attention.js +2 -2
- package/dist/memory/attention.js.map +1 -1
- package/dist/memory/decision-contradiction.d.ts +3 -3
- package/dist/memory/decision-contradiction.d.ts.map +1 -1
- package/dist/memory/decision-contradiction.js +4 -3
- package/dist/memory/decision-contradiction.js.map +1 -1
- package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
- package/dist/memory/graph-memory-bridge.js +2 -0
- package/dist/memory/graph-memory-bridge.js.map +1 -1
- package/dist/memory/observation-type-decision.d.ts +2 -2
- package/dist/memory/observation-type-decision.d.ts.map +1 -1
- package/dist/memory/observation-type-decision.js +3 -2
- package/dist/memory/observation-type-decision.js.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.d.ts +111 -0
- package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.js +230 -2
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
- package/dist/nexus/analyze-orchestrator.d.ts +38 -0
- package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
- package/dist/nexus/analyze-orchestrator.js +96 -21
- package/dist/nexus/analyze-orchestrator.js.map +1 -1
- package/dist/nexus/knowledge.d.ts.map +1 -1
- package/dist/nexus/knowledge.js +15 -4
- package/dist/nexus/knowledge.js.map +1 -1
- package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
- package/dist/nexus/migrations/M-split-graph.js +4 -0
- package/dist/nexus/migrations/M-split-graph.js.map +1 -1
- package/dist/nexus/store.d.ts.map +1 -1
- package/dist/nexus/store.js +2 -0
- package/dist/nexus/store.js.map +1 -1
- package/dist/nexus/stored-roots.d.ts +65 -0
- package/dist/nexus/stored-roots.d.ts.map +1 -1
- package/dist/nexus/stored-roots.js +73 -0
- package/dist/nexus/stored-roots.js.map +1 -1
- package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
- package/dist/orchestrate/lifecycle-ops.js +4 -1
- package/dist/orchestrate/lifecycle-ops.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +13 -8
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/plan.d.ts.map +1 -1
- package/dist/orchestrate/plan.js +8 -2
- package/dist/orchestrate/plan.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts +7 -2
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +17 -6
- package/dist/orchestrate/query-ops.js.map +1 -1
- package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
- package/dist/orchestrate/spawn-ops.js +5 -14
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestration/bootstrap.d.ts.map +1 -1
- package/dist/orchestration/bootstrap.js +4 -2
- package/dist/orchestration/bootstrap.js.map +1 -1
- package/dist/orchestration/index.d.ts +1 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +4 -3
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts +8 -5
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +46 -17
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/owner-decision-readiness.d.ts +2 -2
- package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -1
- package/dist/orchestration/owner-decision-readiness.js +3 -2
- package/dist/orchestration/owner-decision-readiness.js.map +1 -1
- package/dist/orchestration/parallel.d.ts.map +1 -1
- package/dist/orchestration/parallel.js +10 -17
- package/dist/orchestration/parallel.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts +4 -1
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +3 -2
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/status.d.ts +8 -3
- package/dist/orchestration/status.d.ts.map +1 -1
- package/dist/orchestration/status.js +9 -6
- package/dist/orchestration/status.js.map +1 -1
- package/dist/orchestration/validate-spawn.d.ts.map +1 -1
- package/dist/orchestration/validate-spawn.js +2 -0
- package/dist/orchestration/validate-spawn.js.map +1 -1
- package/dist/orchestration/wave-topic.d.ts +54 -0
- package/dist/orchestration/wave-topic.d.ts.map +1 -0
- package/dist/orchestration/wave-topic.js +68 -0
- package/dist/orchestration/wave-topic.js.map +1 -0
- package/dist/orchestration/waves.d.ts +47 -8
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +152 -43
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +6 -2
- package/dist/phases/index.js.map +1 -1
- package/dist/project-scope.d.ts +34 -0
- package/dist/project-scope.d.ts.map +1 -1
- package/dist/project-scope.js +73 -0
- package/dist/project-scope.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +10 -0
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +23 -7
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/release/github-pr.d.ts +30 -0
- package/dist/release/github-pr.d.ts.map +1 -1
- package/dist/release/github-pr.js +42 -1
- package/dist/release/github-pr.js.map +1 -1
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +6 -3
- package/dist/release/plan.js.map +1 -1
- package/dist/release/pr-evidence.d.ts.map +1 -1
- package/dist/release/pr-evidence.js +12 -4
- package/dist/release/pr-evidence.js.map +1 -1
- package/dist/routing/capability-matrix.d.ts.map +1 -1
- package/dist/routing/capability-matrix.js +7 -0
- package/dist/routing/capability-matrix.js.map +1 -1
- package/dist/security/input-sanitization.d.ts.map +1 -1
- package/dist/security/input-sanitization.js +9 -2
- package/dist/security/input-sanitization.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +1193 -748
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/session/engine-ops.d.ts +6 -0
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +36 -4
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +17 -0
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +68 -68
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/drift-watchdog.d.ts.map +1 -1
- package/dist/sessions/drift-watchdog.js +4 -3
- package/dist/sessions/drift-watchdog.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +94 -1
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +100 -1
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/index.d.ts +2 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +1 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/session-drift.d.ts.map +1 -1
- package/dist/sessions/session-drift.js +4 -3
- package/dist/sessions/session-drift.js.map +1 -1
- package/dist/setup/config-json-merge.d.ts +28 -0
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +51 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +13 -10
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +15 -10
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/llm.js +1 -1
- package/dist/setup/sections/llm.js.map +1 -1
- package/dist/setup/sections/system-one.d.ts +28 -0
- package/dist/setup/sections/system-one.d.ts.map +1 -0
- package/dist/setup/sections/system-one.js +53 -0
- package/dist/setup/sections/system-one.js.map +1 -0
- package/dist/setup/wizard.d.ts +15 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js +15 -0
- package/dist/setup/wizard.js.map +1 -1
- package/dist/skills/discovery.d.ts +12 -1
- package/dist/skills/discovery.d.ts.map +1 -1
- package/dist/skills/discovery.js +27 -2
- package/dist/skills/discovery.js.map +1 -1
- package/dist/skills/orchestrator/startup.d.ts.map +1 -1
- package/dist/skills/orchestrator/startup.js +10 -5
- package/dist/skills/orchestrator/startup.js.map +1 -1
- package/dist/skills/prune-bundled.d.ts +306 -0
- package/dist/skills/prune-bundled.d.ts.map +1 -0
- package/dist/skills/prune-bundled.js +652 -0
- package/dist/skills/prune-bundled.js.map +1 -0
- package/dist/skills/types.d.ts +9 -1
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js +17 -34
- package/dist/skills/types.js.map +1 -1
- package/dist/spawn/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +26 -2
- package/dist/spawn/branch-lock.js.map +1 -1
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +4 -2
- package/dist/stats/index.js.map +1 -1
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/agent-registry-accessor.js +2 -0
- package/dist/store/agent-registry-accessor.js.map +1 -1
- package/dist/store/backup-pack.js +1 -1
- package/dist/store/backup-pack.js.map +1 -1
- package/dist/store/backup.d.ts +15 -1
- package/dist/store/backup.d.ts.map +1 -1
- package/dist/store/backup.js +18 -2
- package/dist/store/backup.js.map +1 -1
- package/dist/store/conduit-sqlite.d.ts.map +1 -1
- package/dist/store/conduit-sqlite.js +3 -0
- package/dist/store/conduit-sqlite.js.map +1 -1
- package/dist/store/credential-transfer.d.ts.map +1 -1
- package/dist/store/credential-transfer.js +2 -0
- package/dist/store/credential-transfer.js.map +1 -1
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/store/cross-db-cleanup.js +2 -0
- package/dist/store/cross-db-cleanup.js.map +1 -1
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +13 -2
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
- package/dist/store/migrate-signaldock-to-conduit.js +3 -0
- package/dist/store/migrate-signaldock-to-conduit.js.map +1 -1
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +37 -3
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/migration-sqlite.d.ts.map +1 -1
- package/dist/store/migration-sqlite.js +2 -0
- package/dist/store/migration-sqlite.js.map +1 -1
- package/dist/store/nexus-sqlite.d.ts.map +1 -1
- package/dist/store/nexus-sqlite.js +3 -0
- package/dist/store/nexus-sqlite.js.map +1 -1
- package/dist/store/open-cleo-db.d.ts.map +1 -1
- package/dist/store/open-cleo-db.js +3 -0
- package/dist/store/open-cleo-db.js.map +1 -1
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +2 -0
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
- package/dist/store/portable-bundle-relocate.js +2 -0
- package/dist/store/portable-bundle-relocate.js.map +1 -1
- package/dist/store/portable-bundle-scan.js +1 -1
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/ports/domain-binding.d.ts.map +1 -1
- package/dist/store/ports/domain-binding.js +5 -0
- package/dist/store/ports/domain-binding.js.map +1 -1
- package/dist/store/skills-db.d.ts +17 -0
- package/dist/store/skills-db.d.ts.map +1 -1
- package/dist/store/skills-db.js +30 -0
- package/dist/store/skills-db.js.map +1 -1
- package/dist/store/snapshot-gate.d.ts.map +1 -1
- package/dist/store/snapshot-gate.js +3 -0
- package/dist/store/snapshot-gate.js.map +1 -1
- package/dist/store/split-brain-import.d.ts.map +1 -1
- package/dist/store/split-brain-import.js +2 -0
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +19 -2
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite-native.d.ts.map +1 -1
- package/dist/store/sqlite-native.js +1 -0
- package/dist/store/sqlite-native.js.map +1 -1
- package/dist/store/sqlite.d.ts +14 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +31 -4
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +46 -1
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +131 -5
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/worktree-build-guard.d.ts +191 -0
- package/dist/store/worktree-build-guard.d.ts.map +1 -0
- package/dist/store/worktree-build-guard.js +486 -0
- package/dist/store/worktree-build-guard.js.map +1 -0
- package/dist/store/worktree-isolation-guard.d.ts +27 -0
- package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
- package/dist/store/worktree-isolation-guard.js +71 -3
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/store/writer-lease.d.ts.map +1 -1
- package/dist/store/writer-lease.js +2 -0
- package/dist/store/writer-lease.js.map +1 -1
- package/dist/system/backup.d.ts +6 -2
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +6 -3
- package/dist/system/backup.js.map +1 -1
- package/dist/system/inject-generate.d.ts.map +1 -1
- package/dist/system/inject-generate.js +4 -4
- package/dist/system/inject-generate.js.map +1 -1
- package/dist/task-tools/index.d.ts +4 -2
- package/dist/task-tools/index.d.ts.map +1 -1
- package/dist/task-tools/index.js +3 -2
- package/dist/task-tools/index.js.map +1 -1
- package/dist/task-tools/score-task-priority.d.ts +93 -18
- package/dist/task-tools/score-task-priority.d.ts.map +1 -1
- package/dist/task-tools/score-task-priority.js +193 -81
- package/dist/task-tools/score-task-priority.js.map +1 -1
- package/dist/task-work/index.d.ts +6 -0
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +6 -3
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +62 -13
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +158 -33
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-scope.d.ts +59 -0
- package/dist/tasks/affected-scope.d.ts.map +1 -0
- package/dist/tasks/affected-scope.js +81 -0
- package/dist/tasks/affected-scope.js.map +1 -0
- package/dist/tasks/analyze.d.ts +29 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +52 -36
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
- package/dist/tasks/backfill-child-projections.js +4 -1
- package/dist/tasks/backfill-child-projections.js.map +1 -1
- package/dist/tasks/change-set.d.ts +24 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +143 -11
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/command-line.d.ts +54 -0
- package/dist/tasks/command-line.d.ts.map +1 -0
- package/dist/tasks/command-line.js +151 -0
- package/dist/tasks/command-line.js.map +1 -0
- package/dist/tasks/complete.d.ts +10 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +49 -0
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/component-pr.d.ts +106 -0
- package/dist/tasks/component-pr.d.ts.map +1 -0
- package/dist/tasks/component-pr.js +275 -0
- package/dist/tasks/component-pr.js.map +1 -0
- package/dist/tasks/delete.d.ts.map +1 -1
- package/dist/tasks/delete.js +20 -0
- package/dist/tasks/delete.js.map +1 -1
- package/dist/tasks/done-plan.d.ts +21 -1
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +170 -15
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +9 -80
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/duplicate-detector.d.ts +3 -3
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +4 -3
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/engine-wrap-ops.d.ts +29 -0
- package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
- package/dist/tasks/engine-wrap-ops.js +40 -0
- package/dist/tasks/engine-wrap-ops.js.map +1 -1
- package/dist/tasks/engine-wrap.d.ts +1 -1
- package/dist/tasks/engine-wrap.d.ts.map +1 -1
- package/dist/tasks/engine-wrap.js +1 -1
- package/dist/tasks/engine-wrap.js.map +1 -1
- package/dist/tasks/evidence.d.ts +49 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +85 -9
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +48 -12
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -1
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/ops.d.ts +1 -0
- package/dist/tasks/ops.d.ts.map +1 -1
- package/dist/tasks/ranking-audit.d.ts +122 -0
- package/dist/tasks/ranking-audit.d.ts.map +1 -0
- package/dist/tasks/ranking-audit.js +193 -0
- package/dist/tasks/ranking-audit.js.map +1 -0
- package/dist/tasks/task-analyze.d.ts.map +1 -1
- package/dist/tasks/task-analyze.js +19 -32
- package/dist/tasks/task-analyze.js.map +1 -1
- package/dist/tasks/task-next.d.ts +48 -2
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +84 -102
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/task-ops.d.ts +1 -1
- package/dist/tasks/task-ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.js +1 -1
- package/dist/tasks/task-ops.js.map +1 -1
- package/dist/tasks/tool-resolver.d.ts +7 -1
- package/dist/tasks/tool-resolver.d.ts.map +1 -1
- package/dist/tasks/tool-resolver.js +24 -10
- package/dist/tasks/tool-resolver.js.map +1 -1
- package/dist/tasks/update.d.ts +8 -2
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +28 -1
- package/dist/tasks/update.js.map +1 -1
- package/dist/telemetry/sqlite.d.ts.map +1 -1
- package/dist/telemetry/sqlite.js +2 -0
- package/dist/telemetry/sqlite.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +2 -2
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/engine-ops.d.ts +9 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +24 -1
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/validation/validate-ops.d.ts.map +1 -1
- package/dist/validation/validate-ops.js +9 -3
- package/dist/validation/validate-ops.js.map +1 -1
- package/dist/worktree/worktree-adopt.d.ts.map +1 -1
- package/dist/worktree/worktree-adopt.js +5 -2
- package/dist/worktree/worktree-adopt.js.map +1 -1
- package/package.json +14 -14
- package/schemas/config.schema.json +13 -0
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +5 -1
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* @task T12491
|
|
9
9
|
* @epic T12486
|
|
10
10
|
*/
|
|
11
|
-
import type
|
|
11
|
+
import { type DecisionAnswer, type DecisionProviderCapabilities, type DecisionProviderKind, type DecisionProviderUsage } from '@cleocode/contracts';
|
|
12
12
|
import { type DecideCredentialsSummary, type SealedDecideConnection } from './credentials.js';
|
|
13
|
+
import { type SpendLedger, type SpendLedgerHealth, type SpendResetOptions, type SpendResetReceipt } from './spend.js';
|
|
13
14
|
/** Default deadline for the `GET /v1/models` probe, ms. */
|
|
14
15
|
export declare const DEFAULT_DECIDE_PROBE_TIMEOUT_MS = 3000;
|
|
15
16
|
/** Default deadline for `cleo decide ask`, ms (generous: it is a debug tool). */
|
|
@@ -18,11 +19,28 @@ export declare const DEFAULT_DECIDE_ASK_TIMEOUT_MS = 10000;
|
|
|
18
19
|
* Reachability of the configured provider.
|
|
19
20
|
*
|
|
20
21
|
* - `reachable` — `GET /v1/models` answered 2xx.
|
|
21
|
-
* - `unauthorized` — the provider rejected the key (401
|
|
22
|
+
* - `unauthorized` — the provider rejected the key (401, or a 403 that is not a key limit).
|
|
23
|
+
* - `key_limit_reached` — the key's monthly decision limit is reached (403
|
|
24
|
+
* `key_limit_exceeded`); decisions resume when the UTC month rolls over.
|
|
22
25
|
* - `unconfigured` — no valid base URL + key stored.
|
|
23
26
|
* - `unreachable` — network failure, timeout, or any other HTTP status.
|
|
24
27
|
*/
|
|
25
|
-
export type DecideProviderState = 'reachable' | 'unauthorized' | 'unconfigured' | 'unreachable';
|
|
28
|
+
export type DecideProviderState = 'reachable' | 'unauthorized' | 'key_limit_reached' | 'unconfigured' | 'unreachable';
|
|
29
|
+
/** Month-to-date spend against the CLEO cap (D11159). */
|
|
30
|
+
export interface DecideSpendSummary {
|
|
31
|
+
/** UTC month, `YYYY-MM`. */
|
|
32
|
+
readonly month: string;
|
|
33
|
+
/** Micro-dollars recorded this month. */
|
|
34
|
+
readonly spentMicros: number;
|
|
35
|
+
/** Micro-dollars reserved by calls in flight. */
|
|
36
|
+
readonly reservedMicros: number;
|
|
37
|
+
/** The cap, micro-dollars (`decide.budget.monthlyMicros`). */
|
|
38
|
+
readonly capMicros: number;
|
|
39
|
+
/** Whether sites are degraded to their heuristics because the cap is reached. */
|
|
40
|
+
readonly capReached: boolean;
|
|
41
|
+
/** ISO time until which the key's monthly limit stops decisions, when set. */
|
|
42
|
+
readonly keyLimitedUntil?: string;
|
|
43
|
+
}
|
|
26
44
|
/** Result of {@link probeDecideProvider}. */
|
|
27
45
|
export interface DecideProbeResult {
|
|
28
46
|
/** Reachability verdict. */
|
|
@@ -43,6 +61,18 @@ export interface DecideProbeResult {
|
|
|
43
61
|
readonly latencyMs?: number;
|
|
44
62
|
/** Secret-free explanation or warning. */
|
|
45
63
|
readonly detail?: string;
|
|
64
|
+
/** Registered decision sites (T12662). */
|
|
65
|
+
readonly sites: number;
|
|
66
|
+
/** What the provider supports beyond the Jev minimum (T12664). */
|
|
67
|
+
readonly capabilities?: DecisionProviderCapabilities;
|
|
68
|
+
/** Last usage/balance read (refreshed at most every 10 minutes). */
|
|
69
|
+
readonly usage?: DecisionProviderUsage & {
|
|
70
|
+
readonly fetchedAt: string;
|
|
71
|
+
};
|
|
72
|
+
/** Month-to-date spend against the cap. */
|
|
73
|
+
readonly spend?: DecideSpendSummary;
|
|
74
|
+
/** Spend-ledger health; `corrupt` or `unavailable` means every site falls back. */
|
|
75
|
+
readonly spendLedger?: SpendLedgerHealth;
|
|
46
76
|
}
|
|
47
77
|
/** Options for {@link probeDecideProvider}. */
|
|
48
78
|
export interface DecideProbeOptions {
|
|
@@ -52,7 +82,24 @@ export interface DecideProbeOptions {
|
|
|
52
82
|
readonly fetch?: typeof fetch;
|
|
53
83
|
/** Deadline, ms. Default {@link DEFAULT_DECIDE_PROBE_TIMEOUT_MS}. */
|
|
54
84
|
readonly timeoutMs?: number;
|
|
85
|
+
/** Spend ledger; `null` omits spend. Default: the machine-wide ledger. */
|
|
86
|
+
readonly spend?: SpendLedger | null;
|
|
87
|
+
/** Monthly cap, micro-dollars. Default: `decide.budget.monthlyMicros`, else $1. */
|
|
88
|
+
readonly capMicros?: number;
|
|
89
|
+
/** Spend-ledger path to inspect. Default: `<cleoHome>/decide/spend.json`. */
|
|
90
|
+
readonly spendStatePath?: string;
|
|
91
|
+
/** Provider-state file (capabilities + usage cache). Default: `<cleoHome>/decide/provider-state.json`. */
|
|
92
|
+
readonly providerStatePath?: string;
|
|
93
|
+
/** Wall clock, epoch ms. Default `Date.now`. */
|
|
94
|
+
readonly now?: () => number;
|
|
95
|
+
/**
|
|
96
|
+
* Re-detect capabilities even when the cached read is fresh. Set after the
|
|
97
|
+
* settings change so the provider's extensions apply immediately (T12713).
|
|
98
|
+
*/
|
|
99
|
+
readonly refreshCapabilities?: boolean;
|
|
55
100
|
}
|
|
101
|
+
/** Message naming the repair for a ledger that cannot be read. */
|
|
102
|
+
export declare const SPEND_LEDGER_REPAIR_HINT = "The System One spend ledger cannot be read, so every site uses its heuristic (the cap fails closed). Run `cleo decide budget reset` to start a fresh ledger; the old file is kept as a receipt.";
|
|
56
103
|
/**
|
|
57
104
|
* Probe the provider with `GET {baseUrl}/v1/models` under a short deadline.
|
|
58
105
|
* Never throws.
|
|
@@ -63,44 +110,61 @@ export interface DecideProbeOptions {
|
|
|
63
110
|
export declare function probeDecideProvider(opts?: DecideProbeOptions): Promise<DecideProbeResult>;
|
|
64
111
|
/** Input for {@link configureDecide}. */
|
|
65
112
|
export interface DecideConfigureInput {
|
|
66
|
-
/**
|
|
113
|
+
/**
|
|
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`.
|
|
117
|
+
*/
|
|
118
|
+
readonly provider?: DecisionProviderKind;
|
|
119
|
+
/**
|
|
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.
|
|
122
|
+
*/
|
|
67
123
|
readonly baseUrl?: string;
|
|
68
124
|
/** API key. Omitted → the stored key is kept. */
|
|
69
125
|
readonly apiKey?: string;
|
|
70
126
|
/**
|
|
71
|
-
* Default model. Omitted → the stored model
|
|
72
|
-
*
|
|
127
|
+
* Default model. Omitted → the stored model when the URL is unchanged;
|
|
128
|
+
* otherwise the preset default (`layahost`), else the first model the
|
|
129
|
+
* provider lists (`jev`).
|
|
73
130
|
*/
|
|
74
131
|
readonly model?: string;
|
|
75
|
-
/** `fetch` for the model lookup; tests inject a stub. */
|
|
132
|
+
/** `fetch` for the model lookup and the post-save probe; tests inject a stub. */
|
|
76
133
|
readonly fetch?: typeof fetch;
|
|
77
|
-
/** Deadline for the model lookup, ms. */
|
|
134
|
+
/** Deadline for the model lookup and the probe, ms. */
|
|
78
135
|
readonly timeoutMs?: number;
|
|
79
136
|
}
|
|
80
137
|
/** Result of {@link configureDecide}. */
|
|
81
138
|
export interface DecideConfigureResult extends DecideCredentialsSummary {
|
|
82
139
|
/** Where the stored model came from. */
|
|
83
|
-
readonly modelSource: 'flag' | 'stored' | 'provider-listing' | 'none';
|
|
140
|
+
readonly modelSource: 'flag' | 'stored' | 'preset' | 'provider-listing' | 'none';
|
|
141
|
+
/** Reachability verdict of the probe run after saving. */
|
|
142
|
+
readonly providerState: DecideProviderState;
|
|
143
|
+
/** Capabilities detected after saving (the provider's extensions are active from now on). */
|
|
144
|
+
readonly capabilities?: DecisionProviderCapabilities;
|
|
84
145
|
/** Secret-free warning, e.g. when no model could be resolved. */
|
|
85
146
|
readonly warning?: string;
|
|
86
147
|
}
|
|
87
148
|
/**
|
|
88
|
-
* Store the provider settings, merging omitted values with the stored ones
|
|
149
|
+
* Store the provider settings, merging omitted values with the stored ones,
|
|
150
|
+
* then probe the provider and re-detect its capabilities so its extensions
|
|
151
|
+
* apply immediately.
|
|
89
152
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
153
|
+
* A model is always stored when one can be known, because the Jev
|
|
154
|
+
* `/v1/systemone` endpoint rejects a request without one (422, and every
|
|
155
|
+
* site silently falls back). The model comes from, in order: the flag; the
|
|
156
|
+
* stored model (same URL); the provider preset (`layahost` →
|
|
157
|
+
* `LAYAHOST_DEFAULT_MODEL`); the first model the provider lists. Only a
|
|
158
|
+
* `jev` provider whose listing fails can end with no model, and then a
|
|
159
|
+
* warning says how to set one.
|
|
96
160
|
*
|
|
97
|
-
* @param input - URL, key, optional model.
|
|
98
|
-
* @returns Secret-free summary plus the model's provenance.
|
|
99
161
|
* A URL whose host differs from the stored one must come with a fresh key:
|
|
100
162
|
* the stored key is never re-used (or sent in the model probe) for a new host.
|
|
101
163
|
*
|
|
102
|
-
* @
|
|
103
|
-
*
|
|
164
|
+
* @param input - Provider, URL, key, optional model.
|
|
165
|
+
* @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.
|
|
104
168
|
*/
|
|
105
169
|
export declare function configureDecide(input: DecideConfigureInput): Promise<DecideConfigureResult>;
|
|
106
170
|
/**
|
|
@@ -149,4 +213,17 @@ export interface DecideAskResult {
|
|
|
149
213
|
* @returns The typed answer with source, fallback reason, latency and cost.
|
|
150
214
|
*/
|
|
151
215
|
export declare function askDecideDebug(input: DecideAskInput): Promise<DecideAskResult>;
|
|
216
|
+
/**
|
|
217
|
+
* `cleo decide budget reset`: start a fresh spend ledger for this month,
|
|
218
|
+
* moving the old file aside as a receipt. The repair for a corrupt ledger,
|
|
219
|
+
* which otherwise keeps every site on its heuristic. A readable ledger is
|
|
220
|
+
* refused unless `opts.force`, and its month-to-date spend is carried over,
|
|
221
|
+
* so a reset never lifts a reached cap.
|
|
222
|
+
*
|
|
223
|
+
* @param statePath - Ledger path. Default: `<cleoHome>/decide/spend.json`.
|
|
224
|
+
* @param opts - `force` resets a ledger that is not corrupt.
|
|
225
|
+
* @returns The receipt: previous health, carried spend and where the old file went.
|
|
226
|
+
* @throws {SpendResetRefusedError} When the ledger is not corrupt and `force` is not set.
|
|
227
|
+
*/
|
|
228
|
+
export declare function resetDecideBudget(statePath?: string, opts?: SpendResetOptions): Promise<SpendResetReceipt>;
|
|
152
229
|
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/decide/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/decide/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,21 +8,69 @@
|
|
|
8
8
|
* @task T12491
|
|
9
9
|
* @epic T12486
|
|
10
10
|
*/
|
|
11
|
+
import { JEV_MINIMUM_CAPABILITIES, } from '@cleocode/contracts';
|
|
11
12
|
import { getProjectRoot } from '../paths.js';
|
|
12
13
|
import { createJsonlDecisionAudit, } from './audit.js';
|
|
13
14
|
import { decide } from './client.js';
|
|
14
15
|
import { clearDecideCredentials, DecideCredentialsError, describeDecideCredentials, loadDecideConnection, sameDecideHost, saveDecideCredentials, } from './credentials.js';
|
|
15
|
-
import { listJevModels } from './jev-wire.js';
|
|
16
|
+
import { detectJevCapabilities, listJevModels } from './jev-wire.js';
|
|
16
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';
|
|
20
|
+
import { DECIDE_ASK_DECISION_SITE, DECISION_SITES } from './sites/registry.js';
|
|
21
|
+
import { createFileSpendLedger, DEFAULT_MONTHLY_SPEND_CAP_MICROS, inspectSpendLedger, MONTHLY_SPEND_CAP_KEY, resetSpendLedger, } from './spend.js';
|
|
17
22
|
/** Default deadline for the `GET /v1/models` probe, ms. */
|
|
18
23
|
export const DEFAULT_DECIDE_PROBE_TIMEOUT_MS = 3_000;
|
|
19
24
|
/** Default deadline for `cleo decide ask`, ms (generous: it is a debug tool). */
|
|
20
25
|
export const DEFAULT_DECIDE_ASK_TIMEOUT_MS = 10_000;
|
|
26
|
+
const KEY_LIMIT_DETAIL = "The key's monthly decision limit is reached (403 key_limit_exceeded). The key itself is fine: decisions resume when the UTC month rolls over, or raise the limit in the provider console.";
|
|
27
|
+
/** Message naming the repair for a ledger that cannot be read. */
|
|
28
|
+
export const SPEND_LEDGER_REPAIR_HINT = 'The System One spend ledger cannot be read, so every site uses its heuristic (the cap fails closed). Run `cleo decide budget reset` to start a fresh ledger; the old file is kept as a receipt.';
|
|
29
|
+
/** `{ detail }` when there is one, else nothing. */
|
|
30
|
+
function optionalDetail(detail) {
|
|
31
|
+
return detail ? { detail } : {};
|
|
32
|
+
}
|
|
33
|
+
/** Month-to-date spend, or undefined when the ledger is disabled or unreadable. */
|
|
34
|
+
async function spendSummary(opts) {
|
|
35
|
+
const ledger = opts.spend === undefined ? createFileSpendLedger() : opts.spend;
|
|
36
|
+
if (!ledger)
|
|
37
|
+
return undefined;
|
|
38
|
+
const status = await ledger.status();
|
|
39
|
+
if (!status)
|
|
40
|
+
return undefined;
|
|
41
|
+
let capMicros = opts.capMicros;
|
|
42
|
+
if (capMicros === undefined) {
|
|
43
|
+
try {
|
|
44
|
+
const { getConfigValue } = await import('../config/registry.js');
|
|
45
|
+
const value = await getConfigValue(MONTHLY_SPEND_CAP_KEY, {
|
|
46
|
+
projectRoot: getProjectRoot(),
|
|
47
|
+
});
|
|
48
|
+
capMicros =
|
|
49
|
+
typeof value === 'number' && value >= 0 ? value : DEFAULT_MONTHLY_SPEND_CAP_MICROS;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
capMicros = DEFAULT_MONTHLY_SPEND_CAP_MICROS;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
month: status.month,
|
|
57
|
+
spentMicros: status.spentMicros,
|
|
58
|
+
reservedMicros: status.reservedMicros,
|
|
59
|
+
capMicros,
|
|
60
|
+
capReached: status.spentMicros >= capMicros,
|
|
61
|
+
...(status.keyLimitedUntil !== undefined
|
|
62
|
+
? { keyLimitedUntil: new Date(status.keyLimitedUntil).toISOString() }
|
|
63
|
+
: {}),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
21
66
|
const NO_MODEL_WARNING = 'No default model is configured. The Jev /v1/systemone endpoint requires a model; set one with `cleo decide config --model <name>` (see `models`).';
|
|
22
67
|
function stateForError(err) {
|
|
23
68
|
if (err instanceof DecisionProviderError) {
|
|
24
69
|
if (err.kind === 'unauthorized')
|
|
25
70
|
return { state: 'unauthorized', httpStatus: err.status };
|
|
71
|
+
if (err.kind === 'key_limit_exceeded') {
|
|
72
|
+
return { state: 'key_limit_reached', httpStatus: err.status };
|
|
73
|
+
}
|
|
26
74
|
if (err.kind === 'invalid_response')
|
|
27
75
|
return { state: 'reachable', httpStatus: err.status };
|
|
28
76
|
return {
|
|
@@ -40,98 +88,187 @@ function stateForError(err) {
|
|
|
40
88
|
* @returns The reachability verdict and, when listed, the available models.
|
|
41
89
|
*/
|
|
42
90
|
export async function probeDecideProvider(opts = {}) {
|
|
91
|
+
const sites = DECISION_SITES.length;
|
|
43
92
|
const sealed = opts.connection === undefined ? loadDecideConnection() : opts.connection;
|
|
93
|
+
const spend = await spendSummary(opts);
|
|
94
|
+
const spendLedger = opts.spend === null ? undefined : inspectSpendLedger(opts.spendStatePath);
|
|
95
|
+
const ledgerBroken = spendLedger === 'corrupt' || spendLedger === 'unavailable';
|
|
96
|
+
const withHint = (detail) => ledgerBroken ? [detail, SPEND_LEDGER_REPAIR_HINT].filter(Boolean).join(' ') : detail;
|
|
44
97
|
if (!sealed) {
|
|
45
98
|
return {
|
|
46
99
|
state: 'unconfigured',
|
|
47
100
|
modelsEndpoint: 'skipped',
|
|
48
|
-
detail: 'Run `cleo decide config`.',
|
|
101
|
+
detail: withHint('Run `cleo decide config`.'),
|
|
102
|
+
sites,
|
|
103
|
+
...(spend ? { spend } : {}),
|
|
104
|
+
...(spendLedger ? { spendLedger } : {}),
|
|
49
105
|
};
|
|
50
106
|
}
|
|
51
107
|
const base = {
|
|
52
108
|
baseUrl: sealed.baseUrl,
|
|
53
109
|
keyPreview: sealed.keyPreview,
|
|
54
110
|
...(sealed.model ? { model: sealed.model } : {}),
|
|
111
|
+
sites,
|
|
112
|
+
...(spend ? { spend } : {}),
|
|
113
|
+
...(spendLedger ? { spendLedger } : {}),
|
|
55
114
|
};
|
|
115
|
+
const now = opts.now ?? Date.now;
|
|
56
116
|
const started = performance.now();
|
|
57
117
|
const signal = AbortSignal.timeout(opts.timeoutMs ?? DEFAULT_DECIDE_PROBE_TIMEOUT_MS);
|
|
118
|
+
// 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
|
+
}
|
|
137
|
+
const extras = {
|
|
138
|
+
capabilities: state?.capabilities ?? JEV_MINIMUM_CAPABILITIES,
|
|
139
|
+
...(state?.usage
|
|
140
|
+
? { usage: { ...state.usage, fetchedAt: new Date(state.detectedAt).toISOString() } }
|
|
141
|
+
: {}),
|
|
142
|
+
};
|
|
58
143
|
try {
|
|
59
144
|
const models = await listJevModels(sealed.connection(), signal, { fetch: opts.fetch });
|
|
145
|
+
const keyLimited = spend?.keyLimitedUntil !== undefined;
|
|
60
146
|
return {
|
|
61
147
|
...base,
|
|
62
|
-
|
|
148
|
+
...extras,
|
|
149
|
+
state: keyLimited ? 'key_limit_reached' : 'reachable',
|
|
63
150
|
modelsEndpoint: 'ok',
|
|
64
151
|
models,
|
|
65
152
|
httpStatus: 200,
|
|
66
153
|
latencyMs: Math.round(performance.now() - started),
|
|
67
|
-
...(sealed.model ?
|
|
154
|
+
...optionalDetail(withHint(keyLimited ? KEY_LIMIT_DETAIL : sealed.model ? undefined : NO_MODEL_WARNING)),
|
|
68
155
|
};
|
|
69
156
|
}
|
|
70
157
|
catch (err) {
|
|
71
158
|
const verdict = stateForError(err);
|
|
72
159
|
return {
|
|
73
160
|
...base,
|
|
161
|
+
...extras,
|
|
74
162
|
...verdict,
|
|
75
163
|
modelsEndpoint: 'failed',
|
|
76
164
|
latencyMs: Math.round(performance.now() - started),
|
|
77
|
-
|
|
165
|
+
...optionalDetail(withHint(verdict.state === 'key_limit_reached'
|
|
166
|
+
? KEY_LIMIT_DETAIL
|
|
167
|
+
: err instanceof Error
|
|
168
|
+
? err.message
|
|
169
|
+
: 'probe failed')),
|
|
78
170
|
};
|
|
79
171
|
}
|
|
80
172
|
}
|
|
173
|
+
/** Resolve the provider kind for {@link configureDecide}. */
|
|
174
|
+
function resolveProviderKind(input, stored) {
|
|
175
|
+
if (input.provider)
|
|
176
|
+
return input.provider;
|
|
177
|
+
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)`);
|
|
195
|
+
}
|
|
81
196
|
/**
|
|
82
|
-
* Store the provider settings, merging omitted values with the stored ones
|
|
197
|
+
* Store the provider settings, merging omitted values with the stored ones,
|
|
198
|
+
* then probe the provider and re-detect its capabilities so its extensions
|
|
199
|
+
* apply immediately.
|
|
83
200
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
201
|
+
* A model is always stored when one can be known, because the Jev
|
|
202
|
+
* `/v1/systemone` endpoint rejects a request without one (422, and every
|
|
203
|
+
* site silently falls back). The model comes from, in order: the flag; the
|
|
204
|
+
* stored model (same URL); the provider preset (`layahost` →
|
|
205
|
+
* `LAYAHOST_DEFAULT_MODEL`); the first model the provider lists. Only a
|
|
206
|
+
* `jev` provider whose listing fails can end with no model, and then a
|
|
207
|
+
* warning says how to set one.
|
|
90
208
|
*
|
|
91
|
-
* @param input - URL, key, optional model.
|
|
92
|
-
* @returns Secret-free summary plus the model's provenance.
|
|
93
209
|
* A URL whose host differs from the stored one must come with a fresh key:
|
|
94
210
|
* the stored key is never re-used (or sent in the model probe) for a new host.
|
|
95
211
|
*
|
|
96
|
-
* @
|
|
97
|
-
*
|
|
212
|
+
* @param input - Provider, URL, key, optional model.
|
|
213
|
+
* @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.
|
|
98
216
|
*/
|
|
99
217
|
export async function configureDecide(input) {
|
|
100
218
|
const stored = loadDecideConnection();
|
|
101
|
-
const
|
|
219
|
+
const provider = resolveProviderKind(input, stored);
|
|
220
|
+
const baseUrl = resolveBaseUrl(input, provider, stored);
|
|
102
221
|
const freshKey = input.apiKey?.trim();
|
|
103
222
|
if (!freshKey && stored && !sameDecideHost(stored.baseUrl, baseUrl)) {
|
|
104
223
|
throw new DecideCredentialsError('changing the provider host requires a fresh key; pass --key-stdin (the stored key is never sent to a new host)');
|
|
105
224
|
}
|
|
106
225
|
const apiKey = freshKey || stored?.connection().apiKey || '';
|
|
226
|
+
const preset = DECISION_PROVIDER_PRESETS[provider];
|
|
107
227
|
const explicit = input.model?.trim();
|
|
228
|
+
let model;
|
|
229
|
+
let modelSource = 'none';
|
|
108
230
|
if (explicit) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
231
|
+
model = explicit;
|
|
232
|
+
modelSource = 'flag';
|
|
233
|
+
}
|
|
234
|
+
else if (stored?.model && stored.baseUrl === baseUrl) {
|
|
235
|
+
model = stored.model;
|
|
236
|
+
modelSource = 'stored';
|
|
113
237
|
}
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
238
|
+
else if (preset.defaultModel) {
|
|
239
|
+
model = preset.defaultModel;
|
|
240
|
+
modelSource = 'preset';
|
|
117
241
|
}
|
|
118
|
-
const saved = await saveDecideCredentials({
|
|
242
|
+
const saved = await saveDecideCredentials({
|
|
243
|
+
provider,
|
|
244
|
+
baseUrl,
|
|
245
|
+
apiKey,
|
|
246
|
+
...(model ? { model } : {}),
|
|
247
|
+
});
|
|
119
248
|
const probe = await probeDecideProvider({
|
|
120
249
|
connection: loadDecideConnection(),
|
|
121
250
|
fetch: input.fetch,
|
|
122
251
|
timeoutMs: input.timeoutMs,
|
|
252
|
+
refreshCapabilities: true,
|
|
123
253
|
});
|
|
254
|
+
const verdict = {
|
|
255
|
+
providerState: probe.state,
|
|
256
|
+
...(probe.capabilities ? { capabilities: probe.capabilities } : {}),
|
|
257
|
+
};
|
|
258
|
+
if (model)
|
|
259
|
+
return { ...saved, modelSource, ...verdict };
|
|
124
260
|
const first = probe.models?.[0];
|
|
125
261
|
if (!first) {
|
|
126
262
|
const why = probe.state === 'reachable' ? 'the provider listed no models' : `probe ${probe.state}`;
|
|
127
263
|
return {
|
|
128
264
|
...saved,
|
|
129
265
|
modelSource: 'none',
|
|
266
|
+
...verdict,
|
|
130
267
|
warning: `No model stored (${why}). ${NO_MODEL_WARNING}`,
|
|
131
268
|
};
|
|
132
269
|
}
|
|
133
|
-
const withModel = await saveDecideCredentials({ baseUrl, apiKey, model: first });
|
|
134
|
-
return { ...withModel, modelSource: 'provider-listing' };
|
|
270
|
+
const withModel = await saveDecideCredentials({ provider, baseUrl, apiKey, model: first });
|
|
271
|
+
return { ...withModel, modelSource: 'provider-listing', ...verdict };
|
|
135
272
|
}
|
|
136
273
|
/**
|
|
137
274
|
* Remove the stored settings (and rotated backups of them).
|
|
@@ -178,7 +315,7 @@ function teeAudit(projectRoot) {
|
|
|
178
315
|
export async function askDecideDebug(input) {
|
|
179
316
|
const sealed = loadDecideConnection();
|
|
180
317
|
const audit = teeAudit(input.projectRoot);
|
|
181
|
-
const outcome = await decide(
|
|
318
|
+
const outcome = await decide(DECIDE_ASK_DECISION_SITE.id, { state: input.state, questions: { answer: { type: 'noul', criteria: input.question } } }, () => ({ answer: NEUTRAL_NOUL }), {
|
|
182
319
|
connection: sealed?.connection() ?? null,
|
|
183
320
|
cache: null,
|
|
184
321
|
audit: audit.sink,
|
|
@@ -196,4 +333,19 @@ export async function askDecideDebug(input) {
|
|
|
196
333
|
...(sealed ? { keyPreview: sealed.keyPreview } : {}),
|
|
197
334
|
};
|
|
198
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* `cleo decide budget reset`: start a fresh spend ledger for this month,
|
|
338
|
+
* moving the old file aside as a receipt. The repair for a corrupt ledger,
|
|
339
|
+
* which otherwise keeps every site on its heuristic. A readable ledger is
|
|
340
|
+
* refused unless `opts.force`, and its month-to-date spend is carried over,
|
|
341
|
+
* so a reset never lifts a reached cap.
|
|
342
|
+
*
|
|
343
|
+
* @param statePath - Ledger path. Default: `<cleoHome>/decide/spend.json`.
|
|
344
|
+
* @param opts - `force` resets a ledger that is not corrupt.
|
|
345
|
+
* @returns The receipt: previous health, carried spend and where the old file went.
|
|
346
|
+
* @throws {SpendResetRefusedError} When the ledger is not corrupt and `force` is not set.
|
|
347
|
+
*/
|
|
348
|
+
export async function resetDecideBudget(statePath, opts = {}) {
|
|
349
|
+
return resetSpendLedger(statePath, Date.now(), opts);
|
|
350
|
+
}
|
|
199
351
|
//# sourceMappingURL=operations.js.map
|
|
@@ -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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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
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 type { DecisionProviderCapabilities, DecisionProviderUsage } from '@cleocode/contracts';
|
|
19
|
+
/** Minimum interval between usage/capability refreshes: 10 minutes. */
|
|
20
|
+
export declare const USAGE_REFRESH_MS: number;
|
|
21
|
+
/** The provider identity a cached state belongs to. */
|
|
22
|
+
export interface ProviderStateIdentity {
|
|
23
|
+
/** Provider base URL. */
|
|
24
|
+
readonly baseUrl: string;
|
|
25
|
+
/** API key; only its truncated hash is ever compared or stored. */
|
|
26
|
+
readonly apiKey: string;
|
|
27
|
+
}
|
|
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 declare function providerKeyHash(apiKey: string): string;
|
|
37
|
+
/** One cached provider state. */
|
|
38
|
+
export interface ProviderState {
|
|
39
|
+
/** Base URL the state was detected for. */
|
|
40
|
+
readonly baseUrl: string;
|
|
41
|
+
/** {@link providerKeyHash} of the API key the state was detected with. */
|
|
42
|
+
readonly keyHash: string;
|
|
43
|
+
/** Epoch ms of the detection. */
|
|
44
|
+
readonly detectedAt: number;
|
|
45
|
+
/** Detected capabilities. */
|
|
46
|
+
readonly capabilities: DecisionProviderCapabilities;
|
|
47
|
+
/** Usage read at detection time, when the provider has a usage endpoint. */
|
|
48
|
+
readonly usage?: DecisionProviderUsage;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Default location: `<cleoHome>/decide/provider-state.json`.
|
|
52
|
+
*
|
|
53
|
+
* @returns Absolute path.
|
|
54
|
+
*/
|
|
55
|
+
export declare function defaultProviderStatePath(): string;
|
|
56
|
+
/**
|
|
57
|
+
* Read the cached state for a provider URL and key.
|
|
58
|
+
*
|
|
59
|
+
* @param identity - The configured base URL and API key.
|
|
60
|
+
* @param path - State file. Default {@link defaultProviderStatePath}.
|
|
61
|
+
* @returns The state, or `null` when absent, unreadable, or for another URL
|
|
62
|
+
* or key (a state written before keys were recorded counts as another key).
|
|
63
|
+
*/
|
|
64
|
+
export declare function readProviderState(identity: ProviderStateIdentity, path?: string): ProviderState | null;
|
|
65
|
+
/**
|
|
66
|
+
* Write the cached state (atomic rename). Never throws.
|
|
67
|
+
*
|
|
68
|
+
* @param state - State to store.
|
|
69
|
+
* @param path - State file. Default {@link defaultProviderStatePath}.
|
|
70
|
+
*/
|
|
71
|
+
export declare function writeProviderState(state: ProviderState, path?: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Capabilities the client may use for a provider URL and key, memoised per
|
|
74
|
+
* process for a minute so the hot path does not read the file on every
|
|
75
|
+
* decision.
|
|
76
|
+
*
|
|
77
|
+
* @param identity - The configured base URL and API key.
|
|
78
|
+
* @param now - Clock, epoch ms.
|
|
79
|
+
* @param path - State file. Default {@link defaultProviderStatePath}.
|
|
80
|
+
* @returns Detected capabilities, or `null` (→ the Jev minimum).
|
|
81
|
+
*/
|
|
82
|
+
export declare function cachedCapabilities(identity: ProviderStateIdentity, now?: number, path?: string): DecisionProviderCapabilities | null;
|
|
83
|
+
/**
|
|
84
|
+
* Clear the in-process memo. Tests only.
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
export declare function _resetProviderStateMemoForTest(): void;
|
|
89
|
+
//# sourceMappingURL=provider-state.d.ts.map
|