@sema-agent/server 7.146.0 → 7.148.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/MIGRATION.md +1423 -24
- package/README.md +21 -8
- package/README.zh-CN.md +15 -9
- package/USAGE.md +537 -216
- package/deploy/facts/lanes.json +7 -0
- package/deploy/sema-up/README.md +18 -7
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
- package/deploy/sema-up/chart/templates/server.yaml +5 -4
- package/deploy/sema-up/chart/values.yaml +4 -3
- package/deploy/sema-up/cluster-up.sh +75 -176
- package/deploy/sema-up/kube-up.sh +29 -49
- package/deploy/sema-up/lib/chart-run.sh +23 -0
- package/deploy/sema-up/lib/dataroot.sh +3 -3
- package/deploy/sema-up/lib/flagshape.sh +4 -0
- package/deploy/sema-up/lib/health.sh +62 -13
- package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
- package/deploy/sema-up/lib/helm-values-kube.py +35 -0
- package/deploy/sema-up/lib/lanes.json +2 -5
- package/deploy/sema-up/lib/regcred.py +8 -0
- package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
- package/deploy/sema-up/lib/remote/image-import.sh +6 -0
- package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
- package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
- package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
- package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
- package/deploy/sema-up/lib/render-stack.py +17 -0
- package/deploy/sema-up/lib/shell-text.sh +87 -0
- package/deploy/sema-up/lib/usage-flags.txt +10 -0
- package/deploy/sema-up/lib/usage-head.txt +1 -0
- package/deploy/sema-up/lib/usage-tail.txt +13 -0
- package/deploy/sema-up/preflight.sh +10 -8
- package/deploy/sema-up/sema-up.sh +26 -48
- package/deploy/sema-up/smoke.sh +7 -6
- package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
- package/deploy/sema-up/stack/compose.yaml +18 -5
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
- package/dist/adoption/plan.d.ts +24 -0
- package/dist/adoption/plan.js +53 -1
- package/dist/adoption/runner.d.ts +10 -1
- package/dist/adoption/runner.js +36 -16
- package/dist/adoption/wire.d.ts +3 -3
- package/dist/approval-card.d.ts +32 -34
- package/dist/approval-gate-currency.js +3 -2
- package/dist/approval-reconciler.d.ts +4 -13
- package/dist/approval-reconciler.js +2 -2
- package/dist/approval.d.ts +16 -14
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +17 -9
- package/dist/auth-bridge.d.ts +0 -14
- package/dist/auth-bridge.js +0 -7
- package/dist/auto-mode-face.d.ts +10 -7
- package/dist/auto-mode-face.js +7 -4
- package/dist/background-agent-name.d.ts +19 -1
- package/dist/background-agent-name.js +12 -2
- package/dist/background-session-reap.d.ts +1 -1
- package/dist/bake-runner/main.js +9 -6
- package/dist/bench/s1/arms.js +6 -5
- package/dist/bench/s1/live-deps.js +8 -3
- package/dist/bench/s1/run-firm.js +6 -5
- package/dist/bind-host.d.ts +25 -0
- package/dist/bind-host.js +25 -0
- package/dist/boot/adoption.d.ts +3 -0
- package/dist/boot/adoption.js +1 -0
- package/dist/boot/crash-last.js +2 -1
- package/dist/boot/deployment-mods.d.ts +1 -1
- package/dist/boot/device-lane.js +5 -5
- package/dist/boot/engine-lease.d.ts +12 -11
- package/dist/boot/execution-env.d.ts +19 -8
- package/dist/boot/execution-env.js +80 -62
- package/dist/boot/execution-lane.d.ts +37 -9
- package/dist/boot/execution-lane.js +74 -20
- package/dist/boot/exit-boundary.d.ts +3 -3
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/exit-last.js +2 -1
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/governance-seams.d.ts +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +18 -16
- package/dist/boot/memory-boundary.d.ts +11 -11
- package/dist/boot/memory-boundary.js +3 -3
- package/dist/boot/memory-consolidation.d.ts +50 -53
- package/dist/boot/memory-consolidation.js +11 -18
- package/dist/boot/org-memory.js +4 -3
- package/dist/boot/parked-revive-gate.d.ts +1 -1
- package/dist/boot/parked-revive-gate.js +3 -3
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +20 -17
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +133 -165
- package/dist/boot/retention-lane.d.ts +7 -45
- package/dist/boot/retention-lane.js +2 -2
- package/dist/boot/runner-deps.d.ts +28 -7
- package/dist/boot/runner-deps.js +11 -4
- package/dist/boot/runtime-caps.d.ts +2 -2
- package/dist/boot/runtime-caps.js +16 -2
- package/dist/boot/session-faces.d.ts +17 -7
- package/dist/boot/session-faces.js +122 -96
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.d.ts +1 -1
- package/dist/boot/stage-01-config.js +14 -2
- package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
- package/dist/boot/stage-02-web-admin-pull.js +15 -8
- package/dist/boot/stage-03-store-backend.d.ts +4 -1
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +3 -1
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +9 -5
- package/dist/boot/stage-05-execution-env.js +5 -5
- package/dist/boot/stage-06-runners.d.ts +13 -15
- package/dist/boot/stage-06-runners.js +24 -18
- package/dist/boot/stage-07-capability-layer.d.ts +14 -11
- package/dist/boot/stage-07-capability-layer.js +9 -12
- package/dist/boot/stage-08-reapers.d.ts +14 -11
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +16 -18
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +16 -18
- package/dist/boot/stage-10-http-server.js +9 -5
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +12 -0
- package/dist/boot/stores.js +39 -17
- package/dist/boot/task-list-lane.d.ts +4 -4
- package/dist/boot/web-admin.d.ts +4 -2
- package/dist/boot/web-admin.js +58 -38
- package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
- package/dist/boot-reclaim.d.ts +3 -1
- package/dist/boot-reclaim.js +1 -1
- package/dist/brain.d.ts +7 -18
- package/dist/brain.js +5 -17
- package/dist/budget.js +6 -6
- package/dist/capabilities/center-plugins.d.ts +9 -1
- package/dist/capabilities/center-plugins.js +37 -11
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +3 -2
- package/dist/capabilities/composite-members.js +3 -2
- package/dist/capabilities/execution-lane.d.ts +7 -7
- package/dist/capabilities/execution-lane.js +2 -2
- package/dist/capabilities/hands-lane.d.ts +1 -1
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +38 -33
- package/dist/capabilities/scenarios.js +24 -25
- package/dist/capabilities/settings-contract.d.ts +29 -0
- package/dist/capabilities/settings-contract.js +14 -0
- package/dist/capabilities/skills.d.ts +6 -6
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +69 -4
- package/dist/capability-facts.js +77 -5
- package/dist/card-void.d.ts +4 -4
- package/dist/card-void.js +1 -1
- package/dist/center-credential-renewer.d.ts +6 -2
- package/dist/center-credential-renewer.js +10 -5
- package/dist/config-catalog.d.ts +16 -1
- package/dist/config-catalog.js +68 -61
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +58 -4
- package/dist/config-invariants.js +104 -23
- package/dist/config-lkg.d.ts +24 -2
- package/dist/config-lkg.js +22 -9
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -108
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +215 -202
- package/dist/config.d.ts +69 -14
- package/dist/config.js +188 -96
- package/dist/degenerate-instrument.js +1 -1
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deploy-facts.js +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +51 -16
- package/dist/deployment-shape.js +31 -6
- package/dist/egress-redirect.d.ts +25 -7
- package/dist/egress-redirect.js +20 -2
- package/dist/elicitation.d.ts +6 -5
- package/dist/elicitation.js +23 -22
- package/dist/engine-identity.d.ts +28 -0
- package/dist/engine-identity.js +10 -0
- package/dist/entry-problems.d.ts +5 -7
- package/dist/entry-problems.js +1 -1
- package/dist/env-facts.d.ts +7 -5
- package/dist/env-facts.js +12 -7
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-config-root.d.ts +5 -5
- package/dist/execution-config-root.js +5 -5
- package/dist/execution-env-purpose.d.ts +14 -0
- package/dist/execution-env-purpose.js +29 -0
- package/dist/execution-lane-caps.d.ts +53 -103
- package/dist/execution-lane-caps.js +51 -83
- package/dist/execution-placement.d.ts +65 -9
- package/dist/execution-placement.js +58 -0
- package/dist/field-conflict.d.ts +7 -11
- package/dist/field-conflict.js +3 -3
- package/dist/file-history-capture.d.ts +3 -3
- package/dist/file-history-disclosure.d.ts +2 -2
- package/dist/file-history-disclosure.js +1 -0
- package/dist/fleet/drain-entry.d.ts +17 -10
- package/dist/fleet/drain-entry.js +1 -1
- package/dist/fleet/fleet-bus.d.ts +21 -3
- package/dist/fleet/fleet-bus.js +35 -25
- package/dist/fleet/fleet-reconciler.js +2 -2
- package/dist/fleet/serving-lease.js +6 -7
- package/dist/fleet-client.js +3 -3
- package/dist/fleet-lease.d.ts +0 -1
- package/dist/fleet-lease.js +4 -5
- package/dist/history-anchor.d.ts +42 -0
- package/dist/history-anchor.js +34 -0
- package/dist/hitl-delivery.d.ts +90 -0
- package/dist/hitl-delivery.js +98 -0
- package/dist/hooks/classic-stations.d.ts +8 -11
- package/dist/hooks/classic-stations.js +0 -7
- package/dist/hooks/command-spawn.d.ts +1 -4
- package/dist/hooks/command-spawn.js +0 -11
- package/dist/hooks/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +119 -65
- package/dist/hooks/hook-runner.js +415 -217
- package/dist/host-lsp-manager.d.ts +22 -8
- package/dist/host-lsp-manager.js +4 -1
- package/dist/http/active-run-conflict.d.ts +2 -43
- package/dist/http/active-run-conflict.js +3 -7
- package/dist/http/admission.d.ts +4 -18
- package/dist/http/admission.js +75 -78
- package/dist/http/approval-sweeps.d.ts +5 -8
- package/dist/http/approval-sweeps.js +55 -30
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/checkpoint-ctx.d.ts +17 -0
- package/dist/http/checkpoint-ctx.js +6 -0
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claim-latency.d.ts +10 -0
- package/dist/http/claim-latency.js +12 -0
- package/dist/http/claimed-run.d.ts +4 -3
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +77 -31
- package/dist/http/durable-run-leg.d.ts +3 -3
- package/dist/http/durable-run-leg.js +18 -12
- package/dist/http/execution-context.d.ts +18 -42
- package/dist/http/execution-context.js +11 -5
- package/dist/http/health-reader.d.ts +36 -0
- package/dist/http/health-reader.js +21 -0
- package/dist/http/health-self-report.d.ts +9 -9
- package/dist/http/health-self-report.js +4 -4
- package/dist/http/idempotency.d.ts +9 -5
- package/dist/http/idempotency.js +4 -4
- package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
- package/dist/http/memory-compliance-failure-reply.js +7 -2
- package/dist/http/memory-face-fault-reply.d.ts +67 -0
- package/dist/http/memory-face-fault-reply.js +71 -0
- package/dist/http/memory-store-refusal-reply.d.ts +3 -3
- package/dist/http/memory-store-refusal-reply.js +6 -0
- package/dist/http/owner-access.d.ts +391 -56
- package/dist/http/owner-access.js +372 -33
- package/dist/http/principal-gate.d.ts +26 -94
- package/dist/http/principal-gate.js +24 -81
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +10 -14
- package/dist/http/request-guards.js +34 -68
- package/dist/http/resume-composition.d.ts +37 -0
- package/dist/http/resume-composition.js +18 -0
- package/dist/http/resume-ctx-read.d.ts +35 -12
- package/dist/http/resume-ctx-read.js +25 -6
- package/dist/http/resume-legs.d.ts +24 -24
- package/dist/http/resume-legs.js +260 -171
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/rewind-files-reply.d.ts +34 -0
- package/dist/http/rewind-files-reply.js +36 -0
- package/dist/http/route-ctx.d.ts +56 -47
- package/dist/http/route-table.js +2 -0
- package/dist/http/routes/a2a-serve.d.ts +43 -5
- package/dist/http/routes/a2a-serve.js +58 -37
- package/dist/http/routes/admin-config-refresh.js +2 -2
- package/dist/http/routes/admin-drain.js +2 -2
- package/dist/http/routes/admin-memory-optout.js +4 -3
- package/dist/http/routes/adoption.d.ts +3 -0
- package/dist/http/routes/adoption.js +17 -10
- package/dist/http/routes/agents-roster.js +13 -7
- package/dist/http/routes/approvals-assistant.js +73 -88
- package/dist/http/routes/attachments.js +2 -2
- package/dist/http/routes/background.d.ts +3 -3
- package/dist/http/routes/background.js +9 -17
- package/dist/http/routes/capabilities.js +23 -20
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +5 -5
- package/dist/http/routes/diagnostics.d.ts +27 -3
- package/dist/http/routes/diagnostics.js +27 -21
- package/dist/http/routes/engine.js +2 -2
- package/dist/http/routes/fleet.js +5 -3
- package/dist/http/routes/images.js +10 -6
- package/dist/http/routes/leader.d.ts +7 -2
- package/dist/http/routes/leader.js +12 -3
- package/dist/http/routes/mcp-reconnect.d.ts +1 -1
- package/dist/http/routes/mcp-reconnect.js +7 -15
- package/dist/http/routes/memory-bundle.js +4 -7
- package/dist/http/routes/memory-compliance.js +4 -4
- package/dist/http/routes/memory-consolidation.js +6 -9
- package/dist/http/routes/memory-origin.d.ts +3 -1
- package/dist/http/routes/memory-origin.js +7 -8
- package/dist/http/routes/memory-policy.js +17 -12
- package/dist/http/routes/notify-wake.js +12 -20
- package/dist/http/routes/observability.js +3 -3
- package/dist/http/routes/principal-inbox.d.ts +1 -1
- package/dist/http/routes/principal-inbox.js +2 -2
- package/dist/http/routes/projects.d.ts +70 -0
- package/dist/http/routes/projects.js +87 -0
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +50 -7
- package/dist/http/routes/run-memory-capture.d.ts +2 -2
- package/dist/http/routes/run-memory-capture.js +6 -12
- package/dist/http/routes/run-permission-mode.d.ts +2 -2
- package/dist/http/routes/run-permission-mode.js +10 -17
- package/dist/http/routes/runs.js +148 -233
- package/dist/http/routes/session-memory-sync.d.ts +2 -2
- package/dist/http/routes/session-memory-sync.js +7 -13
- package/dist/http/routes/session-sync.d.ts +4 -2
- package/dist/http/routes/session-sync.js +48 -30
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.d.ts +7 -1
- package/dist/http/routes/sessions.js +177 -112
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +144 -122
- package/dist/http/routes/trace-usage.d.ts +0 -12
- package/dist/http/routes/trace-usage.js +40 -46
- package/dist/http/routes/workflows.d.ts +39 -4
- package/dist/http/routes/workflows.js +42 -14
- package/dist/http/run-concurrency-cap.d.ts +20 -12
- package/dist/http/run-concurrency-cap.js +39 -26
- package/dist/http/run-read-face.d.ts +3 -5
- package/dist/http/run-read-face.js +8 -13
- package/dist/http/send.d.ts +12 -3
- package/dist/http/send.js +42 -6
- package/dist/http/server.d.ts +63 -50
- package/dist/http/server.js +52 -16
- package/dist/http/sse-log.d.ts +17 -10
- package/dist/http/sse-log.js +7 -7
- package/dist/http/stored-body-replay.d.ts +17 -3
- package/dist/http/stored-body-replay.js +11 -2
- package/dist/http/submit-ctx.d.ts +16 -8
- package/dist/http/submit-ctx.js +6 -2
- package/dist/http/submit-replay.d.ts +19 -6
- package/dist/http/submit-replay.js +18 -6
- package/dist/http/sync-submit-body.d.ts +3 -4
- package/dist/http/sync-submit-body.js +4 -5
- package/dist/http/wire-types.d.ts +23 -13
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -1
- package/dist/instruction-source-notice.d.ts +1 -1
- package/dist/key-resolver.d.ts +32 -0
- package/dist/key-resolver.js +23 -9
- package/dist/leader/diffup.js +2 -1
- package/dist/leader/endpoint.d.ts +26 -5
- package/dist/leader/endpoint.js +154 -14
- package/dist/leader/fanout.d.ts +3 -0
- package/dist/leader/fanout.js +78 -63
- package/dist/leader/leader.d.ts +16 -0
- package/dist/leader/leader.js +43 -3
- package/dist/leader/merge.d.ts +9 -1
- package/dist/leader/merge.js +16 -1
- package/dist/leader/repair-wire.js +1 -1
- package/dist/leader/wire.d.ts +36 -3
- package/dist/leader/wire.js +59 -18
- package/dist/lsp-evict.d.ts +6 -4
- package/dist/lsp-evict.js +2 -3
- package/dist/memory-embedder-reembed.d.ts +38 -0
- package/dist/memory-embedder-reembed.js +20 -0
- package/dist/memory-incident-sink.d.ts +0 -28
- package/dist/memory-incident-sink.js +5 -0
- package/dist/memory-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-scope.d.ts +31 -4
- package/dist/memory-scope.js +65 -16
- package/dist/memory-store-refusal.d.ts +20 -4
- package/dist/memory-store-refusal.js +1 -1
- package/dist/memory-sync-client.d.ts +5 -2
- package/dist/memory-sync-client.js +19 -14
- package/dist/memory-sync.js +1 -1
- package/dist/model-compat.d.ts +51 -28
- package/dist/model-compat.js +55 -23
- package/dist/model-context-window.d.ts +18 -0
- package/dist/model-context-window.js +2 -0
- package/dist/model-entry-headers.d.ts +46 -4
- package/dist/model-entry-headers.js +2 -2
- package/dist/model-entry-refusal.d.ts +46 -17
- package/dist/model-entry-refusal.js +47 -27
- package/dist/model-plane-face.d.ts +19 -11
- package/dist/model-plane-face.js +9 -1
- package/dist/model-plane-probe.d.ts +2 -0
- package/dist/model-plane-probe.js +17 -0
- package/dist/model-provider.d.ts +3 -3
- package/dist/model-route-endpoint.d.ts +9 -5
- package/dist/model-route-endpoint.js +29 -7
- package/dist/model-select.d.ts +16 -0
- package/dist/model-select.js +4 -0
- package/dist/mountinfo.d.ts +37 -0
- package/dist/mountinfo.js +47 -0
- package/dist/namespaced-rule-name.d.ts +28 -2
- package/dist/namespaced-rule-name.js +10 -1
- package/dist/net-address.d.ts +1 -1
- package/dist/observability/corrupt-read-seat.d.ts +4 -4
- package/dist/observability/corrupt-read-seat.js +5 -3
- package/dist/observability/fail-open.d.ts +75 -47
- package/dist/observability/fail-open.js +77 -47
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.d.ts +2 -0
- package/dist/observability/metrics.js +5 -4
- package/dist/observability/otel-exporter.js +2 -1
- package/dist/observability/principal-context.d.ts +14 -7
- package/dist/observability/principal-context.js +8 -3
- package/dist/observability/run-terminal.d.ts +7 -1
- package/dist/observability/run-terminal.js +5 -2
- package/dist/observability/secret-env-scrub.d.ts +30 -4
- package/dist/observability/secret-env-scrub.js +15 -3
- package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
- package/dist/orchestration/hardened-vm-runner.js +11 -5
- package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
- package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
- package/dist/orchestration/hardened-vm-worker.js +2 -1
- package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
- package/dist/orchestration/workflow-agent-session-index.js +1 -6
- package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
- package/dist/orchestration/workflow-completion-inbox.js +65 -46
- package/dist/org-delivery-gate.d.ts +5 -4
- package/dist/org-delivery-gate.js +7 -6
- package/dist/org-memory-admission.d.ts +5 -2
- package/dist/org-memory-admission.js +25 -10
- package/dist/outbound-dispatcher.d.ts +1 -1
- package/dist/outbound-dispatcher.js +6 -12
- package/dist/owner-brands.d.ts +81 -0
- package/dist/owner-brands.js +42 -0
- package/dist/owner-faces.d.ts +531 -0
- package/dist/owner-faces.js +126 -0
- package/dist/parked-decide.d.ts +100 -31
- package/dist/parked-decide.js +162 -48
- package/dist/parked-revive-surface.d.ts +14 -4
- package/dist/parked-revive-surface.js +5 -4
- package/dist/peer-directory.d.ts +6 -8
- package/dist/peer-directory.js +3 -2
- package/dist/permission-rule-vocab.d.ts +53 -8
- package/dist/permission-rule-vocab.js +30 -2
- package/dist/plugins/adoption-log-sql.d.ts +0 -22
- package/dist/plugins/adoption-log-sql.js +5 -3
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
- package/dist/plugins/approval-ask-store-file.d.ts +28 -9
- package/dist/plugins/approval-ask-store-file.js +74 -18
- package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
- package/dist/plugins/approval-ask-store-memory.js +35 -12
- package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
- package/dist/plugins/approval-ask-store-sql.js +44 -11
- package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
- package/dist/plugins/approval-exemption-skill-m46.js +25 -0
- package/dist/plugins/approval-exemption-store.d.ts +6 -1
- package/dist/plugins/approval-exemption-store.js +14 -0
- package/dist/plugins/approval-nonce-store.d.ts +39 -12
- package/dist/plugins/approval-nonce-store.js +72 -23
- package/dist/plugins/blob-backend.d.ts +40 -195
- package/dist/plugins/blob-backend.js +41 -234
- package/dist/plugins/caching-session-store.d.ts +22 -5
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
- package/dist/plugins/checkpoint-index-columns.js +39 -3
- package/dist/plugins/checkpoint-store-face.d.ts +84 -11
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.d.ts +2 -2
- package/dist/plugins/device-store-sql.js +6 -10
- package/dist/plugins/ensure-index.d.ts +13 -1
- package/dist/plugins/ensure-index.js +154 -21
- package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
- package/dist/plugins/ensure-schema-lock-policy.js +3 -2
- package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
- package/dist/plugins/execution-lane-rename-m40.js +10 -0
- package/dist/plugins/execution-placement-sql.d.ts +63 -88
- package/dist/plugins/execution-placement-sql.js +94 -54
- package/dist/plugins/file-run-store.d.ts +89 -35
- package/dist/plugins/file-run-store.js +197 -142
- package/dist/plugins/host-platform.d.ts +24 -3
- package/dist/plugins/host-platform.js +15 -1
- package/dist/plugins/image-bake-store-sql.js +2 -0
- package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
- package/dist/plugins/imported-layer-root-retirement.js +4 -8
- package/dist/plugins/inbox-payload-column.d.ts +14 -0
- package/dist/plugins/inbox-payload-column.js +13 -0
- package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
- package/dist/plugins/k8s-pod-reaper.js +0 -1
- package/dist/plugins/leader-run-store-sql.d.ts +22 -0
- package/dist/plugins/leader-run-store-sql.js +34 -4
- package/dist/plugins/local-checkpoint-store.d.ts +63 -23
- package/dist/plugins/local-checkpoint-store.js +204 -81
- package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
- package/dist/plugins/local-data-dir-modes-m39.js +183 -0
- package/dist/plugins/local-docker-capacity.d.ts +93 -0
- package/dist/plugins/local-docker-capacity.js +194 -0
- package/dist/plugins/local-docker-reaper.d.ts +92 -0
- package/dist/plugins/local-docker-reaper.js +102 -0
- package/dist/plugins/local-engine-high-water.d.ts +13 -0
- package/dist/plugins/local-engine-high-water.js +62 -0
- package/dist/plugins/local-session-store.d.ts +442 -143
- package/dist/plugins/local-session-store.js +941 -289
- package/dist/plugins/local-session-window.d.ts +3 -2
- package/dist/plugins/local-session-window.js +3 -2
- package/dist/plugins/local-sidecar-quarantine.js +3 -2
- package/dist/plugins/local-task-attachment-store.d.ts +20 -1
- package/dist/plugins/local-task-attachment-store.js +32 -12
- package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
- package/dist/plugins/memory-embedder-fingerprint.js +52 -12
- package/dist/plugins/memory-embedder.d.ts +1 -1
- package/dist/plugins/memory-embedder.js +11 -9
- package/dist/plugins/memory-engine-pg.d.ts +7 -5
- package/dist/plugins/memory-engine-pg.js +18 -9
- package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
- package/dist/plugins/memory-engine-sql-apply.js +7 -9
- package/dist/plugins/memory-engine-tidb.d.ts +12 -7
- package/dist/plugins/memory-engine-tidb.js +18 -10
- package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
- package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
- package/dist/plugins/memory-run-store.d.ts +39 -27
- package/dist/plugins/memory-run-store.js +72 -70
- package/dist/plugins/one-time-migration-marker.d.ts +10 -0
- package/dist/plugins/one-time-migration-marker.js +7 -0
- package/dist/plugins/one-time-migrations.d.ts +325 -74
- package/dist/plugins/one-time-migrations.js +705 -230
- package/dist/plugins/org-delivery-quota-store.js +2 -1
- package/dist/plugins/owner-only-file-mode.d.ts +29 -0
- package/dist/plugins/owner-only-file-mode.js +141 -0
- package/dist/plugins/permission-rule-store-file.d.ts +11 -11
- package/dist/plugins/permission-rule-store-file.js +14 -2
- package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
- package/dist/plugins/permission-rule-store-sql.js +6 -86
- package/dist/plugins/pg-pool.d.ts +3 -32
- package/dist/plugins/pg-pool.js +27 -11
- package/dist/plugins/release-version.d.ts +20 -0
- package/dist/plugins/release-version.js +28 -0
- package/dist/plugins/remote-env-adb.d.ts +20 -4
- package/dist/plugins/remote-env-adb.js +39 -11
- package/dist/plugins/remote-env-e2b.d.ts +19 -28
- package/dist/plugins/remote-env-e2b.js +40 -29
- package/dist/plugins/remote-env-host.d.ts +11 -10
- package/dist/plugins/remote-env-host.js +40 -27
- package/dist/plugins/remote-env-k8s.d.ts +45 -47
- package/dist/plugins/remote-env-k8s.js +122 -62
- package/dist/plugins/remote-env-local-docker.d.ts +152 -15
- package/dist/plugins/remote-env-local-docker.js +370 -75
- package/dist/plugins/remote-env-ssh.d.ts +8 -2
- package/dist/plugins/remote-env-ssh.js +26 -24
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/remote-shell.d.ts +59 -30
- package/dist/plugins/remote-shell.js +175 -62
- package/dist/plugins/retention-declaration.d.ts +37 -0
- package/dist/plugins/retention-declaration.js +9 -0
- package/dist/plugins/retention-deployment.d.ts +158 -0
- package/dist/plugins/retention-deployment.js +119 -0
- package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
- package/dist/plugins/retention-lane-store-sql.js +103 -1
- package/dist/plugins/retention-sql.d.ts +29 -0
- package/dist/plugins/retention-sql.js +8 -0
- package/dist/plugins/run-preview-m45.d.ts +11 -0
- package/dist/plugins/run-preview-m45.js +19 -0
- package/dist/plugins/run-store-sql.d.ts +56 -68
- package/dist/plugins/run-store-sql.js +127 -116
- package/dist/plugins/s3-answer.d.ts +2 -1
- package/dist/plugins/sandbox-reaper.d.ts +26 -0
- package/dist/plugins/sandbox-reaper.js +2 -0
- package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
- package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
- package/dist/plugins/scheduler-support.d.ts +16 -1
- package/dist/plugins/scheduler-support.js +22 -2
- package/dist/plugins/schema-consistency.d.ts +42 -15
- package/dist/plugins/schema-consistency.js +213 -13
- package/dist/plugins/schema-drift-sentence.d.ts +4 -1
- package/dist/plugins/schema-drift-sentence.js +4 -4
- package/dist/plugins/schema-ensure-legs.d.ts +10 -1
- package/dist/plugins/schema-ensure-legs.js +12 -2
- package/dist/plugins/schema-indexes.js +3 -0
- package/dist/plugins/schema-live-columns.d.ts +14 -5
- package/dist/plugins/schema-live-columns.js +10 -10
- package/dist/plugins/send-user-file.js +2 -1
- package/dist/plugins/session-birth.d.ts +37 -0
- package/dist/plugins/session-birth.js +38 -0
- package/dist/plugins/session-epoch-anchor.d.ts +40 -12
- package/dist/plugins/session-epoch-anchor.js +33 -11
- package/dist/plugins/session-ext-table.d.ts +98 -0
- package/dist/plugins/session-ext-table.js +134 -0
- package/dist/plugins/session-fork.d.ts +16 -2
- package/dist/plugins/session-fork.js +3 -0
- package/dist/plugins/session-ownership.d.ts +1 -1
- package/dist/plugins/session-placement.d.ts +22 -16
- package/dist/plugins/session-placement.js +15 -12
- package/dist/plugins/session-row-sql.d.ts +20 -7
- package/dist/plugins/session-row-sql.js +16 -8
- package/dist/plugins/session-run-rollup.d.ts +29 -0
- package/dist/plugins/session-run-rollup.js +40 -0
- package/dist/plugins/session-store-sql.d.ts +157 -0
- package/dist/plugins/session-store-sql.js +398 -0
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/session-workspace-cell.d.ts +2 -2
- package/dist/plugins/session-workspace-cell.js +2 -2
- package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
- package/dist/plugins/shared-memory-store-sql.js +15 -14
- package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
- package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
- package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
- package/dist/plugins/snapshot-bucket-presence.js +1 -1
- package/dist/plugins/sql-driver.d.ts +24 -8
- package/dist/plugins/sql-driver.js +43 -9
- package/dist/plugins/sql-errors.d.ts +35 -5
- package/dist/plugins/sql-errors.js +55 -3
- package/dist/plugins/sql-json-column.d.ts +8 -7
- package/dist/plugins/sql-json-column.js +10 -6
- package/dist/plugins/store-backend.d.ts +114 -18
- package/dist/plugins/store-backend.js +340 -87
- package/dist/plugins/store-contracts.d.ts +97 -30
- package/dist/plugins/store-contracts.js +23 -1
- package/dist/plugins/store-fault.d.ts +28 -2
- package/dist/plugins/store-fault.js +20 -2
- package/dist/plugins/task-attachment-store.d.ts +21 -11
- package/dist/plugins/task-attachment-store.js +37 -19
- package/dist/plugins/task-list-store-sql.d.ts +1 -1
- package/dist/plugins/text-column-capacity.d.ts +21 -0
- package/dist/plugins/text-column-capacity.js +5 -0
- package/dist/plugins/tidb-pool.d.ts +3 -2
- package/dist/plugins/tidb-pool.js +42 -39
- package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
- package/dist/plugins/web-search.js +5 -3
- package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
- package/dist/plugins/workflow-run-store-sql.js +11 -5
- package/dist/principal-jwt.d.ts +4 -4
- package/dist/principal-jwt.js +20 -5
- package/dist/principal-shape.d.ts +41 -0
- package/dist/principal-shape.js +19 -0
- package/dist/question.d.ts +13 -23
- package/dist/question.js +21 -39
- package/dist/read-face-posture.d.ts +6 -6
- package/dist/read-face-posture.js +2 -2
- package/dist/request-declaration-refusal.d.ts +35 -12
- package/dist/request-declaration-refusal.js +21 -9
- package/dist/request-form.d.ts +58 -0
- package/dist/request-form.js +72 -0
- package/dist/request-image-urls.d.ts +8 -2
- package/dist/request-image-urls.js +2 -1
- package/dist/request-images.d.ts +20 -0
- package/dist/request-images.js +59 -0
- package/dist/request-key-closure.d.ts +6 -7
- package/dist/request-key-closure.js +15 -2
- package/dist/request-value-closure.d.ts +5 -5
- package/dist/request-value-closure.js +1 -1
- package/dist/resource-suspend.d.ts +7 -16
- package/dist/resource-suspend.js +1 -1
- package/dist/retired-name-host-notice.d.ts +21 -0
- package/dist/retired-name-host-notice.js +12 -0
- package/dist/rule-entry-list.d.ts +2 -2
- package/dist/rule-entry-list.js +3 -4
- package/dist/rule-issue-reading.d.ts +58 -0
- package/dist/rule-issue-reading.js +14 -0
- package/dist/rules-consent.d.ts +46 -16
- package/dist/rules-consent.js +102 -53
- package/dist/run-acceptance.d.ts +3 -1
- package/dist/run-acceptance.js +3 -0
- package/dist/run-local.d.ts +14 -6
- package/dist/run-local.js +109 -93
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +73 -44
- package/dist/runs.js +65 -43
- package/dist/runtime-caps-resolver.d.ts +36 -14
- package/dist/runtime-caps-resolver.js +31 -14
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -6
- package/dist/sealed-key-layout.js +5 -1
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +116 -26
- package/dist/security.d.ts +133 -161
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +27 -2
- package/dist/server-secret-env.d.ts +23 -5
- package/dist/server-secret-env.js +14 -4
- package/dist/service-version.d.ts +2 -1
- package/dist/service-version.js +2 -2
- package/dist/session-children-retire.d.ts +7 -5
- package/dist/session-children-retire.js +7 -2
- package/dist/session-deletion.d.ts +88 -0
- package/dist/session-deletion.js +8 -0
- package/dist/session-erase.d.ts +145 -0
- package/dist/session-erase.js +115 -0
- package/dist/session-error-wire.d.ts +6 -6
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +60 -10
- package/dist/session-incarnation.js +19 -2
- package/dist/session-policy-wire.d.ts +6 -3
- package/dist/session-policy-wire.js +11 -1
- package/dist/session-resident-background.d.ts +29 -47
- package/dist/session-resident-background.js +77 -8
- package/dist/session-row.d.ts +3 -2
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-sync-kernel.d.ts +1 -1
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/session-workspace.d.ts +11 -2
- package/dist/session-workspace.js +5 -0
- package/dist/sighup-idle.d.ts +1 -1
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-posture.d.ts +138 -21
- package/dist/store-posture.js +188 -3
- package/dist/stored-request-hooks-m20.d.ts +3 -2
- package/dist/stored-request-hooks-m20.js +21 -16
- package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
- package/dist/stores-sql/background-agent-store-sql.js +73 -20
- package/dist/stores-sql/blob-index-sql.d.ts +148 -0
- package/dist/stores-sql/blob-index-sql.js +154 -0
- package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
- package/dist/stores-sql/checkpoint-store-sql.js +86 -71
- package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
- package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
- package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
- package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
- package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
- package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
- package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
- package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +65 -0
- package/dist/stores-sql/session-write-hooks.js +2 -0
- package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
- package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
- package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
- package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
- package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
- package/dist/stores-sql/tool-result-store-sql.js +1 -1
- package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
- package/dist/stores-sql/windowed-session-storage.js +70 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +7 -1
- package/dist/task-a2a.js +18 -17
- package/dist/task-cwd.d.ts +31 -3
- package/dist/task-cwd.js +25 -1
- package/dist/task-mcp.d.ts +11 -3
- package/dist/task-mcp.js +16 -19
- package/dist/task-settings.d.ts +23 -14
- package/dist/task-settings.js +35 -13
- package/dist/terminal.d.ts +25 -43
- package/dist/terminal.js +31 -11
- package/dist/tool-approval.d.ts +152 -137
- package/dist/tool-approval.js +199 -199
- package/dist/trace/core-keyset-guard.d.ts +22 -9
- package/dist/trace/core-vocab-wire.d.ts +95 -0
- package/dist/trace/core-vocab-wire.js +15 -0
- package/dist/trace/engine-notice-wire.d.ts +1 -1
- package/dist/trace/engine-notice-wire.js +2 -0
- package/dist/trace/exit-seat.d.ts +52 -4
- package/dist/trace/exit-seat.js +43 -36
- package/dist/trace/extension-call-face.d.ts +3 -2
- package/dist/trace/extension-call-face.js +3 -1
- package/dist/trace/ledger-events.d.ts +4 -7
- package/dist/trace/ledger-sink.d.ts +1 -30
- package/dist/trace/ledger-sink.js +0 -11
- package/dist/trace/model-segment.d.ts +5 -5
- package/dist/trace/model-segment.js +5 -5
- package/dist/trace/project.d.ts +88 -58
- package/dist/trace/project.js +64 -28
- package/dist/trace/redact.d.ts +124 -28
- package/dist/trace/redact.js +936 -328
- package/dist/trace/self-minted-wire.d.ts +750 -29
- package/dist/trace/self-minted-wire.js +262 -25
- package/dist/trace/sema-provenance.d.ts +45 -41
- package/dist/trace/sema-provenance.js +81 -10
- package/dist/trace/task-notification-facets.d.ts +70 -2
- package/dist/trace/task-notification-facets.js +71 -1
- package/dist/trace/wire-projection-faces.d.ts +43 -8
- package/dist/trace/wire-projection-faces.js +28 -3
- package/dist/unread-request-members.d.ts +66 -0
- package/dist/unread-request-members.js +41 -0
- package/dist/upstream-body.d.ts +23 -0
- package/dist/upstream-body.js +16 -0
- package/dist/url-refusal.d.ts +3 -3
- package/dist/url-refusal.js +11 -4
- package/dist/user-authored-text.d.ts +1 -1
- package/dist/user-input-ledger.d.ts +7 -8
- package/dist/user-input-ledger.js +1 -1
- package/dist/web-admin-client/apply-effective.d.ts +6 -3
- package/dist/web-admin-client/apply-effective.js +33 -40
- package/dist/web-admin-client/apply-ledger.d.ts +16 -7
- package/dist/web-admin-client/apply-ledger.js +5 -2
- package/dist/web-admin-client/candidate-gate.d.ts +35 -3
- package/dist/web-admin-client/candidate-gate.js +53 -5
- package/dist/web-admin-client/center-request.d.ts +6 -3
- package/dist/web-admin-client/center-request.js +17 -16
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -2
- package/dist/web-admin-client/entry-metadata.d.ts +8 -0
- package/dist/web-admin-client/entry-metadata.js +13 -0
- package/dist/web-admin-client/facade.d.ts +1 -1
- package/dist/web-admin-client/http-client.d.ts +2 -1
- package/dist/web-admin-client/http-client.js +40 -13
- package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
- package/dist/web-admin-client/mcp-revocation.js +2 -1
- package/dist/web-admin-client/read-warnings.d.ts +1 -0
- package/dist/web-admin-client/read-warnings.js +1 -0
- package/dist/web-admin-client/restart-signal.js +13 -6
- package/dist/web-admin-client/skills-mcp.d.ts +22 -8
- package/dist/web-admin-client/skills-mcp.js +26 -21
- package/dist/web-admin-client/types.d.ts +35 -51
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/package.json +16 -12
- package/scripts/drain-check-local.mjs +118 -173
- package/scripts/drain-check.mysql.sql +20 -16
- package/scripts/drain-check.pg.sql +20 -16
- package/wire-changes/server@7.147.0.json +813 -0
- package/wire-changes/server@7.148.0.json +1517 -0
- package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
- package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
- package/dist/http/memory-layer-reply.d.ts +0 -30
- package/dist/http/memory-layer-reply.js +0 -24
- package/dist/lsp/e2b-bridge.d.ts +0 -57
- package/dist/lsp/e2b-bridge.js +0 -139
- package/dist/lsp/e2b-manager.d.ts +0 -93
- package/dist/lsp/e2b-manager.js +0 -178
- package/dist/lsp/lsp-frames.d.ts +0 -14
- package/dist/lsp/lsp-frames.js +0 -25
- package/dist/lsp/manager.d.ts +0 -129
- package/dist/lsp/manager.js +0 -127
- package/dist/lsp/types.d.ts +0 -12
- package/dist/lsp/types.js +0 -2
- package/dist/lsp/ws-transport.d.ts +0 -40
- package/dist/lsp/ws-transport.js +0 -210
|
@@ -12,14 +12,19 @@ import { TiDBWorkflowRunStore, TiDBWorkflowCompletionInbox, TiDBWorkflowNotifyJo
|
|
|
12
12
|
import { FileRunStore } from "./file-run-store.js";
|
|
13
13
|
import { LocalWorkflowParkDecisionStore } from "../orchestration/workflow-park-decision.js";
|
|
14
14
|
import { StoreBootRefusalError } from "./store-contracts.js";
|
|
15
|
+
import { databaseAnswerCodesOf, isDeploymentFaultError } from "./sql-errors.js";
|
|
15
16
|
import { buildStoreOpenRefusalTail } from "./store-open-refusal.js";
|
|
16
17
|
import { acquireLocalBackendWithWait } from "./store-lock-wait.js";
|
|
17
18
|
import { NO_SQL_MIGRATIONS, assertExecutionPlacementSwitchAdmissibleOnPool, backfillLocalAskExecutionLanes, backfillLocalExecutionPlacements, runSqlOneTimeMigrations } from "./one-time-migrations.js";
|
|
18
19
|
import { deployedExecutionLanes } from "../execution-lane-caps.js";
|
|
20
|
+
import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
|
|
21
|
+
import { LOCAL_MARKER_FILE, switchLocalScenarioPrefixM42 } from "./scenario-prefix-switch-m42.js";
|
|
22
|
+
import { LOCAL_LEGACY_SKILL_EXEMPTION_MARKER_FILE, dropLocalLegacySkillExemptionsM46 } from "./approval-exemption-skill-m46.js";
|
|
23
|
+
import { LocalTaskAttachmentStore } from "./local-task-attachment-store.js";
|
|
19
24
|
import { assertRetiredSchemaAbsentOnPool } from "./schema-consistency.js";
|
|
20
|
-
import { LocalSessionStore, createLocalSessionRepo } from "./local-session-store.js";
|
|
25
|
+
import { LocalSessionStore, archiveTokenAdoptionCarried, holdArchiveTokenAdoptionDuty, createLocalSessionRepo } from "./local-session-store.js";
|
|
21
26
|
import { SESSION_DURABILITY, SESSION_PLACEMENTS } from "./session-placement.js";
|
|
22
|
-
import { LocalCheckpointStore } from "./local-checkpoint-store.js";
|
|
27
|
+
import { LocalCheckpointStore, dropLocalCheckpointCtxStrict } from "./local-checkpoint-store.js";
|
|
23
28
|
import { FileResumeAnchorStore } from "./file-resume-anchor-store.js";
|
|
24
29
|
import { TiDBApprovalExemptionStore, PgApprovalExemptionStore, FileApprovalExemptionStore } from "./approval-exemption-store.js";
|
|
25
30
|
import { TiDBApprovalNonceStore, PgApprovalNonceStore, FileApprovalNonceStore } from "./approval-nonce-store.js";
|
|
@@ -33,11 +38,13 @@ import { FileUserInputLedgerStore } from "./user-input-ledger-file.js";
|
|
|
33
38
|
import { TiDBUserInputLedgerStore, PgUserInputLedgerStore } from "./user-input-ledger-sql.js";
|
|
34
39
|
import { TiDBResumeAnchorStore, PgResumeAnchorStore } from "./resume-anchor-store-sql.js";
|
|
35
40
|
import { TiDBSessionPolicyStore, PgSessionPolicyStore } from "../stores-sql/session-policy-store-sql.js";
|
|
41
|
+
import { countClientWriteOn } from "./session-withdraw-sql.js";
|
|
36
42
|
import { TiDBWorkflowJournalStore, PgWorkflowJournalStore } from "../stores-sql/workflow-journal-store-sql.js";
|
|
37
|
-
import { TiDBFileHistoryStore, PgFileHistoryStore,
|
|
38
|
-
import {
|
|
43
|
+
import { TiDBFileHistoryStore, PgFileHistoryStore, FILE_HISTORY_BLOB_KEY_PREFIX } from "../stores-sql/file-history-store-sql.js";
|
|
44
|
+
import { SqlBlobIndex } from "../stores-sql/blob-index-sql.js";
|
|
45
|
+
import { MinioBlobBackend } from "./blob-backend.js";
|
|
39
46
|
import { buildDisplaySafeUrl } from "../trace/redact.js";
|
|
40
|
-
import { fileMemoryControlDirFor } from "../memory-scope.js";
|
|
47
|
+
import { fileMemoryControlDirFor, memoryEngineRootFor } from "../memory-scope.js";
|
|
41
48
|
import { createTidbPool, ensureSchema as ensureTidbSchema } from "./tidb-pool.js";
|
|
42
49
|
import { createPgPool, ensurePgSchema, pgPoolOptions } from "./pg-pool.js";
|
|
43
50
|
import { TiDBRunStore, PgRunStore } from "./run-store-sql.js";
|
|
@@ -52,48 +59,69 @@ import { TiDBCostQuota } from "./tidb-cost-quota.js";
|
|
|
52
59
|
import { PgCostQuota } from "./pg-cost-quota.js";
|
|
53
60
|
import { TiDBRateLimiter } from "./tidb-rate-limiter.js";
|
|
54
61
|
import { PgRateLimiter } from "./pg-rate-limiter.js";
|
|
55
|
-
import { TiDBSessionStore } from "
|
|
56
|
-
import { PgSessionStore } from "
|
|
62
|
+
import { TiDBSessionStore } from "../stores-sql/tidb-session-store.js";
|
|
63
|
+
import { PgSessionStore } from "../stores-sql/pg-session-storage.js";
|
|
64
|
+
import { SqlSessionStore } from "./session-store-sql.js";
|
|
57
65
|
import { TiDBSharedMemoryStore, PgSharedMemoryStore } from "./shared-memory-store-sql.js";
|
|
58
66
|
import { TiDBAdoptionLogStore, PgAdoptionLogStore } from "./adoption-log-sql.js";
|
|
59
|
-
import {
|
|
67
|
+
import { SqlRetentionStore } from "../stores-sql/retention-store-sql.js";
|
|
68
|
+
import { SessionDeletionSupersededError } from "../execution-placement.js";
|
|
69
|
+
import { sessionTenantScope } from "../session-children-retire.js";
|
|
70
|
+
import { sqlStoreRetention } from "./retention-declaration.js";
|
|
71
|
+
import { createRetentionDeploymentHooks, createSessionRowsHook, sweepLateCompletionRows } from "./retention-deployment.js";
|
|
72
|
+
import { seatText } from "../trace/exit-seat.js";
|
|
73
|
+
import { createSqlSessionWriteHooks } from "./session-store-sql.js";
|
|
60
74
|
import { TiDBRetentionLaneStore, PgRetentionLaneStore } from "./retention-lane-store-sql.js";
|
|
61
75
|
import { createSqlPermissionRuleStores } from "./permission-rule-store-sql.js";
|
|
62
76
|
import { FILE_PERMISSION_RULE_DIR, createFilePermissionRuleStores, fileRuleBucketOwners, isFileBucketDamaged } from "./permission-rule-store-file.js";
|
|
63
77
|
import { retireImportedLayerRootAllows } from "./imported-layer-root-retirement.js";
|
|
78
|
+
import { buildDataDirLayout, tightenLocalDataDirModes } from "./local-data-dir-modes-m39.js";
|
|
79
|
+
import { holdEngineHighWater } from "./local-engine-high-water.js";
|
|
80
|
+
import { serviceVersion } from "../service-version.js";
|
|
64
81
|
import { mysqlDriver, pgDriver } from "./sql-driver.js";
|
|
65
|
-
import { storeDegradedReasonFor } from "../store-posture.js";
|
|
82
|
+
import { localDataRootHoldsData, storeDegradedReasonFor } from "../store-posture.js";
|
|
66
83
|
import { openWithinWait } from "./store-open-wait.js";
|
|
84
|
+
export function createRunStallWiring(config, observers) {
|
|
85
|
+
const count = observers?.runStallVerdicts;
|
|
86
|
+
return { windowMs: () => config.runStaleSec * 1000, onVerdicts: (landed) => count?.(landed) };
|
|
87
|
+
}
|
|
67
88
|
export function workflowJournalOf(config, backend) {
|
|
68
89
|
return config.selfOrchestrationEnabled && backend ? backend.workflowJournal() : undefined;
|
|
69
90
|
}
|
|
70
|
-
function
|
|
91
|
+
function fileHistoryOptions(config) {
|
|
71
92
|
const s = config.snapshotBlobStore;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
93
|
+
const placement = s
|
|
94
|
+
? {
|
|
95
|
+
blobs: new MinioBlobBackend({
|
|
96
|
+
endpoint: s.endpoint,
|
|
97
|
+
bucket: s.bucket,
|
|
98
|
+
accessKey: s.accessKey,
|
|
99
|
+
secretKey: s.secretKey,
|
|
100
|
+
...(s.region ? { region: s.region } : {}),
|
|
101
|
+
keyPrefix: `${s.keyPrefix ?? ""}${FILE_HISTORY_BLOB_KEY_PREFIX}`,
|
|
102
|
+
...(s.presignTtlSec ? { presignTtlSec: s.presignTtlSec } : {}),
|
|
103
|
+
}),
|
|
104
|
+
}
|
|
105
|
+
: {
|
|
106
|
+
...(config.snapshotBlobSqlMaxBytes !== undefined ? { blobSqlMaxBytes: config.snapshotBlobSqlMaxBytes } : {}),
|
|
107
|
+
log: createLogger(config.logLevel),
|
|
108
|
+
};
|
|
109
|
+
return { ...config.fileHistory, ...placement };
|
|
83
110
|
}
|
|
84
|
-
function
|
|
111
|
+
function legacyBlobIndex(config, dialect, pool) {
|
|
85
112
|
const s = config.snapshotBlobStore;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
113
|
+
const bytes = s
|
|
114
|
+
? new MinioBlobBackend({
|
|
115
|
+
endpoint: s.endpoint,
|
|
116
|
+
bucket: s.bucket,
|
|
117
|
+
accessKey: s.accessKey,
|
|
118
|
+
secretKey: s.secretKey,
|
|
119
|
+
...(s.region ? { region: s.region } : {}),
|
|
120
|
+
...(s.keyPrefix ? { keyPrefix: s.keyPrefix } : {}),
|
|
121
|
+
...(s.presignTtlSec ? { presignTtlSec: s.presignTtlSec } : {}),
|
|
122
|
+
})
|
|
123
|
+
: undefined;
|
|
124
|
+
return new SqlBlobIndex(dialect, pool, { table: "snapshot_blob", ...(bytes !== undefined ? { bytes } : {}), log: createLogger(config.logLevel) });
|
|
97
125
|
}
|
|
98
126
|
async function legacySweepImpl(config, dialect, pool) {
|
|
99
127
|
const sql = "SELECT blob_hash FROM snapshot_blob";
|
|
@@ -108,29 +136,107 @@ async function legacySweepImpl(config, dialect, pool) {
|
|
|
108
136
|
}
|
|
109
137
|
if (orphans.length === 0)
|
|
110
138
|
return 0;
|
|
111
|
-
return
|
|
139
|
+
return legacyBlobIndex(config, dialect, pool).sweep(orphans);
|
|
140
|
+
}
|
|
141
|
+
export function createSqlRetentionCallHooks(db, opts, input) {
|
|
142
|
+
const deployment = createRetentionDeploymentHooks(db.dialect, opts, input);
|
|
143
|
+
return { hooks: { retention: deployment.hooks.retention, session: createSqlSessionWriteHooks(db) }, attachmentShas: deployment.attachmentShas };
|
|
144
|
+
}
|
|
145
|
+
export function createSqlRetentionExecutor(db, opts) {
|
|
146
|
+
const storeOpts = { ...(opts.mailboxTables ? { sessionBoxScope: sessionTenantScope } : {}), ...(opts.logger !== undefined ? { logger: opts.logger } : {}) };
|
|
147
|
+
const reads = new SqlRetentionStore(db, storeOpts);
|
|
148
|
+
const forCall = (input) => {
|
|
149
|
+
const hooks = createSqlRetentionCallHooks(db, opts, input);
|
|
150
|
+
return { store: new SqlRetentionStore(db, { ...storeOpts, transactionHooks: hooks.hooks }), hooks, call: { domain: input.domain, cutoffMs: input.cutoffMs } };
|
|
151
|
+
};
|
|
152
|
+
return {
|
|
153
|
+
retention: reads.retention,
|
|
154
|
+
listRetentionDomains: () => reads.listRetentionDomains(),
|
|
155
|
+
previewRetention: (input) => reads.previewRetention(input),
|
|
156
|
+
expireCheckpoints: async (input) => {
|
|
157
|
+
const one = forCall(input);
|
|
158
|
+
return one.store.expireCheckpoints(one.call);
|
|
159
|
+
},
|
|
160
|
+
deleteExpiredSessions: async (input) => {
|
|
161
|
+
const one = forCall(input);
|
|
162
|
+
const { erasedRows, ...receipt } = await one.store.deleteExpiredSessions(one.call);
|
|
163
|
+
if (erasedRows === undefined)
|
|
164
|
+
return receipt;
|
|
165
|
+
await afterSessionErase(db, opts, erasedRows.sessions);
|
|
166
|
+
return { ...receipt, erased: { ...erasedRows, attachmentShas: one.hooks.attachmentShas() } };
|
|
167
|
+
},
|
|
168
|
+
deleteOrphanToolResults: async (input) => {
|
|
169
|
+
const one = forCall(input);
|
|
170
|
+
return one.store.deleteOrphanToolResults(one.call);
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
async function afterSessionErase(db, opts, sessions) {
|
|
175
|
+
if (!opts.completionInbox || sessions.length === 0)
|
|
176
|
+
return;
|
|
177
|
+
await sweepLateCompletionRows(db, db.dialect, sessions, Date.now()).catch((err) => opts.logger?.warn?.("workflow_completion_late_rows_sweep_failed", { sessions: sessions.length, err: seatText("operator-log-text", String(err)) }));
|
|
178
|
+
}
|
|
179
|
+
export function createSqlSessionEraser(db, opts) {
|
|
180
|
+
const storeOpts = { ...(opts.mailboxTables ? { sessionBoxScope: sessionTenantScope } : {}), ...(opts.logger !== undefined ? { logger: opts.logger } : {}) };
|
|
181
|
+
return {
|
|
182
|
+
async erase(input) {
|
|
183
|
+
const rows = createSessionRowsHook(db.dialect, opts, input.owner ?? "");
|
|
184
|
+
const store = new SqlRetentionStore(db, { ...storeOpts, transactionHooks: { retention: { beforeDelete: rows.beforeDelete }, session: createSqlSessionWriteHooks(db) } });
|
|
185
|
+
const out = await store.eraseSession(input);
|
|
186
|
+
switch (out.outcome) {
|
|
187
|
+
case "absent":
|
|
188
|
+
return { outcome: "superseded" };
|
|
189
|
+
case "refused":
|
|
190
|
+
if (out.refusal instanceof SessionDeletionSupersededError)
|
|
191
|
+
return { outcome: "superseded" };
|
|
192
|
+
throw out.refusal;
|
|
193
|
+
case "erased":
|
|
194
|
+
await afterSessionErase(db, opts, out.rows.sessions);
|
|
195
|
+
return { outcome: "erased", trees: { ...out.rows, attachmentShas: rows.attachmentShas() } };
|
|
196
|
+
default: {
|
|
197
|
+
const unknown = out;
|
|
198
|
+
throw new Error(`session erase: no arm for ${JSON.stringify(unknown)}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
};
|
|
112
203
|
}
|
|
113
204
|
export function assertCloudSnapshotBlobPosture(kind, config) {
|
|
114
205
|
if (kind === "local" || config.snapshotBlobStore || config.snapshotBlobAllowSql)
|
|
115
206
|
return;
|
|
207
|
+
const fact = SQL_BLOB_POSTURE_FACTS[kind];
|
|
116
208
|
throw new Error("cloud deployments (DB_BACKEND=mysql|pg) must configure object storage for rewind file-history blobs " +
|
|
117
|
-
|
|
118
|
-
"txn-entry-size-limit (default 6MiB) / the mysql-protocol packet limit (bytes belong in object storage — " +
|
|
209
|
+
`(MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY): ${fact.wall} (bytes belong in object storage — ` +
|
|
119
210
|
"same ruling as the D-1 attachment store). Single-box/test rigs may explicitly opt out with " +
|
|
120
|
-
|
|
211
|
+
`SNAPSHOT_BLOB_ALLOW_SQL_BYTES=true (${fact.cap}; an over-cap tracked file's first-touch ` +
|
|
121
212
|
"backup is refused typed, which under the default DV-14 policy refuses that edit).");
|
|
122
213
|
}
|
|
214
|
+
const SQL_BLOB_POSTURE_FACTS = {
|
|
215
|
+
mysql: {
|
|
216
|
+
wall: "single-row SQL blob writes hit TiDB's txn-entry-size-limit (default 6MiB) / the mysql-protocol packet limit",
|
|
217
|
+
cap: "a per-blob cap then applies",
|
|
218
|
+
},
|
|
219
|
+
pg: {
|
|
220
|
+
wall: "single-row SQL blob writes put each blob into one PostgreSQL bytea value (PostgreSQL holds at most 1 GB in one value; this service reads no row-size or statement-size wall from PostgreSQL, so it derives no smaller default cap)",
|
|
221
|
+
cap: "this service derives no per-blob cap on PostgreSQL, so none applies unless SNAPSHOT_BLOB_SQL_MAX_BYTES is set — then a per-blob cap applies",
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
export function buildSqlOneTimeMigrationInput(config) {
|
|
225
|
+
return { lanes: deployedExecutionLanes(config), liveRunWindowMs: config.runStaleSec * 1000, identityBoundary: DEPLOYMENT_SHAPE_PREDICATES.identityBoundary.holds(config) };
|
|
226
|
+
}
|
|
123
227
|
class TiDBBackend {
|
|
124
228
|
pool;
|
|
125
229
|
config;
|
|
230
|
+
observers;
|
|
126
231
|
kind = "mysql";
|
|
127
|
-
constructor(pool, config) {
|
|
232
|
+
constructor(pool, config, observers) {
|
|
128
233
|
this.pool = pool;
|
|
129
234
|
this.config = config;
|
|
235
|
+
this.observers = observers;
|
|
130
236
|
}
|
|
131
237
|
ensureSchema() { return ensureTidbSchema(this.pool); }
|
|
132
238
|
close() { return this.pool.end(); }
|
|
133
|
-
run() { return (this.runStoreInst ??= new TiDBRunStore(this.pool)); }
|
|
239
|
+
run() { return (this.runStoreInst ??= new TiDBRunStore(this.pool, createRunStallWiring(this.config, this.observers))); }
|
|
134
240
|
runStoreInst;
|
|
135
241
|
resumeAnchor() { return new TiDBResumeAnchorStore(this.pool); }
|
|
136
242
|
approvalExemption() { return new TiDBApprovalExemptionStore(this.pool); }
|
|
@@ -140,13 +246,13 @@ class TiDBBackend {
|
|
|
140
246
|
permissionRule() { return createSqlPermissionRuleStores(mysqlDriver(this.pool)); }
|
|
141
247
|
sendFileLedger() { return new TiDBSendFileLedger(this.pool); }
|
|
142
248
|
userInputLedger() { return new TiDBUserInputLedgerStore(this.pool); }
|
|
143
|
-
sessionPolicy(logger) { return new TiDBSessionPolicyStore(this.pool, logger); }
|
|
144
|
-
fileHistory() { return new TiDBFileHistoryStore(this.pool,
|
|
249
|
+
sessionPolicy(logger) { return new TiDBSessionPolicyStore(this.pool, countClientWriteOn, logger ?? createLogger()); }
|
|
250
|
+
fileHistory() { return new TiDBFileHistoryStore(this.pool, fileHistoryOptions(this.config)); }
|
|
145
251
|
memoryOptOutGrant() { return new TiDBMemoryOptOutGrantStore(this.pool); }
|
|
146
252
|
sessionCaptureRecords() { return () => (this.captureRecordsInst ??= new TiDBSessionCaptureRecordStore(this.pool)); }
|
|
147
253
|
captureRecordsInst;
|
|
148
254
|
legacySnapshotBlobSweep() { return legacySweepImpl(this.config, "mysql", this.pool); }
|
|
149
|
-
runOneTimeMigrations() { return runSqlOneTimeMigrations("mysql", this.pool,
|
|
255
|
+
runOneTimeMigrations() { return runSqlOneTimeMigrations("mysql", this.pool, buildSqlOneTimeMigrationInput(this.config)); }
|
|
150
256
|
workflowJournal() { return new TiDBWorkflowJournalStore(this.pool); }
|
|
151
257
|
outcomeSink() { return new TiDBOutcomeLedger(this.pool); }
|
|
152
258
|
workflowRun(onWarn) { return new TiDBWorkflowRunStore(this.pool, onWarn); }
|
|
@@ -156,19 +262,20 @@ class TiDBBackend {
|
|
|
156
262
|
workflowParkDecisions() { return (this.parkDecisionsInst ??= new SqlWorkflowParkDecisionStore(this.run())); }
|
|
157
263
|
parkDecisionsInst;
|
|
158
264
|
sharedMemoryStore(authorizer) { return new TiDBSharedMemoryStore(this.pool, authorizer); }
|
|
159
|
-
checkpoint(logger) { return new TiDBCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep)
|
|
265
|
+
checkpoint(logger) { return new TiDBCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
|
|
160
266
|
checkpointReadView() { return this.checkpoint(); }
|
|
161
267
|
toolResult() { return new TiDBToolResultStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
|
|
162
268
|
imageIndex() { return new TiDBImageIndex(this.pool); }
|
|
163
269
|
imageBake() { return new TiDBImageBake(this.pool); }
|
|
164
270
|
leaderRun() { return new TiDBLeaderRunStore(this.pool); }
|
|
165
271
|
device() { return new TiDBDeviceStore(this.pool); }
|
|
166
|
-
retention(opts) { return
|
|
272
|
+
retention(opts) { return createSqlRetentionExecutor(mysqlDriver(this.pool), opts); }
|
|
273
|
+
sessionEraser(opts) { return createSqlSessionEraser(mysqlDriver(this.pool), opts); }
|
|
167
274
|
retentionLane() { return new TiDBRetentionLaneStore(this.pool); }
|
|
168
275
|
breaker(onWriteFail) { return new TiDBBreakerState(this.pool, onWriteFail); }
|
|
169
276
|
costQuota(limitMicroUsd, windowMs, onDegraded) { return new TiDBCostQuota(this.pool, limitMicroUsd, windowMs, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
|
|
170
277
|
rateLimiter(limit, onDegraded) { return new TiDBRateLimiter(this.pool, limit, undefined, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
|
|
171
|
-
session() { return new TiDBSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
|
|
278
|
+
session() { return new SqlSessionStore(mysqlDriver(this.pool), (hooks) => new TiDBSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep), hooks })); }
|
|
172
279
|
adoptionLog() { return new TiDBAdoptionLogStore(this.pool); }
|
|
173
280
|
mysqlPool() { return this.pool; }
|
|
174
281
|
pgPool() { return undefined; }
|
|
@@ -177,14 +284,16 @@ class TiDBBackend {
|
|
|
177
284
|
class PgBackend {
|
|
178
285
|
pool;
|
|
179
286
|
config;
|
|
287
|
+
observers;
|
|
180
288
|
kind = "pg";
|
|
181
|
-
constructor(pool, config) {
|
|
289
|
+
constructor(pool, config, observers) {
|
|
182
290
|
this.pool = pool;
|
|
183
291
|
this.config = config;
|
|
292
|
+
this.observers = observers;
|
|
184
293
|
}
|
|
185
294
|
ensureSchema() { return ensurePgSchema(this.pool); }
|
|
186
295
|
close() { return this.pool.end(); }
|
|
187
|
-
run() { return (this.runStoreInst ??= new PgRunStore(this.pool)); }
|
|
296
|
+
run() { return (this.runStoreInst ??= new PgRunStore(this.pool, createRunStallWiring(this.config, this.observers))); }
|
|
188
297
|
runStoreInst;
|
|
189
298
|
resumeAnchor() { return new PgResumeAnchorStore(this.pool); }
|
|
190
299
|
approvalExemption() { return new PgApprovalExemptionStore(this.pool); }
|
|
@@ -194,13 +303,13 @@ class PgBackend {
|
|
|
194
303
|
permissionRule() { return createSqlPermissionRuleStores(pgDriver(this.pool)); }
|
|
195
304
|
sendFileLedger() { return new PgSendFileLedger(this.pool); }
|
|
196
305
|
userInputLedger() { return new PgUserInputLedgerStore(this.pool); }
|
|
197
|
-
sessionPolicy(logger) { return new PgSessionPolicyStore(this.pool, logger); }
|
|
198
|
-
fileHistory() { return new PgFileHistoryStore(this.pool,
|
|
306
|
+
sessionPolicy(logger) { return new PgSessionPolicyStore(this.pool, countClientWriteOn, logger ?? createLogger()); }
|
|
307
|
+
fileHistory() { return new PgFileHistoryStore(this.pool, fileHistoryOptions(this.config)); }
|
|
199
308
|
memoryOptOutGrant() { return new PgMemoryOptOutGrantStore(this.pool); }
|
|
200
309
|
sessionCaptureRecords() { return () => (this.captureRecordsInst ??= new PgSessionCaptureRecordStore(this.pool)); }
|
|
201
310
|
captureRecordsInst;
|
|
202
311
|
legacySnapshotBlobSweep() { return legacySweepImpl(this.config, "pg", this.pool); }
|
|
203
|
-
runOneTimeMigrations() { return runSqlOneTimeMigrations("pg", this.pool,
|
|
312
|
+
runOneTimeMigrations() { return runSqlOneTimeMigrations("pg", this.pool, buildSqlOneTimeMigrationInput(this.config)); }
|
|
204
313
|
workflowJournal() { return new PgWorkflowJournalStore(this.pool); }
|
|
205
314
|
outcomeSink() { return new PgOutcomeLedger(this.pool); }
|
|
206
315
|
workflowRun(onWarn) { return new PgWorkflowRunStore(this.pool, onWarn); }
|
|
@@ -210,19 +319,20 @@ class PgBackend {
|
|
|
210
319
|
workflowParkDecisions() { return (this.parkDecisionsInst ??= new SqlWorkflowParkDecisionStore(this.run())); }
|
|
211
320
|
parkDecisionsInst;
|
|
212
321
|
sharedMemoryStore(authorizer) { return new PgSharedMemoryStore(this.pool, authorizer); }
|
|
213
|
-
checkpoint(logger) { return new PgCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep)
|
|
322
|
+
checkpoint(logger) { return new PgCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
|
|
214
323
|
checkpointReadView() { return this.checkpoint(); }
|
|
215
324
|
toolResult() { return new PgToolResultStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
|
|
216
325
|
imageIndex() { return new PgImageIndex(this.pool); }
|
|
217
326
|
imageBake() { return new PgImageBake(this.pool); }
|
|
218
327
|
leaderRun() { return new PgLeaderRunStore(this.pool); }
|
|
219
328
|
device() { return new PgDeviceStore(this.pool); }
|
|
220
|
-
retention(opts) { return
|
|
329
|
+
retention(opts) { return createSqlRetentionExecutor(pgDriver(this.pool), opts); }
|
|
330
|
+
sessionEraser(opts) { return createSqlSessionEraser(pgDriver(this.pool), opts); }
|
|
221
331
|
retentionLane() { return new PgRetentionLaneStore(this.pool); }
|
|
222
332
|
breaker(onWriteFail) { return new PgBreakerState(this.pool, onWriteFail); }
|
|
223
333
|
costQuota(limitMicroUsd, windowMs, onDegraded) { return new PgCostQuota(this.pool, limitMicroUsd, windowMs, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
|
|
224
334
|
rateLimiter(limit, onDegraded) { return new PgRateLimiter(this.pool, limit, undefined, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
|
|
225
|
-
session() { return new PgSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
|
|
335
|
+
session() { return new SqlSessionStore(pgDriver(this.pool), (hooks) => new PgSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep), hooks })); }
|
|
226
336
|
adoptionLog() { return new PgAdoptionLogStore(this.pool); }
|
|
227
337
|
mysqlPool() { return undefined; }
|
|
228
338
|
pgPool() { return this.pool; }
|
|
@@ -231,6 +341,22 @@ class PgBackend {
|
|
|
231
341
|
export function localSessionRowsOf(backend) {
|
|
232
342
|
return backend instanceof LocalBackend ? backend.session() : undefined;
|
|
233
343
|
}
|
|
344
|
+
export function localClientWritesOf(backend) {
|
|
345
|
+
return backend instanceof LocalBackend ? backend.session() : undefined;
|
|
346
|
+
}
|
|
347
|
+
function createClientCountedPolicyStore(inner, sessions) {
|
|
348
|
+
const listBySession = inner.listBySession?.bind(inner);
|
|
349
|
+
const deleteBySession = inner.deleteBySession?.bind(inner);
|
|
350
|
+
return {
|
|
351
|
+
getRules: (sessionId, principal) => inner.getRules(sessionId, principal),
|
|
352
|
+
putRules: (sessionId, principal, rules, opts) => sessions.withClientWrite(sessionId, async (count) => {
|
|
353
|
+
await count();
|
|
354
|
+
return inner.putRules(sessionId, principal, rules, opts);
|
|
355
|
+
}),
|
|
356
|
+
...(listBySession !== undefined ? { listBySession } : {}),
|
|
357
|
+
...(deleteBySession !== undefined ? { deleteBySession } : {}),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
234
360
|
class LocalBackend {
|
|
235
361
|
kind = "local";
|
|
236
362
|
fileBackend;
|
|
@@ -250,34 +376,30 @@ class LocalBackend {
|
|
|
250
376
|
discloseWarn;
|
|
251
377
|
parkDecisionLedgerRoot;
|
|
252
378
|
executionLanes;
|
|
253
|
-
|
|
379
|
+
identityBoundary;
|
|
380
|
+
dataDirLayout;
|
|
381
|
+
constructor(fileBackend, config, discloseWarn, onWarn, onError, observers) {
|
|
254
382
|
this.executionLanes = deployedExecutionLanes(config);
|
|
383
|
+
this.identityBoundary = DEPLOYMENT_SHAPE_PREDICATES.identityBoundary.holds(config);
|
|
255
384
|
this.onWarn = onWarn;
|
|
256
|
-
this.discloseWarn =
|
|
385
|
+
this.discloseWarn = discloseWarn;
|
|
257
386
|
this.onError = onError;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
root,
|
|
261
|
-
...(config.fileHistory !== undefined ? { fileHistory: config.fileHistory } : {}),
|
|
262
|
-
onCorruptRead: createDurableAbsenceSeat((msg, fields) => this.discloseWarn(msg, fields), root, "file-history = a rewind boundary or scope read as missing"),
|
|
263
|
-
}), config.storeLockWaitMs, (fields) => this.onWarn?.("store_dir_lock_wait", { ...fields }));
|
|
264
|
-
}
|
|
265
|
-
catch (e) {
|
|
266
|
-
if (e instanceof AdoptionError)
|
|
267
|
-
throw e;
|
|
268
|
-
const tail = buildStoreOpenRefusalTail(e, "http");
|
|
269
|
-
throw new Error(`DB_BACKEND=local cannot open data dir ${root}: ${e instanceof Error ? e.message : String(e)}` +
|
|
270
|
-
(tail === undefined ? "" : ` ${tail}`));
|
|
271
|
-
}
|
|
387
|
+
this.fileBackend = fileBackend;
|
|
388
|
+
const root = localBackendRootOf(config);
|
|
272
389
|
const corruptReadWarn = (msg, fields) => this.discloseWarn(msg, fields);
|
|
390
|
+
this.dataDirLayout = buildDataDirLayout({ configuredRoot: root, physicalRoot: this.fileBackend.root, memoryEngineRoot: memoryEngineRootFor(config, root) });
|
|
273
391
|
this.runStore = new FileRunStore(this.fileBackend.root, {
|
|
392
|
+
rootRows: () => this.sessionStore,
|
|
274
393
|
error: (msg, fields) => void (this.onError ?? this.onWarn)?.(msg, fields),
|
|
275
394
|
strictHydrate: config.runStoreStrictHydrate,
|
|
395
|
+
stall: createRunStallWiring(config, observers),
|
|
276
396
|
});
|
|
277
|
-
|
|
397
|
+
const physicalRoot = this.fileBackend.root;
|
|
398
|
+
this.sessionStore = new LocalSessionStore(createLocalSessionRepo(physicalRoot), this.runStore, physicalRoot, {
|
|
278
399
|
log: createLogger(config.logLevel),
|
|
279
400
|
durability: SESSION_DURABILITY,
|
|
280
401
|
placements: SESSION_PLACEMENTS,
|
|
402
|
+
withdrawCheckpointCtx: (sessionId) => dropLocalCheckpointCtxStrict(physicalRoot, sessionId),
|
|
281
403
|
});
|
|
282
404
|
this.parkDecisionLedgerRoot = config.workflowRunStoreBackend === "memory" ? undefined : join(this.fileBackend.root, "workflows");
|
|
283
405
|
this.resumeAnchorStore = new FileResumeAnchorStore(this.fileBackend.root);
|
|
@@ -297,28 +419,69 @@ class LocalBackend {
|
|
|
297
419
|
: (plane) => fileSessionCaptureRecordStore(plane?.controlDir ?? ownControlDir);
|
|
298
420
|
}
|
|
299
421
|
async ensureSchema() {
|
|
422
|
+
this.executionLaneWordsRenamed += await this.sessionStore.renameRetiredExecutionLaneWordM40();
|
|
300
423
|
await this.sessionStore.assertStrictSidecarsReadable();
|
|
424
|
+
await this.sessionStore.finishPendingDrops();
|
|
301
425
|
await this.sessionStore.settleArchiveSnapshots();
|
|
426
|
+
const adoption = await this.sessionStore.adoptArchiveTokensM47();
|
|
427
|
+
this.archiveTokensAdopted += adoption.adopted;
|
|
428
|
+
this.archiveTokensMinted += adoption.minted;
|
|
302
429
|
}
|
|
430
|
+
executionLaneWordsRenamed = 0;
|
|
431
|
+
archiveTokensAdopted = 0;
|
|
432
|
+
archiveTokensMinted = 0;
|
|
303
433
|
async runOneTimeMigrations() {
|
|
434
|
+
const scenarioPrefixSourcesScanned = await switchLocalScenarioPrefixM42(join(this.fileBackend.root, LOCAL_MARKER_FILE), [
|
|
435
|
+
{ source: "runs", rows: () => this.runStore.scenarioPrefixOwnerRowsM42() },
|
|
436
|
+
{ source: "sessions", rows: () => this.sessionStore.scenarioPrefixOwnerRowsM42() },
|
|
437
|
+
{ source: "approval asks", rows: () => this.approvalAskStore.scenarioPrefixOwnerRowsM42() },
|
|
438
|
+
{ source: "attachments", rows: () => new LocalTaskAttachmentStore(this.fileBackend.root).scenarioPrefixOwnerRowsM42() },
|
|
439
|
+
]);
|
|
440
|
+
tightenLocalDataDirModes(this.dataDirLayout, {
|
|
441
|
+
tightened: (msg, meta) => this.onWarn?.(msg, meta),
|
|
442
|
+
refused: (msg, meta) => this.discloseWarn(msg, meta),
|
|
443
|
+
});
|
|
444
|
+
const runErrorCodeColumnRewritten = this.runStore.migrateRunErrorCodeColumnM44();
|
|
445
|
+
const runObjectivePreviewRewritten = this.runStore.migrateRunObjectivePreviewM45();
|
|
446
|
+
const shellSentinelOwnersCleared = this.identityBoundary ? 0 : (await this.sessionStore.clearShellSentinelOwnersM48()) + this.runStore.clearShellSentinelOwnersM48();
|
|
447
|
+
const checkpointHostSessionsBackfilled = existsSync(join(this.fileBackend.root, "checkpoint-session-tokens.json")) || existsSync(join(this.fileBackend.root, "checkpoint-scopes.json"))
|
|
448
|
+
? await this.checkpointStoreOf().backfillHostSessionsM49()
|
|
449
|
+
: 0;
|
|
450
|
+
const legacySkillExemptionsDropped = dropLocalLegacySkillExemptionsM46(join(this.fileBackend.root, LOCAL_LEGACY_SKILL_EXEMPTION_MARKER_FILE), this.approvalExemptionStore);
|
|
304
451
|
const archives = await this.sessionStore.migrateLocalArchives();
|
|
305
452
|
const placements = await backfillLocalExecutionPlacements(this.runStore.sessionIdsWithRuns(), this.sessionStore.executionPlacementBackfill, { lanes: this.executionLanes });
|
|
306
|
-
const importedLayerRoot = { importedLayerRootAllowsRetired: [], importedLayerRootBucketsSkipped: [] };
|
|
453
|
+
const importedLayerRoot = { importedLayerRootAllowsRetired: [], importedLayerRootBucketsSkipped: [], importedLayerRootBucketsUnnamed: 0 };
|
|
307
454
|
if (existsSync(join(this.fileBackend.root, FILE_PERMISSION_RULE_DIR))) {
|
|
308
455
|
const rules = this.permissionRule();
|
|
309
456
|
await retireImportedLayerRootAllows({ candidateOwners: () => fileRuleBucketOwners(rules), durable: rules.durable, isWholeBucketRefusal: isFileBucketDamaged, isVanishedBucket: () => false }, importedLayerRoot);
|
|
310
457
|
}
|
|
458
|
+
const localArchiveTokensAdopted = this.archiveTokensAdopted;
|
|
459
|
+
const localArchiveTokensMinted = this.archiveTokensMinted;
|
|
460
|
+
this.archiveTokensAdopted = 0;
|
|
461
|
+
this.archiveTokensMinted = 0;
|
|
462
|
+
const executionLaneWordsRenamed = this.executionLaneWordsRenamed + this.approvalAskStore.renameRetiredExecutionLaneWordM40();
|
|
463
|
+
this.executionLaneWordsRenamed = 0;
|
|
464
|
+
const askExecutionLanesBackfilled = backfillLocalAskExecutionLanes(this.approvalAskStore, { lanes: this.executionLanes });
|
|
311
465
|
return {
|
|
312
466
|
...NO_SQL_MIGRATIONS,
|
|
467
|
+
runErrorCodeColumnRewritten,
|
|
468
|
+
runObjectivePreviewRewritten,
|
|
469
|
+
shellSentinelOwnersCleared,
|
|
470
|
+
checkpointHostSessionsBackfilled,
|
|
471
|
+
legacySkillExemptionsDropped,
|
|
313
472
|
executionPlacementsBackfilled: placements.backfilled,
|
|
314
473
|
executionPlacementSessionsUnreadable: placements.unreadable,
|
|
315
|
-
askExecutionLanesBackfilled
|
|
474
|
+
askExecutionLanesBackfilled,
|
|
475
|
+
executionLaneWordsRenamed,
|
|
476
|
+
scenarioPrefixSourcesScanned,
|
|
316
477
|
askJournalRecordsUpgraded: this.approvalAskStore.upgradeJournalEnvelope(),
|
|
317
478
|
localArchiveRowFactsBackfilled: archives.rowFactsBackfilled,
|
|
318
479
|
localArchivesAnonymized: archives.anonymized,
|
|
319
480
|
localArchivesKeptStamped: archives.keptStamped,
|
|
320
481
|
localArchivesUnreadable: archives.unreadable,
|
|
321
482
|
localArchiveSnapshotsRecovered: archives.snapshotsRecovered,
|
|
483
|
+
localArchiveTokensAdopted,
|
|
484
|
+
localArchiveTokensMinted,
|
|
322
485
|
...importedLayerRoot,
|
|
323
486
|
};
|
|
324
487
|
}
|
|
@@ -363,7 +526,6 @@ class LocalBackend {
|
|
|
363
526
|
return (this.checkpointStoreInst ??= new LocalCheckpointStore(this.fileBackend.root, {
|
|
364
527
|
getActiveTaskId: (sessionId) => this.runStore.getActiveTaskId(sessionId),
|
|
365
528
|
readSessionOwner: async (sessionId) => (await this.sessionStore.headOf(sessionId))?.owner,
|
|
366
|
-
claims: this.runStore,
|
|
367
529
|
}));
|
|
368
530
|
}
|
|
369
531
|
checkpoint() {
|
|
@@ -371,8 +533,8 @@ class LocalBackend {
|
|
|
371
533
|
if (!this.checkpointProbeWired) {
|
|
372
534
|
this.checkpointProbeWired = true;
|
|
373
535
|
this.runStore.setCheckpointProbe({
|
|
374
|
-
hasPending: async (sessionId) => (await cs.findPendingTokenBySession(sessionId)) !== null,
|
|
375
|
-
hasExpired: (sessionId) => cs.
|
|
536
|
+
hasPending: async (sessionId) => (await cs.findPendingTokenBySession(sessionId, undefined, { axis: "run" })) !== null,
|
|
537
|
+
hasExpired: (sessionId) => cs.hasExpiredForRun(sessionId),
|
|
376
538
|
});
|
|
377
539
|
}
|
|
378
540
|
return cs;
|
|
@@ -380,7 +542,8 @@ class LocalBackend {
|
|
|
380
542
|
checkpointReadView() { return this.checkpointStoreOf(); }
|
|
381
543
|
checkpointProbeWired = false;
|
|
382
544
|
checkpointStoreInst;
|
|
383
|
-
sessionPolicy() { return this.fileBackend.sessionPolicyStore; }
|
|
545
|
+
sessionPolicy() { return (this.sessionPolicyInst ??= createClientCountedPolicyStore(this.fileBackend.sessionPolicyStore, this.sessionStore)); }
|
|
546
|
+
sessionPolicyInst;
|
|
384
547
|
fileUsageWindowStore() { return this.fileBackend.usageWindowStore; }
|
|
385
548
|
fileHistory() { return this.fileBackend.fileHistoryStore; }
|
|
386
549
|
memoryOptOutGrant() { return undefined; }
|
|
@@ -390,25 +553,109 @@ class LocalBackend {
|
|
|
390
553
|
outcomeSink() { return this.outcomeSinkInst; }
|
|
391
554
|
session() { return this.sessionStore; }
|
|
392
555
|
toolResult() { return this.fileBackend.toolResultStore; }
|
|
556
|
+
engineFileStores() {
|
|
557
|
+
const fb = this.fileBackend;
|
|
558
|
+
return { checkpointStore: fb.checkpointStore, backgroundAgentStore: fb.backgroundAgentStore, mailboxStore: fb.mailboxStore, rosterStore: fb.rosterStore };
|
|
559
|
+
}
|
|
393
560
|
mysqlPool() { return undefined; }
|
|
394
561
|
pgPool() { return undefined; }
|
|
395
562
|
}
|
|
396
563
|
export function counterStoreLabel(store, kind) {
|
|
397
564
|
return store ? `shared(${kind ?? "unknown"})` : "in-process";
|
|
398
565
|
}
|
|
399
|
-
|
|
566
|
+
const LOCAL_OPEN_REFUSAL_HEAD = {
|
|
567
|
+
http: (root) => `DB_BACKEND=local cannot open data dir ${root}`,
|
|
568
|
+
"run-local": (root) => `cannot open local data dir ${root}`,
|
|
569
|
+
};
|
|
570
|
+
export function openLocalBackend(config, opts) {
|
|
571
|
+
const { lane, onWarn, onError, observers } = opts;
|
|
572
|
+
const root = localBackendRootOf(config);
|
|
573
|
+
const discloseWarn = onWarn ?? createLogger().warn;
|
|
574
|
+
let fileBackend;
|
|
575
|
+
try {
|
|
576
|
+
fileBackend = acquireLocalBackendWithWait(() => new FileStorageBackend({
|
|
577
|
+
root,
|
|
578
|
+
...(config.fileHistory !== undefined ? { fileHistory: config.fileHistory } : {}),
|
|
579
|
+
onCorruptRead: createDurableAbsenceSeat(discloseWarn, root, "file-history = a rewind boundary or scope read as missing"),
|
|
580
|
+
}), config.storeLockWaitMs, (fields) => onWarn?.("store_dir_lock_wait", { ...fields }));
|
|
581
|
+
}
|
|
582
|
+
catch (e) {
|
|
583
|
+
if (e instanceof AdoptionError)
|
|
584
|
+
throw e;
|
|
585
|
+
const tail = buildStoreOpenRefusalTail(e, lane);
|
|
586
|
+
throw new Error(`${LOCAL_OPEN_REFUSAL_HEAD[lane](root)}: ${e instanceof Error ? e.message : String(e)}` +
|
|
587
|
+
(tail === undefined ? "" : ` ${tail}`));
|
|
588
|
+
}
|
|
589
|
+
try {
|
|
590
|
+
const physicalRoot = fileBackend.root;
|
|
591
|
+
holdEngineHighWater(physicalRoot, serviceVersion(), (prior) => holdArchiveTokenAdoptionDuty(physicalRoot, prior, archiveTokenAdoptionCarried()));
|
|
592
|
+
}
|
|
593
|
+
catch (refusal) {
|
|
594
|
+
return new RefusedLocalBackend(fileBackend, refusal instanceof Error ? refusal : new Error(String(refusal)));
|
|
595
|
+
}
|
|
596
|
+
try {
|
|
597
|
+
return new LocalBackend(fileBackend, config, discloseWarn, onWarn, onError, observers);
|
|
598
|
+
}
|
|
599
|
+
catch (failure) {
|
|
600
|
+
return new RefusedLocalBackend(fileBackend, failure instanceof Error ? failure : new Error(String(failure)));
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
class RefusedLocalBackend {
|
|
604
|
+
fileBackend;
|
|
605
|
+
refusal;
|
|
606
|
+
kind = "local";
|
|
607
|
+
constructor(fileBackend, refusal) {
|
|
608
|
+
this.fileBackend = fileBackend;
|
|
609
|
+
this.refusal = refusal;
|
|
610
|
+
}
|
|
611
|
+
refused() {
|
|
612
|
+
throw this.refusal;
|
|
613
|
+
}
|
|
614
|
+
async ensureSchema() {
|
|
615
|
+
return this.refused();
|
|
616
|
+
}
|
|
617
|
+
async runOneTimeMigrations() {
|
|
618
|
+
return this.refused();
|
|
619
|
+
}
|
|
620
|
+
async close() {
|
|
621
|
+
await this.fileBackend.dispose();
|
|
622
|
+
}
|
|
623
|
+
run() { return this.refused(); }
|
|
624
|
+
resumeAnchor() { return this.refused(); }
|
|
625
|
+
approvalExemption() { return this.refused(); }
|
|
626
|
+
approvalNonce() { return this.refused(); }
|
|
627
|
+
orgDeliveryQuota() { return this.refused(); }
|
|
628
|
+
approvalAsk() { return this.refused(); }
|
|
629
|
+
permissionRule() { return this.refused(); }
|
|
630
|
+
sendFileLedger() { return this.refused(); }
|
|
631
|
+
userInputLedger() { return this.refused(); }
|
|
632
|
+
sessionPolicy() { return this.refused(); }
|
|
633
|
+
fileHistory() { return this.refused(); }
|
|
634
|
+
memoryOptOutGrant() { return this.refused(); }
|
|
635
|
+
sessionCaptureRecords() { return this.refused(); }
|
|
636
|
+
workflowJournal() { return this.refused(); }
|
|
637
|
+
outcomeSink() { return this.refused(); }
|
|
638
|
+
checkpointReadView() { return this.refused(); }
|
|
639
|
+
session() { return this.refused(); }
|
|
640
|
+
engineFileStores() { return this.refused(); }
|
|
641
|
+
toolResult() { return this.refused(); }
|
|
642
|
+
fileUsageWindowStore() { return this.refused(); }
|
|
643
|
+
mysqlPool() { return undefined; }
|
|
644
|
+
pgPool() { return undefined; }
|
|
645
|
+
}
|
|
646
|
+
export function createStoreBackend(config, onWarn, onError, observers) {
|
|
400
647
|
if (config.dbBackend === "local")
|
|
401
|
-
return
|
|
648
|
+
return openLocalBackend(config, { lane: "http", onWarn, onError, observers });
|
|
402
649
|
if (config.dbBackend === "pg") {
|
|
403
650
|
if (!config.pg)
|
|
404
651
|
return undefined;
|
|
405
652
|
const pool = createPgPool(pgPoolOptions(config.pg, config.dbQueryTimeoutMs), onWarn);
|
|
406
|
-
return withRetiredSchemaProbe(new PgBackend(pool, config), { dialect: "pg", pool }, { lanes: deployedExecutionLanes(config) });
|
|
653
|
+
return withRetiredSchemaProbe(new PgBackend(pool, config, observers), { dialect: "pg", pool }, { lanes: deployedExecutionLanes(config) });
|
|
407
654
|
}
|
|
408
655
|
if (!config.tidb)
|
|
409
656
|
return undefined;
|
|
410
657
|
const pool = createTidbPool(config);
|
|
411
|
-
return withRetiredSchemaProbe(new TiDBBackend(pool, config), { dialect: "mysql", pool }, { lanes: deployedExecutionLanes(config) });
|
|
658
|
+
return withRetiredSchemaProbe(new TiDBBackend(pool, config, observers), { dialect: "mysql", pool }, { lanes: deployedExecutionLanes(config) });
|
|
412
659
|
}
|
|
413
660
|
function withRetiredSchemaProbe(inner, target, executionPlacementSwitch) {
|
|
414
661
|
const guarded = Object.create(inner);
|
|
@@ -419,16 +666,19 @@ function withRetiredSchemaProbe(inner, target, executionPlacementSwitch) {
|
|
|
419
666
|
};
|
|
420
667
|
return guarded;
|
|
421
668
|
}
|
|
422
|
-
export
|
|
669
|
+
export function localBackendRootOf(config) {
|
|
670
|
+
return config.localDataRoot ?? join(homedir(), ".ai-agent");
|
|
671
|
+
}
|
|
672
|
+
export async function openStoreBackendWithFallback(config, logger, observers) {
|
|
423
673
|
const sqlEngine = config.dbBackend === "mysql" || config.dbBackend === "pg" ? config.dbBackend : undefined;
|
|
424
|
-
const mayFallback = config.dbBackend === "local" && !config.dbBackendExplicit;
|
|
674
|
+
const mayFallback = config.dbBackend === "local" && !config.dbBackendExplicit && !localDataRootHoldsData(localBackendRootOf(config));
|
|
425
675
|
let backend;
|
|
426
676
|
let inFlight;
|
|
427
677
|
try {
|
|
428
678
|
const attempt = async () => {
|
|
429
679
|
let built;
|
|
430
680
|
try {
|
|
431
|
-
built = createStoreBackend(config, (msg, meta) => logger.warn(msg, meta), logger.error === undefined ? undefined : (msg, meta) => logger.error(msg, meta));
|
|
681
|
+
built = createStoreBackend(config, (msg, meta) => logger.warn(msg, meta), logger.error === undefined ? undefined : (msg, meta) => logger.error(msg, meta), observers);
|
|
432
682
|
inFlight = built;
|
|
433
683
|
if (built)
|
|
434
684
|
await built.ensureSchema();
|
|
@@ -448,8 +698,6 @@ export async function openStoreBackendWithFallback(config, logger) {
|
|
|
448
698
|
}
|
|
449
699
|
catch (err) {
|
|
450
700
|
void inFlight?.close().catch(() => undefined);
|
|
451
|
-
if (err instanceof AdoptionError)
|
|
452
|
-
throw err;
|
|
453
701
|
if (err instanceof StoreBootRefusalError)
|
|
454
702
|
throw err;
|
|
455
703
|
if (!mayFallback) {
|
|
@@ -477,10 +725,15 @@ export function sqlStoreCoordinatesAsUrl(config) {
|
|
|
477
725
|
export function buildSqlStoreOpenRefusal(engine, endpoint, waitedMs, err) {
|
|
478
726
|
const coords = engine === "pg" ? "PG_*" : "MYSQL_*";
|
|
479
727
|
const detail = err instanceof Error ? err.message : String(err);
|
|
728
|
+
const definite = isDeploymentFaultError(err);
|
|
729
|
+
const answer = definite ? databaseAnswerCodesOf(engine, err) : undefined;
|
|
480
730
|
const waited = waitedMs > 0 ? `after retrying for ${waitedMs}ms (STORE_LOCK_WAIT_MS)` : "on the first attempt (STORE_LOCK_WAIT_MS=0: no wait)";
|
|
481
|
-
|
|
731
|
+
const next = definite
|
|
732
|
+
? `Next: the database refused the statement for good, so waiting or changing the ${coords} coordinates will not change it — fix what the answer names: a table's storage engine (InnoDB on MySQL), its primary key, foreign-key compatibility, a missing table or the account's grants; `
|
|
733
|
+
: `Next: fix the ${coords} coordinates or the store's reachability (the boot wait is STORE_LOCK_WAIT_MS); `;
|
|
734
|
+
return (`DB_BACKEND=${engine}: cannot open the configured ${engine === "pg" ? "PostgreSQL" : "MySQL-protocol"} store at ${endpoint} ${waited} (${detail}${answer !== undefined ? `; ${answer}` : ""}) — refusing to boot, because a configured SQL store is never replaced by an in-memory one ` +
|
|
482
735
|
`(SESSION_BACKEND=auto included: sessions, parked runs and every durable record would silently live in memory and vanish on restart). ` +
|
|
483
|
-
|
|
736
|
+
next +
|
|
484
737
|
`or run explicitly in memory with DB_BACKEND=memory (and remove the ${coords} coordinates).`);
|
|
485
738
|
}
|
|
486
739
|
//# sourceMappingURL=store-backend.js.map
|