@sema-agent/server 1.185.0
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/LICENSE +102 -0
- package/README.md +207 -0
- package/deploy/sema-up/README.md +145 -0
- package/deploy/sema-up/chart/Chart.yaml +11 -0
- package/deploy/sema-up/chart/templates/gitea.yaml +63 -0
- package/deploy/sema-up/chart/templates/minio.yaml +62 -0
- package/deploy/sema-up/chart/templates/namespace-sandbox.yaml +9 -0
- package/deploy/sema-up/chart/templates/pg-cluster.yaml +57 -0
- package/deploy/sema-up/chart/templates/registry.yaml +88 -0
- package/deploy/sema-up/chart/templates/sandbox-rbac.yaml +45 -0
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +76 -0
- package/deploy/sema-up/chart/templates/server.yaml +88 -0
- package/deploy/sema-up/chart/values-full-single.yaml +9 -0
- package/deploy/sema-up/chart/values.yaml +100 -0
- package/deploy/sema-up/cluster-up.sh +432 -0
- package/deploy/sema-up/kube-up.sh +377 -0
- package/deploy/sema-up/lib/parse-machines.py +117 -0
- package/deploy/sema-up/machines.example.yaml +53 -0
- package/deploy/sema-up/preflight.sh +168 -0
- package/deploy/sema-up/sema-up.sh +758 -0
- package/deploy/sema-up/smoke.sh +100 -0
- package/deploy/sema-up/stack/compose.dataroot.yaml +16 -0
- package/deploy/sema-up/stack/compose.yaml +155 -0
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +189 -0
- package/dist/approval.d.ts +27 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +127 -0
- package/dist/approval.js.map +1 -0
- package/dist/audit.d.ts +29 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +95 -0
- package/dist/audit.js.map +1 -0
- package/dist/auth-bridge.d.ts +29 -0
- package/dist/auth-bridge.d.ts.map +1 -0
- package/dist/auth-bridge.js +145 -0
- package/dist/auth-bridge.js.map +1 -0
- package/dist/bake-runner/main.d.ts +20 -0
- package/dist/bake-runner/main.d.ts.map +1 -0
- package/dist/bake-runner/main.js +216 -0
- package/dist/bake-runner/main.js.map +1 -0
- package/dist/bake-runner/protocol.d.ts +49 -0
- package/dist/bake-runner/protocol.d.ts.map +1 -0
- package/dist/bake-runner/protocol.js +86 -0
- package/dist/bake-runner/protocol.js.map +1 -0
- package/dist/bake-runner/runner.d.ts +86 -0
- package/dist/bake-runner/runner.d.ts.map +1 -0
- package/dist/bake-runner/runner.js +228 -0
- package/dist/bake-runner/runner.js.map +1 -0
- package/dist/bench/l8/artifact.d.ts +62 -0
- package/dist/bench/l8/artifact.d.ts.map +1 -0
- package/dist/bench/l8/artifact.js +129 -0
- package/dist/bench/l8/artifact.js.map +1 -0
- package/dist/bench/l8/escape.d.ts +18 -0
- package/dist/bench/l8/escape.d.ts.map +1 -0
- package/dist/bench/l8/escape.js +9 -0
- package/dist/bench/l8/escape.js.map +1 -0
- package/dist/bench/l8/index.d.ts +5 -0
- package/dist/bench/l8/index.d.ts.map +1 -0
- package/dist/bench/l8/index.js +5 -0
- package/dist/bench/l8/index.js.map +1 -0
- package/dist/bench/l8/probes.d.ts +75 -0
- package/dist/bench/l8/probes.d.ts.map +1 -0
- package/dist/bench/l8/probes.js +178 -0
- package/dist/bench/l8/probes.js.map +1 -0
- package/dist/bench/l8/run-probes.d.ts +21 -0
- package/dist/bench/l8/run-probes.d.ts.map +1 -0
- package/dist/bench/l8/run-probes.js +130 -0
- package/dist/bench/l8/run-probes.js.map +1 -0
- package/dist/bench/s1/arms.d.ts +84 -0
- package/dist/bench/s1/arms.d.ts.map +1 -0
- package/dist/bench/s1/arms.js +329 -0
- package/dist/bench/s1/arms.js.map +1 -0
- package/dist/bench/s1/live-deps.d.ts +25 -0
- package/dist/bench/s1/live-deps.d.ts.map +1 -0
- package/dist/bench/s1/live-deps.js +449 -0
- package/dist/bench/s1/live-deps.js.map +1 -0
- package/dist/bench/s1/oracle.d.ts +34 -0
- package/dist/bench/s1/oracle.d.ts.map +1 -0
- package/dist/bench/s1/oracle.js +29 -0
- package/dist/bench/s1/oracle.js.map +1 -0
- package/dist/bench/s1/repair-oracle-adapter.d.ts +9 -0
- package/dist/bench/s1/repair-oracle-adapter.d.ts.map +1 -0
- package/dist/bench/s1/repair-oracle-adapter.js +27 -0
- package/dist/bench/s1/repair-oracle-adapter.js.map +1 -0
- package/dist/bench/s1/reviewer.d.ts +31 -0
- package/dist/bench/s1/reviewer.d.ts.map +1 -0
- package/dist/bench/s1/reviewer.js +26 -0
- package/dist/bench/s1/reviewer.js.map +1 -0
- package/dist/bench/s1/row.d.ts +29 -0
- package/dist/bench/s1/row.d.ts.map +1 -0
- package/dist/bench/s1/row.js +55 -0
- package/dist/bench/s1/row.js.map +1 -0
- package/dist/bench/s1/run-firm.d.ts +49 -0
- package/dist/bench/s1/run-firm.d.ts.map +1 -0
- package/dist/bench/s1/run-firm.js +291 -0
- package/dist/bench/s1/run-firm.js.map +1 -0
- package/dist/bench/s1/runner-ctx.d.ts +44 -0
- package/dist/bench/s1/runner-ctx.d.ts.map +1 -0
- package/dist/bench/s1/runner-ctx.js +59 -0
- package/dist/bench/s1/runner-ctx.js.map +1 -0
- package/dist/bench/s1/tasks.d.ts +48 -0
- package/dist/bench/s1/tasks.d.ts.map +1 -0
- package/dist/bench/s1/tasks.js +194 -0
- package/dist/bench/s1/tasks.js.map +1 -0
- package/dist/boot-reclaim.d.ts +10 -0
- package/dist/boot-reclaim.d.ts.map +1 -0
- package/dist/boot-reclaim.js +13 -0
- package/dist/boot-reclaim.js.map +1 -0
- package/dist/brain.d.ts +8 -0
- package/dist/brain.d.ts.map +1 -0
- package/dist/brain.js +83 -0
- package/dist/brain.js.map +1 -0
- package/dist/budget.d.ts +25 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +107 -0
- package/dist/budget.js.map +1 -0
- package/dist/capabilities/builtin-tools.d.ts +3 -0
- package/dist/capabilities/builtin-tools.d.ts.map +1 -0
- package/dist/capabilities/builtin-tools.js +11 -0
- package/dist/capabilities/builtin-tools.js.map +1 -0
- package/dist/capabilities/code-review-council.d.ts +21 -0
- package/dist/capabilities/code-review-council.d.ts.map +1 -0
- package/dist/capabilities/code-review-council.js +113 -0
- package/dist/capabilities/code-review-council.js.map +1 -0
- package/dist/capabilities/collab-wire.d.ts +34 -0
- package/dist/capabilities/collab-wire.d.ts.map +1 -0
- package/dist/capabilities/collab-wire.js +2 -0
- package/dist/capabilities/collab-wire.js.map +1 -0
- package/dist/capabilities/collab-workflows.d.ts +40 -0
- package/dist/capabilities/collab-workflows.d.ts.map +1 -0
- package/dist/capabilities/collab-workflows.js +90 -0
- package/dist/capabilities/collab-workflows.js.map +1 -0
- package/dist/capabilities/oa-tools.d.ts +9 -0
- package/dist/capabilities/oa-tools.d.ts.map +1 -0
- package/dist/capabilities/oa-tools.js +44 -0
- package/dist/capabilities/oa-tools.js.map +1 -0
- package/dist/capabilities/prompt.d.ts +3 -0
- package/dist/capabilities/prompt.d.ts.map +1 -0
- package/dist/capabilities/prompt.js +6 -0
- package/dist/capabilities/prompt.js.map +1 -0
- package/dist/capabilities/prompts/code-review.d.ts +11 -0
- package/dist/capabilities/prompts/code-review.d.ts.map +1 -0
- package/dist/capabilities/prompts/code-review.js +39 -0
- package/dist/capabilities/prompts/code-review.js.map +1 -0
- package/dist/capabilities/prompts/identity.d.ts +2 -0
- package/dist/capabilities/prompts/identity.d.ts.map +1 -0
- package/dist/capabilities/prompts/identity.js +6 -0
- package/dist/capabilities/prompts/identity.js.map +1 -0
- package/dist/capabilities/prompts/team.d.ts +6 -0
- package/dist/capabilities/prompts/team.d.ts.map +1 -0
- package/dist/capabilities/prompts/team.js +6 -0
- package/dist/capabilities/prompts/team.js.map +1 -0
- package/dist/capabilities/repo-tools.d.ts +19 -0
- package/dist/capabilities/repo-tools.d.ts.map +1 -0
- package/dist/capabilities/repo-tools.js +98 -0
- package/dist/capabilities/repo-tools.js.map +1 -0
- package/dist/capabilities/scenarios.d.ts +72 -0
- package/dist/capabilities/scenarios.d.ts.map +1 -0
- package/dist/capabilities/scenarios.js +241 -0
- package/dist/capabilities/scenarios.js.map +1 -0
- package/dist/capabilities/select-environment-tool.d.ts +22 -0
- package/dist/capabilities/select-environment-tool.d.ts.map +1 -0
- package/dist/capabilities/select-environment-tool.js +86 -0
- package/dist/capabilities/select-environment-tool.js.map +1 -0
- package/dist/capabilities/skills.d.ts +12 -0
- package/dist/capabilities/skills.d.ts.map +1 -0
- package/dist/capabilities/skills.js +50 -0
- package/dist/capabilities/skills.js.map +1 -0
- package/dist/capabilities/team.d.ts +31 -0
- package/dist/capabilities/team.d.ts.map +1 -0
- package/dist/capabilities/team.js +66 -0
- package/dist/capabilities/team.js.map +1 -0
- package/dist/config-provider.d.ts +47 -0
- package/dist/config-provider.d.ts.map +1 -0
- package/dist/config-provider.js +156 -0
- package/dist/config-provider.js.map +1 -0
- package/dist/config.d.ts +272 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +605 -0
- package/dist/config.js.map +1 -0
- package/dist/degenerate-instrument.d.ts +17 -0
- package/dist/degenerate-instrument.d.ts.map +1 -0
- package/dist/degenerate-instrument.js +113 -0
- package/dist/degenerate-instrument.js.map +1 -0
- package/dist/elicitation.d.ts +47 -0
- package/dist/elicitation.d.ts.map +1 -0
- package/dist/elicitation.js +151 -0
- package/dist/elicitation.js.map +1 -0
- package/dist/env-facts.d.ts +18 -0
- package/dist/env-facts.d.ts.map +1 -0
- package/dist/env-facts.js +26 -0
- package/dist/env-facts.js.map +1 -0
- package/dist/finance/cost-taxonomy.d.ts +34 -0
- package/dist/finance/cost-taxonomy.d.ts.map +1 -0
- package/dist/finance/cost-taxonomy.js +26 -0
- package/dist/finance/cost-taxonomy.js.map +1 -0
- package/dist/fleet/fleet-bus.d.ts +137 -0
- package/dist/fleet/fleet-bus.d.ts.map +1 -0
- package/dist/fleet/fleet-bus.js +249 -0
- package/dist/fleet/fleet-bus.js.map +1 -0
- package/dist/fleet-client.d.ts +50 -0
- package/dist/fleet-client.d.ts.map +1 -0
- package/dist/fleet-client.js +150 -0
- package/dist/fleet-client.js.map +1 -0
- package/dist/fleet-lease.d.ts +76 -0
- package/dist/fleet-lease.d.ts.map +1 -0
- package/dist/fleet-lease.js +124 -0
- package/dist/fleet-lease.js.map +1 -0
- package/dist/hooks/hook-runner.d.ts +41 -0
- package/dist/hooks/hook-runner.d.ts.map +1 -0
- package/dist/hooks/hook-runner.js +975 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/http/idempotency.d.ts +12 -0
- package/dist/http/idempotency.d.ts.map +1 -0
- package/dist/http/idempotency.js +49 -0
- package/dist/http/idempotency.js.map +1 -0
- package/dist/http/server.d.ts +185 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +4845 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/wire-gate.d.ts +3 -0
- package/dist/http/wire-gate.d.ts.map +1 -0
- package/dist/http/wire-gate.js +6 -0
- package/dist/http/wire-gate.js.map +1 -0
- package/dist/images/bake-validate.d.ts +41 -0
- package/dist/images/bake-validate.d.ts.map +1 -0
- package/dist/images/bake-validate.js +183 -0
- package/dist/images/bake-validate.js.map +1 -0
- package/dist/images/manifest.d.ts +36 -0
- package/dist/images/manifest.d.ts.map +1 -0
- package/dist/images/manifest.js +69 -0
- package/dist/images/manifest.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/key-resolver.d.ts +5 -0
- package/dist/key-resolver.d.ts.map +1 -0
- package/dist/key-resolver.js +15 -0
- package/dist/key-resolver.js.map +1 -0
- package/dist/leader/diffout.d.ts +24 -0
- package/dist/leader/diffout.d.ts.map +1 -0
- package/dist/leader/diffout.js +54 -0
- package/dist/leader/diffout.js.map +1 -0
- package/dist/leader/diffup.d.ts +14 -0
- package/dist/leader/diffup.d.ts.map +1 -0
- package/dist/leader/diffup.js +81 -0
- package/dist/leader/diffup.js.map +1 -0
- package/dist/leader/endpoint.d.ts +30 -0
- package/dist/leader/endpoint.d.ts.map +1 -0
- package/dist/leader/endpoint.js +76 -0
- package/dist/leader/endpoint.js.map +1 -0
- package/dist/leader/fanout.d.ts +46 -0
- package/dist/leader/fanout.d.ts.map +1 -0
- package/dist/leader/fanout.js +109 -0
- package/dist/leader/fanout.js.map +1 -0
- package/dist/leader/grader-env-factory.d.ts +36 -0
- package/dist/leader/grader-env-factory.d.ts.map +1 -0
- package/dist/leader/grader-env-factory.js +73 -0
- package/dist/leader/grader-env-factory.js.map +1 -0
- package/dist/leader/leader.d.ts +102 -0
- package/dist/leader/leader.d.ts.map +1 -0
- package/dist/leader/leader.js +354 -0
- package/dist/leader/leader.js.map +1 -0
- package/dist/leader/merge.d.ts +109 -0
- package/dist/leader/merge.d.ts.map +1 -0
- package/dist/leader/merge.js +184 -0
- package/dist/leader/merge.js.map +1 -0
- package/dist/leader/planner.d.ts +26 -0
- package/dist/leader/planner.d.ts.map +1 -0
- package/dist/leader/planner.js +137 -0
- package/dist/leader/planner.js.map +1 -0
- package/dist/leader/repair-oracle.d.ts +34 -0
- package/dist/leader/repair-oracle.d.ts.map +1 -0
- package/dist/leader/repair-oracle.js +83 -0
- package/dist/leader/repair-oracle.js.map +1 -0
- package/dist/leader/repair-wire.d.ts +49 -0
- package/dist/leader/repair-wire.d.ts.map +1 -0
- package/dist/leader/repair-wire.js +90 -0
- package/dist/leader/repair-wire.js.map +1 -0
- package/dist/leader/wire.d.ts +66 -0
- package/dist/leader/wire.d.ts.map +1 -0
- package/dist/leader/wire.js +452 -0
- package/dist/leader/wire.js.map +1 -0
- package/dist/lsp/e2b-bridge.d.ts +8 -0
- package/dist/lsp/e2b-bridge.d.ts.map +1 -0
- package/dist/lsp/e2b-bridge.js +71 -0
- package/dist/lsp/e2b-bridge.js.map +1 -0
- package/dist/lsp/e2b-manager.d.ts +16 -0
- package/dist/lsp/e2b-manager.d.ts.map +1 -0
- package/dist/lsp/e2b-manager.js +49 -0
- package/dist/lsp/e2b-manager.js.map +1 -0
- package/dist/lsp/lsp-frames.d.ts +2 -0
- package/dist/lsp/lsp-frames.d.ts.map +1 -0
- package/dist/lsp/lsp-frames.js +25 -0
- package/dist/lsp/lsp-frames.js.map +1 -0
- package/dist/lsp/manager.d.ts +41 -0
- package/dist/lsp/manager.d.ts.map +1 -0
- package/dist/lsp/manager.js +84 -0
- package/dist/lsp/manager.js.map +1 -0
- package/dist/lsp/types.d.ts +2 -0
- package/dist/lsp/types.d.ts.map +1 -0
- package/dist/lsp/types.js +2 -0
- package/dist/lsp/types.js.map +1 -0
- package/dist/lsp/ws-transport.d.ts +28 -0
- package/dist/lsp/ws-transport.d.ts.map +1 -0
- package/dist/lsp/ws-transport.js +209 -0
- package/dist/lsp/ws-transport.js.map +1 -0
- package/dist/lsp-evict.d.ts +2 -0
- package/dist/lsp-evict.d.ts.map +1 -0
- package/dist/lsp-evict.js +14 -0
- package/dist/lsp-evict.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +1526 -0
- package/dist/main.js.map +1 -0
- package/dist/memory-export.d.ts +3 -0
- package/dist/memory-export.d.ts.map +1 -0
- package/dist/memory-export.js +8 -0
- package/dist/memory-export.js.map +1 -0
- package/dist/memory-sync-client.d.ts +29 -0
- package/dist/memory-sync-client.d.ts.map +1 -0
- package/dist/memory-sync-client.js +133 -0
- package/dist/memory-sync-client.js.map +1 -0
- package/dist/memory-sync.d.ts +41 -0
- package/dist/memory-sync.d.ts.map +1 -0
- package/dist/memory-sync.js +183 -0
- package/dist/memory-sync.js.map +1 -0
- package/dist/model-select.d.ts +8 -0
- package/dist/model-select.d.ts.map +1 -0
- package/dist/model-select.js +12 -0
- package/dist/model-select.js.map +1 -0
- package/dist/observability/cost-quota.d.ts +21 -0
- package/dist/observability/cost-quota.d.ts.map +1 -0
- package/dist/observability/cost-quota.js +42 -0
- package/dist/observability/cost-quota.js.map +1 -0
- package/dist/observability/logger.d.ts +9 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +35 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +76 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +263 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/otel-exporter.d.ts +37 -0
- package/dist/observability/otel-exporter.d.ts.map +1 -0
- package/dist/observability/otel-exporter.js +95 -0
- package/dist/observability/otel-exporter.js.map +1 -0
- package/dist/observability/principal-context.d.ts +5 -0
- package/dist/observability/principal-context.d.ts.map +1 -0
- package/dist/observability/principal-context.js +9 -0
- package/dist/observability/principal-context.js.map +1 -0
- package/dist/observability/rate-limit.d.ts +18 -0
- package/dist/observability/rate-limit.d.ts.map +1 -0
- package/dist/observability/rate-limit.js +30 -0
- package/dist/observability/rate-limit.js.map +1 -0
- package/dist/observability/tool-trace.d.ts +6 -0
- package/dist/observability/tool-trace.d.ts.map +1 -0
- package/dist/observability/tool-trace.js +73 -0
- package/dist/observability/tool-trace.js.map +1 -0
- package/dist/orchestration/hardened-vm-runner.d.ts +26 -0
- package/dist/orchestration/hardened-vm-runner.d.ts.map +1 -0
- package/dist/orchestration/hardened-vm-runner.js +217 -0
- package/dist/orchestration/hardened-vm-runner.js.map +1 -0
- package/dist/orchestration/hardened-vm-worker-runner.d.ts +4 -0
- package/dist/orchestration/hardened-vm-worker-runner.d.ts.map +1 -0
- package/dist/orchestration/hardened-vm-worker-runner.js +79 -0
- package/dist/orchestration/hardened-vm-worker-runner.js.map +1 -0
- package/dist/orchestration/hardened-vm-worker.d.ts +2 -0
- package/dist/orchestration/hardened-vm-worker.d.ts.map +1 -0
- package/dist/orchestration/hardened-vm-worker.js +80 -0
- package/dist/orchestration/hardened-vm-worker.js.map +1 -0
- package/dist/orchestration/subagent-steer.d.ts +12 -0
- package/dist/orchestration/subagent-steer.d.ts.map +1 -0
- package/dist/orchestration/subagent-steer.js +45 -0
- package/dist/orchestration/subagent-steer.js.map +1 -0
- package/dist/orchestration/workflow-agent-steer.d.ts +14 -0
- package/dist/orchestration/workflow-agent-steer.d.ts.map +1 -0
- package/dist/orchestration/workflow-agent-steer.js +41 -0
- package/dist/orchestration/workflow-agent-steer.js.map +1 -0
- package/dist/orchestration/workflow-completion-inbox.d.ts +101 -0
- package/dist/orchestration/workflow-completion-inbox.d.ts.map +1 -0
- package/dist/orchestration/workflow-completion-inbox.js +327 -0
- package/dist/orchestration/workflow-completion-inbox.js.map +1 -0
- package/dist/orchestration/workflow-notify-journal.d.ts +120 -0
- package/dist/orchestration/workflow-notify-journal.d.ts.map +1 -0
- package/dist/orchestration/workflow-notify-journal.js +297 -0
- package/dist/orchestration/workflow-notify-journal.js.map +1 -0
- package/dist/per-task-image.d.ts +27 -0
- package/dist/per-task-image.d.ts.map +1 -0
- package/dist/per-task-image.js +37 -0
- package/dist/per-task-image.js.map +1 -0
- package/dist/plan-cache-probe.d.ts +21 -0
- package/dist/plan-cache-probe.d.ts.map +1 -0
- package/dist/plan-cache-probe.js +79 -0
- package/dist/plan-cache-probe.js.map +1 -0
- package/dist/plugins/approval-exemption-store.d.ts +56 -0
- package/dist/plugins/approval-exemption-store.d.ts.map +1 -0
- package/dist/plugins/approval-exemption-store.js +216 -0
- package/dist/plugins/approval-exemption-store.js.map +1 -0
- package/dist/plugins/background-shell-support.d.ts +64 -0
- package/dist/plugins/background-shell-support.d.ts.map +1 -0
- package/dist/plugins/background-shell-support.js +235 -0
- package/dist/plugins/background-shell-support.js.map +1 -0
- package/dist/plugins/blob-backend.d.ts +44 -0
- package/dist/plugins/blob-backend.d.ts.map +1 -0
- package/dist/plugins/blob-backend.js +188 -0
- package/dist/plugins/blob-backend.js.map +1 -0
- package/dist/plugins/caching-session-store.d.ts +51 -0
- package/dist/plugins/caching-session-store.d.ts.map +1 -0
- package/dist/plugins/caching-session-store.js +142 -0
- package/dist/plugins/caching-session-store.js.map +1 -0
- package/dist/plugins/file-outcome-sink.d.ts +20 -0
- package/dist/plugins/file-outcome-sink.d.ts.map +1 -0
- package/dist/plugins/file-outcome-sink.js +14 -0
- package/dist/plugins/file-outcome-sink.js.map +1 -0
- package/dist/plugins/file-resume-anchor-store.d.ts +19 -0
- package/dist/plugins/file-resume-anchor-store.d.ts.map +1 -0
- package/dist/plugins/file-resume-anchor-store.js +103 -0
- package/dist/plugins/file-resume-anchor-store.js.map +1 -0
- package/dist/plugins/file-run-store.d.ts +95 -0
- package/dist/plugins/file-run-store.d.ts.map +1 -0
- package/dist/plugins/file-run-store.js +446 -0
- package/dist/plugins/file-run-store.js.map +1 -0
- package/dist/plugins/file-workflow-journal-store.d.ts +2 -0
- package/dist/plugins/file-workflow-journal-store.d.ts.map +1 -0
- package/dist/plugins/file-workflow-journal-store.js +2 -0
- package/dist/plugins/file-workflow-journal-store.js.map +1 -0
- package/dist/plugins/host-platform.d.ts +19 -0
- package/dist/plugins/host-platform.d.ts.map +1 -0
- package/dist/plugins/host-platform.js +71 -0
- package/dist/plugins/host-platform.js.map +1 -0
- package/dist/plugins/local-checkpoint-store.d.ts +41 -0
- package/dist/plugins/local-checkpoint-store.d.ts.map +1 -0
- package/dist/plugins/local-checkpoint-store.js +217 -0
- package/dist/plugins/local-checkpoint-store.js.map +1 -0
- package/dist/plugins/local-session-store.d.ts +69 -0
- package/dist/plugins/local-session-store.d.ts.map +1 -0
- package/dist/plugins/local-session-store.js +431 -0
- package/dist/plugins/local-session-store.js.map +1 -0
- package/dist/plugins/memory-engine-pg.d.ts +47 -0
- package/dist/plugins/memory-engine-pg.d.ts.map +1 -0
- package/dist/plugins/memory-engine-pg.js +306 -0
- package/dist/plugins/memory-engine-pg.js.map +1 -0
- package/dist/plugins/memory-engine-tidb.d.ts +40 -0
- package/dist/plugins/memory-engine-tidb.d.ts.map +1 -0
- package/dist/plugins/memory-engine-tidb.js +296 -0
- package/dist/plugins/memory-engine-tidb.js.map +1 -0
- package/dist/plugins/memory-engine-vector-util.d.ts +2 -0
- package/dist/plugins/memory-engine-vector-util.d.ts.map +1 -0
- package/dist/plugins/memory-engine-vector-util.js +2 -0
- package/dist/plugins/memory-engine-vector-util.js.map +1 -0
- package/dist/plugins/memory-resume-anchor-store.d.ts +12 -0
- package/dist/plugins/memory-resume-anchor-store.d.ts.map +1 -0
- package/dist/plugins/memory-resume-anchor-store.js +31 -0
- package/dist/plugins/memory-resume-anchor-store.js.map +1 -0
- package/dist/plugins/memory-run-store.d.ts +75 -0
- package/dist/plugins/memory-run-store.d.ts.map +1 -0
- package/dist/plugins/memory-run-store.js +267 -0
- package/dist/plugins/memory-run-store.js.map +1 -0
- package/dist/plugins/memory-sync-store-pg.d.ts +78 -0
- package/dist/plugins/memory-sync-store-pg.d.ts.map +1 -0
- package/dist/plugins/memory-sync-store-pg.js +152 -0
- package/dist/plugins/memory-sync-store-pg.js.map +1 -0
- package/dist/plugins/memory-sync-store-tidb.d.ts +32 -0
- package/dist/plugins/memory-sync-store-tidb.d.ts.map +1 -0
- package/dist/plugins/memory-sync-store-tidb.js +146 -0
- package/dist/plugins/memory-sync-store-tidb.js.map +1 -0
- package/dist/plugins/pg-approval-store.d.ts +28 -0
- package/dist/plugins/pg-approval-store.d.ts.map +1 -0
- package/dist/plugins/pg-approval-store.js +107 -0
- package/dist/plugins/pg-approval-store.js.map +1 -0
- package/dist/plugins/pg-breaker-state.d.ts +20 -0
- package/dist/plugins/pg-breaker-state.d.ts.map +1 -0
- package/dist/plugins/pg-breaker-state.js +89 -0
- package/dist/plugins/pg-breaker-state.js.map +1 -0
- package/dist/plugins/pg-checkpoint-store.d.ts +34 -0
- package/dist/plugins/pg-checkpoint-store.d.ts.map +1 -0
- package/dist/plugins/pg-checkpoint-store.js +193 -0
- package/dist/plugins/pg-checkpoint-store.js.map +1 -0
- package/dist/plugins/pg-cost-quota.d.ts +18 -0
- package/dist/plugins/pg-cost-quota.d.ts.map +1 -0
- package/dist/plugins/pg-cost-quota.js +189 -0
- package/dist/plugins/pg-cost-quota.js.map +1 -0
- package/dist/plugins/pg-file-snapshot-store.d.ts +26 -0
- package/dist/plugins/pg-file-snapshot-store.d.ts.map +1 -0
- package/dist/plugins/pg-file-snapshot-store.js +181 -0
- package/dist/plugins/pg-file-snapshot-store.js.map +1 -0
- package/dist/plugins/pg-image-bake.d.ts +42 -0
- package/dist/plugins/pg-image-bake.d.ts.map +1 -0
- package/dist/plugins/pg-image-bake.js +471 -0
- package/dist/plugins/pg-image-bake.js.map +1 -0
- package/dist/plugins/pg-image-index.d.ts +23 -0
- package/dist/plugins/pg-image-index.d.ts.map +1 -0
- package/dist/plugins/pg-image-index.js +252 -0
- package/dist/plugins/pg-image-index.js.map +1 -0
- package/dist/plugins/pg-outcome-ledger.d.ts +23 -0
- package/dist/plugins/pg-outcome-ledger.d.ts.map +1 -0
- package/dist/plugins/pg-outcome-ledger.js +102 -0
- package/dist/plugins/pg-outcome-ledger.js.map +1 -0
- package/dist/plugins/pg-pool.d.ts +7 -0
- package/dist/plugins/pg-pool.d.ts.map +1 -0
- package/dist/plugins/pg-pool.js +233 -0
- package/dist/plugins/pg-pool.js.map +1 -0
- package/dist/plugins/pg-rate-limiter.d.ts +49 -0
- package/dist/plugins/pg-rate-limiter.d.ts.map +1 -0
- package/dist/plugins/pg-rate-limiter.js +193 -0
- package/dist/plugins/pg-rate-limiter.js.map +1 -0
- package/dist/plugins/pg-resume-anchor-store.d.ts +14 -0
- package/dist/plugins/pg-resume-anchor-store.d.ts.map +1 -0
- package/dist/plugins/pg-resume-anchor-store.js +23 -0
- package/dist/plugins/pg-resume-anchor-store.js.map +1 -0
- package/dist/plugins/pg-run-store.d.ts +76 -0
- package/dist/plugins/pg-run-store.d.ts.map +1 -0
- package/dist/plugins/pg-run-store.js +301 -0
- package/dist/plugins/pg-run-store.js.map +1 -0
- package/dist/plugins/pg-session-policy-store.d.ts +12 -0
- package/dist/plugins/pg-session-policy-store.d.ts.map +1 -0
- package/dist/plugins/pg-session-policy-store.js +88 -0
- package/dist/plugins/pg-session-policy-store.js.map +1 -0
- package/dist/plugins/pg-session-storage.d.ts +59 -0
- package/dist/plugins/pg-session-storage.d.ts.map +1 -0
- package/dist/plugins/pg-session-storage.js +484 -0
- package/dist/plugins/pg-session-storage.js.map +1 -0
- package/dist/plugins/pg-session-store.d.ts +2 -0
- package/dist/plugins/pg-session-store.d.ts.map +1 -0
- package/dist/plugins/pg-session-store.js +2 -0
- package/dist/plugins/pg-session-store.js.map +1 -0
- package/dist/plugins/pg-tool-result-store.d.ts +16 -0
- package/dist/plugins/pg-tool-result-store.d.ts.map +1 -0
- package/dist/plugins/pg-tool-result-store.js +52 -0
- package/dist/plugins/pg-tool-result-store.js.map +1 -0
- package/dist/plugins/pg-workflow-journal-store.d.ts +11 -0
- package/dist/plugins/pg-workflow-journal-store.d.ts.map +1 -0
- package/dist/plugins/pg-workflow-journal-store.js +28 -0
- package/dist/plugins/pg-workflow-journal-store.js.map +1 -0
- package/dist/plugins/pg-workflow-run-store.d.ts +55 -0
- package/dist/plugins/pg-workflow-run-store.d.ts.map +1 -0
- package/dist/plugins/pg-workflow-run-store.js +216 -0
- package/dist/plugins/pg-workflow-run-store.js.map +1 -0
- package/dist/plugins/remote-env-adb.d.ts +119 -0
- package/dist/plugins/remote-env-adb.d.ts.map +1 -0
- package/dist/plugins/remote-env-adb.js +502 -0
- package/dist/plugins/remote-env-adb.js.map +1 -0
- package/dist/plugins/remote-env-e2b.d.ts +162 -0
- package/dist/plugins/remote-env-e2b.d.ts.map +1 -0
- package/dist/plugins/remote-env-e2b.js +931 -0
- package/dist/plugins/remote-env-e2b.js.map +1 -0
- package/dist/plugins/remote-env-host.d.ts +141 -0
- package/dist/plugins/remote-env-host.d.ts.map +1 -0
- package/dist/plugins/remote-env-host.js +868 -0
- package/dist/plugins/remote-env-host.js.map +1 -0
- package/dist/plugins/remote-env-k8s.d.ts +209 -0
- package/dist/plugins/remote-env-k8s.d.ts.map +1 -0
- package/dist/plugins/remote-env-k8s.js +1206 -0
- package/dist/plugins/remote-env-k8s.js.map +1 -0
- package/dist/plugins/remote-env-local-docker.d.ts +124 -0
- package/dist/plugins/remote-env-local-docker.d.ts.map +1 -0
- package/dist/plugins/remote-env-local-docker.js +597 -0
- package/dist/plugins/remote-env-local-docker.js.map +1 -0
- package/dist/plugins/remote-env-ssh.d.ts +122 -0
- package/dist/plugins/remote-env-ssh.d.ts.map +1 -0
- package/dist/plugins/remote-env-ssh.js +511 -0
- package/dist/plugins/remote-env-ssh.js.map +1 -0
- package/dist/plugins/remote-shell.d.ts +7 -0
- package/dist/plugins/remote-shell.d.ts.map +1 -0
- package/dist/plugins/remote-shell.js +25 -0
- package/dist/plugins/remote-shell.js.map +1 -0
- package/dist/plugins/s3-presign.d.ts +13 -0
- package/dist/plugins/s3-presign.d.ts.map +1 -0
- package/dist/plugins/s3-presign.js +55 -0
- package/dist/plugins/s3-presign.js.map +1 -0
- package/dist/plugins/scheduler-support.d.ts +39 -0
- package/dist/plugins/scheduler-support.d.ts.map +1 -0
- package/dist/plugins/scheduler-support.js +141 -0
- package/dist/plugins/scheduler-support.js.map +1 -0
- package/dist/plugins/session-store.d.ts +7 -0
- package/dist/plugins/session-store.d.ts.map +1 -0
- package/dist/plugins/session-store.js +14 -0
- package/dist/plugins/session-store.js.map +1 -0
- package/dist/plugins/store-backend.d.ts +88 -0
- package/dist/plugins/store-backend.d.ts.map +1 -0
- package/dist/plugins/store-backend.js +197 -0
- package/dist/plugins/store-backend.js.map +1 -0
- package/dist/plugins/tidb-approval-store.d.ts +39 -0
- package/dist/plugins/tidb-approval-store.d.ts.map +1 -0
- package/dist/plugins/tidb-approval-store.js +81 -0
- package/dist/plugins/tidb-approval-store.js.map +1 -0
- package/dist/plugins/tidb-breaker-state.d.ts +18 -0
- package/dist/plugins/tidb-breaker-state.d.ts.map +1 -0
- package/dist/plugins/tidb-breaker-state.js +75 -0
- package/dist/plugins/tidb-breaker-state.js.map +1 -0
- package/dist/plugins/tidb-checkpoint-store.d.ts +50 -0
- package/dist/plugins/tidb-checkpoint-store.d.ts.map +1 -0
- package/dist/plugins/tidb-checkpoint-store.js +196 -0
- package/dist/plugins/tidb-checkpoint-store.js.map +1 -0
- package/dist/plugins/tidb-cost-quota.d.ts +16 -0
- package/dist/plugins/tidb-cost-quota.d.ts.map +1 -0
- package/dist/plugins/tidb-cost-quota.js +34 -0
- package/dist/plugins/tidb-cost-quota.js.map +1 -0
- package/dist/plugins/tidb-file-snapshot-store.d.ts +26 -0
- package/dist/plugins/tidb-file-snapshot-store.d.ts.map +1 -0
- package/dist/plugins/tidb-file-snapshot-store.js +183 -0
- package/dist/plugins/tidb-file-snapshot-store.js.map +1 -0
- package/dist/plugins/tidb-image-bake.d.ts +102 -0
- package/dist/plugins/tidb-image-bake.d.ts.map +1 -0
- package/dist/plugins/tidb-image-bake.js +400 -0
- package/dist/plugins/tidb-image-bake.js.map +1 -0
- package/dist/plugins/tidb-image-index.d.ts +71 -0
- package/dist/plugins/tidb-image-index.d.ts.map +1 -0
- package/dist/plugins/tidb-image-index.js +192 -0
- package/dist/plugins/tidb-image-index.js.map +1 -0
- package/dist/plugins/tidb-outcome-ledger.d.ts +58 -0
- package/dist/plugins/tidb-outcome-ledger.d.ts.map +1 -0
- package/dist/plugins/tidb-outcome-ledger.js +98 -0
- package/dist/plugins/tidb-outcome-ledger.js.map +1 -0
- package/dist/plugins/tidb-pool.d.ts +11 -0
- package/dist/plugins/tidb-pool.d.ts.map +1 -0
- package/dist/plugins/tidb-pool.js +485 -0
- package/dist/plugins/tidb-pool.js.map +1 -0
- package/dist/plugins/tidb-rate-limiter.d.ts +15 -0
- package/dist/plugins/tidb-rate-limiter.d.ts.map +1 -0
- package/dist/plugins/tidb-rate-limiter.js +34 -0
- package/dist/plugins/tidb-rate-limiter.js.map +1 -0
- package/dist/plugins/tidb-resume-anchor-store.d.ts +14 -0
- package/dist/plugins/tidb-resume-anchor-store.d.ts.map +1 -0
- package/dist/plugins/tidb-resume-anchor-store.js +23 -0
- package/dist/plugins/tidb-resume-anchor-store.js.map +1 -0
- package/dist/plugins/tidb-run-store.d.ts +107 -0
- package/dist/plugins/tidb-run-store.d.ts.map +1 -0
- package/dist/plugins/tidb-run-store.js +321 -0
- package/dist/plugins/tidb-run-store.js.map +1 -0
- package/dist/plugins/tidb-session-policy-store.d.ts +12 -0
- package/dist/plugins/tidb-session-policy-store.d.ts.map +1 -0
- package/dist/plugins/tidb-session-policy-store.js +88 -0
- package/dist/plugins/tidb-session-policy-store.js.map +1 -0
- package/dist/plugins/tidb-session-storage.d.ts +15 -0
- package/dist/plugins/tidb-session-storage.d.ts.map +1 -0
- package/dist/plugins/tidb-session-storage.js +101 -0
- package/dist/plugins/tidb-session-storage.js.map +1 -0
- package/dist/plugins/tidb-session-store.d.ts +46 -0
- package/dist/plugins/tidb-session-store.d.ts.map +1 -0
- package/dist/plugins/tidb-session-store.js +360 -0
- package/dist/plugins/tidb-session-store.js.map +1 -0
- package/dist/plugins/tidb-tool-result-store.d.ts +15 -0
- package/dist/plugins/tidb-tool-result-store.d.ts.map +1 -0
- package/dist/plugins/tidb-tool-result-store.js +41 -0
- package/dist/plugins/tidb-tool-result-store.js.map +1 -0
- package/dist/plugins/tidb-workflow-journal-store.d.ts +11 -0
- package/dist/plugins/tidb-workflow-journal-store.d.ts.map +1 -0
- package/dist/plugins/tidb-workflow-journal-store.js +28 -0
- package/dist/plugins/tidb-workflow-journal-store.js.map +1 -0
- package/dist/plugins/tidb-workflow-run-store.d.ts +61 -0
- package/dist/plugins/tidb-workflow-run-store.d.ts.map +1 -0
- package/dist/plugins/tidb-workflow-run-store.js +227 -0
- package/dist/plugins/tidb-workflow-run-store.js.map +1 -0
- package/dist/plugins/web-search.d.ts +27 -0
- package/dist/plugins/web-search.d.ts.map +1 -0
- package/dist/plugins/web-search.js +143 -0
- package/dist/plugins/web-search.js.map +1 -0
- package/dist/plugins/workflow-journal-limits.d.ts +2 -0
- package/dist/plugins/workflow-journal-limits.d.ts.map +1 -0
- package/dist/plugins/workflow-journal-limits.js +2 -0
- package/dist/plugins/workflow-journal-limits.js.map +1 -0
- package/dist/plugins/worktree-isolation.d.ts +16 -0
- package/dist/plugins/worktree-isolation.d.ts.map +1 -0
- package/dist/plugins/worktree-isolation.js +55 -0
- package/dist/plugins/worktree-isolation.js.map +1 -0
- package/dist/plugins/write-behind-counter.d.ts +43 -0
- package/dist/plugins/write-behind-counter.d.ts.map +1 -0
- package/dist/plugins/write-behind-counter.js +144 -0
- package/dist/plugins/write-behind-counter.js.map +1 -0
- package/dist/project-memory.d.ts +14 -0
- package/dist/project-memory.d.ts.map +1 -0
- package/dist/project-memory.js +96 -0
- package/dist/project-memory.js.map +1 -0
- package/dist/question.d.ts +42 -0
- package/dist/question.d.ts.map +1 -0
- package/dist/question.js +140 -0
- package/dist/question.js.map +1 -0
- package/dist/resource-suspend.d.ts +11 -0
- package/dist/resource-suspend.d.ts.map +1 -0
- package/dist/resource-suspend.js +6 -0
- package/dist/resource-suspend.js.map +1 -0
- package/dist/router/route-orchestration.d.ts +31 -0
- package/dist/router/route-orchestration.d.ts.map +1 -0
- package/dist/router/route-orchestration.js +49 -0
- package/dist/router/route-orchestration.js.map +1 -0
- package/dist/run-local.d.ts +26 -0
- package/dist/run-local.d.ts.map +1 -0
- package/dist/run-local.js +337 -0
- package/dist/run-local.js.map +1 -0
- package/dist/runs.d.ts +39 -0
- package/dist/runs.d.ts.map +1 -0
- package/dist/runs.js +392 -0
- package/dist/runs.js.map +1 -0
- package/dist/runtime-caps-resolver.d.ts +32 -0
- package/dist/runtime-caps-resolver.d.ts.map +1 -0
- package/dist/runtime-caps-resolver.js +134 -0
- package/dist/runtime-caps-resolver.js.map +1 -0
- package/dist/runtime-governance.d.ts +18 -0
- package/dist/runtime-governance.d.ts.map +1 -0
- package/dist/runtime-governance.js +103 -0
- package/dist/runtime-governance.js.map +1 -0
- package/dist/sandbox-pkg-source.d.ts +11 -0
- package/dist/sandbox-pkg-source.d.ts.map +1 -0
- package/dist/sandbox-pkg-source.js +56 -0
- package/dist/sandbox-pkg-source.js.map +1 -0
- package/dist/sealed-key.d.ts +29 -0
- package/dist/sealed-key.d.ts.map +1 -0
- package/dist/sealed-key.js +122 -0
- package/dist/sealed-key.js.map +1 -0
- package/dist/security.d.ts +153 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +292 -0
- package/dist/security.js.map +1 -0
- package/dist/sema-registry.d.ts +187 -0
- package/dist/sema-registry.d.ts.map +1 -0
- package/dist/sema-registry.js +456 -0
- package/dist/sema-registry.js.map +1 -0
- package/dist/session-sync.d.ts +96 -0
- package/dist/session-sync.d.ts.map +1 -0
- package/dist/session-sync.js +181 -0
- package/dist/session-sync.js.map +1 -0
- package/dist/session-titler.d.ts +30 -0
- package/dist/session-titler.d.ts.map +1 -0
- package/dist/session-titler.js +77 -0
- package/dist/session-titler.js.map +1 -0
- package/dist/spec-fields.d.ts +5 -0
- package/dist/spec-fields.d.ts.map +1 -0
- package/dist/spec-fields.js +43 -0
- package/dist/spec-fields.js.map +1 -0
- package/dist/task-cwd.d.ts +15 -0
- package/dist/task-cwd.d.ts.map +1 -0
- package/dist/task-cwd.js +33 -0
- package/dist/task-cwd.js.map +1 -0
- package/dist/task-mcp.d.ts +20 -0
- package/dist/task-mcp.d.ts.map +1 -0
- package/dist/task-mcp.js +93 -0
- package/dist/task-mcp.js.map +1 -0
- package/dist/task-settings.d.ts +36 -0
- package/dist/task-settings.d.ts.map +1 -0
- package/dist/task-settings.js +141 -0
- package/dist/task-settings.js.map +1 -0
- package/dist/task-workflow.d.ts +25 -0
- package/dist/task-workflow.d.ts.map +1 -0
- package/dist/task-workflow.js +43 -0
- package/dist/task-workflow.js.map +1 -0
- package/dist/trace/artifacts.d.ts +17 -0
- package/dist/trace/artifacts.d.ts.map +1 -0
- package/dist/trace/artifacts.js +65 -0
- package/dist/trace/artifacts.js.map +1 -0
- package/dist/trace/project.d.ts +170 -0
- package/dist/trace/project.d.ts.map +1 -0
- package/dist/trace/project.js +239 -0
- package/dist/trace/project.js.map +1 -0
- package/dist/trace/redact.d.ts +5 -0
- package/dist/trace/redact.d.ts.map +1 -0
- package/dist/trace/redact.js +83 -0
- package/dist/trace/redact.js.map +1 -0
- package/dist/usage-analytics.d.ts +36 -0
- package/dist/usage-analytics.d.ts.map +1 -0
- package/dist/usage-analytics.js +89 -0
- package/dist/usage-analytics.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import {} from "./tidb-image-index.js";
|
|
3
|
+
export const PG_IMAGE_INDEX_SCHEMA = [
|
|
4
|
+
`CREATE TABLE IF NOT EXISTS sandbox_image_index (
|
|
5
|
+
id VARCHAR(64) NOT NULL,
|
|
6
|
+
profile VARCHAR(64) NOT NULL,
|
|
7
|
+
bands JSONB,
|
|
8
|
+
repo VARCHAR(255) NOT NULL,
|
|
9
|
+
tag VARCHAR(128) NOT NULL,
|
|
10
|
+
digest VARCHAR(80) NOT NULL,
|
|
11
|
+
toolchain_versions JSONB,
|
|
12
|
+
capabilities JSONB,
|
|
13
|
+
pod_contract JSONB,
|
|
14
|
+
size_bytes BIGINT,
|
|
15
|
+
status VARCHAR(16) NOT NULL DEFAULT 'building',
|
|
16
|
+
visibility VARCHAR(16) NOT NULL DEFAULT 'public',
|
|
17
|
+
tenant_id VARCHAR(64),
|
|
18
|
+
manifest_sha VARCHAR(64),
|
|
19
|
+
recipe_git_sha VARCHAR(64),
|
|
20
|
+
generator_version VARCHAR(32),
|
|
21
|
+
build_date TIMESTAMPTZ(3),
|
|
22
|
+
supersedes VARCHAR(64),
|
|
23
|
+
signed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
24
|
+
created_at TIMESTAMPTZ(3) NOT NULL,
|
|
25
|
+
updated_at TIMESTAMPTZ(3) NOT NULL,
|
|
26
|
+
PRIMARY KEY (id)
|
|
27
|
+
)`,
|
|
28
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS uq_repo_digest ON sandbox_image_index (repo, digest)`,
|
|
29
|
+
`CREATE INDEX IF NOT EXISTS idx_profile_status ON sandbox_image_index (profile, status, visibility)`,
|
|
30
|
+
`CREATE INDEX IF NOT EXISTS idx_digest ON sandbox_image_index (digest)`,
|
|
31
|
+
`CREATE INDEX IF NOT EXISTS idx_tenant ON sandbox_image_index (tenant_id, status)`,
|
|
32
|
+
];
|
|
33
|
+
export async function ensureSchema(pool) {
|
|
34
|
+
for (const stmt of PG_IMAGE_INDEX_SCHEMA)
|
|
35
|
+
await pool.query(stmt);
|
|
36
|
+
}
|
|
37
|
+
const MAX_LIMIT = 200;
|
|
38
|
+
const DEFAULT_LIMIT = 50;
|
|
39
|
+
function asJson(v, fallback) {
|
|
40
|
+
if (v === null || v === undefined)
|
|
41
|
+
return fallback;
|
|
42
|
+
if (typeof v === "string") {
|
|
43
|
+
try {
|
|
44
|
+
return JSON.parse(v);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return fallback;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return v;
|
|
51
|
+
}
|
|
52
|
+
function iso(v) {
|
|
53
|
+
if (v === null || v === undefined)
|
|
54
|
+
return null;
|
|
55
|
+
return v instanceof Date ? v.toISOString() : new Date(v).toISOString();
|
|
56
|
+
}
|
|
57
|
+
function mapRow(r) {
|
|
58
|
+
return {
|
|
59
|
+
id: r.id,
|
|
60
|
+
profile: r.profile,
|
|
61
|
+
bands: asJson(r.bands, []),
|
|
62
|
+
repo: r.repo,
|
|
63
|
+
tag: r.tag,
|
|
64
|
+
digest: r.digest,
|
|
65
|
+
toolchainVersions: asJson(r.toolchain_versions, {}),
|
|
66
|
+
capabilities: asJson(r.capabilities, {}),
|
|
67
|
+
podContract: asJson(r.pod_contract, {}),
|
|
68
|
+
sizeBytes: r.size_bytes === null ? null : Number(r.size_bytes),
|
|
69
|
+
status: r.status,
|
|
70
|
+
visibility: r.visibility,
|
|
71
|
+
tenantId: r.tenant_id,
|
|
72
|
+
manifestSha: r.manifest_sha,
|
|
73
|
+
recipeGitSha: r.recipe_git_sha,
|
|
74
|
+
generatorVersion: r.generator_version,
|
|
75
|
+
buildDate: iso(r.build_date),
|
|
76
|
+
supersedes: r.supersedes,
|
|
77
|
+
signed: !!r.signed,
|
|
78
|
+
createdAt: iso(r.created_at) ?? new Date(0).toISOString(),
|
|
79
|
+
updatedAt: iso(r.updated_at) ?? new Date(0).toISOString(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function visibilityClause(viewer, startIdx) {
|
|
83
|
+
if (viewer.operator)
|
|
84
|
+
return { sql: "1=1", params: [], nextIdx: startIdx };
|
|
85
|
+
if (viewer.tenantId)
|
|
86
|
+
return {
|
|
87
|
+
sql: `(visibility = 'public' OR tenant_id = $${startIdx})`,
|
|
88
|
+
params: [viewer.tenantId],
|
|
89
|
+
nextIdx: startIdx + 1,
|
|
90
|
+
};
|
|
91
|
+
return { sql: "visibility = 'public'", params: [], nextIdx: startIdx };
|
|
92
|
+
}
|
|
93
|
+
function encodeCursor(e) {
|
|
94
|
+
return Buffer.from(`${e.createdAt}|${e.id}`, "utf8").toString("base64url");
|
|
95
|
+
}
|
|
96
|
+
function decodeCursor(c) {
|
|
97
|
+
try {
|
|
98
|
+
const [createdAt, id] = Buffer.from(c, "base64url").toString("utf8").split("|");
|
|
99
|
+
if (!createdAt || !id)
|
|
100
|
+
return null;
|
|
101
|
+
return { createdAt, id };
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const UPSERT_COLS = "(id, profile, bands, repo, tag, digest, toolchain_versions, capabilities, pod_contract, size_bytes, " +
|
|
108
|
+
"status, visibility, tenant_id, manifest_sha, recipe_git_sha, generator_version, build_date, supersedes, " +
|
|
109
|
+
"signed, created_at, updated_at)";
|
|
110
|
+
const UPSERT_VALUES = "($1,$2,$3::jsonb,$4,$5,$6,$7::jsonb,$8::jsonb,$9::jsonb,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21)";
|
|
111
|
+
function upsertParams(e, id, now) {
|
|
112
|
+
return [
|
|
113
|
+
id,
|
|
114
|
+
e.profile,
|
|
115
|
+
JSON.stringify(e.bands ?? []),
|
|
116
|
+
e.repo,
|
|
117
|
+
e.tag,
|
|
118
|
+
e.digest,
|
|
119
|
+
JSON.stringify(e.toolchainVersions ?? {}),
|
|
120
|
+
JSON.stringify(e.capabilities ?? {}),
|
|
121
|
+
JSON.stringify(e.podContract ?? {}),
|
|
122
|
+
e.sizeBytes,
|
|
123
|
+
e.status,
|
|
124
|
+
e.visibility,
|
|
125
|
+
e.tenantId ?? null,
|
|
126
|
+
e.manifestSha ?? null,
|
|
127
|
+
e.recipeGitSha ?? null,
|
|
128
|
+
e.generatorVersion ?? null,
|
|
129
|
+
e.buildDate ? new Date(e.buildDate) : null,
|
|
130
|
+
e.supersedes ?? null,
|
|
131
|
+
e.signed ? true : false,
|
|
132
|
+
now,
|
|
133
|
+
now,
|
|
134
|
+
];
|
|
135
|
+
}
|
|
136
|
+
export class PgImageIndex {
|
|
137
|
+
pool;
|
|
138
|
+
constructor(pool) {
|
|
139
|
+
this.pool = pool;
|
|
140
|
+
}
|
|
141
|
+
static idFor(repo, digest) {
|
|
142
|
+
return createHash("sha256").update(`${repo}@${digest}`).digest("hex").slice(0, 64);
|
|
143
|
+
}
|
|
144
|
+
async upsert(e) {
|
|
145
|
+
const id = PgImageIndex.idFor(e.repo, e.digest);
|
|
146
|
+
const now = new Date();
|
|
147
|
+
await this.pool.query(`INSERT INTO sandbox_image_index ${UPSERT_COLS}
|
|
148
|
+
VALUES ${UPSERT_VALUES}
|
|
149
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
150
|
+
profile = EXCLUDED.profile, bands = EXCLUDED.bands, tag = EXCLUDED.tag,
|
|
151
|
+
toolchain_versions = EXCLUDED.toolchain_versions, capabilities = EXCLUDED.capabilities,
|
|
152
|
+
pod_contract = EXCLUDED.pod_contract, size_bytes = EXCLUDED.size_bytes,
|
|
153
|
+
status = EXCLUDED.status, visibility = EXCLUDED.visibility, tenant_id = EXCLUDED.tenant_id,
|
|
154
|
+
manifest_sha = EXCLUDED.manifest_sha, recipe_git_sha = EXCLUDED.recipe_git_sha,
|
|
155
|
+
generator_version = EXCLUDED.generator_version, build_date = EXCLUDED.build_date,
|
|
156
|
+
supersedes = EXCLUDED.supersedes, signed = EXCLUDED.signed, updated_at = EXCLUDED.updated_at`, upsertParams(e, id, now));
|
|
157
|
+
return id;
|
|
158
|
+
}
|
|
159
|
+
async registerBuilding(e) {
|
|
160
|
+
const id = PgImageIndex.idFor(e.repo, e.digest);
|
|
161
|
+
const now = new Date();
|
|
162
|
+
await this.pool.query(`INSERT INTO sandbox_image_index ${UPSERT_COLS}
|
|
163
|
+
VALUES ${UPSERT_VALUES}
|
|
164
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
165
|
+
profile = EXCLUDED.profile, bands = EXCLUDED.bands, tag = EXCLUDED.tag,
|
|
166
|
+
toolchain_versions = EXCLUDED.toolchain_versions, capabilities = EXCLUDED.capabilities,
|
|
167
|
+
pod_contract = EXCLUDED.pod_contract, size_bytes = EXCLUDED.size_bytes,
|
|
168
|
+
status = CASE WHEN sandbox_image_index.status = 'published'
|
|
169
|
+
THEN sandbox_image_index.status ELSE EXCLUDED.status END,
|
|
170
|
+
visibility = CASE WHEN sandbox_image_index.status = 'published'
|
|
171
|
+
THEN sandbox_image_index.visibility ELSE EXCLUDED.visibility END,
|
|
172
|
+
tenant_id = CASE WHEN sandbox_image_index.status = 'published'
|
|
173
|
+
THEN sandbox_image_index.tenant_id ELSE EXCLUDED.tenant_id END,
|
|
174
|
+
manifest_sha = EXCLUDED.manifest_sha, recipe_git_sha = EXCLUDED.recipe_git_sha,
|
|
175
|
+
generator_version = EXCLUDED.generator_version, build_date = EXCLUDED.build_date,
|
|
176
|
+
supersedes = EXCLUDED.supersedes,
|
|
177
|
+
signed = CASE WHEN sandbox_image_index.status = 'published'
|
|
178
|
+
THEN sandbox_image_index.signed ELSE EXCLUDED.signed END,
|
|
179
|
+
updated_at = EXCLUDED.updated_at`, upsertParams(e, id, now));
|
|
180
|
+
return id;
|
|
181
|
+
}
|
|
182
|
+
async getById(id) {
|
|
183
|
+
const res = await this.pool.query("SELECT * FROM sandbox_image_index WHERE id = $1 LIMIT 1", [id]);
|
|
184
|
+
return res.rows[0] ? mapRow(res.rows[0]) : null;
|
|
185
|
+
}
|
|
186
|
+
async getByDigest(digest) {
|
|
187
|
+
const res = await this.pool.query("SELECT * FROM sandbox_image_index WHERE digest = $1 ORDER BY updated_at DESC LIMIT 1", [digest]);
|
|
188
|
+
return res.rows[0] ? mapRow(res.rows[0]) : null;
|
|
189
|
+
}
|
|
190
|
+
async latestPublished(profile, viewer) {
|
|
191
|
+
const vis = visibilityClause(viewer, 2);
|
|
192
|
+
const res = await this.pool.query(`SELECT * FROM sandbox_image_index
|
|
193
|
+
WHERE profile = $1 AND status = 'published' AND ${vis.sql}
|
|
194
|
+
ORDER BY build_date DESC NULLS LAST, created_at DESC LIMIT 1`, [profile, ...vis.params]);
|
|
195
|
+
return res.rows[0] ? mapRow(res.rows[0]) : null;
|
|
196
|
+
}
|
|
197
|
+
async list(filter) {
|
|
198
|
+
const limit = Math.min(Math.max(1, filter.limit ?? DEFAULT_LIMIT), MAX_LIMIT);
|
|
199
|
+
const vis = visibilityClause(filter, 1);
|
|
200
|
+
const where = [vis.sql];
|
|
201
|
+
const params = [...vis.params];
|
|
202
|
+
let idx = vis.nextIdx;
|
|
203
|
+
if (filter.profile) {
|
|
204
|
+
where.push(`profile = $${idx++}`);
|
|
205
|
+
params.push(filter.profile);
|
|
206
|
+
}
|
|
207
|
+
if (filter.status) {
|
|
208
|
+
where.push(`status = $${idx++}`);
|
|
209
|
+
params.push(filter.status);
|
|
210
|
+
}
|
|
211
|
+
if (filter.capability) {
|
|
212
|
+
where.push(`capabilities -> $${idx++} = 'true'::jsonb`);
|
|
213
|
+
params.push(filter.capability);
|
|
214
|
+
}
|
|
215
|
+
if (filter.cursor) {
|
|
216
|
+
const c = decodeCursor(filter.cursor);
|
|
217
|
+
if (c) {
|
|
218
|
+
where.push(`(created_at < $${idx} OR (created_at = $${idx + 1} AND id < $${idx + 2}))`);
|
|
219
|
+
params.push(new Date(c.createdAt), new Date(c.createdAt), c.id);
|
|
220
|
+
idx += 3;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
const sql = `SELECT * FROM sandbox_image_index WHERE ${where.join(" AND ")} ` +
|
|
224
|
+
`ORDER BY created_at DESC, id DESC LIMIT $${idx}`;
|
|
225
|
+
params.push(limit + 1);
|
|
226
|
+
const res = await this.pool.query(sql, params);
|
|
227
|
+
let entries = res.rows.map(mapRow);
|
|
228
|
+
let nextCursor = null;
|
|
229
|
+
if (entries.length > limit) {
|
|
230
|
+
entries = entries.slice(0, limit);
|
|
231
|
+
const last = entries[entries.length - 1];
|
|
232
|
+
nextCursor = encodeCursor({ createdAt: last.createdAt, id: last.id });
|
|
233
|
+
}
|
|
234
|
+
if (filter.latestOnly) {
|
|
235
|
+
const seen = new Set();
|
|
236
|
+
entries = entries.filter((e) => (seen.has(e.profile) ? false : (seen.add(e.profile), true)));
|
|
237
|
+
}
|
|
238
|
+
return { entries, nextCursor };
|
|
239
|
+
}
|
|
240
|
+
async setStatus(id, status, opts) {
|
|
241
|
+
const sets = ["status = $1", "updated_at = $2"];
|
|
242
|
+
const params = [status, new Date()];
|
|
243
|
+
let idx = 3;
|
|
244
|
+
if (opts && "supersedes" in opts) {
|
|
245
|
+
sets.push(`supersedes = $${idx++}`);
|
|
246
|
+
params.push(opts.supersedes ?? null);
|
|
247
|
+
}
|
|
248
|
+
params.push(id);
|
|
249
|
+
await this.pool.query(`UPDATE sandbox_image_index SET ${sets.join(", ")} WHERE id = $${idx}`, params);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=pg-image-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-image-index.js","sourceRoot":"","sources":["../../src/plugins/pg-image-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Pool, PoolClient } from "pg";
|
|
2
|
+
import { type TaskOutcome, type RunStatus } from "./tidb-outcome-ledger.js";
|
|
3
|
+
import type { TaskOutcome as CoreTaskOutcome } from "@sema-agent/core";
|
|
4
|
+
export declare const PG_OUTCOME_LEDGER_SCHEMA: string[];
|
|
5
|
+
export declare function ensureSchema(pool: Pool | PoolClient): Promise<void>;
|
|
6
|
+
export declare class PgOutcomeLedger {
|
|
7
|
+
private readonly pool;
|
|
8
|
+
constructor(pool: Pool);
|
|
9
|
+
record(o: TaskOutcome): Promise<string>;
|
|
10
|
+
recordCore(o: CoreTaskOutcome): Promise<void>;
|
|
11
|
+
summary(opts?: {
|
|
12
|
+
taskSignature?: string;
|
|
13
|
+
includeAborted?: boolean;
|
|
14
|
+
}): Promise<Array<{
|
|
15
|
+
taskSignature: string;
|
|
16
|
+
model: string;
|
|
17
|
+
n: number;
|
|
18
|
+
passRate: number;
|
|
19
|
+
meanCostMicroUsd: number;
|
|
20
|
+
}>>;
|
|
21
|
+
}
|
|
22
|
+
export type { TaskOutcome, RunStatus };
|
|
23
|
+
//# sourceMappingURL=pg-outcome-ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-outcome-ledger.d.ts","sourceRoot":"","sources":["../../src/plugins/pg-outcome-ledger.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOvE,eAAO,MAAM,wBAAwB,EAAE,MAAM,EA+B5C,CAAC;AAGF,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAGjC,MAAM,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAsCvC,UAAU,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5F,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;KAC7F,CAAC,CAAC;CAyBJ;AAGD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { taskSignature, deriveOutcome, } from "./tidb-outcome-ledger.js";
|
|
3
|
+
import { coreOutcomeToLedgerRow } from "./tidb-outcome-ledger.js";
|
|
4
|
+
export const PG_OUTCOME_LEDGER_SCHEMA = [
|
|
5
|
+
`CREATE TABLE IF NOT EXISTS outcome_ledger (
|
|
6
|
+
id VARCHAR(64) NOT NULL,
|
|
7
|
+
task_signature VARCHAR(190) NOT NULL,
|
|
8
|
+
model VARCHAR(190) NOT NULL,
|
|
9
|
+
task_id VARCHAR(64),
|
|
10
|
+
run_status VARCHAR(20) NOT NULL DEFAULT 'completed-graded',
|
|
11
|
+
route VARCHAR(16),
|
|
12
|
+
worker_count INTEGER,
|
|
13
|
+
oracle_passed INTEGER,
|
|
14
|
+
oracle_total INTEGER,
|
|
15
|
+
assemble_exit INTEGER,
|
|
16
|
+
lint_exit INTEGER,
|
|
17
|
+
merge_ok SMALLINT,
|
|
18
|
+
replan_triggers JSONB,
|
|
19
|
+
cost_micro_usd BIGINT,
|
|
20
|
+
turns INTEGER,
|
|
21
|
+
outcome VARCHAR(8),
|
|
22
|
+
llm_assisted JSONB,
|
|
23
|
+
signature_inputs JSONB,
|
|
24
|
+
core_outcome JSONB,
|
|
25
|
+
created_at TIMESTAMPTZ(3) NOT NULL,
|
|
26
|
+
PRIMARY KEY (id)
|
|
27
|
+
)`,
|
|
28
|
+
`ALTER TABLE outcome_ledger ADD COLUMN IF NOT EXISTS core_outcome JSONB`,
|
|
29
|
+
`CREATE INDEX IF NOT EXISTS idx_outcome_ledger_sig_model ON outcome_ledger (task_signature, model, run_status)`,
|
|
30
|
+
`CREATE INDEX IF NOT EXISTS idx_outcome_ledger_outcome ON outcome_ledger (outcome)`,
|
|
31
|
+
`CREATE INDEX IF NOT EXISTS idx_outcome_ledger_created ON outcome_ledger (created_at)`,
|
|
32
|
+
];
|
|
33
|
+
export async function ensureSchema(pool) {
|
|
34
|
+
for (const stmt of PG_OUTCOME_LEDGER_SCHEMA)
|
|
35
|
+
await pool.query(stmt);
|
|
36
|
+
}
|
|
37
|
+
export class PgOutcomeLedger {
|
|
38
|
+
pool;
|
|
39
|
+
constructor(pool) {
|
|
40
|
+
this.pool = pool;
|
|
41
|
+
}
|
|
42
|
+
async record(o) {
|
|
43
|
+
const id = randomUUID().replace(/-/g, "").slice(0, 32);
|
|
44
|
+
const sig = taskSignature(o.signatureInputs);
|
|
45
|
+
const m = o.mechanical;
|
|
46
|
+
const runStatus = o.runStatus ?? "completed-graded";
|
|
47
|
+
await this.pool.query(`INSERT INTO outcome_ledger
|
|
48
|
+
(id, task_signature, model, task_id, run_status, route, worker_count, oracle_passed, oracle_total,
|
|
49
|
+
assemble_exit, lint_exit, merge_ok, replan_triggers, cost_micro_usd, turns, outcome,
|
|
50
|
+
llm_assisted, signature_inputs, core_outcome, created_at)
|
|
51
|
+
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13::jsonb,$14,$15,$16,$17::jsonb,$18::jsonb,$19::jsonb,$20)`, [
|
|
52
|
+
id,
|
|
53
|
+
sig,
|
|
54
|
+
o.model,
|
|
55
|
+
o.taskId ?? null,
|
|
56
|
+
runStatus,
|
|
57
|
+
m.route ?? null,
|
|
58
|
+
m.workerCount ?? null,
|
|
59
|
+
m.oraclePassed ?? null,
|
|
60
|
+
m.oracleTotal ?? null,
|
|
61
|
+
m.assembleExit ?? null,
|
|
62
|
+
m.lintExit ?? null,
|
|
63
|
+
m.mergeOk == null ? null : m.mergeOk ? 1 : 0,
|
|
64
|
+
m.replanTriggers ? JSON.stringify(m.replanTriggers) : null,
|
|
65
|
+
m.costMicroUsd ?? null,
|
|
66
|
+
m.turns ?? null,
|
|
67
|
+
deriveOutcome(m, runStatus),
|
|
68
|
+
o.llmAssisted ? JSON.stringify(o.llmAssisted) : null,
|
|
69
|
+
JSON.stringify(o.signatureInputs),
|
|
70
|
+
o.core != null ? JSON.stringify(o.core) : null,
|
|
71
|
+
new Date(),
|
|
72
|
+
]);
|
|
73
|
+
return id;
|
|
74
|
+
}
|
|
75
|
+
async recordCore(o) {
|
|
76
|
+
await this.record(coreOutcomeToLedgerRow(o));
|
|
77
|
+
}
|
|
78
|
+
async summary(opts = {}) {
|
|
79
|
+
const clauses = [];
|
|
80
|
+
const params = [];
|
|
81
|
+
if (!opts.includeAborted)
|
|
82
|
+
clauses.push("run_status = 'completed-graded'");
|
|
83
|
+
if (opts.taskSignature) {
|
|
84
|
+
params.push(opts.taskSignature);
|
|
85
|
+
clauses.push(`task_signature = $${params.length}`);
|
|
86
|
+
}
|
|
87
|
+
const where = clauses.length ? `WHERE ${clauses.join(" AND ")}` : "";
|
|
88
|
+
const res = await this.pool.query(`SELECT task_signature, model, COUNT(*) n,
|
|
89
|
+
AVG((outcome = 'pass')::int) pass_rate, AVG(cost_micro_usd) mean_cost
|
|
90
|
+
FROM outcome_ledger ${where}
|
|
91
|
+
GROUP BY task_signature, model
|
|
92
|
+
ORDER BY task_signature, model`, params);
|
|
93
|
+
return res.rows.map((r) => ({
|
|
94
|
+
taskSignature: String(r.task_signature),
|
|
95
|
+
model: String(r.model),
|
|
96
|
+
n: Number(r.n),
|
|
97
|
+
passRate: Number(r.pass_rate),
|
|
98
|
+
meanCostMicroUsd: Number(r.mean_cost ?? 0),
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=pg-outcome-ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-outcome-ledger.js","sourceRoot":"","sources":["../../src/plugins/pg-outcome-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import pg from "pg";
|
|
2
|
+
import type { ServiceConfig } from "../config.js";
|
|
3
|
+
export declare const PG_SCHEMA_STATEMENTS: readonly string[];
|
|
4
|
+
export declare function pgPoolOptions(pgCfg: NonNullable<ServiceConfig["pg"]>, dbQueryTimeoutMs?: number): pg.PoolConfig;
|
|
5
|
+
export declare function createPgPool(opts: string | pg.PoolConfig): pg.Pool;
|
|
6
|
+
export declare function ensurePgSchema(pool: pg.Pool): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=pg-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-pool.d.ts","sourceRoot":"","sources":["../../src/plugins/pg-pool.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAalD,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAwMjD,CAAC;AAaF,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAU/G;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,CAElE;AAiBD,wBAAsB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCjE"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import pg from "pg";
|
|
2
|
+
import { ensureSchema as ensureSessionSchema } from "./pg-session-storage.js";
|
|
3
|
+
import { ensureSchema as ensureToolResultSchema } from "./pg-tool-result-store.js";
|
|
4
|
+
import { ensureSchema as ensureCostQuotaSchema } from "./pg-cost-quota.js";
|
|
5
|
+
import { ensureSchema as ensureRateLimitSchema } from "./pg-rate-limiter.js";
|
|
6
|
+
import { ensureSchema as ensureBreakerStateSchema } from "./pg-breaker-state.js";
|
|
7
|
+
import { ensureSchema as ensureApprovalSchema } from "./pg-approval-store.js";
|
|
8
|
+
import { ensureSchema as ensureOutcomeLedgerSchema } from "./pg-outcome-ledger.js";
|
|
9
|
+
import { ensureSchema as ensureImageIndexSchema } from "./pg-image-index.js";
|
|
10
|
+
import { ensureSchema as ensureImageBakeSchema } from "./pg-image-bake.js";
|
|
11
|
+
export const PG_SCHEMA_STATEMENTS = [
|
|
12
|
+
`CREATE TABLE IF NOT EXISTS task_run (
|
|
13
|
+
task_id VARCHAR(64) NOT NULL,
|
|
14
|
+
session_id VARCHAR(64) NOT NULL,
|
|
15
|
+
owner VARCHAR(190),
|
|
16
|
+
status VARCHAR(16) NOT NULL,
|
|
17
|
+
result JSONB,
|
|
18
|
+
error TEXT,
|
|
19
|
+
error_code VARCHAR(64),
|
|
20
|
+
instance_id VARCHAR(64),
|
|
21
|
+
job_id VARCHAR(64),
|
|
22
|
+
source VARCHAR(64),
|
|
23
|
+
objective_preview VARCHAR(160),
|
|
24
|
+
cancel_requested SMALLINT NOT NULL DEFAULT 0,
|
|
25
|
+
preempt_requested SMALLINT NOT NULL DEFAULT 0,
|
|
26
|
+
created_at TIMESTAMPTZ(3) NOT NULL,
|
|
27
|
+
updated_at TIMESTAMPTZ(3) NOT NULL,
|
|
28
|
+
PRIMARY KEY (task_id)
|
|
29
|
+
)`,
|
|
30
|
+
`CREATE INDEX IF NOT EXISTS idx_task_run_session_status ON task_run (session_id, status)`,
|
|
31
|
+
`CREATE INDEX IF NOT EXISTS idx_task_run_owner ON task_run (owner)`,
|
|
32
|
+
`CREATE INDEX IF NOT EXISTS idx_task_run_created ON task_run (created_at)`,
|
|
33
|
+
`CREATE INDEX IF NOT EXISTS idx_task_run_job ON task_run (job_id)`,
|
|
34
|
+
`CREATE TABLE IF NOT EXISTS task_event (
|
|
35
|
+
task_id VARCHAR(64) NOT NULL,
|
|
36
|
+
seq BIGINT NOT NULL,
|
|
37
|
+
type VARCHAR(24) NOT NULL,
|
|
38
|
+
data JSONB,
|
|
39
|
+
ts TIMESTAMPTZ(3) NOT NULL,
|
|
40
|
+
PRIMARY KEY (task_id, seq)
|
|
41
|
+
)`,
|
|
42
|
+
`CREATE TABLE IF NOT EXISTS task_active (
|
|
43
|
+
session_id VARCHAR(64) NOT NULL,
|
|
44
|
+
task_id VARCHAR(64) NOT NULL,
|
|
45
|
+
since TIMESTAMPTZ(3) NOT NULL,
|
|
46
|
+
PRIMARY KEY (session_id)
|
|
47
|
+
)`,
|
|
48
|
+
`CREATE INDEX IF NOT EXISTS idx_task_active_task ON task_active (task_id)`,
|
|
49
|
+
`CREATE TABLE IF NOT EXISTS checkpoint (
|
|
50
|
+
token VARCHAR(120) NOT NULL,
|
|
51
|
+
scope VARCHAR(190) NOT NULL,
|
|
52
|
+
session_id VARCHAR(190) NOT NULL,
|
|
53
|
+
version INT NOT NULL DEFAULT 1,
|
|
54
|
+
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
|
55
|
+
tool_name VARCHAR(190),
|
|
56
|
+
tool_call_id VARCHAR(190),
|
|
57
|
+
tool_input JSONB,
|
|
58
|
+
checkpoint JSONB NOT NULL,
|
|
59
|
+
outcome JSONB,
|
|
60
|
+
deadline BIGINT,
|
|
61
|
+
created_at BIGINT NOT NULL,
|
|
62
|
+
decided_at BIGINT,
|
|
63
|
+
rev BIGINT NOT NULL DEFAULT 0,
|
|
64
|
+
reopen_reason VARCHAR(32),
|
|
65
|
+
terminal_at BIGINT,
|
|
66
|
+
gate_kind VARCHAR(32),
|
|
67
|
+
bound_input_hash VARCHAR(190),
|
|
68
|
+
pending_steer TEXT,
|
|
69
|
+
risk_descriptor TEXT,
|
|
70
|
+
PRIMARY KEY (token)
|
|
71
|
+
)`,
|
|
72
|
+
`CREATE INDEX IF NOT EXISTS idx_checkpoint_status_deadline ON checkpoint (status, deadline)`,
|
|
73
|
+
`CREATE INDEX IF NOT EXISTS idx_checkpoint_session_status ON checkpoint (session_id, status)`,
|
|
74
|
+
`CREATE TABLE IF NOT EXISTS checkpoint_ctx (
|
|
75
|
+
session_id VARCHAR(190) NOT NULL,
|
|
76
|
+
ctx JSONB NOT NULL,
|
|
77
|
+
updated_at BIGINT NOT NULL,
|
|
78
|
+
PRIMARY KEY (session_id)
|
|
79
|
+
)`,
|
|
80
|
+
`CREATE TABLE IF NOT EXISTS resume_anchor (
|
|
81
|
+
session_id VARCHAR(64) NOT NULL,
|
|
82
|
+
event_id VARCHAR(64) NOT NULL,
|
|
83
|
+
entry_id VARCHAR(64) NOT NULL,
|
|
84
|
+
owner VARCHAR(190),
|
|
85
|
+
created_at TIMESTAMPTZ(3) NOT NULL,
|
|
86
|
+
PRIMARY KEY (session_id, event_id)
|
|
87
|
+
)`,
|
|
88
|
+
`CREATE INDEX IF NOT EXISTS idx_resume_anchor_session ON resume_anchor (session_id)`,
|
|
89
|
+
`CREATE TABLE IF NOT EXISTS approval_exemption (
|
|
90
|
+
session_id VARCHAR(64) NOT NULL,
|
|
91
|
+
tool_name VARCHAR(190) NOT NULL,
|
|
92
|
+
granted_by VARCHAR(190),
|
|
93
|
+
created_at TIMESTAMPTZ(3) NOT NULL,
|
|
94
|
+
PRIMARY KEY (session_id, tool_name)
|
|
95
|
+
)`,
|
|
96
|
+
`CREATE TABLE IF NOT EXISTS session_policy (
|
|
97
|
+
policy_key CHAR(64) NOT NULL,
|
|
98
|
+
session_id VARCHAR(64) NOT NULL,
|
|
99
|
+
principal VARCHAR(190),
|
|
100
|
+
rules JSONB NOT NULL,
|
|
101
|
+
rev BIGINT NOT NULL,
|
|
102
|
+
created_at TIMESTAMPTZ(3) NOT NULL,
|
|
103
|
+
updated_at TIMESTAMPTZ(3) NOT NULL,
|
|
104
|
+
PRIMARY KEY (policy_key)
|
|
105
|
+
)`,
|
|
106
|
+
`ALTER TABLE session_policy ADD COLUMN IF NOT EXISTS principal VARCHAR(190)`,
|
|
107
|
+
`CREATE INDEX IF NOT EXISTS idx_session_policy_session ON session_policy (session_id)`,
|
|
108
|
+
`CREATE TABLE IF NOT EXISTS snapshot_manifest (
|
|
109
|
+
scope VARCHAR(64) NOT NULL,
|
|
110
|
+
snap_key VARCHAR(64) NOT NULL,
|
|
111
|
+
rel_path VARCHAR(1024) NOT NULL,
|
|
112
|
+
blob_hash CHAR(64) NOT NULL
|
|
113
|
+
)`,
|
|
114
|
+
`CREATE INDEX IF NOT EXISTS idx_snapshot_manifest_sk ON snapshot_manifest (scope, snap_key)`,
|
|
115
|
+
`CREATE INDEX IF NOT EXISTS idx_snapshot_manifest_blob ON snapshot_manifest (blob_hash)`,
|
|
116
|
+
`CREATE TABLE IF NOT EXISTS snapshot_blob (
|
|
117
|
+
blob_hash CHAR(64) PRIMARY KEY,
|
|
118
|
+
byte_len BIGINT NOT NULL,
|
|
119
|
+
bytes BYTEA NULL,
|
|
120
|
+
created_at TIMESTAMPTZ(3) NOT NULL
|
|
121
|
+
)`,
|
|
122
|
+
`CREATE INDEX IF NOT EXISTS idx_snapshot_blob_created ON snapshot_blob (created_at)`,
|
|
123
|
+
`ALTER TABLE snapshot_blob ALTER COLUMN bytes DROP NOT NULL`,
|
|
124
|
+
`CREATE TABLE IF NOT EXISTS workflow_journal (
|
|
125
|
+
run_id VARCHAR(191) NOT NULL,
|
|
126
|
+
ordinal INT NOT NULL,
|
|
127
|
+
scope VARCHAR(190) NOT NULL DEFAULT '',
|
|
128
|
+
call_key VARCHAR(255) NOT NULL,
|
|
129
|
+
result TEXT NOT NULL,
|
|
130
|
+
created_at BIGINT NOT NULL,
|
|
131
|
+
PRIMARY KEY (run_id, ordinal)
|
|
132
|
+
)`,
|
|
133
|
+
`ALTER TABLE workflow_journal ADD COLUMN IF NOT EXISTS scope VARCHAR(190) NOT NULL DEFAULT ''`,
|
|
134
|
+
`CREATE TABLE IF NOT EXISTS workflow_run (
|
|
135
|
+
id VARCHAR(191) NOT NULL,
|
|
136
|
+
scope VARCHAR(190) NOT NULL,
|
|
137
|
+
status VARCHAR(16) NOT NULL,
|
|
138
|
+
run TEXT NOT NULL,
|
|
139
|
+
rev INTEGER NOT NULL DEFAULT 0,
|
|
140
|
+
created_at BIGINT NOT NULL,
|
|
141
|
+
ended_at BIGINT,
|
|
142
|
+
PRIMARY KEY (id)
|
|
143
|
+
)`,
|
|
144
|
+
`CREATE INDEX IF NOT EXISTS idx_wfrun_scope_created ON workflow_run (scope, created_at)`,
|
|
145
|
+
`CREATE INDEX IF NOT EXISTS idx_wfrun_scope_status ON workflow_run (scope, status)`,
|
|
146
|
+
`CREATE TABLE IF NOT EXISTS workflow_completion_inbox (
|
|
147
|
+
seq BIGSERIAL,
|
|
148
|
+
session_id VARCHAR(190) NOT NULL,
|
|
149
|
+
run_id VARCHAR(191) NOT NULL,
|
|
150
|
+
owner VARCHAR(190),
|
|
151
|
+
status VARCHAR(16) NOT NULL,
|
|
152
|
+
summary TEXT NOT NULL,
|
|
153
|
+
enqueued_at BIGINT NOT NULL,
|
|
154
|
+
kind VARCHAR(24),
|
|
155
|
+
payload TEXT,
|
|
156
|
+
PRIMARY KEY (session_id, run_id)
|
|
157
|
+
)`,
|
|
158
|
+
`CREATE INDEX IF NOT EXISTS idx_wfinbox_session_seq ON workflow_completion_inbox (session_id, seq)`,
|
|
159
|
+
`ALTER TABLE workflow_completion_inbox ADD COLUMN IF NOT EXISTS kind VARCHAR(24)`,
|
|
160
|
+
`ALTER TABLE workflow_completion_inbox ADD COLUMN IF NOT EXISTS payload TEXT`,
|
|
161
|
+
`CREATE TABLE IF NOT EXISTS workflow_inbox_fence (
|
|
162
|
+
session_id VARCHAR(190) NOT NULL,
|
|
163
|
+
kind VARCHAR(8) NOT NULL,
|
|
164
|
+
run_id VARCHAR(191) NOT NULL DEFAULT '',
|
|
165
|
+
owner VARCHAR(190),
|
|
166
|
+
owner_known SMALLINT NOT NULL DEFAULT 0,
|
|
167
|
+
until_ms BIGINT NOT NULL,
|
|
168
|
+
PRIMARY KEY (session_id, kind, run_id)
|
|
169
|
+
)`,
|
|
170
|
+
`CREATE INDEX IF NOT EXISTS idx_wffence_until ON workflow_inbox_fence (until_ms)`,
|
|
171
|
+
`CREATE TABLE IF NOT EXISTS workflow_notify_journal (
|
|
172
|
+
run_id VARCHAR(191) NOT NULL,
|
|
173
|
+
scope VARCHAR(190) NOT NULL,
|
|
174
|
+
acked SMALLINT NOT NULL DEFAULT 0,
|
|
175
|
+
source_task_id VARCHAR(191),
|
|
176
|
+
principal VARCHAR(190),
|
|
177
|
+
created_at BIGINT NOT NULL,
|
|
178
|
+
acked_at BIGINT,
|
|
179
|
+
PRIMARY KEY (run_id)
|
|
180
|
+
)`,
|
|
181
|
+
`CREATE INDEX IF NOT EXISTS idx_wfnotify_acked ON workflow_notify_journal (acked)`,
|
|
182
|
+
];
|
|
183
|
+
export function pgPoolOptions(pgCfg, dbQueryTimeoutMs) {
|
|
184
|
+
return {
|
|
185
|
+
host: pgCfg.host,
|
|
186
|
+
port: pgCfg.port,
|
|
187
|
+
user: pgCfg.user,
|
|
188
|
+
password: pgCfg.password,
|
|
189
|
+
database: pgCfg.database,
|
|
190
|
+
...(pgCfg.connectionLimit ? { max: pgCfg.connectionLimit } : {}),
|
|
191
|
+
...(dbQueryTimeoutMs ? { statement_timeout: dbQueryTimeoutMs, query_timeout: dbQueryTimeoutMs + 5_000 } : {}),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
export function createPgPool(opts) {
|
|
195
|
+
return typeof opts === "string" ? new pg.Pool({ connectionString: opts }) : new pg.Pool(opts);
|
|
196
|
+
}
|
|
197
|
+
const ENSURE_SCHEMA_LOCK_KEY = 4906;
|
|
198
|
+
export async function ensurePgSchema(pool) {
|
|
199
|
+
const client = await pool.connect();
|
|
200
|
+
let locked = false;
|
|
201
|
+
try {
|
|
202
|
+
try {
|
|
203
|
+
await client.query("SELECT pg_advisory_lock($1)", [ENSURE_SCHEMA_LOCK_KEY]);
|
|
204
|
+
locked = true;
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
console.warn(`[ensurePgSchema] pg_advisory_lock(${ENSURE_SCHEMA_LOCK_KEY}) failed; running DDL unserialized:`, err);
|
|
208
|
+
}
|
|
209
|
+
for (const stmt of PG_SCHEMA_STATEMENTS)
|
|
210
|
+
await client.query(stmt);
|
|
211
|
+
await ensureSessionSchema(client);
|
|
212
|
+
await ensureToolResultSchema(client);
|
|
213
|
+
await ensureCostQuotaSchema(client);
|
|
214
|
+
await ensureRateLimitSchema(client);
|
|
215
|
+
await ensureBreakerStateSchema(client);
|
|
216
|
+
await ensureApprovalSchema(client);
|
|
217
|
+
await ensureOutcomeLedgerSchema(client);
|
|
218
|
+
await ensureImageIndexSchema(client);
|
|
219
|
+
await ensureImageBakeSchema(client);
|
|
220
|
+
}
|
|
221
|
+
finally {
|
|
222
|
+
if (locked) {
|
|
223
|
+
try {
|
|
224
|
+
await client.query("SELECT pg_advisory_unlock($1)", [ENSURE_SCHEMA_LOCK_KEY]);
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
console.warn(`[ensurePgSchema] pg_advisory_unlock(${ENSURE_SCHEMA_LOCK_KEY}) failed (lock auto-frees on connection close):`, err);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
client.release();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=pg-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-pool.js","sourceRoot":"","sources":["../../src/plugins/pg-pool.ts"],"names":[],"mappings":"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"}
|