@cleocode/core 2026.9.23 → 2026.9.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/import-tasks.d.ts.map +1 -1
- package/dist/admin/import-tasks.js +35 -6
- package/dist/admin/import-tasks.js.map +1 -1
- package/dist/admin/import.d.ts.map +1 -1
- package/dist/admin/import.js +25 -6
- package/dist/admin/import.js.map +1 -1
- package/dist/audit-prune.d.ts +32 -0
- package/dist/audit-prune.d.ts.map +1 -1
- package/dist/audit-prune.js +37 -3
- package/dist/audit-prune.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/crypto.d.ts +1 -2
- package/dist/cloud/crypto.d.ts.map +1 -1
- package/dist/cloud/crypto.js +1 -11
- package/dist/cloud/crypto.js.map +1 -1
- package/dist/cloud/http.d.ts +8 -0
- package/dist/cloud/http.d.ts.map +1 -1
- package/dist/cloud/http.js +8 -1
- package/dist/cloud/http.js.map +1 -1
- package/dist/cloud/index.d.ts +6 -1
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +6 -1
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/nexus-auth.d.ts +169 -0
- package/dist/cloud/nexus-auth.d.ts.map +1 -0
- package/dist/cloud/nexus-auth.js +372 -0
- package/dist/cloud/nexus-auth.js.map +1 -0
- package/dist/cloud/nexus-credentials.d.ts +188 -0
- package/dist/cloud/nexus-credentials.d.ts.map +1 -0
- package/dist/cloud/nexus-credentials.js +323 -0
- package/dist/cloud/nexus-credentials.js.map +1 -0
- package/dist/cloud/nexus-link.d.ts +85 -0
- package/dist/cloud/nexus-link.d.ts.map +1 -0
- package/dist/cloud/nexus-link.js +226 -0
- package/dist/cloud/nexus-link.js.map +1 -0
- package/dist/cloud/presence.d.ts +88 -0
- package/dist/cloud/presence.d.ts.map +1 -0
- package/dist/cloud/presence.js +137 -0
- package/dist/cloud/presence.js.map +1 -0
- package/dist/cloud/projects.d.ts +3 -1
- package/dist/cloud/projects.d.ts.map +1 -1
- package/dist/cloud/projects.js +4 -2
- package/dist/cloud/projects.js.map +1 -1
- package/dist/cloud/uuidv7.d.ts +9 -0
- package/dist/cloud/uuidv7.d.ts.map +1 -0
- package/dist/cloud/uuidv7.js +19 -0
- package/dist/cloud/uuidv7.js.map +1 -0
- package/dist/crypto/credentials.d.ts +14 -4
- package/dist/crypto/credentials.d.ts.map +1 -1
- package/dist/crypto/credentials.js +15 -1
- package/dist/crypto/credentials.js.map +1 -1
- package/dist/decide/bench/dataset.d.ts +125 -0
- package/dist/decide/bench/dataset.d.ts.map +1 -0
- package/dist/decide/bench/dataset.js +457 -0
- package/dist/decide/bench/dataset.js.map +1 -0
- package/dist/decide/bench/index.d.ts +23 -0
- package/dist/decide/bench/index.d.ts.map +1 -0
- package/dist/decide/bench/index.js +23 -0
- package/dist/decide/bench/index.js.map +1 -0
- package/dist/decide/bench/metrics.d.ts +55 -0
- package/dist/decide/bench/metrics.d.ts.map +1 -0
- package/dist/decide/bench/metrics.js +100 -0
- package/dist/decide/bench/metrics.js.map +1 -0
- package/dist/decide/bench/operation.d.ts +119 -0
- package/dist/decide/bench/operation.d.ts.map +1 -0
- package/dist/decide/bench/operation.js +171 -0
- package/dist/decide/bench/operation.js.map +1 -0
- package/dist/decide/bench/profiles.d.ts +102 -0
- package/dist/decide/bench/profiles.d.ts.map +1 -0
- package/dist/decide/bench/profiles.js +175 -0
- package/dist/decide/bench/profiles.js.map +1 -0
- package/dist/decide/bench/questions.d.ts +40 -0
- package/dist/decide/bench/questions.d.ts.map +1 -0
- package/dist/decide/bench/questions.js +107 -0
- package/dist/decide/bench/questions.js.map +1 -0
- package/dist/decide/bench/report.d.ts +21 -0
- package/dist/decide/bench/report.d.ts.map +1 -0
- package/dist/decide/bench/report.js +125 -0
- package/dist/decide/bench/report.js.map +1 -0
- package/dist/decide/bench/runner.d.ts +208 -0
- package/dist/decide/bench/runner.d.ts.map +1 -0
- package/dist/decide/bench/runner.js +336 -0
- package/dist/decide/bench/runner.js.map +1 -0
- package/dist/decide/bench/source.d.ts +21 -0
- package/dist/decide/bench/source.d.ts.map +1 -0
- package/dist/decide/bench/source.js +67 -0
- package/dist/decide/bench/source.js.map +1 -0
- package/dist/decide/bench/spot-check.d.ts +117 -0
- package/dist/decide/bench/spot-check.d.ts.map +1 -0
- package/dist/decide/bench/spot-check.js +221 -0
- package/dist/decide/bench/spot-check.js.map +1 -0
- package/dist/decide/bench/stats.d.ts +57 -0
- package/dist/decide/bench/stats.d.ts.map +1 -0
- package/dist/decide/bench/stats.js +82 -0
- package/dist/decide/bench/stats.js.map +1 -0
- package/dist/decide/bench/types.d.ts +216 -0
- package/dist/decide/bench/types.d.ts.map +1 -0
- package/dist/decide/bench/types.js +104 -0
- package/dist/decide/bench/types.js.map +1 -0
- package/dist/decide/client.d.ts +35 -1
- package/dist/decide/client.d.ts.map +1 -1
- package/dist/decide/client.js +135 -35
- package/dist/decide/client.js.map +1 -1
- package/dist/decide/credentials.d.ts +177 -17
- package/dist/decide/credentials.d.ts.map +1 -1
- package/dist/decide/credentials.js +505 -41
- package/dist/decide/credentials.js.map +1 -1
- package/dist/decide/index.d.ts +8 -8
- package/dist/decide/index.d.ts.map +1 -1
- package/dist/decide/index.js +8 -8
- package/dist/decide/index.js.map +1 -1
- package/dist/decide/jev-wire.d.ts +55 -19
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +116 -37
- package/dist/decide/jev-wire.js.map +1 -1
- package/dist/decide/operations.d.ts +63 -12
- package/dist/decide/operations.d.ts.map +1 -1
- package/dist/decide/operations.js +116 -58
- package/dist/decide/operations.js.map +1 -1
- package/dist/decide/provider-state.d.ts +85 -12
- package/dist/decide/provider-state.d.ts.map +1 -1
- package/dist/decide/provider-state.js +154 -21
- package/dist/decide/provider-state.js.map +1 -1
- package/dist/decide/provider.d.ts +5 -0
- package/dist/decide/provider.d.ts.map +1 -1
- package/dist/decide/provider.js.map +1 -1
- package/dist/decide/providers.d.ts +15 -2
- package/dist/decide/providers.d.ts.map +1 -1
- package/dist/decide/providers.js +22 -6
- package/dist/decide/providers.js.map +1 -1
- package/dist/decide/sites/registry.d.ts +22 -0
- package/dist/decide/sites/registry.d.ts.map +1 -1
- package/dist/decide/sites/registry.js +23 -0
- package/dist/decide/sites/registry.js.map +1 -1
- package/dist/decide/wizard.d.ts +12 -4
- package/dist/decide/wizard.d.ts.map +1 -1
- package/dist/decide/wizard.js +79 -26
- package/dist/decide/wizard.js.map +1 -1
- package/dist/dispatch/mvi-projection.d.ts +15 -2
- package/dist/dispatch/mvi-projection.d.ts.map +1 -1
- package/dist/dispatch/mvi-projection.js +73 -12
- package/dist/dispatch/mvi-projection.js.map +1 -1
- package/dist/docs/adr-allocator.d.ts +2 -2
- package/dist/docs/adr-allocator.d.ts.map +1 -1
- package/dist/docs/adr-allocator.js +17 -4
- package/dist/docs/adr-allocator.js.map +1 -1
- package/dist/docs/blob-consolidation.js +1 -1
- package/dist/docs/blob-consolidation.js.map +1 -1
- package/dist/docs/display-alias.d.ts +1 -1
- package/dist/docs/display-alias.d.ts.map +1 -1
- package/dist/docs/display-alias.js +7 -4
- package/dist/docs/display-alias.js.map +1 -1
- package/dist/docs/docs-inconsistency-detector.js +1 -1
- package/dist/docs/docs-inconsistency-detector.js.map +1 -1
- package/dist/docs/docs-update.d.ts.map +1 -1
- package/dist/docs/docs-update.js +6 -1
- package/dist/docs/docs-update.js.map +1 -1
- package/dist/docs/export-document.js +18058 -14538
- package/dist/docs/export-document.js.map +3 -3
- package/dist/docs/numbering.js +1 -1
- package/dist/docs/numbering.js.map +1 -1
- package/dist/docs/supersede.d.ts.map +1 -1
- package/dist/docs/supersede.js +6 -3
- package/dist/docs/supersede.js.map +1 -1
- package/dist/docs/version-ssot.js +1 -1
- package/dist/docs/version-ssot.js.map +1 -1
- package/dist/doctor/db-substrate.d.ts.map +1 -1
- package/dist/doctor/db-substrate.js +39 -24
- package/dist/doctor/db-substrate.js.map +1 -1
- package/dist/doctor/knowledge-summary.d.ts +10 -3
- package/dist/doctor/knowledge-summary.d.ts.map +1 -1
- package/dist/doctor/knowledge-summary.js +10 -3
- package/dist/doctor/knowledge-summary.js.map +1 -1
- package/dist/doctor/orphan-ac-bindings.d.ts +64 -0
- package/dist/doctor/orphan-ac-bindings.d.ts.map +1 -0
- package/dist/doctor/orphan-ac-bindings.js +59 -0
- package/dist/doctor/orphan-ac-bindings.js.map +1 -0
- package/dist/doctor/project-identity.d.ts +128 -37
- package/dist/doctor/project-identity.d.ts.map +1 -1
- package/dist/doctor/project-identity.js +476 -63
- package/dist/doctor/project-identity.js.map +1 -1
- package/dist/doctor/projects.d.ts.map +1 -1
- package/dist/doctor/projects.js +43 -29
- package/dist/doctor/projects.js.map +1 -1
- package/dist/doctor/row-identity.d.ts +31 -0
- package/dist/doctor/row-identity.d.ts.map +1 -0
- package/dist/doctor/row-identity.js +93 -0
- package/dist/doctor/row-identity.js.map +1 -0
- package/dist/doctor/twin-collapse.d.ts +108 -2
- package/dist/doctor/twin-collapse.d.ts.map +1 -1
- package/dist/doctor/twin-collapse.js +309 -7
- package/dist/doctor/twin-collapse.js.map +1 -1
- package/dist/error-catalog.js +2 -2
- package/dist/error-catalog.js.map +1 -1
- package/dist/error-registry.js +1 -1
- package/dist/error-registry.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +22 -2
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +20 -11
- package/dist/init.js.map +1 -1
- package/dist/inject/index.d.ts.map +1 -1
- package/dist/inject/index.js +2 -3
- package/dist/inject/index.js.map +1 -1
- package/dist/internal.d.ts +5 -4
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +6 -4
- package/dist/internal.js.map +1 -1
- package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
- package/dist/lifecycle/verification/satisfies-validator.js +10 -0
- package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
- package/dist/llm/credential-remove-entry.d.ts +59 -0
- package/dist/llm/credential-remove-entry.d.ts.map +1 -0
- package/dist/llm/credential-remove-entry.js +101 -0
- package/dist/llm/credential-remove-entry.js.map +1 -0
- package/dist/llm/oauth/device-code.d.ts +26 -6
- package/dist/llm/oauth/device-code.d.ts.map +1 -1
- package/dist/llm/oauth/device-code.js +44 -12
- package/dist/llm/oauth/device-code.js.map +1 -1
- package/dist/llm/plugin-facade.js +18202 -14682
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/memory/attention.d.ts.map +1 -1
- package/dist/memory/attention.js +5 -3
- package/dist/memory/attention.js.map +1 -1
- package/dist/memory/decisions.d.ts +48 -3
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/memory/decisions.js +98 -14
- package/dist/memory/decisions.js.map +1 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +19 -10
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/learnings.d.ts +6 -6
- package/dist/memory/manifest-identity.d.ts +171 -0
- package/dist/memory/manifest-identity.d.ts.map +1 -0
- package/dist/memory/manifest-identity.js +345 -0
- package/dist/memory/manifest-identity.js.map +1 -0
- package/dist/memory/mental-model-queue.d.ts +14 -4
- package/dist/memory/mental-model-queue.d.ts.map +1 -1
- package/dist/memory/mental-model-queue.js +64 -35
- package/dist/memory/mental-model-queue.js.map +1 -1
- package/dist/memory/patterns.d.ts +4 -4
- package/dist/memory/pipeline-manifest-sqlite.d.ts +47 -5
- package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
- package/dist/memory/pipeline-manifest-sqlite.js +130 -14
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
- package/dist/memory/retrieval/observe.d.ts.map +1 -1
- package/dist/memory/retrieval/observe.js +2 -0
- package/dist/memory/retrieval/observe.js.map +1 -1
- package/dist/memory/transcript-scanner.js +1 -1
- package/dist/migration/manual/T10165-backfill-adr-index.d.ts.map +1 -1
- package/dist/migration/manual/T10165-backfill-adr-index.js +5 -1
- package/dist/migration/manual/T10165-backfill-adr-index.js.map +1 -1
- package/dist/nexus/deps.d.ts.map +1 -1
- package/dist/nexus/deps.js +7 -14
- package/dist/nexus/deps.js.map +1 -1
- package/dist/nexus/discover.d.ts.map +1 -1
- package/dist/nexus/discover.js +6 -9
- package/dist/nexus/discover.js.map +1 -1
- package/dist/nexus/fleet-status.d.ts +83 -0
- package/dist/nexus/fleet-status.d.ts.map +1 -0
- package/dist/nexus/fleet-status.js +414 -0
- package/dist/nexus/fleet-status.js.map +1 -0
- package/dist/nexus/git-state.d.ts +15 -0
- package/dist/nexus/git-state.d.ts.map +1 -1
- package/dist/nexus/git-state.js +77 -3
- package/dist/nexus/git-state.js.map +1 -1
- package/dist/nexus/identity.d.ts.map +1 -1
- package/dist/nexus/identity.js +4 -0
- package/dist/nexus/identity.js.map +1 -1
- package/dist/nexus/index.d.ts +4 -1
- package/dist/nexus/index.d.ts.map +1 -1
- package/dist/nexus/index.js +7 -1
- package/dist/nexus/index.js.map +1 -1
- package/dist/nexus/migrate-json-to-sqlite.d.ts +3 -2
- package/dist/nexus/migrate-json-to-sqlite.d.ts.map +1 -1
- package/dist/nexus/migrate-json-to-sqlite.js +9 -17
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
- package/dist/nexus/ops.d.ts +1 -0
- package/dist/nexus/ops.d.ts.map +1 -1
- package/dist/nexus/project-activity.d.ts +104 -0
- package/dist/nexus/project-activity.d.ts.map +1 -0
- package/dist/nexus/project-activity.js +150 -0
- package/dist/nexus/project-activity.js.map +1 -0
- package/dist/nexus/projects-clean.d.ts.map +1 -1
- package/dist/nexus/projects-clean.js +22 -11
- package/dist/nexus/projects-clean.js.map +1 -1
- package/dist/nexus/projects-scan.d.ts.map +1 -1
- package/dist/nexus/projects-scan.js +8 -13
- package/dist/nexus/projects-scan.js.map +1 -1
- package/dist/nexus/query.d.ts +2 -2
- package/dist/nexus/query.d.ts.map +1 -1
- package/dist/nexus/query.js +8 -31
- package/dist/nexus/query.js.map +1 -1
- package/dist/nexus/registry-errors.d.ts +61 -0
- package/dist/nexus/registry-errors.d.ts.map +1 -0
- package/dist/nexus/registry-errors.js +85 -0
- package/dist/nexus/registry-errors.js.map +1 -0
- package/dist/nexus/registry-roots.d.ts +5 -2
- package/dist/nexus/registry-roots.d.ts.map +1 -1
- package/dist/nexus/registry-roots.js +8 -10
- package/dist/nexus/registry-roots.js.map +1 -1
- package/dist/nexus/registry.d.ts +48 -5
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +151 -85
- package/dist/nexus/registry.js.map +1 -1
- package/dist/orchestrate/pivot.d.ts +4 -0
- package/dist/orchestrate/pivot.d.ts.map +1 -1
- package/dist/orchestrate/pivot.js +75 -12
- package/dist/orchestrate/pivot.js.map +1 -1
- package/dist/orchestrate/query-ops.d.ts.map +1 -1
- package/dist/orchestrate/query-ops.js +29 -27
- 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 +29 -3
- package/dist/orchestrate/spawn-ops.js.map +1 -1
- package/dist/orchestrate/worktree-complete.d.ts.map +1 -1
- package/dist/orchestrate/worktree-complete.js +40 -2
- package/dist/orchestrate/worktree-complete.js.map +1 -1
- package/dist/orchestration/bootstrap.d.ts.map +1 -1
- package/dist/orchestration/bootstrap.js +20 -14
- package/dist/orchestration/bootstrap.js.map +1 -1
- package/dist/orchestration/index.d.ts +15 -1
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +25 -6
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/lead-rollup.d.ts +7 -1
- package/dist/orchestration/lead-rollup.d.ts.map +1 -1
- package/dist/orchestration/lead-rollup.js +6 -3
- package/dist/orchestration/lead-rollup.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts +26 -0
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +63 -92
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/waves.d.ts +21 -10
- package/dist/orchestration/waves.d.ts.map +1 -1
- package/dist/orchestration/waves.js +38 -35
- package/dist/orchestration/waves.js.map +1 -1
- package/dist/paths.d.ts +9 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +30 -13
- package/dist/paths.js.map +1 -1
- package/dist/phases/index.d.ts +1 -1
- package/dist/phases/index.d.ts.map +1 -1
- package/dist/phases/index.js +3 -4
- package/dist/phases/index.js.map +1 -1
- package/dist/project-info.d.ts +40 -3
- package/dist/project-info.d.ts.map +1 -1
- package/dist/project-info.js +74 -6
- package/dist/project-info.js.map +1 -1
- package/dist/project-lifecycle.d.ts +28 -7
- package/dist/project-lifecycle.d.ts.map +1 -1
- package/dist/project-lifecycle.js +114 -47
- package/dist/project-lifecycle.js.map +1 -1
- package/dist/project-scope.d.ts +70 -3
- package/dist/project-scope.d.ts.map +1 -1
- package/dist/project-scope.js +154 -15
- package/dist/project-scope.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +190 -0
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +436 -4
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/release/open.d.ts +12 -2
- package/dist/release/open.d.ts.map +1 -1
- package/dist/release/open.js +32 -3
- package/dist/release/open.js.map +1 -1
- package/dist/release/preflight-skip.d.ts +73 -0
- package/dist/release/preflight-skip.d.ts.map +1 -0
- package/dist/release/preflight-skip.js +254 -0
- package/dist/release/preflight-skip.js.map +1 -0
- package/dist/render/decide/index.d.ts +51 -0
- package/dist/render/decide/index.d.ts.map +1 -0
- package/dist/render/decide/index.js +289 -0
- package/dist/render/decide/index.js.map +1 -0
- package/dist/render/index.d.ts +1 -0
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +1 -0
- package/dist/render/index.js.map +1 -1
- package/dist/render/nexus/graph/index.d.ts +5 -0
- package/dist/render/nexus/graph/index.d.ts.map +1 -1
- package/dist/render/nexus/graph/index.js +53 -0
- package/dist/render/nexus/graph/index.js.map +1 -1
- package/dist/scaffold/ensure-config.d.ts +14 -6
- package/dist/scaffold/ensure-config.d.ts.map +1 -1
- package/dist/scaffold/ensure-config.js +39 -17
- package/dist/scaffold/ensure-config.js.map +1 -1
- package/dist/scaffold/project-identity.d.ts +115 -23
- package/dist/scaffold/project-identity.d.ts.map +1 -1
- package/dist/scaffold/project-identity.js +196 -44
- package/dist/scaffold/project-identity.js.map +1 -1
- package/dist/sdk/validator-ac-pull.d.ts.map +1 -1
- package/dist/sdk/validator-ac-pull.js +2 -1
- package/dist/sdk/validator-ac-pull.js.map +1 -1
- package/dist/selfimprove/fix-gen.js +18221 -14701
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/cross-project-hygiene.d.ts +17 -6
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +22 -11
- package/dist/sentient/cross-project-hygiene.js.map +1 -1
- package/dist/sentient/propose-tick.d.ts.map +1 -1
- package/dist/sentient/propose-tick.js +2 -3
- package/dist/sentient/propose-tick.js.map +1 -1
- package/dist/sentient/stage-drift-tick.d.ts.map +1 -1
- package/dist/sentient/stage-drift-tick.js +2 -3
- package/dist/sentient/stage-drift-tick.js.map +1 -1
- package/dist/session/engine-ops.d.ts +13 -4
- package/dist/session/engine-ops.d.ts.map +1 -1
- package/dist/session/engine-ops.js +38 -45
- package/dist/session/engine-ops.js.map +1 -1
- package/dist/sessions/briefing.d.ts +7 -3
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/briefing.js +10 -10
- package/dist/sessions/briefing.js.map +1 -1
- package/dist/sessions/drift-watchdog.d.ts.map +1 -1
- package/dist/sessions/drift-watchdog.js +11 -19
- package/dist/sessions/drift-watchdog.js.map +1 -1
- package/dist/sessions/focus-state-store.d.ts +103 -26
- package/dist/sessions/focus-state-store.d.ts.map +1 -1
- package/dist/sessions/focus-state-store.js +166 -37
- package/dist/sessions/focus-state-store.js.map +1 -1
- package/dist/sessions/handoff.d.ts.map +1 -1
- package/dist/sessions/handoff.js +9 -18
- package/dist/sessions/handoff.js.map +1 -1
- package/dist/sessions/index.d.ts +4 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +35 -6
- 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 -2
- package/dist/sessions/session-drift.js.map +1 -1
- package/dist/sessions/session-view.d.ts +8 -1
- package/dist/sessions/session-view.d.ts.map +1 -1
- package/dist/sessions/session-view.js +9 -2
- package/dist/sessions/session-view.js.map +1 -1
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +1 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +4 -2
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +6 -2
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/nexus-account.d.ts +32 -0
- package/dist/setup/sections/nexus-account.d.ts.map +1 -0
- package/dist/setup/sections/nexus-account.js +64 -0
- package/dist/setup/sections/nexus-account.js.map +1 -0
- package/dist/setup/wizard.d.ts +1 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js.map +1 -1
- package/dist/skills/manifests/research.js +2 -0
- package/dist/skills/manifests/research.js.map +1 -1
- package/dist/skills/orchestrator/startup.d.ts.map +1 -1
- package/dist/skills/orchestrator/startup.js +18 -31
- package/dist/skills/orchestrator/startup.js.map +1 -1
- package/dist/skills/orchestrator/validator.d.ts.map +1 -1
- package/dist/skills/orchestrator/validator.js +9 -2
- package/dist/skills/orchestrator/validator.js.map +1 -1
- package/dist/skills/validation.d.ts +4 -1
- package/dist/skills/validation.d.ts.map +1 -1
- package/dist/skills/validation.js +11 -3
- package/dist/skills/validation.js.map +1 -1
- package/dist/snapshot/index.d.ts.map +1 -1
- package/dist/snapshot/index.js +60 -53
- package/dist/snapshot/index.js.map +1 -1
- package/dist/spawn/agent-identity.d.ts +33 -1
- package/dist/spawn/agent-identity.d.ts.map +1 -1
- package/dist/spawn/agent-identity.js +53 -1
- package/dist/spawn/agent-identity.js.map +1 -1
- package/dist/spawn/branch-lock.d.ts +111 -7
- package/dist/spawn/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +296 -8
- package/dist/spawn/branch-lock.js.map +1 -1
- package/dist/spawn/index.d.ts +1 -1
- package/dist/spawn/index.d.ts.map +1 -1
- package/dist/spawn/index.js +1 -1
- package/dist/spawn/index.js.map +1 -1
- package/dist/stats/index.d.ts.map +1 -1
- package/dist/stats/index.js +3 -4
- package/dist/stats/index.js.map +1 -1
- package/dist/status/index.d.ts +12 -3
- package/dist/status/index.d.ts.map +1 -1
- package/dist/status/index.js +47 -5
- package/dist/status/index.js.map +1 -1
- package/dist/store/ac-binding-prune.d.ts +144 -0
- package/dist/store/ac-binding-prune.d.ts.map +1 -0
- package/dist/store/ac-binding-prune.js +293 -0
- package/dist/store/ac-binding-prune.js.map +1 -0
- package/dist/store/agent-registry-store.d.ts.map +1 -1
- package/dist/store/agent-registry-store.js +3 -2
- package/dist/store/agent-registry-store.js.map +1 -1
- package/dist/store/attachment-repair.d.ts.map +1 -1
- package/dist/store/attachment-repair.js +42 -3
- package/dist/store/attachment-repair.js.map +1 -1
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +30 -46
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/backup-recover-brain.d.ts +4 -0
- package/dist/store/backup-recover-brain.d.ts.map +1 -1
- package/dist/store/backup-recover-brain.js +2 -0
- package/dist/store/backup-recover-brain.js.map +1 -1
- package/dist/store/backup-recover.d.ts +9 -0
- package/dist/store/backup-recover.d.ts.map +1 -1
- package/dist/store/backup-recover.js +28 -1
- package/dist/store/backup-recover.js.map +1 -1
- package/dist/store/backup-sidecar.d.ts +115 -2
- package/dist/store/backup-sidecar.d.ts.map +1 -1
- package/dist/store/backup-sidecar.js +263 -3
- package/dist/store/backup-sidecar.js.map +1 -1
- package/dist/store/blob-keep.d.ts +135 -0
- package/dist/store/blob-keep.d.ts.map +1 -0
- package/dist/store/blob-keep.js +283 -0
- package/dist/store/blob-keep.js.map +1 -0
- package/dist/store/conduit-sqlite.d.ts.map +1 -1
- package/dist/store/conduit-sqlite.js +3 -2
- package/dist/store/conduit-sqlite.js.map +1 -1
- package/dist/store/converters.d.ts.map +1 -1
- package/dist/store/converters.js +11 -0
- package/dist/store/converters.js.map +1 -1
- package/dist/store/credential-transfer.d.ts +37 -5
- package/dist/store/credential-transfer.d.ts.map +1 -1
- package/dist/store/credential-transfer.js +76 -18
- package/dist/store/credential-transfer.js.map +1 -1
- package/dist/store/data-accessor.d.ts +1 -1
- package/dist/store/data-accessor.d.ts.map +1 -1
- package/dist/store/data-accessor.js.map +1 -1
- package/dist/store/db-helpers.d.ts +35 -11
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +107 -38
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/display-id-alias.d.ts +529 -0
- package/dist/store/display-id-alias.d.ts.map +1 -0
- package/dist/store/display-id-alias.js +1063 -0
- package/dist/store/display-id-alias.js.map +1 -0
- package/dist/store/dual-scope-db.d.ts.map +1 -1
- package/dist/store/dual-scope-db.js +21 -0
- package/dist/store/dual-scope-db.js.map +1 -1
- package/dist/store/exodus/on-open.d.ts.map +1 -1
- package/dist/store/exodus/on-open.js +35 -0
- package/dist/store/exodus/on-open.js.map +1 -1
- package/dist/store/exodus/reconcile.d.ts.map +1 -1
- package/dist/store/exodus/reconcile.js +7 -2
- package/dist/store/exodus/reconcile.js.map +1 -1
- package/dist/store/exodus/recovery.d.ts.map +1 -1
- package/dist/store/exodus/recovery.js +20 -1
- package/dist/store/exodus/recovery.js.map +1 -1
- package/dist/store/exodus/runtime-targets.d.ts +3 -3
- package/dist/store/exodus/runtime-targets.js +3 -3
- package/dist/store/import-remap.d.ts +12 -1
- package/dist/store/import-remap.d.ts.map +1 -1
- package/dist/store/import-remap.js +14 -0
- package/dist/store/import-remap.js.map +1 -1
- package/dist/store/legacy-tasks-lineage.d.ts +3 -1
- package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
- package/dist/store/legacy-tasks-lineage.js +22 -3
- package/dist/store/legacy-tasks-lineage.js.map +1 -1
- package/dist/store/memory-accessor.js +1 -1
- package/dist/store/memory-accessor.js.map +1 -1
- package/dist/store/migration-manager.d.ts +61 -0
- package/dist/store/migration-manager.d.ts.map +1 -1
- package/dist/store/migration-manager.js +102 -4
- package/dist/store/migration-manager.js.map +1 -1
- package/dist/store/nexus-validation-schemas.d.ts +64 -0
- package/dist/store/nexus-validation-schemas.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.d.ts +8 -0
- package/dist/store/portable-bundle-import.d.ts.map +1 -1
- package/dist/store/portable-bundle-import.js +10 -0
- package/dist/store/portable-bundle-import.js.map +1 -1
- package/dist/store/portable-bundle-scan.d.ts.map +1 -1
- package/dist/store/portable-bundle-scan.js +1 -0
- package/dist/store/portable-bundle-scan.js.map +1 -1
- package/dist/store/portable-bundle.d.ts.map +1 -1
- package/dist/store/portable-bundle.js +15 -14
- package/dist/store/portable-bundle.js.map +1 -1
- package/dist/store/pre-repair-snapshot.d.ts +4 -1
- package/dist/store/pre-repair-snapshot.d.ts.map +1 -1
- package/dist/store/pre-repair-snapshot.js +5 -1
- package/dist/store/pre-repair-snapshot.js.map +1 -1
- package/dist/store/regenerators.d.ts +4 -2
- package/dist/store/regenerators.d.ts.map +1 -1
- package/dist/store/regenerators.js +7 -3
- package/dist/store/regenerators.js.map +1 -1
- package/dist/store/repair-malformed-dbs.d.ts +4 -0
- package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
- package/dist/store/repair-malformed-dbs.js +3 -0
- package/dist/store/repair-malformed-dbs.js.map +1 -1
- package/dist/store/row-identity-flag.d.ts +26 -0
- package/dist/store/row-identity-flag.d.ts.map +1 -0
- package/dist/store/row-identity-flag.js +31 -0
- package/dist/store/row-identity-flag.js.map +1 -0
- package/dist/store/row-identity-registry.d.ts +61 -0
- package/dist/store/row-identity-registry.d.ts.map +1 -0
- package/dist/store/row-identity-registry.js +198 -0
- package/dist/store/row-identity-registry.js.map +1 -0
- package/dist/store/row-identity.d.ts +390 -0
- package/dist/store/row-identity.d.ts.map +1 -0
- package/dist/store/row-identity.js +1240 -0
- package/dist/store/row-identity.js.map +1 -0
- package/dist/store/safety-data-accessor.d.ts +10 -3
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +15 -4
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/schema/attachments.d.ts +1 -1
- package/dist/store/schema/audit.d.ts +4 -4
- package/dist/store/schema/background-jobs.d.ts +1 -1
- package/dist/store/schema/cleo-global/nexus.d.ts +49 -1
- package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/nexus.js +17 -0
- package/dist/store/schema/cleo-global/nexus.js.map +1 -1
- package/dist/store/schema/cleo-global/skills.d.ts +2 -2
- package/dist/store/schema/cleo-project/audit.d.ts +4 -4
- package/dist/store/schema/cleo-project/docs.d.ts +17 -1
- package/dist/store/schema/cleo-project/docs.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/docs.js +10 -0
- package/dist/store/schema/cleo-project/docs.js.map +1 -1
- package/dist/store/schema/cleo-project/lifecycle.d.ts +4 -4
- package/dist/store/schema/cleo-project/nexus-graph.d.ts +3 -3
- package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
- package/dist/store/schema/cleo-project/runtime.d.ts +3 -3
- package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +87 -1
- package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core-batch2.js +35 -0
- package/dist/store/schema/cleo-project/tasks-core-batch2.js.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.d.ts +263 -7
- package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.js +77 -2
- package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +7 -7
- package/dist/store/schema/lifecycle.d.ts +4 -4
- package/dist/store/schema/manifest.d.ts +1 -1
- package/dist/store/schema/memory-schema.d.ts +6 -6
- package/dist/store/schema/nexus-schema.d.ts +51 -3
- package/dist/store/schema/nexus-schema.d.ts.map +1 -1
- package/dist/store/schema/nexus-schema.js +28 -7
- package/dist/store/schema/nexus-schema.js.map +1 -1
- package/dist/store/schema/provenance/releases.d.ts +1 -1
- package/dist/store/schema/skills-schema.d.ts +2 -2
- package/dist/store/schema/tasks.d.ts +6 -6
- package/dist/store/session-store.d.ts +65 -0
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +108 -7
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/split-brain-import.d.ts +2 -14
- package/dist/store/split-brain-import.d.ts.map +1 -1
- package/dist/store/split-brain-import.js +4 -19
- package/dist/store/split-brain-import.js.map +1 -1
- package/dist/store/sqlite-data-accessor.d.ts +279 -2
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +789 -91
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts +15 -3
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +52 -20
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/store-write-guard.d.ts +9 -3
- package/dist/store/store-write-guard.d.ts.map +1 -1
- package/dist/store/store-write-guard.js +25 -4
- package/dist/store/store-write-guard.js.map +1 -1
- package/dist/store/sync/clock-store.d.ts +67 -0
- package/dist/store/sync/clock-store.d.ts.map +1 -0
- package/dist/store/sync/clock-store.js +117 -0
- package/dist/store/sync/clock-store.js.map +1 -0
- package/dist/store/sync/flags.d.ts +51 -0
- package/dist/store/sync/flags.d.ts.map +1 -0
- package/dist/store/sync/flags.js +81 -0
- package/dist/store/sync/flags.js.map +1 -0
- package/dist/store/sync/hlc.d.ts +115 -0
- package/dist/store/sync/hlc.d.ts.map +1 -0
- package/dist/store/sync/hlc.js +172 -0
- package/dist/store/sync/hlc.js.map +1 -0
- package/dist/store/sync/index.d.ts +20 -0
- package/dist/store/sync/index.d.ts.map +1 -0
- package/dist/store/sync/index.js +20 -0
- package/dist/store/sync/index.js.map +1 -0
- package/dist/store/sync/replica-registry.d.ts +85 -0
- package/dist/store/sync/replica-registry.d.ts.map +1 -0
- package/dist/store/sync/replica-registry.js +147 -0
- package/dist/store/sync/replica-registry.js.map +1 -0
- package/dist/store/sync/replica.d.ts +181 -0
- package/dist/store/sync/replica.d.ts.map +1 -0
- package/dist/store/sync/replica.js +305 -0
- package/dist/store/sync/replica.js.map +1 -0
- package/dist/store/sync/schema.d.ts +68 -0
- package/dist/store/sync/schema.d.ts.map +1 -0
- package/dist/store/sync/schema.js +130 -0
- package/dist/store/sync/schema.js.map +1 -0
- package/dist/store/sync/skew-hold.d.ts +71 -0
- package/dist/store/sync/skew-hold.d.ts.map +1 -0
- package/dist/store/sync/skew-hold.js +89 -0
- package/dist/store/sync/skew-hold.js.map +1 -0
- package/dist/store/table-classification.d.ts +11 -9
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +127 -33
- package/dist/store/table-classification.js.map +1 -1
- package/dist/store/task-claim.d.ts +144 -0
- package/dist/store/task-claim.d.ts.map +1 -0
- package/dist/store/task-claim.js +195 -0
- package/dist/store/task-claim.js.map +1 -0
- package/dist/store/task-version.d.ts +43 -5
- package/dist/store/task-version.d.ts.map +1 -1
- package/dist/store/task-version.js +113 -17
- package/dist/store/task-version.js.map +1 -1
- package/dist/store/tasks-schema.d.ts +2 -0
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +1 -0
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/tasks-sqlite.d.ts.map +1 -1
- package/dist/store/tasks-sqlite.js +10 -2
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +450 -22
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +1552 -49
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/umbrella-data-accessor.d.ts +10 -3
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +14 -4
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +402 -50
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/store/with-retry.d.ts +36 -0
- package/dist/store/with-retry.d.ts.map +1 -1
- package/dist/store/with-retry.js +51 -0
- package/dist/store/with-retry.js.map +1 -1
- package/dist/store/worktree-build-guard.d.ts +13 -4
- package/dist/store/worktree-build-guard.d.ts.map +1 -1
- package/dist/store/worktree-build-guard.js +21 -10
- package/dist/store/worktree-build-guard.js.map +1 -1
- package/dist/store/worktree-isolation-guard.d.ts +121 -10
- package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
- package/dist/store/worktree-isolation-guard.js +155 -34
- package/dist/store/worktree-isolation-guard.js.map +1 -1
- package/dist/system/backup.d.ts +7 -0
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +5 -0
- package/dist/system/backup.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +6 -1
- package/dist/system/health.js.map +1 -1
- package/dist/system/inject-generate.d.ts.map +1 -1
- package/dist/system/inject-generate.js +23 -10
- package/dist/system/inject-generate.js.map +1 -1
- package/dist/system/project-health.d.ts +17 -2
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +19 -6
- package/dist/system/project-health.js.map +1 -1
- package/dist/task-tools/index.d.ts +1 -1
- package/dist/task-tools/index.d.ts.map +1 -1
- package/dist/task-tools/index.js +1 -1
- package/dist/task-tools/index.js.map +1 -1
- package/dist/task-tools/score-task-priority.d.ts +38 -0
- package/dist/task-tools/score-task-priority.d.ts.map +1 -1
- package/dist/task-tools/score-task-priority.js +51 -0
- package/dist/task-tools/score-task-priority.js.map +1 -1
- package/dist/task-work/claims.d.ts +215 -0
- package/dist/task-work/claims.d.ts.map +1 -0
- package/dist/task-work/claims.js +272 -0
- package/dist/task-work/claims.js.map +1 -0
- package/dist/task-work/index.d.ts +47 -3
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +74 -41
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
- package/dist/tasks/ac-coverage-gate.js +3 -0
- package/dist/tasks/ac-coverage-gate.js.map +1 -1
- package/dist/tasks/ac-table.d.ts +35 -7
- package/dist/tasks/ac-table.d.ts.map +1 -1
- package/dist/tasks/ac-table.js +119 -14
- package/dist/tasks/ac-table.js.map +1 -1
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +51 -4
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/analyze.d.ts.map +1 -1
- package/dist/tasks/analyze.js +3 -4
- package/dist/tasks/analyze.js.map +1 -1
- package/dist/tasks/backfill-child-projections.js +47 -6
- package/dist/tasks/backfill-child-projections.js.map +1 -1
- package/dist/tasks/change-set.d.ts +5 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +59 -3
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete.d.ts +16 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +33 -8
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/completion-evaluation.d.ts.map +1 -1
- package/dist/tasks/completion-evaluation.js +3 -0
- package/dist/tasks/completion-evaluation.js.map +1 -1
- package/dist/tasks/component-pr.d.ts +162 -1
- package/dist/tasks/component-pr.d.ts.map +1 -1
- package/dist/tasks/component-pr.js +560 -59
- package/dist/tasks/component-pr.js.map +1 -1
- package/dist/tasks/done-record.d.ts +14 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +37 -0
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/duplicate-detector.d.ts +20 -1
- package/dist/tasks/duplicate-detector.d.ts.map +1 -1
- package/dist/tasks/duplicate-detector.js +10 -2
- package/dist/tasks/duplicate-detector.js.map +1 -1
- package/dist/tasks/engine-wrap-ops.d.ts +19 -10
- package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
- package/dist/tasks/engine-wrap-ops.js +38 -10
- package/dist/tasks/engine-wrap-ops.js.map +1 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +14 -3
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/graph-ops.d.ts +9 -2
- package/dist/tasks/graph-ops.d.ts.map +1 -1
- package/dist/tasks/graph-ops.js +24 -32
- package/dist/tasks/graph-ops.js.map +1 -1
- package/dist/tasks/plan.d.ts.map +1 -1
- package/dist/tasks/plan.js +16 -60
- package/dist/tasks/plan.js.map +1 -1
- package/dist/tasks/task-context.d.ts.map +1 -1
- package/dist/tasks/task-context.js +13 -0
- package/dist/tasks/task-context.js.map +1 -1
- package/dist/tasks/task-import.d.ts.map +1 -1
- package/dist/tasks/task-import.js +21 -12
- package/dist/tasks/task-import.js.map +1 -1
- package/dist/tasks/task-next.d.ts +25 -2
- package/dist/tasks/task-next.d.ts.map +1 -1
- package/dist/tasks/task-next.js +32 -13
- package/dist/tasks/task-next.js.map +1 -1
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +7 -5
- package/dist/tasks/update.js.map +1 -1
- package/dist/upgrade.d.ts +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +48 -9
- package/dist/upgrade.js.map +1 -1
- package/dist/validation/compliance.d.ts +5 -1
- package/dist/validation/compliance.d.ts.map +1 -1
- package/dist/validation/compliance.js +24 -3
- package/dist/validation/compliance.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts +20 -6
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +51 -8
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/protocol-common.d.ts +47 -2
- package/dist/validation/protocol-common.d.ts.map +1 -1
- package/dist/validation/protocol-common.js +86 -21
- package/dist/validation/protocol-common.js.map +1 -1
- package/dist/validation/validate-ops.d.ts.map +1 -1
- package/dist/validation/validate-ops.js +2 -3
- package/dist/validation/validate-ops.js.map +1 -1
- package/migrations/README.md +12 -0
- package/migrations/drizzle-cleo-global/20260929010000_t12512-registry-probed-opened/migration.sql +35 -0
- package/migrations/drizzle-cleo-global/20260929020000_t12721-git-state-head-committed-at/migration.sql +25 -0
- package/migrations/drizzle-cleo-project/20260928120000_t12341-row-uids/migration.sql +169 -0
- package/migrations/drizzle-cleo-project/20260929000000_t12535-docs-attachments-union-shape/migration.sql +21 -0
- package/migrations/drizzle-cleo-project/20260929120000_t12502-task-claim-leases/migration.sql +77 -0
- package/migrations/drizzle-cleo-project/20260929130000_t12736-claim-lease-iso-repair/migration.sql +37 -0
- package/migrations/sync-journal/20260929140000_t12342-sync-clock/migration.sql +42 -0
- package/package.json +23 -13
- package/schemas/project-info.schema.json +10 -4
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +7 -3
- package/templates/cleo-gitignore +11 -0
- package/templates/workflows/release-prepare.yml.tmpl +156 -10
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System One accuracy benchmark (`cleo decide bench`): a labelled dataset
|
|
3
|
+
* from CLEO's own history, an owner spot-check, and a capped, repeated
|
|
4
|
+
* comparison of providers against each site's heuristic.
|
|
5
|
+
*
|
|
6
|
+
* Loaded on demand (`@cleocode/core/decide/bench/index.js`); the decide
|
|
7
|
+
* barrel does not re-export it, so the CLI's startup never pays for it.
|
|
8
|
+
*
|
|
9
|
+
* @task T12495
|
|
10
|
+
* @epic T12486
|
|
11
|
+
*/
|
|
12
|
+
export { BENCH_TEXT_MAX_CHARS, type BenchDatasetSizes, type BuildBenchDatasetOptions, benchDatasetSizes, buildBenchDataset, DEFAULT_BENCH_MAX_ROWS_PER_SITE, DEFAULT_BENCH_NEGATIVES_PER_POSITIVE, leaksBenchLabel, legacyKeywordObservationType, MIN_BENCH_NEGATIVES, parseBenchDataset, readBenchDataset, serializeBenchDataset, writeBenchDataset, } from './dataset.js';
|
|
13
|
+
export { type BenchClassificationMetrics, type BenchLatency, type BenchPrediction, classificationMetrics, latencyOf, } from './metrics.js';
|
|
14
|
+
export { BENCH_DATASET_FILE, BENCH_REPORT_FILE, BENCH_RESULTS_FILE, BENCH_SPOT_CHECK_FILE, type DecideBenchInput, DecideBenchInputError, type DecideBenchSummary, runDecideBenchOperation, } from './operation.js';
|
|
15
|
+
export { BenchProfileError, BenchProfileInvalidError, type BenchProfileResolver, type BenchProfileResolverOptions, type BenchProfileStore, benchProfileEnvPrefix, createProfileResolver, resolveBenchProfiles, } from './profiles.js';
|
|
16
|
+
export { type BenchQuestion, benchQuestionFor } from './questions.js';
|
|
17
|
+
export { renderBenchReport } from './report.js';
|
|
18
|
+
export { type BenchAggregateRow, type BenchProviderRun, type BenchResults, type BenchRunRecord, type BenchSiteResult, type BenchSpendSummary, DEFAULT_BENCH_BATCH_SIZE, DEFAULT_BENCH_MAX_MICROS, HEURISTIC_PROVIDER, MAX_BENCH_BATCH_SIZE, MIN_BENCH_TIMEOUT_MS, type RunDecideBenchOptions, runDecideBench, } from './runner.js';
|
|
19
|
+
export { createStoreBenchSource } from './source.js';
|
|
20
|
+
export { applyBenchCorrections, type BenchCorrection, type BenchCorrectionsReceipt, type BenchSpotCheckFile, type BenchSpotCheckItem, DEFAULT_SPOT_CHECK_SIZE, parseBenchCorrections, readBenchCorrections, sampleBenchSpotCheck, } from './spot-check.js';
|
|
21
|
+
export { type BenchRandom, type BenchSpread, createSeededRandom, DEFAULT_BENCH_SEED, percentile, shuffled, spreadOf, } from './stats.js';
|
|
22
|
+
export { BENCH_LABEL_RULES, BENCH_SITES, type BenchConnection, type BenchDecisionRecord, type BenchLabelRule, type BenchObservationRecord, type BenchProvenance, type BenchRow, type BenchSite, type BenchSource, type BenchTaskRecord, benchRowSchema, CONTRADICTION_LABELS, DUPLICATE_LABELS, labelsForSite, positiveLabel, } from './types.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,iBAAiB,EACjB,iBAAiB,EACjB,+BAA+B,EAC/B,oCAAoC,EACpC,eAAe,EACf,4BAA4B,EAC5B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,qBAAqB,EACrB,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System One accuracy benchmark (`cleo decide bench`): a labelled dataset
|
|
3
|
+
* from CLEO's own history, an owner spot-check, and a capped, repeated
|
|
4
|
+
* comparison of providers against each site's heuristic.
|
|
5
|
+
*
|
|
6
|
+
* Loaded on demand (`@cleocode/core/decide/bench/index.js`); the decide
|
|
7
|
+
* barrel does not re-export it, so the CLI's startup never pays for it.
|
|
8
|
+
*
|
|
9
|
+
* @task T12495
|
|
10
|
+
* @epic T12486
|
|
11
|
+
*/
|
|
12
|
+
export { BENCH_TEXT_MAX_CHARS, benchDatasetSizes, buildBenchDataset, DEFAULT_BENCH_MAX_ROWS_PER_SITE, DEFAULT_BENCH_NEGATIVES_PER_POSITIVE, leaksBenchLabel, legacyKeywordObservationType, MIN_BENCH_NEGATIVES, parseBenchDataset, readBenchDataset, serializeBenchDataset, writeBenchDataset, } from './dataset.js';
|
|
13
|
+
export { classificationMetrics, latencyOf, } from './metrics.js';
|
|
14
|
+
export { BENCH_DATASET_FILE, BENCH_REPORT_FILE, BENCH_RESULTS_FILE, BENCH_SPOT_CHECK_FILE, DecideBenchInputError, runDecideBenchOperation, } from './operation.js';
|
|
15
|
+
export { BenchProfileError, BenchProfileInvalidError, benchProfileEnvPrefix, createProfileResolver, resolveBenchProfiles, } from './profiles.js';
|
|
16
|
+
export { benchQuestionFor } from './questions.js';
|
|
17
|
+
export { renderBenchReport } from './report.js';
|
|
18
|
+
export { DEFAULT_BENCH_BATCH_SIZE, DEFAULT_BENCH_MAX_MICROS, HEURISTIC_PROVIDER, MAX_BENCH_BATCH_SIZE, MIN_BENCH_TIMEOUT_MS, runDecideBench, } from './runner.js';
|
|
19
|
+
export { createStoreBenchSource } from './source.js';
|
|
20
|
+
export { applyBenchCorrections, DEFAULT_SPOT_CHECK_SIZE, parseBenchCorrections, readBenchCorrections, sampleBenchSpotCheck, } from './spot-check.js';
|
|
21
|
+
export { createSeededRandom, DEFAULT_BENCH_SEED, percentile, shuffled, spreadOf, } from './stats.js';
|
|
22
|
+
export { BENCH_LABEL_RULES, BENCH_SITES, benchRowSchema, CONTRADICTION_LABELS, DUPLICATE_LABELS, labelsForSite, positiveLabel, } from './types.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decide/bench/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,oBAAoB,EAGpB,iBAAiB,EACjB,iBAAiB,EACjB,+BAA+B,EAC/B,oCAAoC,EACpC,eAAe,EACf,4BAA4B,EAC5B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,qBAAqB,EACrB,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EAErB,qBAAqB,EAErB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EAIxB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAsB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAOL,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EAEpB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,qBAAqB,EAKrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,WAAW,EAUX,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification metrics for the System One benchmark (T12495).
|
|
3
|
+
*
|
|
4
|
+
* Two-label sites report precision, recall, F1 and false-positive rate for
|
|
5
|
+
* their positive class. The multi-class observation-type site reports macro
|
|
6
|
+
* averages over the labels present in the gold set (one-vs-rest per label).
|
|
7
|
+
*
|
|
8
|
+
* @task T12495
|
|
9
|
+
* @epic T12486
|
|
10
|
+
*/
|
|
11
|
+
/** One scored prediction. */
|
|
12
|
+
export interface BenchPrediction {
|
|
13
|
+
/** Gold label. */
|
|
14
|
+
readonly gold: string;
|
|
15
|
+
/** Predicted label. */
|
|
16
|
+
readonly predicted: string;
|
|
17
|
+
}
|
|
18
|
+
/** Classification quality over a set of predictions. */
|
|
19
|
+
export interface BenchClassificationMetrics {
|
|
20
|
+
/** Scored predictions. */
|
|
21
|
+
readonly n: number;
|
|
22
|
+
/** Share predicted correctly. */
|
|
23
|
+
readonly accuracy: number | null;
|
|
24
|
+
/** Precision (positive class, or macro average). */
|
|
25
|
+
readonly precision: number | null;
|
|
26
|
+
/** Recall (positive class, or macro average). */
|
|
27
|
+
readonly recall: number | null;
|
|
28
|
+
/** F1 (positive class, or macro average). */
|
|
29
|
+
readonly f1: number | null;
|
|
30
|
+
/** False-positive rate (positive class, or macro average one-vs-rest). */
|
|
31
|
+
readonly falsePositiveRate: number | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Score predictions.
|
|
35
|
+
*
|
|
36
|
+
* @param preds - Gold and predicted labels.
|
|
37
|
+
* @param positive - The positive class of a two-label site; `null` → macro averages.
|
|
38
|
+
* @returns The metrics (`null` where undefined, e.g. no positives predicted).
|
|
39
|
+
*/
|
|
40
|
+
export declare function classificationMetrics(preds: readonly BenchPrediction[], positive: string | null): BenchClassificationMetrics;
|
|
41
|
+
/** p50 and p95 of latencies, in ms. */
|
|
42
|
+
export interface BenchLatency {
|
|
43
|
+
/** Median. */
|
|
44
|
+
readonly p50Ms: number | null;
|
|
45
|
+
/** 95th percentile. */
|
|
46
|
+
readonly p95Ms: number | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Latency percentiles.
|
|
50
|
+
*
|
|
51
|
+
* @param samples - Latencies in ms.
|
|
52
|
+
* @returns p50 and p95 (nearest rank).
|
|
53
|
+
*/
|
|
54
|
+
export declare function latencyOf(samples: readonly number[]): BenchLatency;
|
|
55
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,6BAA6B;AAC7B,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wDAAwD;AACxD,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iDAAiD;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAoCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,0BAA0B,CAoC5B;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAElE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification metrics for the System One benchmark (T12495).
|
|
3
|
+
*
|
|
4
|
+
* Two-label sites report precision, recall, F1 and false-positive rate for
|
|
5
|
+
* their positive class. The multi-class observation-type site reports macro
|
|
6
|
+
* averages over the labels present in the gold set (one-vs-rest per label).
|
|
7
|
+
*
|
|
8
|
+
* @task T12495
|
|
9
|
+
* @epic T12486
|
|
10
|
+
*/
|
|
11
|
+
import { percentile } from './stats.js';
|
|
12
|
+
/** Ratio, or `null` when the denominator is zero. */
|
|
13
|
+
function ratio(num, den) {
|
|
14
|
+
return den > 0 ? num / den : null;
|
|
15
|
+
}
|
|
16
|
+
/** Harmonic mean of precision and recall. */
|
|
17
|
+
function f1Of(p, r) {
|
|
18
|
+
if (p === null || r === null)
|
|
19
|
+
return null;
|
|
20
|
+
return p + r > 0 ? (2 * p * r) / (p + r) : 0;
|
|
21
|
+
}
|
|
22
|
+
/** One-vs-rest counts for `label`. */
|
|
23
|
+
function counts(preds, label) {
|
|
24
|
+
let tp = 0;
|
|
25
|
+
let fp = 0;
|
|
26
|
+
let fn = 0;
|
|
27
|
+
let tn = 0;
|
|
28
|
+
for (const p of preds) {
|
|
29
|
+
const g = p.gold === label;
|
|
30
|
+
const q = p.predicted === label;
|
|
31
|
+
if (g && q)
|
|
32
|
+
tp++;
|
|
33
|
+
else if (!g && q)
|
|
34
|
+
fp++;
|
|
35
|
+
else if (g && !q)
|
|
36
|
+
fn++;
|
|
37
|
+
else
|
|
38
|
+
tn++;
|
|
39
|
+
}
|
|
40
|
+
return { tp, fp, fn, tn };
|
|
41
|
+
}
|
|
42
|
+
/** Mean of the non-null values, or null. */
|
|
43
|
+
function meanOf(values) {
|
|
44
|
+
const xs = values.filter((v) => v !== null);
|
|
45
|
+
return xs.length > 0 ? xs.reduce((s, x) => s + x, 0) / xs.length : null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Score predictions.
|
|
49
|
+
*
|
|
50
|
+
* @param preds - Gold and predicted labels.
|
|
51
|
+
* @param positive - The positive class of a two-label site; `null` → macro averages.
|
|
52
|
+
* @returns The metrics (`null` where undefined, e.g. no positives predicted).
|
|
53
|
+
*/
|
|
54
|
+
export function classificationMetrics(preds, positive) {
|
|
55
|
+
const n = preds.length;
|
|
56
|
+
const accuracy = ratio(preds.filter((p) => p.gold === p.predicted).length, n);
|
|
57
|
+
if (positive !== null) {
|
|
58
|
+
const c = counts(preds, positive);
|
|
59
|
+
const precision = ratio(c.tp, c.tp + c.fp);
|
|
60
|
+
const recall = ratio(c.tp, c.tp + c.fn);
|
|
61
|
+
return {
|
|
62
|
+
n,
|
|
63
|
+
accuracy,
|
|
64
|
+
precision,
|
|
65
|
+
recall,
|
|
66
|
+
f1: f1Of(precision, recall),
|
|
67
|
+
falsePositiveRate: ratio(c.fp, c.fp + c.tn),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const labels = [...new Set(preds.map((p) => p.gold))].sort();
|
|
71
|
+
const per = labels.map((label) => {
|
|
72
|
+
const c = counts(preds, label);
|
|
73
|
+
const precision = ratio(c.tp, c.tp + c.fp) ?? 0;
|
|
74
|
+
const recall = ratio(c.tp, c.tp + c.fn);
|
|
75
|
+
return {
|
|
76
|
+
precision,
|
|
77
|
+
recall,
|
|
78
|
+
f1: f1Of(precision, recall),
|
|
79
|
+
fpr: ratio(c.fp, c.fp + c.tn),
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
n,
|
|
84
|
+
accuracy,
|
|
85
|
+
precision: meanOf(per.map((p) => p.precision)),
|
|
86
|
+
recall: meanOf(per.map((p) => p.recall)),
|
|
87
|
+
f1: meanOf(per.map((p) => p.f1)),
|
|
88
|
+
falsePositiveRate: meanOf(per.map((p) => p.fpr)),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Latency percentiles.
|
|
93
|
+
*
|
|
94
|
+
* @param samples - Latencies in ms.
|
|
95
|
+
* @returns p50 and p95 (nearest rank).
|
|
96
|
+
*/
|
|
97
|
+
export function latencyOf(samples) {
|
|
98
|
+
return { p50Ms: percentile(samples, 50), p95Ms: percentile(samples, 95) };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/decide/bench/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cleo decide bench` as one core operation (T12495): build or reuse the
|
|
3
|
+
* dataset, apply owner corrections, draw the spot-check sample and — unless
|
|
4
|
+
* `sampleOnly` — run the providers and write the results and the report.
|
|
5
|
+
*
|
|
6
|
+
* Files, all in `outDir` (default `<projectRoot>/.cleo/decide-bench/`, which
|
|
7
|
+
* git ignores):
|
|
8
|
+
*
|
|
9
|
+
* - `dataset.jsonl` — the labelled, redacted rows. Reused on later calls so
|
|
10
|
+
* the owner's corrections stick; `rebuild` builds it again from the stores.
|
|
11
|
+
* - `spot-check.json` — the stratified sample for the owner.
|
|
12
|
+
* - `results.json` / `report.md` — written by a run.
|
|
13
|
+
*
|
|
14
|
+
* Dataset building, corrections and sampling never contact a provider.
|
|
15
|
+
*
|
|
16
|
+
* @task T12495
|
|
17
|
+
* @epic T12486
|
|
18
|
+
*/
|
|
19
|
+
import type { SpendLedger } from '../spend.js';
|
|
20
|
+
import type { DecideFetch } from '../transport.js';
|
|
21
|
+
import { type BenchDatasetSizes } from './dataset.js';
|
|
22
|
+
import { type BenchProfileResolver } from './profiles.js';
|
|
23
|
+
import { type BenchAggregateRow, type BenchSpendSummary } from './runner.js';
|
|
24
|
+
import { type BenchCorrectionsReceipt } from './spot-check.js';
|
|
25
|
+
import { type BenchConnection, type BenchSite, type BenchSource } from './types.js';
|
|
26
|
+
/** Dataset file name inside the output directory. */
|
|
27
|
+
export declare const BENCH_DATASET_FILE = "dataset.jsonl";
|
|
28
|
+
/** Spot-check file name inside the output directory. */
|
|
29
|
+
export declare const BENCH_SPOT_CHECK_FILE = "spot-check.json";
|
|
30
|
+
/** Results file name inside the output directory. */
|
|
31
|
+
export declare const BENCH_RESULTS_FILE = "results.json";
|
|
32
|
+
/** Report fragment file name inside the output directory. */
|
|
33
|
+
export declare const BENCH_REPORT_FILE = "report.md";
|
|
34
|
+
/** Invalid benchmark input (maps to a validation error in the CLI). */
|
|
35
|
+
export declare class DecideBenchInputError extends Error {
|
|
36
|
+
/** How to fix it. */
|
|
37
|
+
readonly fix: string;
|
|
38
|
+
/**
|
|
39
|
+
* @param message - What is wrong.
|
|
40
|
+
* @param fix - How to fix it.
|
|
41
|
+
*/
|
|
42
|
+
constructor(message: string, fix: string);
|
|
43
|
+
}
|
|
44
|
+
/** Input of {@link runDecideBenchOperation}. */
|
|
45
|
+
export interface DecideBenchInput {
|
|
46
|
+
/** Project whose stores are read. Default: the resolved project root. */
|
|
47
|
+
readonly projectRoot?: string;
|
|
48
|
+
/** Output directory. Default `<projectRoot>/.cleo/decide-bench`. */
|
|
49
|
+
readonly outDir?: string;
|
|
50
|
+
/** Profile names to compare (required unless `sampleOnly`). */
|
|
51
|
+
readonly profiles?: readonly string[];
|
|
52
|
+
/** Sites to sample and run. Default: all. */
|
|
53
|
+
readonly sites?: readonly string[];
|
|
54
|
+
/** Build the dataset and the sample only; no provider is contacted. */
|
|
55
|
+
readonly sampleOnly?: boolean;
|
|
56
|
+
/** Owner corrections file to apply before sampling. */
|
|
57
|
+
readonly correctionsPath?: string;
|
|
58
|
+
/** Hard total spend cap in US dollars. Default $5. */
|
|
59
|
+
readonly maxUsd?: number;
|
|
60
|
+
/** Repeated runs. Default 1. */
|
|
61
|
+
readonly runs?: number;
|
|
62
|
+
/** Rows per batch call. */
|
|
63
|
+
readonly batchSize?: number;
|
|
64
|
+
/** Rebuild the dataset from the stores even when one exists. */
|
|
65
|
+
readonly rebuild?: boolean;
|
|
66
|
+
/** PRNG seed for negatives and the sample. */
|
|
67
|
+
readonly seed?: number;
|
|
68
|
+
/** Spot-check sample size. Default 30. */
|
|
69
|
+
readonly sampleSize?: number;
|
|
70
|
+
/** Store port (tests). Default: the core accessors. */
|
|
71
|
+
readonly source?: BenchSource;
|
|
72
|
+
/** Profile resolver (tests). Default: the T12733 profile store, then the env override layer. */
|
|
73
|
+
readonly resolver?: BenchProfileResolver;
|
|
74
|
+
/** Explicit connections; skip profile resolution. */
|
|
75
|
+
readonly connections?: readonly BenchConnection[];
|
|
76
|
+
/** Transport (tests). */
|
|
77
|
+
readonly fetch?: DecideFetch;
|
|
78
|
+
/** Directory for per-connection provider-state files (tests). */
|
|
79
|
+
readonly providerStateDir?: string;
|
|
80
|
+
/** Monthly ledger to record spend in; `null` skips. Default: the file ledger. */
|
|
81
|
+
readonly spendLedger?: SpendLedger | null;
|
|
82
|
+
}
|
|
83
|
+
/** Output of {@link runDecideBenchOperation}. */
|
|
84
|
+
export interface DecideBenchSummary {
|
|
85
|
+
/** Output directory. */
|
|
86
|
+
readonly outDir: string;
|
|
87
|
+
/** Files written or reused. */
|
|
88
|
+
readonly files: {
|
|
89
|
+
readonly dataset: string;
|
|
90
|
+
readonly spotCheck: string;
|
|
91
|
+
readonly results?: string;
|
|
92
|
+
readonly report?: string;
|
|
93
|
+
};
|
|
94
|
+
/** Whether an existing dataset was reused. */
|
|
95
|
+
readonly datasetReused: boolean;
|
|
96
|
+
/** Dataset sizes (all sites). */
|
|
97
|
+
readonly dataset: BenchDatasetSizes;
|
|
98
|
+
/** Sites sampled and run. */
|
|
99
|
+
readonly sites: readonly BenchSite[];
|
|
100
|
+
/** Items in the spot-check sample. */
|
|
101
|
+
readonly spotCheckItems: number;
|
|
102
|
+
/** Applied corrections, when a file was given. */
|
|
103
|
+
readonly corrections?: BenchCorrectionsReceipt;
|
|
104
|
+
/** Whether providers were run. */
|
|
105
|
+
readonly ran: boolean;
|
|
106
|
+
/** Spend, when run. */
|
|
107
|
+
readonly spend?: BenchSpendSummary;
|
|
108
|
+
/** Mean and spread per provider × site, when run. */
|
|
109
|
+
readonly aggregate?: readonly BenchAggregateRow[];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Run `cleo decide bench`.
|
|
113
|
+
*
|
|
114
|
+
* @param input - Flags and wiring.
|
|
115
|
+
* @returns What was written and, after a run, the spend and the aggregate.
|
|
116
|
+
* @throws DecideBenchInputError on invalid input (unknown site or profile, no profiles).
|
|
117
|
+
*/
|
|
118
|
+
export declare function runDecideBenchOperation(input?: DecideBenchInput): Promise<DecideBenchSummary>;
|
|
119
|
+
//# sourceMappingURL=operation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cleo decide bench` as one core operation (T12495): build or reuse the
|
|
3
|
+
* dataset, apply owner corrections, draw the spot-check sample and — unless
|
|
4
|
+
* `sampleOnly` — run the providers and write the results and the report.
|
|
5
|
+
*
|
|
6
|
+
* Files, all in `outDir` (default `<projectRoot>/.cleo/decide-bench/`, which
|
|
7
|
+
* git ignores):
|
|
8
|
+
*
|
|
9
|
+
* - `dataset.jsonl` — the labelled, redacted rows. Reused on later calls so
|
|
10
|
+
* the owner's corrections stick; `rebuild` builds it again from the stores.
|
|
11
|
+
* - `spot-check.json` — the stratified sample for the owner.
|
|
12
|
+
* - `results.json` / `report.md` — written by a run.
|
|
13
|
+
*
|
|
14
|
+
* Dataset building, corrections and sampling never contact a provider.
|
|
15
|
+
*
|
|
16
|
+
* @task T12495
|
|
17
|
+
* @epic T12486
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync } from 'node:fs';
|
|
20
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
21
|
+
import { join, resolve } from 'node:path';
|
|
22
|
+
import { getProjectRoot } from '../../paths.js';
|
|
23
|
+
import { benchDatasetSizes, buildBenchDataset, readBenchDataset, writeBenchDataset, } from './dataset.js';
|
|
24
|
+
import { resolveBenchProfiles } from './profiles.js';
|
|
25
|
+
import { renderBenchReport } from './report.js';
|
|
26
|
+
import { DEFAULT_BENCH_MAX_MICROS, runDecideBench, } from './runner.js';
|
|
27
|
+
import { createStoreBenchSource } from './source.js';
|
|
28
|
+
import { applyBenchCorrections, readBenchCorrections, sampleBenchSpotCheck, } from './spot-check.js';
|
|
29
|
+
import { DEFAULT_BENCH_SEED } from './stats.js';
|
|
30
|
+
import { BENCH_SITES } from './types.js';
|
|
31
|
+
/** Dataset file name inside the output directory. */
|
|
32
|
+
export const BENCH_DATASET_FILE = 'dataset.jsonl';
|
|
33
|
+
/** Spot-check file name inside the output directory. */
|
|
34
|
+
export const BENCH_SPOT_CHECK_FILE = 'spot-check.json';
|
|
35
|
+
/** Results file name inside the output directory. */
|
|
36
|
+
export const BENCH_RESULTS_FILE = 'results.json';
|
|
37
|
+
/** Report fragment file name inside the output directory. */
|
|
38
|
+
export const BENCH_REPORT_FILE = 'report.md';
|
|
39
|
+
/** Invalid benchmark input (maps to a validation error in the CLI). */
|
|
40
|
+
export class DecideBenchInputError extends Error {
|
|
41
|
+
/** How to fix it. */
|
|
42
|
+
fix;
|
|
43
|
+
/**
|
|
44
|
+
* @param message - What is wrong.
|
|
45
|
+
* @param fix - How to fix it.
|
|
46
|
+
*/
|
|
47
|
+
constructor(message, fix) {
|
|
48
|
+
super(message);
|
|
49
|
+
this.name = 'DecideBenchInputError';
|
|
50
|
+
this.fix = fix;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Narrow the requested sites. */
|
|
54
|
+
function parseSites(sites) {
|
|
55
|
+
if (!sites || sites.length === 0)
|
|
56
|
+
return [...BENCH_SITES];
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const s of sites) {
|
|
59
|
+
const site = BENCH_SITES.find((b) => b === s.trim());
|
|
60
|
+
if (!site) {
|
|
61
|
+
throw new DecideBenchInputError(`unknown site '${s}'`, `--sites ${BENCH_SITES.join(',')}`);
|
|
62
|
+
}
|
|
63
|
+
if (!out.includes(site))
|
|
64
|
+
out.push(site);
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
/** Validate a positive number flag. */
|
|
69
|
+
function positive(value, name, fallback) {
|
|
70
|
+
if (value === undefined)
|
|
71
|
+
return fallback;
|
|
72
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
73
|
+
throw new DecideBenchInputError(`${name} must be a positive number`, `${name} <n>`);
|
|
74
|
+
}
|
|
75
|
+
return value;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Run `cleo decide bench`.
|
|
79
|
+
*
|
|
80
|
+
* @param input - Flags and wiring.
|
|
81
|
+
* @returns What was written and, after a run, the spend and the aggregate.
|
|
82
|
+
* @throws DecideBenchInputError on invalid input (unknown site or profile, no profiles).
|
|
83
|
+
*/
|
|
84
|
+
export async function runDecideBenchOperation(input = {}) {
|
|
85
|
+
const sites = parseSites(input.sites);
|
|
86
|
+
const maxUsd = positive(input.maxUsd, '--max-usd', DEFAULT_BENCH_MAX_MICROS / 1e6);
|
|
87
|
+
const runs = Math.floor(positive(input.runs, '--runs', 1));
|
|
88
|
+
const batchSize = input.batchSize === undefined
|
|
89
|
+
? undefined
|
|
90
|
+
: Math.floor(positive(input.batchSize, '--batch-size', 1));
|
|
91
|
+
const seed = input.seed ?? DEFAULT_BENCH_SEED;
|
|
92
|
+
if (!Number.isSafeInteger(seed)) {
|
|
93
|
+
throw new DecideBenchInputError('--seed must be an integer', '--seed 12495');
|
|
94
|
+
}
|
|
95
|
+
const wantsRun = input.sampleOnly !== true;
|
|
96
|
+
const profiles = input.profiles ?? [];
|
|
97
|
+
if (wantsRun && profiles.length === 0 && !input.connections?.length) {
|
|
98
|
+
throw new DecideBenchInputError('no providers to compare', 'cleo decide bench --profiles layahost,jev (or --sample-only to build the dataset and sample without spend)');
|
|
99
|
+
}
|
|
100
|
+
// Resolve profiles before any file is written, so a typo fails fast.
|
|
101
|
+
let connections = input.connections ?? [];
|
|
102
|
+
if (wantsRun && connections.length === 0) {
|
|
103
|
+
try {
|
|
104
|
+
connections = resolveBenchProfiles(profiles, input.resolver);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
throw new DecideBenchInputError(err instanceof Error ? err.message : 'profile resolution failed', 'cleo decide profiles (to list them), or cleo decide config --profile <provider>/<name>');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const projectRoot = input.projectRoot ?? getProjectRoot();
|
|
111
|
+
const outDir = resolve(input.outDir ?? join(projectRoot, '.cleo', 'decide-bench'));
|
|
112
|
+
await mkdir(outDir, { recursive: true, mode: 0o700 });
|
|
113
|
+
const datasetPath = join(outDir, BENCH_DATASET_FILE);
|
|
114
|
+
const spotCheckPath = join(outDir, BENCH_SPOT_CHECK_FILE);
|
|
115
|
+
const reuse = input.rebuild !== true && existsSync(datasetPath);
|
|
116
|
+
let rows = reuse
|
|
117
|
+
? await readBenchDataset(datasetPath)
|
|
118
|
+
: await buildBenchDataset(input.source ?? createStoreBenchSource(projectRoot), { seed });
|
|
119
|
+
let corrections;
|
|
120
|
+
if (input.correctionsPath) {
|
|
121
|
+
const applied = applyBenchCorrections(rows, await readBenchCorrections(input.correctionsPath));
|
|
122
|
+
rows = applied.rows;
|
|
123
|
+
corrections = applied.receipt;
|
|
124
|
+
}
|
|
125
|
+
if (!reuse || corrections)
|
|
126
|
+
await writeBenchDataset(datasetPath, rows);
|
|
127
|
+
const selected = rows.filter((r) => sites.includes(r.site));
|
|
128
|
+
const spotCheck = sampleBenchSpotCheck(selected, {
|
|
129
|
+
seed,
|
|
130
|
+
...(input.sampleSize !== undefined ? { size: input.sampleSize } : {}),
|
|
131
|
+
});
|
|
132
|
+
await writeFile(spotCheckPath, `${JSON.stringify(spotCheck, null, 2)}\n`, { mode: 0o600 });
|
|
133
|
+
const base = {
|
|
134
|
+
outDir,
|
|
135
|
+
datasetReused: reuse,
|
|
136
|
+
dataset: benchDatasetSizes(rows),
|
|
137
|
+
sites,
|
|
138
|
+
spotCheckItems: spotCheck.items.length,
|
|
139
|
+
...(corrections ? { corrections } : {}),
|
|
140
|
+
};
|
|
141
|
+
if (!wantsRun) {
|
|
142
|
+
return { ...base, files: { dataset: datasetPath, spotCheck: spotCheckPath }, ran: false };
|
|
143
|
+
}
|
|
144
|
+
const results = await runDecideBench({
|
|
145
|
+
rows: selected,
|
|
146
|
+
connections,
|
|
147
|
+
runs,
|
|
148
|
+
maxMicros: Math.round(maxUsd * 1e6),
|
|
149
|
+
...(batchSize !== undefined ? { batchSize } : {}),
|
|
150
|
+
...(input.fetch ? { fetch: input.fetch } : {}),
|
|
151
|
+
...(input.providerStateDir ? { providerStateDir: input.providerStateDir } : {}),
|
|
152
|
+
...(input.spendLedger !== undefined ? { spendLedger: input.spendLedger } : {}),
|
|
153
|
+
});
|
|
154
|
+
const resultsPath = join(outDir, BENCH_RESULTS_FILE);
|
|
155
|
+
const reportPath = join(outDir, BENCH_REPORT_FILE);
|
|
156
|
+
await writeFile(resultsPath, `${JSON.stringify(results, null, 2)}\n`, { mode: 0o600 });
|
|
157
|
+
await writeFile(reportPath, renderBenchReport(results), { mode: 0o600 });
|
|
158
|
+
return {
|
|
159
|
+
...base,
|
|
160
|
+
files: {
|
|
161
|
+
dataset: datasetPath,
|
|
162
|
+
spotCheck: spotCheckPath,
|
|
163
|
+
results: resultsPath,
|
|
164
|
+
report: reportPath,
|
|
165
|
+
},
|
|
166
|
+
ran: true,
|
|
167
|
+
spend: results.spend,
|
|
168
|
+
aggregate: results.aggregate,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/decide/bench/operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve `--profiles a,b` to benchmark connections (T12495, T12735).
|
|
3
|
+
*
|
|
4
|
+
* Names resolve through the System One profile store (T12733,
|
|
5
|
+
* `decide-credentials.json`), in this order:
|
|
6
|
+
*
|
|
7
|
+
* 1. An exact profile id, `<provider>/<name>` (e.g. `layahost/work`).
|
|
8
|
+
* 2. A bare provider kind (`layahost`, `jev`): that provider's ACTIVE
|
|
9
|
+
* profile when the active profile belongs to it, else `<provider>/default`.
|
|
10
|
+
* 3. The environment override layer, for a name the store does not hold:
|
|
11
|
+
* `CLEO_DECIDE_PROFILE_<NAME>_KEY` (plus `_URL`, `_MODEL`, `_PROVIDER`),
|
|
12
|
+
* `<NAME>` upper-cased with non-alphanumerics as `_`
|
|
13
|
+
* (`layahost/lab` → `CLEO_DECIDE_PROFILE_LAYAHOST_LAB_KEY`). Useful for a
|
|
14
|
+
* throwaway key that should never be written to disk.
|
|
15
|
+
*
|
|
16
|
+
* A stored profile's `default` URL, and an environment profile without
|
|
17
|
+
* `_URL`, both resolve through {@link presetBaseUrl} — the same preset table
|
|
18
|
+
* everyday decisions use. An unknown name fails with {@link BenchProfileError},
|
|
19
|
+
* which lists the stored profile ids with masked keys.
|
|
20
|
+
*
|
|
21
|
+
* @task T12735
|
|
22
|
+
* @epic T12486
|
|
23
|
+
*/
|
|
24
|
+
import { listDecideProfiles, resolveDecideProfile } from '../credentials.js';
|
|
25
|
+
import type { BenchConnection } from './types.js';
|
|
26
|
+
/** Resolves one profile name to a connection. */
|
|
27
|
+
export interface BenchProfileResolver {
|
|
28
|
+
/**
|
|
29
|
+
* @param name - Profile name.
|
|
30
|
+
* @returns The connection, or `null` when no profile has that name.
|
|
31
|
+
* @throws BenchProfileInvalidError when the profile exists but is misconfigured.
|
|
32
|
+
*/
|
|
33
|
+
resolve(name: string): BenchConnection | null;
|
|
34
|
+
/**
|
|
35
|
+
* The profiles that could be named, for the unknown-profile error.
|
|
36
|
+
*
|
|
37
|
+
* @returns Secret-free labels, e.g. `layahost/work (key …1111)`.
|
|
38
|
+
*/
|
|
39
|
+
available?(): readonly string[];
|
|
40
|
+
}
|
|
41
|
+
/** A profile name that resolved to nothing. */
|
|
42
|
+
export declare class BenchProfileError extends Error {
|
|
43
|
+
/** The names that did not resolve. */
|
|
44
|
+
readonly missing: readonly string[];
|
|
45
|
+
/** Secret-free labels of the stored profiles (id and masked key). */
|
|
46
|
+
readonly available: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* @param missing - Unresolved names.
|
|
49
|
+
* @param available - Secret-free labels of the profiles that do exist.
|
|
50
|
+
*/
|
|
51
|
+
constructor(missing: readonly string[], available?: readonly string[]);
|
|
52
|
+
}
|
|
53
|
+
/** A profile that exists but is misconfigured (bad URL, key or model). */
|
|
54
|
+
export declare class BenchProfileInvalidError extends Error {
|
|
55
|
+
/** The profile name. */
|
|
56
|
+
readonly profile: string;
|
|
57
|
+
/**
|
|
58
|
+
* @param profile - Profile name.
|
|
59
|
+
* @param problem - What is wrong, e.g. `invalid URL "…"`.
|
|
60
|
+
*/
|
|
61
|
+
constructor(profile: string, problem: string);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Environment variable prefix for one profile.
|
|
65
|
+
*
|
|
66
|
+
* @param name - Profile name.
|
|
67
|
+
* @returns `CLEO_DECIDE_PROFILE_<NAME>` (upper-cased, non-alphanumerics as `_`).
|
|
68
|
+
*/
|
|
69
|
+
export declare function benchProfileEnvPrefix(name: string): string;
|
|
70
|
+
/** Profile-store access, injectable for tests. Defaults to the real store. */
|
|
71
|
+
export interface BenchProfileStore {
|
|
72
|
+
/** List the stored profiles (secret-free). */
|
|
73
|
+
readonly list: typeof listDecideProfiles;
|
|
74
|
+
/** Resolve one stored profile (contains the key). */
|
|
75
|
+
readonly resolve: typeof resolveDecideProfile;
|
|
76
|
+
}
|
|
77
|
+
/** Options for {@link createProfileResolver}. */
|
|
78
|
+
export interface BenchProfileResolverOptions {
|
|
79
|
+
/** Environment for the override layer. Default `process.env`. */
|
|
80
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
81
|
+
/** Profile store. Default: `decide-credentials.json` in the CLEO home. */
|
|
82
|
+
readonly store?: BenchProfileStore;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The benchmark's profile resolver: the T12733 profile store (exact id, then
|
|
86
|
+
* bare provider), then the environment override layer. See the module doc.
|
|
87
|
+
*
|
|
88
|
+
* @param opts - Environment and store. Defaults: `process.env` and the real store.
|
|
89
|
+
* @returns A resolver.
|
|
90
|
+
*/
|
|
91
|
+
export declare function createProfileResolver(opts?: BenchProfileResolverOptions): BenchProfileResolver;
|
|
92
|
+
/**
|
|
93
|
+
* Resolve every name, or throw naming all that did not resolve.
|
|
94
|
+
*
|
|
95
|
+
* @param names - Profile names (duplicates removed, order kept).
|
|
96
|
+
* @param resolver - Resolver. Default: {@link createProfileResolver}.
|
|
97
|
+
* @returns One connection per name.
|
|
98
|
+
* @throws BenchProfileError when any name is unknown (lists the stored profiles, keys masked).
|
|
99
|
+
* @throws BenchProfileInvalidError when a profile has a bad URL, key or model.
|
|
100
|
+
*/
|
|
101
|
+
export declare function resolveBenchProfiles(names: readonly string[], resolver?: BenchProfileResolver): BenchConnection[];
|
|
102
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAGL,kBAAkB,EAElB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IAC9C;;;;OAIG;IACH,SAAS,CAAC,IAAI,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,+CAA+C;AAC/C,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;OAGG;gBACS,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,GAAE,SAAS,MAAM,EAAO;CAW1E;AAED,0EAA0E;AAC1E,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,wBAAwB;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK7C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,kBAAkB,CAAC;IACzC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,OAAO,oBAAoB,CAAC;CAC/C;AAED,iDAAiD;AACjD,MAAM,WAAW,2BAA2B;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAyCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,GAAE,2BAAgC,GACrC,oBAAoB,CAmCtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,QAAQ,GAAE,oBAA8C,GACvD,eAAe,EAAE,CAWnB"}
|