@cleocode/core 2026.9.23 → 2026.9.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/build-provenance.json +2 -2
- 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/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 +74 -0
- package/dist/decide/bench/profiles.d.ts.map +1 -0
- package/dist/decide/bench/profiles.js +131 -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 +120 -0
- package/dist/decide/bench/report.js.map +1 -0
- package/dist/decide/bench/runner.d.ts +203 -0
- package/dist/decide/bench/runner.d.ts.map +1 -0
- package/dist/decide/bench/runner.js +335 -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 +124 -30
- 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 +25 -19
- package/dist/decide/jev-wire.d.ts.map +1 -1
- package/dist/decide/jev-wire.js +56 -31
- 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 +2928 -1053
- 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/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/twin-collapse.d.ts +52 -2
- package/dist/doctor/twin-collapse.d.ts.map +1 -1
- package/dist/doctor/twin-collapse.js +108 -4
- 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/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 +3017 -1142
- 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/learnings.d.ts +6 -6
- package/dist/memory/patterns.d.ts +4 -4
- 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/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 +67 -2
- 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/query.d.ts +2 -2
- package/dist/nexus/query.d.ts.map +1 -1
- package/dist/nexus/query.js +4 -19
- 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.d.ts +30 -5
- package/dist/nexus/registry.d.ts.map +1 -1
- package/dist/nexus/registry.js +115 -70
- 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/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.js +1 -1
- 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/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/selfimprove/fix-gen.js +3027 -1152
- package/dist/selfimprove/fix-gen.js.map +3 -3
- package/dist/sentient/cross-project-hygiene.d.ts +12 -6
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +15 -10
- package/dist/sentient/cross-project-hygiene.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/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/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/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/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 +30 -0
- package/dist/store/backup-sidecar.d.ts.map +1 -1
- package/dist/store/backup-sidecar.js +90 -2
- 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/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 +73 -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 +18 -0
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +46 -0
- package/dist/store/db-helpers.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/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 +3 -1
- 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/safety-data-accessor.d.ts +8 -3
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +11 -4
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/schema/cleo-global/nexus.d.ts +48 -0
- 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-project/docs.d.ts +16 -0
- 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/tasks-core.d.ts +80 -0
- package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.js +25 -1
- package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +1 -1
- package/dist/store/schema/memory-schema.d.ts +1 -1
- package/dist/store/schema/nexus-schema.d.ts +48 -0
- 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/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/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +245 -47
- 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/table-classification.d.ts +1 -1
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +34 -8
- 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.js +1 -1
- package/dist/store/tasks-sqlite.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +339 -22
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +1323 -48
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/umbrella-data-accessor.d.ts +8 -3
- package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
- package/dist/store/umbrella-data-accessor.js +10 -4
- package/dist/store/umbrella-data-accessor.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +161 -1
- 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 +3 -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 +8 -0
- package/dist/system/project-health.d.ts.map +1 -1
- package/dist/system/project-health.js +13 -5
- 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/add.d.ts.map +1 -1
- package/dist/tasks/add.js +3 -2
- 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/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 +27 -7
- package/dist/tasks/complete.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/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/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/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/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/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/package.json +23 -13
- package/schemas/project-info.schema.json +10 -4
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +3 -3
- package/templates/cleo-gitignore +11 -0
- package/templates/workflows/release-prepare.yml.tmpl +156 -10
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn a benchmark row into the exact question its decision site asks, the
|
|
3
|
+
* site's heuristic answer, and the mapping from an answer back to a label
|
|
4
|
+
* (T12495).
|
|
5
|
+
*
|
|
6
|
+
* The request builders are the sites' own (`buildDuplicateDecisionRequest`,
|
|
7
|
+
* `buildObservationTypeRequest`, `buildContradictionRequest`), so the
|
|
8
|
+
* benchmark measures the production wording. The heuristic is the rule each
|
|
9
|
+
* site falls back to: Tier-1 lexical similarity for duplicates, whole-word
|
|
10
|
+
* keywords for observation types, the word-Jaccard collision check for
|
|
11
|
+
* decisions.
|
|
12
|
+
*
|
|
13
|
+
* @task T12495
|
|
14
|
+
* @epic T12486
|
|
15
|
+
*/
|
|
16
|
+
import type { DecisionAnswer, DecisionRequest } from '@cleocode/contracts';
|
|
17
|
+
import type { BenchRow } from './types.js';
|
|
18
|
+
/** One row made ready to ask. */
|
|
19
|
+
export interface BenchQuestion {
|
|
20
|
+
/** The site's request, with `cache: false` (no provider answer cache). */
|
|
21
|
+
readonly req: DecisionRequest;
|
|
22
|
+
/** The site heuristic's answers, in the request's shape (the fallback). */
|
|
23
|
+
readonly heuristicAnswers: Readonly<Record<string, DecisionAnswer>>;
|
|
24
|
+
/** The label the heuristic predicts. */
|
|
25
|
+
readonly heuristicLabel: string;
|
|
26
|
+
/**
|
|
27
|
+
* Map answers back to a label.
|
|
28
|
+
*
|
|
29
|
+
* @returns The predicted label, or `null` when the answer is unusable.
|
|
30
|
+
*/
|
|
31
|
+
readonly predict: (answers: Readonly<Record<string, DecisionAnswer>>) => string | null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build the question for `row`.
|
|
35
|
+
*
|
|
36
|
+
* @param row - A dataset row.
|
|
37
|
+
* @returns Request, heuristic answer and label mapping.
|
|
38
|
+
*/
|
|
39
|
+
export declare function benchQuestionFor(row: BenchRow): BenchQuestion;
|
|
40
|
+
//# sourceMappingURL=questions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAiB3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACpE,wCAAwC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;CACxF;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,aAAa,CA+E7D"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn a benchmark row into the exact question its decision site asks, the
|
|
3
|
+
* site's heuristic answer, and the mapping from an answer back to a label
|
|
4
|
+
* (T12495).
|
|
5
|
+
*
|
|
6
|
+
* The request builders are the sites' own (`buildDuplicateDecisionRequest`,
|
|
7
|
+
* `buildObservationTypeRequest`, `buildContradictionRequest`), so the
|
|
8
|
+
* benchmark measures the production wording. The heuristic is the rule each
|
|
9
|
+
* site falls back to: Tier-1 lexical similarity for duplicates, whole-word
|
|
10
|
+
* keywords for observation types, the word-Jaccard collision check for
|
|
11
|
+
* decisions.
|
|
12
|
+
*
|
|
13
|
+
* @task T12495
|
|
14
|
+
* @epic T12486
|
|
15
|
+
*/
|
|
16
|
+
import { buildContradictionRequest, CONTRADICTION_RELATIONS, } from '../../memory/decision-contradiction.js';
|
|
17
|
+
import { DECISION_COLLISION_THRESHOLD, decisionWordJaccard } from '../../memory/decisions.js';
|
|
18
|
+
import { buildObservationTypeRequest, classifyObservationTypeByKeywords, OBSERVATION_TYPE_OPTIONS, } from '../../memory/observation-type-decision.js';
|
|
19
|
+
import { redactContent } from '../../memory/redaction.js';
|
|
20
|
+
import { buildDuplicateDecisionRequest, computeLexicalSimilarity, DUPLICATE_WARN_THRESHOLD, } from '../../tasks/duplicate-detector.js';
|
|
21
|
+
/** The redaction System One applies (idempotent on already-redacted text). */
|
|
22
|
+
const redact = (text) => redactContent(text).content;
|
|
23
|
+
/** Numeric part of a task id, for "which task is newer". */
|
|
24
|
+
function taskNumber(id) {
|
|
25
|
+
const n = Number(/\d+/.exec(id)?.[0] ?? Number.NaN);
|
|
26
|
+
return Number.isFinite(n) ? n : 0;
|
|
27
|
+
}
|
|
28
|
+
/** Question name the site builders give the first (only) candidate. */
|
|
29
|
+
const FIRST = 'c1';
|
|
30
|
+
/**
|
|
31
|
+
* Build the question for `row`.
|
|
32
|
+
*
|
|
33
|
+
* @param row - A dataset row.
|
|
34
|
+
* @returns Request, heuristic answer and label mapping.
|
|
35
|
+
*/
|
|
36
|
+
export function benchQuestionFor(row) {
|
|
37
|
+
if (row.site === 'duplicateDetection') {
|
|
38
|
+
// The later-created task (higher id) plays the "new" task.
|
|
39
|
+
const [candidate, fresh] = taskNumber(row.input.a.id) <= taskNumber(row.input.b.id)
|
|
40
|
+
? [row.input.a, row.input.b]
|
|
41
|
+
: [row.input.b, row.input.a];
|
|
42
|
+
const score = computeLexicalSimilarity(fresh.title, fresh.description, candidate.title, candidate.description);
|
|
43
|
+
const dup = score >= DUPLICATE_WARN_THRESHOLD;
|
|
44
|
+
const req = buildDuplicateDecisionRequest(fresh.title, fresh.description, [{ task: candidate }], redact);
|
|
45
|
+
return {
|
|
46
|
+
req: { ...req, cache: false },
|
|
47
|
+
heuristicAnswers: {
|
|
48
|
+
[FIRST]: {
|
|
49
|
+
type: 'noul',
|
|
50
|
+
value: dup,
|
|
51
|
+
probability: Math.min(1, Math.max(0, score)),
|
|
52
|
+
confidence: 0.5,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
heuristicLabel: dup ? 'duplicate' : 'distinct',
|
|
56
|
+
predict: (answers) => {
|
|
57
|
+
const a = answers[FIRST];
|
|
58
|
+
if (a?.type !== 'noul')
|
|
59
|
+
return null;
|
|
60
|
+
return a.value ? 'duplicate' : 'distinct';
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (row.site === 'observationType') {
|
|
65
|
+
const guess = classifyObservationTypeByKeywords(row.input.text);
|
|
66
|
+
const req = buildObservationTypeRequest(row.input.text, row.input.title || undefined, redact);
|
|
67
|
+
const probabilities = {};
|
|
68
|
+
for (const o of OBSERVATION_TYPE_OPTIONS)
|
|
69
|
+
probabilities[o] = o === guess ? 1 : 0;
|
|
70
|
+
return {
|
|
71
|
+
req: { ...req, cache: false },
|
|
72
|
+
heuristicAnswers: { type: { type: 'choice', value: guess, probabilities, confidence: 0.5 } },
|
|
73
|
+
heuristicLabel: guess,
|
|
74
|
+
predict: (answers) => {
|
|
75
|
+
const a = answers['type'];
|
|
76
|
+
if (a?.type !== 'choice')
|
|
77
|
+
return null;
|
|
78
|
+
return OBSERVATION_TYPE_OPTIONS.some((o) => o === a.value) ? a.value : null;
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const { newer, older } = row.input;
|
|
83
|
+
const collision = decisionWordJaccard(newer, older) >= DECISION_COLLISION_THRESHOLD;
|
|
84
|
+
const req = buildContradictionRequest(
|
|
85
|
+
// The declared `supersedes` is deliberately NOT sent: it is the label.
|
|
86
|
+
{ type: newer.type ?? 'unknown', decision: newer.decision, rationale: newer.rationale }, [{ id: older.id, decision: older.decision, rationale: older.rationale, score: 0 }], redact);
|
|
87
|
+
const guess = collision ? 'supersedes' : 'unrelated';
|
|
88
|
+
const probabilities = {};
|
|
89
|
+
for (const r of CONTRADICTION_RELATIONS)
|
|
90
|
+
probabilities[r] = r === guess ? 1 : 0;
|
|
91
|
+
return {
|
|
92
|
+
req: { ...req, cache: false },
|
|
93
|
+
heuristicAnswers: { [FIRST]: { type: 'choice', value: guess, probabilities, confidence: 0.5 } },
|
|
94
|
+
heuristicLabel: collision ? 'conflict' : 'compatible',
|
|
95
|
+
predict: (answers) => {
|
|
96
|
+
const a = answers[FIRST];
|
|
97
|
+
if (a?.type !== 'choice')
|
|
98
|
+
return null;
|
|
99
|
+
if (a.value === 'contradicts' || a.value === 'supersedes')
|
|
100
|
+
return 'conflict';
|
|
101
|
+
if (a.value === 'refines' || a.value === 'unrelated')
|
|
102
|
+
return 'compatible';
|
|
103
|
+
return null;
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../../src/decide/bench/questions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown report fragment for a System One benchmark (T12495): method,
|
|
3
|
+
* dataset sizes, a per-site table, latency, cost and re-run instructions.
|
|
4
|
+
* Meant to be pasted into the README, a docs page and the site; this module
|
|
5
|
+
* only renders it.
|
|
6
|
+
*
|
|
7
|
+
* @task T12495
|
|
8
|
+
* @epic T12486
|
|
9
|
+
*/
|
|
10
|
+
import type { BenchResults } from './runner.js';
|
|
11
|
+
/**
|
|
12
|
+
* Render the Markdown fragment.
|
|
13
|
+
*
|
|
14
|
+
* @param results - Benchmark results.
|
|
15
|
+
* @param opts - The re-run command to print (default: built from the config).
|
|
16
|
+
* @returns Markdown (starts at a level-2 heading so it embeds anywhere).
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderBenchReport(results: BenchResults, opts?: {
|
|
19
|
+
readonly rerunCommand?: string;
|
|
20
|
+
}): string;
|
|
21
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAqB,YAAY,EAAE,MAAM,aAAa,CAAC;AA4CnE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,MAAM,CA2FR"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown report fragment for a System One benchmark (T12495): method,
|
|
3
|
+
* dataset sizes, a per-site table, latency, cost and re-run instructions.
|
|
4
|
+
* Meant to be pasted into the README, a docs page and the site; this module
|
|
5
|
+
* only renders it.
|
|
6
|
+
*
|
|
7
|
+
* @task T12495
|
|
8
|
+
* @epic T12486
|
|
9
|
+
*/
|
|
10
|
+
import { HEURISTIC_PROVIDER } from './runner.js';
|
|
11
|
+
/** Human site names. */
|
|
12
|
+
const SITE_TITLES = {
|
|
13
|
+
duplicateDetection: 'Duplicate task detection (`tasks.duplicate-detection`)',
|
|
14
|
+
observationType: 'Observation type (`memory.observation-type`)',
|
|
15
|
+
decisionContradiction: 'Decision contradiction (`memory.decision-contradiction`)',
|
|
16
|
+
};
|
|
17
|
+
/** Format a ratio spread as a percentage with its standard deviation. */
|
|
18
|
+
function pct(s) {
|
|
19
|
+
if (s.mean === null)
|
|
20
|
+
return '—';
|
|
21
|
+
const mean = (s.mean * 100).toFixed(1);
|
|
22
|
+
return s.n > 1 && s.stddev !== null ? `${mean}% ± ${(s.stddev * 100).toFixed(1)}` : `${mean}%`;
|
|
23
|
+
}
|
|
24
|
+
/** Format a millisecond spread. */
|
|
25
|
+
function ms(s) {
|
|
26
|
+
if (s.mean === null)
|
|
27
|
+
return '—';
|
|
28
|
+
return s.n > 1 && s.stddev !== null
|
|
29
|
+
? `${s.mean.toFixed(0)} ± ${s.stddev.toFixed(0)}`
|
|
30
|
+
: s.mean.toFixed(s.mean < 10 ? 2 : 0);
|
|
31
|
+
}
|
|
32
|
+
/** Format micro-dollars as dollars. */
|
|
33
|
+
function usd(micros) {
|
|
34
|
+
return `$${(micros / 1e6).toFixed(micros < 10_000 ? 6 : 4)}`;
|
|
35
|
+
}
|
|
36
|
+
/** Format fallbacks as `reason×n`. */
|
|
37
|
+
function fallbacks(row) {
|
|
38
|
+
const parts = Object.entries(row.fallbacks).map(([k, v]) => `${k}×${v}`);
|
|
39
|
+
return parts.length > 0 ? parts.join(', ') : '0';
|
|
40
|
+
}
|
|
41
|
+
/** One table row. */
|
|
42
|
+
function tableRow(row) {
|
|
43
|
+
const n = row.answered.mean === null ? '—' : row.answered.mean.toFixed(0);
|
|
44
|
+
const cost = row.provider === HEURISTIC_PROVIDER ? '$0' : usd(row.costMicros.mean ?? 0);
|
|
45
|
+
return `| ${row.provider} | ${n} | ${pct(row.accuracy)} | ${pct(row.precision)} | ${pct(row.recall)} | ${pct(row.f1)} | ${pct(row.falsePositiveRate)} | ${ms(row.p50Ms)} | ${ms(row.p95Ms)} | ${cost} | ${fallbacks(row)} |`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Render the Markdown fragment.
|
|
49
|
+
*
|
|
50
|
+
* @param results - Benchmark results.
|
|
51
|
+
* @param opts - The re-run command to print (default: built from the config).
|
|
52
|
+
* @returns Markdown (starts at a level-2 heading so it embeds anywhere).
|
|
53
|
+
*/
|
|
54
|
+
export function renderBenchReport(results, opts = {}) {
|
|
55
|
+
const providers = results.config.providers.map((p) => p.name);
|
|
56
|
+
const rerun = opts.rerunCommand ??
|
|
57
|
+
`cleo decide bench --profiles ${providers.join(',') || '<a,b>'} --sites ${results.config.sites.join(',')} --runs ${results.config.runs} --max-usd ${results.config.maxMicros / 1e6}`;
|
|
58
|
+
const lines = [];
|
|
59
|
+
lines.push('## System One accuracy benchmark');
|
|
60
|
+
lines.push('');
|
|
61
|
+
lines.push(`Measured ${results.finishedAt.slice(0, 10)} with \`cleo decide bench\` (T12495): ${providers.join(' vs ')} against each site's heuristic, ${results.config.runs} run(s).`);
|
|
62
|
+
lines.push('');
|
|
63
|
+
lines.push('### Method');
|
|
64
|
+
lines.push('');
|
|
65
|
+
lines.push("- **Control group: CLEO's own history.** Duplicate pairs come from `duplicates` relations, tasks cancelled as a duplicate of a named task and duplicate notes; distinct pairs are same-parent tasks with no relation. Observation types are those a caller set explicitly (the stored type differs from both keyword defaults). Contradiction positives are supersedes edges; negatives are random pairs with no supersedes edge.");
|
|
66
|
+
lines.push('- Pair rows whose text gives the label away (one side names the other\'s id, or says "duplicate of T123" / "supersedes D12") are dropped.');
|
|
67
|
+
lines.push('- The dataset and the owner spot-check sample (`dataset.jsonl`, `spot-check.json`) stay local and are never published: they hold redacted project text. Only this aggregate report is shared.');
|
|
68
|
+
lines.push('- Every row is the exact question the site asks (the site request builders), redacted with the same patterns System One uses, sent through `decideBatch` with the provider cache off (`cache: false`).');
|
|
69
|
+
lines.push(`- Metrics are over rows the provider answered; fallbacks (timeouts, errors, malformed answers) are counted separately. Latency is the wall time of the batch call that carried a row (batch size ${results.config.batchSize}). Cost is the provider-reported \`meta.cost_micros\` (the estimate when not reported).`);
|
|
70
|
+
lines.push('- Two-label sites report precision, recall, F1 and false-positive rate for the positive class (duplicate, conflict); the observation-type site reports macro averages. Values are the mean ± standard deviation across runs.');
|
|
71
|
+
lines.push('');
|
|
72
|
+
lines.push('### Dataset');
|
|
73
|
+
lines.push('');
|
|
74
|
+
lines.push('| Site | Rows | Labels |');
|
|
75
|
+
lines.push('|---|---|---|');
|
|
76
|
+
for (const [site, labels] of Object.entries(results.dataset.bySite)) {
|
|
77
|
+
const total = Object.values(labels).reduce((s, n) => s + n, 0);
|
|
78
|
+
const detail = Object.entries(labels)
|
|
79
|
+
.map(([l, n]) => `${l} ${n}`)
|
|
80
|
+
.join(', ');
|
|
81
|
+
lines.push(`| ${site} | ${total} | ${detail} |`);
|
|
82
|
+
}
|
|
83
|
+
lines.push('');
|
|
84
|
+
lines.push(`${results.dataset.total} rows, ${results.dataset.ownerVerified} verified by the owner in the spot-check.`);
|
|
85
|
+
lines.push('');
|
|
86
|
+
lines.push('### Results');
|
|
87
|
+
for (const site of results.config.sites) {
|
|
88
|
+
lines.push('');
|
|
89
|
+
lines.push(`#### ${SITE_TITLES[site] ?? site}`);
|
|
90
|
+
lines.push('');
|
|
91
|
+
lines.push('| Provider | n | Accuracy | Precision | Recall | F1 | FP rate | p50 ms | p95 ms | Cost/run | Fallbacks |');
|
|
92
|
+
lines.push('|---|---|---|---|---|---|---|---|---|---|---|');
|
|
93
|
+
for (const row of results.aggregate.filter((r) => r.site === site))
|
|
94
|
+
lines.push(tableRow(row));
|
|
95
|
+
if (site === 'observationType') {
|
|
96
|
+
lines.push('');
|
|
97
|
+
lines.push('> The keyword heuristic scores near zero here by construction: a row is only used when its type differs from the keyword default. Compare the providers with each other on this site.');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
lines.push('');
|
|
101
|
+
lines.push('### Cost');
|
|
102
|
+
lines.push('');
|
|
103
|
+
lines.push(`Spent ${usd(results.spend.spentMicros)} (${usd(results.spend.reportedMicros)} reported by the providers) of a ${usd(results.spend.capMicros)} cap, in ${results.spend.batchesSent} of ${results.spend.batchesPlanned} planned batch calls.`);
|
|
104
|
+
if (results.spend.capReached && results.spend.stoppedAt) {
|
|
105
|
+
const s = results.spend.stoppedAt;
|
|
106
|
+
lines.push('');
|
|
107
|
+
lines.push(`**Stopped at the cap** in run ${s.run}, site ${s.site}, batch ${s.batch} (${s.provider}): the next batch's estimate (${usd(s.estimateMicros)}) would have passed it. The tables cover what was completed.`);
|
|
108
|
+
}
|
|
109
|
+
lines.push('');
|
|
110
|
+
lines.push('### Re-run');
|
|
111
|
+
lines.push('');
|
|
112
|
+
lines.push('```bash');
|
|
113
|
+
lines.push('cleo decide bench --sample-only # build the dataset and the spot-check sample, no spend');
|
|
114
|
+
lines.push('cleo decide bench --corrections <file> --sample-only # apply owner corrections');
|
|
115
|
+
lines.push(rerun);
|
|
116
|
+
lines.push('```');
|
|
117
|
+
lines.push('');
|
|
118
|
+
return lines.join('\n');
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/decide/bench/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The System One benchmark runner (T12495): replay every labelled row through
|
|
3
|
+
* every compared provider with `decideBatch`, next to each site's heuristic,
|
|
4
|
+
* and score the answers.
|
|
5
|
+
*
|
|
6
|
+
* - Provider answer cache off (`cache: false` on every request) and the
|
|
7
|
+
* in-process outcome cache off, so every row is a real provider call.
|
|
8
|
+
* - One batch deadline of at least {@link MIN_BENCH_TIMEOUT_MS} (spec §1: the
|
|
9
|
+
* batch endpoint answers its items serially).
|
|
10
|
+
* - A hard total spend cap across all providers and runs, SEPARATE from the
|
|
11
|
+
* everyday monthly cap: before each batch the spend estimate (per
|
|
12
|
+
* question, the larger of {@link DECISION_COST_ESTIMATE_MICROS_PER_QUESTION}
|
|
13
|
+
* and the connection's observed mean reported cost) is added to what was
|
|
14
|
+
* spent so far, and the run stops cleanly when that would pass the cap.
|
|
15
|
+
* Billed answers the client rejected (`invalid_response`) count at their
|
|
16
|
+
* reported cost (else the estimate), so a model that keeps answering in
|
|
17
|
+
* the wrong shape is still capped. The monthly cap does not gate the benchmark
|
|
18
|
+
* (`spend: null` on the calls), but every batch's spend is still recorded
|
|
19
|
+
* in the monthly ledger so month-to-date spend stays true.
|
|
20
|
+
* - Providers take turns batch by batch, so a cap stop leaves them with the
|
|
21
|
+
* same coverage.
|
|
22
|
+
*
|
|
23
|
+
* @task T12495
|
|
24
|
+
* @epic T12486
|
|
25
|
+
*/
|
|
26
|
+
import { type SpendLedger } from '../spend.js';
|
|
27
|
+
import type { DecideFetch } from '../transport.js';
|
|
28
|
+
import { type BenchDatasetSizes } from './dataset.js';
|
|
29
|
+
import { type BenchClassificationMetrics, type BenchLatency } from './metrics.js';
|
|
30
|
+
import { type BenchSpread } from './stats.js';
|
|
31
|
+
import { type BenchConnection, type BenchRow, type BenchSite } from './types.js';
|
|
32
|
+
/** Default hard spend cap across providers and runs: $5. */
|
|
33
|
+
export declare const DEFAULT_BENCH_MAX_MICROS = 5000000;
|
|
34
|
+
/** Minimum (and default) batch deadline, ms. */
|
|
35
|
+
export declare const MIN_BENCH_TIMEOUT_MS = 30000;
|
|
36
|
+
/** Default rows per batch call. */
|
|
37
|
+
export declare const DEFAULT_BENCH_BATCH_SIZE = 16;
|
|
38
|
+
/** Largest batch the layahost batch endpoint accepts (64 requests). */
|
|
39
|
+
export declare const MAX_BENCH_BATCH_SIZE = 64;
|
|
40
|
+
/** Name of the heuristic pseudo-provider in results. */
|
|
41
|
+
export declare const HEURISTIC_PROVIDER = "heuristic";
|
|
42
|
+
/** Options for {@link runDecideBench}. */
|
|
43
|
+
export interface RunDecideBenchOptions {
|
|
44
|
+
/** Labelled rows (already filtered to the sites to run). */
|
|
45
|
+
readonly rows: readonly BenchRow[];
|
|
46
|
+
/** Providers to compare. */
|
|
47
|
+
readonly connections: readonly BenchConnection[];
|
|
48
|
+
/** Repeated runs. Default 1. */
|
|
49
|
+
readonly runs?: number;
|
|
50
|
+
/** Hard total spend cap in micro-dollars. Default {@link DEFAULT_BENCH_MAX_MICROS}. */
|
|
51
|
+
readonly maxMicros?: number;
|
|
52
|
+
/** Rows per batch call, 1–{@link MAX_BENCH_BATCH_SIZE}. Default {@link DEFAULT_BENCH_BATCH_SIZE}. */
|
|
53
|
+
readonly batchSize?: number;
|
|
54
|
+
/** Batch deadline, ms; raised to at least {@link MIN_BENCH_TIMEOUT_MS}. */
|
|
55
|
+
readonly timeoutMs?: number;
|
|
56
|
+
/** Monthly ledger the actual spend is recorded in; `null` skips it. Default: the file ledger. */
|
|
57
|
+
readonly spendLedger?: SpendLedger | null;
|
|
58
|
+
/** Transport (tests). Default: the decide transport. */
|
|
59
|
+
readonly fetch?: DecideFetch;
|
|
60
|
+
/**
|
|
61
|
+
* Directory for per-connection provider-state files (detected
|
|
62
|
+
* capabilities). Default `<cleoHome>/decide/bench/`. Each compared
|
|
63
|
+
* connection gets its own file: the everyday state file holds ONE identity,
|
|
64
|
+
* so two connections sharing it would overwrite each other's detection and
|
|
65
|
+
* one would fall back to the Jev minimum (no batch, no `cache: false`).
|
|
66
|
+
*/
|
|
67
|
+
readonly providerStateDir?: string;
|
|
68
|
+
/** Clock (tests). */
|
|
69
|
+
readonly now?: () => Date;
|
|
70
|
+
}
|
|
71
|
+
/** One provider's (or the heuristic's) result on one site in one run. */
|
|
72
|
+
export interface BenchSiteResult extends BenchClassificationMetrics {
|
|
73
|
+
/** Site. */
|
|
74
|
+
readonly site: BenchSite;
|
|
75
|
+
/** Rows sent (or scored, for the heuristic). */
|
|
76
|
+
readonly attempted: number;
|
|
77
|
+
/** Rows the provider answered usably (the metrics' `n`). */
|
|
78
|
+
readonly answered: number;
|
|
79
|
+
/** Latency of provider-answered rows: the wall time of the batch call that carried each row. */
|
|
80
|
+
readonly latency: BenchLatency;
|
|
81
|
+
/** Spend accounted to this site, micro-dollars (reported cost, else the estimate). */
|
|
82
|
+
readonly costMicros: number;
|
|
83
|
+
/** Whether the provider reported its cost (`meta.cost_micros` / `cost_usd`). */
|
|
84
|
+
readonly costReported: boolean;
|
|
85
|
+
/** Fallback reason → rows (timeouts, 4xx/5xx, malformed answers, …). */
|
|
86
|
+
readonly fallbacks: Readonly<Record<string, number>>;
|
|
87
|
+
/** Rows the provider answered with a value outside the site's labels. */
|
|
88
|
+
readonly unusable: number;
|
|
89
|
+
}
|
|
90
|
+
/** One provider in one run. */
|
|
91
|
+
export interface BenchProviderRun {
|
|
92
|
+
/** Profile name. */
|
|
93
|
+
readonly provider: string;
|
|
94
|
+
/** Per-site results, in {@link BENCH_SITES} order. */
|
|
95
|
+
readonly sites: readonly BenchSiteResult[];
|
|
96
|
+
}
|
|
97
|
+
/** One repeated run. */
|
|
98
|
+
export interface BenchRunRecord {
|
|
99
|
+
/** 1-based run number. */
|
|
100
|
+
readonly run: number;
|
|
101
|
+
/** Whether every batch of the run was sent (false when the cap stopped it). */
|
|
102
|
+
readonly complete: boolean;
|
|
103
|
+
/** Per provider. */
|
|
104
|
+
readonly providers: readonly BenchProviderRun[];
|
|
105
|
+
}
|
|
106
|
+
/** Mean and spread of one provider × site across runs. */
|
|
107
|
+
export interface BenchAggregateRow {
|
|
108
|
+
/** Profile name (or {@link HEURISTIC_PROVIDER}). */
|
|
109
|
+
readonly provider: string;
|
|
110
|
+
/** Site. */
|
|
111
|
+
readonly site: BenchSite;
|
|
112
|
+
/** Rows answered, per run. */
|
|
113
|
+
readonly answered: BenchSpread;
|
|
114
|
+
/** Accuracy. */
|
|
115
|
+
readonly accuracy: BenchSpread;
|
|
116
|
+
/** Precision. */
|
|
117
|
+
readonly precision: BenchSpread;
|
|
118
|
+
/** Recall. */
|
|
119
|
+
readonly recall: BenchSpread;
|
|
120
|
+
/** F1. */
|
|
121
|
+
readonly f1: BenchSpread;
|
|
122
|
+
/** False-positive rate. */
|
|
123
|
+
readonly falsePositiveRate: BenchSpread;
|
|
124
|
+
/** p50 latency, ms. */
|
|
125
|
+
readonly p50Ms: BenchSpread;
|
|
126
|
+
/** p95 latency, ms. */
|
|
127
|
+
readonly p95Ms: BenchSpread;
|
|
128
|
+
/** Cost per run, micro-dollars. */
|
|
129
|
+
readonly costMicros: BenchSpread;
|
|
130
|
+
/** Fallbacks summed over runs, by reason. */
|
|
131
|
+
readonly fallbacks: Readonly<Record<string, number>>;
|
|
132
|
+
}
|
|
133
|
+
/** Spend accounting of a benchmark. */
|
|
134
|
+
export interface BenchSpendSummary {
|
|
135
|
+
/** The hard cap, micro-dollars. */
|
|
136
|
+
readonly capMicros: number;
|
|
137
|
+
/** Spent (reported cost, else the estimate), micro-dollars. */
|
|
138
|
+
readonly spentMicros: number;
|
|
139
|
+
/** Of which the providers reported. */
|
|
140
|
+
readonly reportedMicros: number;
|
|
141
|
+
/** Whether the cap stopped the benchmark. */
|
|
142
|
+
readonly capReached: boolean;
|
|
143
|
+
/** Where it stopped, when it did. */
|
|
144
|
+
readonly stoppedAt?: {
|
|
145
|
+
readonly run: number;
|
|
146
|
+
readonly site: BenchSite;
|
|
147
|
+
readonly provider: string;
|
|
148
|
+
readonly batch: number;
|
|
149
|
+
readonly estimateMicros: number;
|
|
150
|
+
};
|
|
151
|
+
/** Batch calls made. */
|
|
152
|
+
readonly batchesSent: number;
|
|
153
|
+
/** Batch calls planned (runs × sites × batches × providers). */
|
|
154
|
+
readonly batchesPlanned: number;
|
|
155
|
+
/** Whether the monthly ledger accepted the spend record (false: it could not be written). */
|
|
156
|
+
readonly recordedInMonthlyLedger: boolean;
|
|
157
|
+
}
|
|
158
|
+
/** The machine-readable benchmark result. */
|
|
159
|
+
export interface BenchResults {
|
|
160
|
+
/** Format version. */
|
|
161
|
+
readonly schemaVersion: 1;
|
|
162
|
+
/** Owning task. */
|
|
163
|
+
readonly task: 'T12495';
|
|
164
|
+
/** ISO start time. */
|
|
165
|
+
readonly startedAt: string;
|
|
166
|
+
/** ISO end time. */
|
|
167
|
+
readonly finishedAt: string;
|
|
168
|
+
/** Run configuration; never contains an API key. */
|
|
169
|
+
readonly config: {
|
|
170
|
+
readonly runs: number;
|
|
171
|
+
readonly batchSize: number;
|
|
172
|
+
readonly timeoutMs: number;
|
|
173
|
+
readonly maxMicros: number;
|
|
174
|
+
readonly sites: readonly BenchSite[];
|
|
175
|
+
readonly providers: readonly {
|
|
176
|
+
readonly name: string;
|
|
177
|
+
readonly provider: string;
|
|
178
|
+
readonly baseUrl: string;
|
|
179
|
+
readonly model?: string;
|
|
180
|
+
}[];
|
|
181
|
+
};
|
|
182
|
+
/** Dataset sizes. */
|
|
183
|
+
readonly dataset: BenchDatasetSizes;
|
|
184
|
+
/** The heuristic baseline (deterministic, scored once). */
|
|
185
|
+
readonly heuristic: readonly BenchSiteResult[];
|
|
186
|
+
/** Every run. */
|
|
187
|
+
readonly runs: readonly BenchRunRecord[];
|
|
188
|
+
/** Mean and spread per provider × site (heuristic included). */
|
|
189
|
+
readonly aggregate: readonly BenchAggregateRow[];
|
|
190
|
+
/** Spend. */
|
|
191
|
+
readonly spend: BenchSpendSummary;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Run the benchmark.
|
|
195
|
+
*
|
|
196
|
+
* Never throws because of a provider: failures become per-row fallbacks with
|
|
197
|
+
* their reason. Stops cleanly at the spend cap and reports what it completed.
|
|
198
|
+
*
|
|
199
|
+
* @param opts - Rows, connections, runs, cap and wiring.
|
|
200
|
+
* @returns The results.
|
|
201
|
+
*/
|
|
202
|
+
export declare function runDecideBench(opts: RunDecideBenchOptions): Promise<BenchResults>;
|
|
203
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/decide/bench/runner.ts"],"names":[],"mappings":"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"}
|