@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
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 托管留存(managed retention)
|
|
3
|
-
*
|
|
4
|
-
* `docs/DESIGN-270-retention-lane.md` v1.2。上游契约真源 = `@sema-agent/core` 的
|
|
5
|
-
*
|
|
2
|
+
* 托管留存(managed retention)的**执行器** —— 引擎座表那一半(阶段三逐字搬进 `@sema-agent/core-stores-sql` 的那一半)。
|
|
3
|
+
* SINGLE-FILE DUAL-DIALECT([ref] A12 定型半场;先例 = `checkpoint-store-sql.ts`)。[ref] 车1,设计稿
|
|
4
|
+
* `docs/DESIGN-270-retention-lane.md` v1.2。上游契约真源 = `@sema-agent/core` 的 `core/retention.d.ts`
|
|
5
|
+
* (`ManagedRetentionCapability` / `RetentionReceipt`);事务内钩表的形 = core-stores-sql 的 `SqlTransactionHooks`(本文件的同名型是它的形,见下)。
|
|
6
6
|
*
|
|
7
|
-
* ──
|
|
8
|
-
* core
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
7
|
+
* ── 一个事务、两个属主:执行器 + 部署钩 ─────────────────────────────────────────────────────────────
|
|
8
|
+
* core 把破坏性级联整个下沉成三只方法(`expireCheckpoints` / `deleteExpiredSessions` / `deleteOrphanToolResults`),且设计稿
|
|
9
|
+
* §6 F5 要求「审计行与删除同一个 DB 事务」—— 一个事务 ⇒ 一条连接 ⇒ **一个事务属主**,就是本执行器(开、提交、回滚)。
|
|
10
|
+
* 但事务里的表有两个属主:引擎座表(checkpoint / tool_result / session_policy / file_history_* / session_meta / session_event /
|
|
11
|
+
* 墓碑)归本执行器;部署的表(hold / 审计 / 运行账本 / 停驻 ctx / 续跑锚 / 审批豁免 / 附件 / 受理账本 / 任务清单 / 完成信箱)归部署。
|
|
12
|
+
* 部署经**一张闭集事务内钩表**({@link SqlTransactionHooks})参与同一事务,每只钩只拿到语句面(`query`),事务归执行器。
|
|
13
|
+
* 破坏性事务的次序(K4,一步不省):
|
|
14
|
+
* `holdLock`(首句)→ 候选加锁读(`FOR UPDATE`,含每只候选的会话行)→ 每只候选根 `session.beforeCommit`(仅会话树)→
|
|
15
|
+
* `liveReferences`(余下候选)→ `beforeDelete`(终集)→ 本执行器删自己的行、落墓碑 → `audit`(提交前末句)→ COMMIT。
|
|
16
|
+
* 一只被某个钩放下的会话不进任何后续钩的入参。部署那一半(server 的 hold / 审计 / 认领判 / 十三张部署表)在
|
|
17
|
+
* `plugins/retention-deployment.ts`,组合在 `plugins/store-backend.ts`(`createSqlRetentionExecutor`)。
|
|
18
|
+
* **会话树事务体是删净会话的唯一一段**({@link SqlRetentionStore.eraseTreesInTxn}):留存的 `deleteExpiredSessions` 与在线删除的 `eraseSession`
|
|
19
|
+
* (锁行 → 会话座事务内钩的 `erase` 判在删令牌 → 同一段事务体;组合座 `createSqlSessionEraser`)同调 —— 一只会话无论哪个决定者删,行面一个执行体(`session-erase.ts` 头注)。
|
|
19
20
|
*
|
|
20
21
|
* ── 域(domain)口径 ────────────────────────────────────────────────────────────────────────────────
|
|
21
22
|
* 域 = 租户键。三张保留表各有自己的载体列:`session_meta.owner`(**可空**)、`checkpoint.scope`(非空)、
|
|
@@ -24,68 +25,29 @@
|
|
|
24
25
|
* · **空串 `''` = 无主(anonymous/dev)桶**,谓词写成 `(owner IS NULL OR owner = '')` —— 两者合并成一个
|
|
25
26
|
* 桶是**保守**的(合并只发生在无主侧,永远不会伸进一个真租户);拆成两个桶才会漏(NULL 那半永不被
|
|
26
27
|
* 枚举 = codex F4 同族的病)。真部署里 `''` 不是可铸的 principal(auth 门拒空 system 名)。
|
|
28
|
+
* · 谓词的唯一写法在 `plugins/retention-sql.ts`(执行器与部署钩同读,一条律一个读法)。
|
|
27
29
|
*
|
|
28
30
|
* ── 方言差异台账(显式,永不藏进抽象;A12 判据)───────────────────────────────────────────────────
|
|
29
31
|
* - `?` 占位符 vs `$n`;多值集合 MySQL 用 `IN (?,?,…)`、PG 用 `= ANY($n::text[])`(先例:
|
|
30
32
|
* workflow-run-store-sql 的 reap)
|
|
31
|
-
* -
|
|
32
|
-
* —— 随后有同行 `FOR UPDATE` 的建行**必须**用 ON DUPLICATE(重复键取 X,同锁模式);墓碑那种
|
|
33
|
-
* 「只读 affected 不加锁读」的写点(形 B)才保留 `INSERT IGNORE`
|
|
34
|
-
* - 级联 DELETE 的 JOIN 形:`DELETE te FROM a te JOIN b …` vs `DELETE FROM a te USING b …`
|
|
33
|
+
* - 幂等建行:墓碑那种「只读 affected 不加锁读」的写点(形 B)用 `INSERT IGNORE` vs `ON CONFLICT (…) DO NOTHING`
|
|
35
34
|
* - null-safe 比较:`<=>` vs `IS NOT DISTINCT FROM`(及其**占位符数量**差:`?` 不可复用)
|
|
36
35
|
* - JSON 提取(workflow_run 的 originatingSessionId):`JSON_UNQUOTE(JSON_EXTRACT(run,'$.x'))` vs
|
|
37
36
|
* `run::json->>'x'`
|
|
38
37
|
* - 表级 `COLLATE utf8mb4_bin` vs 逐列 `COLLATE "C"`(`isolation-key-collation` 门执法)
|
|
39
38
|
* - 事务动词:只有 `begin()` 一个;读语义的判据在 {@link SqlTxConn.begin} 的 `@contract txn.read-semantics`
|
|
40
|
-
* - schema
|
|
41
|
-
* `
|
|
39
|
+
* - schema 属主:本执行器只建**墓碑表**(MySQL DDL 展开进 `tidb-pool.ts` 的 `SCHEMA_STATEMENTS`;PG DDL 由 `pg-pool.ts`
|
|
40
|
+
* 的中央 `ensurePgSchema` 组合);审计 / hold / 租约三表的属主是部署(`plugins/retention-lane-store-sql.ts`)。
|
|
42
41
|
*
|
|
43
42
|
* ── 命名([ref] 纪律,与设计稿的复数写法的**有意**偏离)────────────────────────────────────────────
|
|
44
43
|
* 设计稿 §5/§2 写的是 `retention_holds` / `retention_tombstones`;本仓的表名闭集词表是**单数**制且由
|
|
45
44
|
* `test/schema-naming-invariants.test.ts` 机器执法(「一张表是一类行的集合,表名说的是『一行是什么』」)。
|
|
46
45
|
* ⇒ 落库名一律单数:`retention_audit` / `retention_hold` / `retention_lease` / `retention_tombstone`。
|
|
47
46
|
*/
|
|
48
|
-
import type
|
|
49
|
-
import type {
|
|
50
|
-
import type {
|
|
51
|
-
import
|
|
52
|
-
import { type IndexSpec } from "./ensure-index.js";
|
|
53
|
-
import type { EndedSpace } from "../workspace-space.js";
|
|
54
|
-
/**
|
|
55
|
-
* 三只**被托管**的 SQL 店(session / checkpoint / tool-result)在扫车道开着时的 `retention` 声明常量。
|
|
56
|
-
*
|
|
57
|
-
* 🔴 **谁说这个词**(引擎 7.58.0 起:店说 `"managed"` 而部署不跑执行器 ⇒ 锁不锁都拒启):「这只店的行有没有人按期删」不是店类自己知道的事,
|
|
58
|
-
* 是装配它的部署知道的事。唯一事实 = 扫车道开不开({@link retentionSweepRuns});后端铸店时按它给词({@link sqlStoreRetention}),
|
|
59
|
-
* 交给引擎启动检查的执行器读同一个事实(开 ⇒ 执行器,关 ⇒ `null`)。店构造不给词 ⇒ `"none"`(引擎对缺席的同一读法)。
|
|
60
|
-
*
|
|
61
|
-
* 🔴 为什么是一个共享常量而不是各写各的字面量:这一格是 core `assertRetentionCapability` 的**唯一**读点,
|
|
62
|
-
* 三只店的答案必须同进同退 —— 哪天本能力从某只店的行上撤了(比如 tool_result 改由别处清),漏改一处
|
|
63
|
-
* 就是一句谎,而谎的方向是「locked policy 放行了一只其实不删的店」。
|
|
64
|
-
*
|
|
65
|
-
* 🔴 声明的**读法**(与 core 契约的字面对齐,别读大也别读小):`"managed"` 说的是「**这只店的行**由本
|
|
66
|
-
* 部署的托管留存按期删除」,不是「本对象自己实现了三个方法」。三方法的实现体是本文件的
|
|
67
|
-
* `SqlRetentionStore` —— 它是 E21 purge 协调器的事务化孪生,横跨十余张表(理由见文件顶注的布局裁定)。
|
|
68
|
-
* core 的门读的是「这只店的数据会不会被按期删掉」(拒启文案逐字:「a locked retention policy over stores
|
|
69
|
-
* that cannot delete would be *policy locked, data immortal*」),SQL 三店的诚实答案就是 `"managed"`。
|
|
70
|
-
* file/in-memory 形没有任何东西会按期删它们的行 ⇒ 显式 `"none"`(缺席也读 none,但显式是文档义务)。
|
|
71
|
-
*/
|
|
72
|
-
export declare const MANAGED_RETENTION: RetentionDeclaration;
|
|
73
|
-
/** file/in-memory 形、以及扫车道关着的 SQL 店的诚实声明(见 {@link MANAGED_RETENTION} 的读法说明)。 */
|
|
74
|
-
export declare const UNMANAGED_RETENTION: RetentionDeclaration;
|
|
75
|
-
/** 本部署跑不跑托管留存的扫车道(`RETENTION_SWEEP_INTERVAL_SEC > 0`)—— 三只 SQL 店的声明与交给引擎启动检查的执行器只读这一处。 */
|
|
76
|
-
export declare function retentionSweepRuns(sweep: {
|
|
77
|
-
readonly intervalSec: number;
|
|
78
|
-
}): boolean;
|
|
79
|
-
/** 后端铸三只被托管的 SQL 店时交给店的词:扫车道开 ⇒ `"managed"`,关 ⇒ `"none"`。 */
|
|
80
|
-
export declare function sqlStoreRetention(sweep: {
|
|
81
|
-
readonly intervalSec: number;
|
|
82
|
-
}): RetentionDeclaration;
|
|
83
|
-
/** 追加式审计表(设计稿 §6)。 */
|
|
84
|
-
export declare const RETENTION_AUDIT_TABLE = "retention_audit";
|
|
85
|
-
/** per-domain 法务保留标记(设计稿 §5)——**行在 = 该域整体冻结**。 */
|
|
86
|
-
export declare const RETENTION_HOLD_TABLE = "retention_hold";
|
|
87
|
-
/** sweep 互斥的单行租约表(设计稿 §3)。表建在车1(schema 一次齐),抢/续租的逻辑归车2。 */
|
|
88
|
-
export declare const RETENTION_LEASE_TABLE = "retention_lease";
|
|
47
|
+
import { type ManagedRetentionCapability, type RetentionReceipt } from "@sema-agent/core";
|
|
48
|
+
import type { SessionWriteHooks } from "./session-write-hooks.js";
|
|
49
|
+
import type { SqlDriver, SqlTxConn } from "../plugins/sql-driver.js";
|
|
50
|
+
import type { IndexSpec } from "../plugins/ensure-index.js";
|
|
89
51
|
/** 删除墓碑(设计稿 §2)——副本/备份收敛 **+ 域枚举并集的第四条腿**(codex F4)。 */
|
|
90
52
|
export declare const RETENTION_TOMBSTONE_TABLE = "retention_tombstone";
|
|
91
53
|
/**
|
|
@@ -93,49 +55,44 @@ export declare const RETENTION_TOMBSTONE_TABLE = "retention_tombstone";
|
|
|
93
55
|
* v1 两个成员 —— 会话树(`deleteExpiredSessions`)与孤儿卸载结果(`deleteOrphanToolResults`)。
|
|
94
56
|
*/
|
|
95
57
|
export type RetentionTombstoneKind = "session" | "tool_result";
|
|
58
|
+
/** MySQL 协议方言的墓碑表建表语句(执行器是它的唯一 DDL 属主;由 `tidb-pool.ts` 展开进中央 `SCHEMA_STATEMENTS`,紧跟部署的三张留存表)。 */
|
|
59
|
+
export declare const TIDB_RETENTION_TOMBSTONE_STATEMENTS: readonly string[];
|
|
60
|
+
/** PG 方言的墓碑表(MySQL 孪生的逐条翻译;语义逐字见 MySQL 孪生的行内注)。由 `pg-pool.ts` 的中央 ensure 组合。 */
|
|
61
|
+
export declare const PG_RETENTION_TOMBSTONE_SCHEMA: readonly string[];
|
|
62
|
+
/** [ref]:墓碑表的索引**声明**(两方言共用一份;应用点同上)。 */
|
|
63
|
+
export declare const RETENTION_TOMBSTONE_INDEXES: readonly IndexSpec[];
|
|
64
|
+
/** 钩能发的语句:执行器事务所持连接的 `query`(提交 / 回滚归执行器,钩拿不到)。 */
|
|
65
|
+
export type SqlStatementFace = Pick<SqlTxConn, "query">;
|
|
66
|
+
/** 钩被告知的破坏性调用 —— 执行器会删东西的那几只成员。 */
|
|
67
|
+
export type SqlRetentionOp = Exclude<keyof ManagedRetentionCapability, "listRetentionDomains">;
|
|
96
68
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
69
|
+
* 部署的表在执行器事务里出场的位置。闭集:每组每钩都在这里点名。
|
|
70
|
+
* 破坏性事务次序:`holdLock` → 候选加锁读 → `session.beforeCommit`(每只候选根,仅 `deleteExpiredSessions`)→ `liveReferences`
|
|
71
|
+
* → `beforeDelete`(终集 = 候选 − 被拒 − 被引)→ 执行器删自己的行、落墓碑 → `audit` → 提交。被某只钩放下的会话不进后续钩的入参。
|
|
100
72
|
*/
|
|
101
|
-
export
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
policyDays: number;
|
|
125
|
-
/** 本轮 sweep lease 的 fencing token(§3)。`null` = 调用方没有租约面(单机/测试);破坏性行仍会落
|
|
126
|
-
* 审计,只是这一位为空 —— 「没有轮次身份」本身也是审计要记的事实。 */
|
|
127
|
-
fencingToken: number | null;
|
|
128
|
-
}
|
|
129
|
-
/** 三只契约方法的入参 —— core 的 `{domain, cutoffMs}` **超集**(多一个可选的审计上下文,见下)。 */
|
|
130
|
-
export interface RetentionCallInput {
|
|
131
|
-
domain: string;
|
|
132
|
-
cutoffMs: number;
|
|
133
|
-
/**
|
|
134
|
-
* 🔴 类型上**可选**、运行时**必需**(fail-closed)。可选是为了结构上仍然满足 core 的
|
|
135
|
-
* `ManagedRetentionCapability`(拿着契约类型的调用方看得见的形必须是 core 那个形);运行时缺席则当场
|
|
136
|
-
* 抛 —— 一次没有审计上下文的破坏性调用 = 无证删除,而 §6 F5 的全部意义就是不许有无证删除。
|
|
137
|
-
*/
|
|
138
|
-
audit?: RetentionAuditContext;
|
|
73
|
+
export interface SqlTransactionHooks {
|
|
74
|
+
readonly retention?: {
|
|
75
|
+
/** 每个破坏性事务的首句:部署锁读本域的 hold 记录并持锁到提交。`"held"` ⇒ 本次调用在该域一行不删、候选计 skipped。 */
|
|
76
|
+
holdLock?(txn: SqlStatementFace, call: {
|
|
77
|
+
readonly domain: string;
|
|
78
|
+
readonly op: SqlRetentionOp;
|
|
79
|
+
}): Promise<"proceed" | "held">;
|
|
80
|
+
/** 执行器锁住候选会话之后调:答其中仍被部署行引用的 id —— 本轮跳过。 */
|
|
81
|
+
liveReferences?(txn: SqlStatementFace, candidates: readonly string[]): Promise<ReadonlySet<string>>;
|
|
82
|
+
/** 执行器删自己的行之前、对终集调:部署删同一批会话的部署行。每行带会话的化身。 */
|
|
83
|
+
beforeDelete?(txn: SqlStatementFace, rows: readonly {
|
|
84
|
+
readonly sessionId: string;
|
|
85
|
+
readonly incarnation: string | undefined;
|
|
86
|
+
}[]): Promise<void>;
|
|
87
|
+
/** 提交前的末句:部署在同一事务里写自己的审计行(轮次 / 策略 / 栅栏令牌是部署的事)。`receipt` = 本次调用的三个计数。 */
|
|
88
|
+
audit?(txn: SqlStatementFace, call: {
|
|
89
|
+
readonly domain: string;
|
|
90
|
+
readonly op: SqlRetentionOp;
|
|
91
|
+
}, receipt: RetentionReceipt): Promise<void>;
|
|
92
|
+
};
|
|
93
|
+
/** 会话组 = 会话座自己的那只钩(契约 `session-write-hooks.ts`;组合座交进来的是会话店用的同一只工厂铸的):每只候选根(会话行已由候选读锁住、什么都没写)
|
|
94
|
+
* 调一次 `beforeCommit({ op: "retention-delete" })`,`{ refuse }` ⇒ 这棵树本轮不删、计 skipped、继续别的。 */
|
|
95
|
+
readonly session?: Pick<SessionWriteHooks, "beforeCommit">;
|
|
139
96
|
}
|
|
140
97
|
/** `previewRetention` 的三候选计数(**非契约**窄读口:core 无 count 面,这是 server 自己店上的超集)。 */
|
|
141
98
|
export interface RetentionPreview {
|
|
@@ -143,27 +100,51 @@ export interface RetentionPreview {
|
|
|
143
100
|
sessions: number;
|
|
144
101
|
toolResults: number;
|
|
145
102
|
}
|
|
146
|
-
/**
|
|
103
|
+
/** 会话树事务体删掉的行面(两只入口同形):每只会话(id + 删前属主 + 住客化身)+ 全库无出处卸载结果数。组合座据它交收尾(`session-erase.ts`)。 */
|
|
104
|
+
export interface ErasedTreeRows {
|
|
105
|
+
readonly sessions: readonly {
|
|
106
|
+
readonly sessionId: string;
|
|
107
|
+
readonly owner: string | null;
|
|
108
|
+
readonly incarnation: string | undefined;
|
|
109
|
+
}[];
|
|
110
|
+
readonly unattributableToolResults: number;
|
|
111
|
+
}
|
|
112
|
+
/** 会话树清扫的回执 = core 契约的三计数 + 本仓一位:`erasedRows` present-iff 本次删掉了至少一棵树。 */
|
|
113
|
+
export type SessionTreesReceipt = RetentionReceipt & {
|
|
114
|
+
readonly erasedRows?: ErasedTreeRows;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* 会话规则行的 rev 高水位记号随不随会话走 —— 会话树事务体里两个决定者**唯一**的行面之差(其余每一句同):
|
|
118
|
+
* · `keep`(在线删除 `eraseSession`):被删会话的 workflow run 可以活过这次删除(在线删除不判在跑的 workflow),同 id 重登记之后规则的谱系
|
|
119
|
+
* (rev 高水位 + 下一代 `gen`)必须活过行,读者才分得出「新行」与「续行」—— 店的抹除语义;
|
|
120
|
+
* · `drop`(托管留存 `deleteExpiredSessions`):候选按定义没有活引用,那条 rev 线已无读者;记号带明文 `session_id` ⇒ 随会话树删。
|
|
121
|
+
* 在线删除也判在跑的 workflow 之日,两支合成 `drop`。
|
|
122
|
+
*/
|
|
123
|
+
export type RuleMarks = "keep" | "drop";
|
|
124
|
+
/** 删一只在删会话(`eraseSession`)的答案(闭集):行不在 / 属主不是那一位 ⇒ `absent`;会话座的事务内钩拒(`erase`:这一行不是这只令牌的在删态)⇒ `refused`(带它的错);删完 ⇒ `erased`。三支都**先于任何 DELETE** 定。 */
|
|
125
|
+
export type SessionEraseOutcome = {
|
|
126
|
+
readonly outcome: "absent";
|
|
127
|
+
} | {
|
|
128
|
+
readonly outcome: "refused";
|
|
129
|
+
readonly refusal: Error;
|
|
130
|
+
} | {
|
|
131
|
+
readonly outcome: "erased";
|
|
132
|
+
readonly rows: ErasedTreeRows;
|
|
133
|
+
};
|
|
134
|
+
/** 执行器的构造选项(core-stores-sql `SqlStorageBackendOptions` 里与留存相关的那一格 + 诊断日志座)。 */
|
|
147
135
|
export interface SqlRetentionStoreOptions {
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
* 部署上会以 unknown-table 报错、把整轮 sweep 打红。让装配层如实回答,比让店去吞一个错误好 —— 吞错误
|
|
152
|
-
* 就是静默 fail-open(附件行从此永不被留存清理,而没有任何人知道)。
|
|
153
|
-
*/
|
|
154
|
-
taskAttachmentTable: boolean;
|
|
155
|
-
/**
|
|
156
|
-
* [ref] `task_list_meta` / `task_list_item` 两表是否在场。**必填,没有默认值**(与
|
|
157
|
-
* `taskAttachmentTable` 同一条理由:盲发 DELETE 会在没建表的库上把整轮 sweep 打红)。
|
|
158
|
-
* 生产上 `boot/task-list-lane.ts` 在**任何 SQL 后端**都无条件 ensure 这两张表 ⇒ 装配层照实传 true;
|
|
159
|
-
* 纯内存/local 车道压根没有 SQL 留存腿。
|
|
160
|
-
*/
|
|
161
|
-
taskListTables: boolean;
|
|
162
|
-
/** 诊断日志座(可选)。 */
|
|
136
|
+
/** 部署在执行器事务里的钩表(K4)。缺席 = 部署没有自己的表参与(没有 hold、没有审计行、没有部署行要随会话删)。 */
|
|
137
|
+
transactionHooks?: SqlTransactionHooks;
|
|
138
|
+
/** 诊断日志座(可选;事务回滚失败的那一行)。 */
|
|
163
139
|
logger?: {
|
|
164
140
|
info?(msg: string, meta?: unknown): void;
|
|
165
141
|
warn?(msg: string, meta?: unknown): void;
|
|
166
142
|
};
|
|
143
|
+
/**
|
|
144
|
+
* 会话盒的分区读法 —— 在场 ⇔ 收件箱四表在场(组合座按装配层的必填答案 `RetentionExecutorOptions.mailboxTables` 交入服务的唯一派生);
|
|
145
|
+
* 在场 ⇒ 会话树的最后一腿丢被删会话的会话盒(`scope = sessionBoxScope(删前属主)`)。
|
|
146
|
+
*/
|
|
147
|
+
sessionBoxScope?: (owner: string | null) => string;
|
|
167
148
|
}
|
|
168
149
|
/** 单次调用的候选上界(**安全界,不是分批语义**)。设计稿 §3 的 v1 口径是「先由 cutoff 天然限量」,
|
|
169
150
|
* 这里额外扣一个上界,理由是运维面而不是功能面:一个从未清过账的大租户会让「一个事务删十余张表的
|
|
@@ -172,35 +153,23 @@ export declare const RETENTION_SESSION_BATCH = 500;
|
|
|
172
153
|
/** checkpoint / tool_result 腿的同款上界(单行代价远小于会话树,故取大一档)。 */
|
|
173
154
|
export declare const RETENTION_ROW_BATCH = 2000;
|
|
174
155
|
/**
|
|
175
|
-
* 托管留存能力的双方言实现 —— core `ManagedRetentionCapability`
|
|
176
|
-
*
|
|
177
|
-
* 见各方法的头注。
|
|
156
|
+
* 托管留存能力的双方言实现 —— core `ManagedRetentionCapability` 的执行器。方言差异台账见文件顶注;
|
|
157
|
+
* 每个破坏性方法的事务形(`holdLock` 首句 → 变更 + 墓碑 → `audit` 末句,同 commit 同 rollback)见各方法的头注。
|
|
178
158
|
*/
|
|
179
159
|
export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
180
160
|
protected readonly db: SqlDriver;
|
|
181
161
|
protected readonly opts: SqlRetentionStoreOptions;
|
|
182
|
-
/**
|
|
183
|
-
readonly retention: RetentionDeclaration;
|
|
184
|
-
constructor(db: SqlDriver, opts
|
|
162
|
+
/** 本执行器自己也是一只 `retention: "managed"` 的店(它就是那三个方法的实现体)。 */
|
|
163
|
+
readonly retention: import("@sema-agent/core").RetentionDeclaration;
|
|
164
|
+
constructor(db: SqlDriver, opts?: SqlRetentionStoreOptions);
|
|
185
165
|
/** Pick the dialect's SQL text. Both statements stay written out at the call site ON PURPOSE (A12 判据)。 */
|
|
186
166
|
protected q(mysql: string, pg: string): string;
|
|
187
|
-
/**
|
|
188
|
-
* 域谓词。**四种写法逐条写出来**(方言 × 有主/无主):
|
|
189
|
-
* · 有主:`col = ?` / `col = $n`;
|
|
190
|
-
* · 无主(域键 `""`):`(col IS NULL OR col = ?)` / `(col IS NULL OR col = $n)` —— 把 SQL NULL 与空串
|
|
191
|
-
* 合并进同一个桶。合并只发生在**无主侧**,永远伸不进一个真租户;拆开才会漏(NULL 那半永不被枚举)。
|
|
192
|
-
* 🔴 两支的**占位符数量刻意相同**(无主支也绑一个 `""`):arity 一变,PG 的 `$n` 编号就会在同一条 SQL 的
|
|
193
|
-
* 后续参数上错位——那是一类只在某个域值上才复现的 bug,不许存在。
|
|
194
|
-
*/
|
|
167
|
+
/** 域谓词 —— 唯一写法在 `plugins/retention-sql.ts`({@link retentionDomainWhere};部署钩同读)。 */
|
|
195
168
|
protected domainWhere(col: string, domain: string, pgIndex: number): {
|
|
196
169
|
sql: string;
|
|
197
170
|
params: unknown[];
|
|
198
171
|
};
|
|
199
|
-
/**
|
|
200
|
-
* 多值集合谓词 —— **真方言分叉**(不是 SQL 文本差):MySQL 展开 N 个 `?`,PG 用**一枚**数组参数
|
|
201
|
-
* `= ANY($n::text[])`。占位符数量因此不同(N vs 1),这是先例(workflow-run-store-sql 的 reap)也是
|
|
202
|
-
* 必然:把 500 个 id 展开成 500 个 `$n` 会让语句文本随批量变形,PG 的预编译缓存跟着退化。
|
|
203
|
-
*/
|
|
172
|
+
/** 多值集合谓词 —— 唯一写法在 `plugins/retention-sql.ts`({@link retentionIdSet};部署钩同读)。 */
|
|
204
173
|
protected idSet(col: string, ids: readonly string[], pgIndex: number): {
|
|
205
174
|
sql: string;
|
|
206
175
|
params: unknown[];
|
|
@@ -213,43 +182,19 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
213
182
|
* `protected` = 真库套件的语句录制注入点(判据「hold 锁读是事务首条 SQL」靠它自证)。
|
|
214
183
|
*/
|
|
215
184
|
protected tx<T>(fn: (conn: SqlTxConn) => Promise<T>): Promise<T>;
|
|
185
|
+
/** 交给钩的语句面:本事务连接的 `query`,别无他物(提交 / 回滚 / 释放归 {@link SqlRetentionStore.tx})。 */
|
|
186
|
+
private statementFace;
|
|
187
|
+
/** 首句:部署锁读本域的 hold 记录。无钩 ⇒ 部署没有 hold 面,`proceed`。 */
|
|
188
|
+
private heldBy;
|
|
216
189
|
/**
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
* 这道运行时门存在的理由:省掉它的那次调用如果照删不误,库里就多了一批无证删除的行。
|
|
190
|
+
* 每只根问一次会话座的事务内钩(根的会话行已由本事务锁住):`erase`(删一只在删会话,`eraseSession`,带令牌)/ `retention-delete`(留存候选根)。
|
|
191
|
+
* 无钩 ⇒ 放行;`{ refuse }` ⇒ 交回那只错(`eraseSession` 答 `refused`;留存这棵树本轮不删、计进 `skipped`,账法见 {@link SqlRetentionStore.deleteExpiredSessions} 头注「receipt 口径」)。
|
|
220
192
|
*/
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
* ① 幂等建一条 `held = 0` 的**哨兵行**(形 A,[ref]:MySQL `ON DUPLICATE KEY UPDATE domain = domain` /
|
|
227
|
-
* PG `ON CONFLICT DO NOTHING`)—— 它永远不会改写一条既存的 hold(两方言的这两个动词都只在缺行时
|
|
228
|
-
* 写),只保证**接下来那把行锁有东西可锁**;重复键取的是 **X** 锁,与 ② 的 `FOR UPDATE` 同锁模式
|
|
229
|
-
* (`INSERT IGNORE` 在这里取 S 再升 X = InnoDB 上两个并发 sweep 互等的死锁形,[ref]);
|
|
230
|
-
* ② `SELECT held … FOR UPDATE` —— 现在这行必定存在,于是锁真的拿到了。
|
|
231
|
-
*
|
|
232
|
-
* 🔴 为什么必须先造行(codex 交叉复审 R1-[high],验真后改):`FOR UPDATE` 锁不住缺席行(TiDB 无 gap
|
|
233
|
-
* lock;PG READ COMMITTED 同样)。presence 形(「行在 = 冻结」)下,operator 的 PUT 与本事务可以**同时**
|
|
234
|
-
* 都读到「没有 hold」,PUT 提交返回成功之后本事务照删不误 —— 设计稿 §5 声称由行锁给出的串行化在那一形
|
|
235
|
-
* 上根本不存在。哨兵行把 hold 的写点与删除的读点压到**同一把行锁**上,那句承诺才成立。
|
|
236
|
-
* ⚠️ 车2 交接:PUT/DELETE hold 必须走**同一 PK 的 upsert 改 `held` 列**(不是 INSERT/DELETE 行),
|
|
237
|
-
* 否则这把锁又会退回缺席形。
|
|
238
|
-
*/
|
|
239
|
-
protected holdInForce(conn: SqlTxConn, domain: string): Promise<boolean>;
|
|
240
|
-
/**
|
|
241
|
-
* 审计行的**唯一**写点(§6 F5:破坏性行由店在删除同事务内写)。
|
|
242
|
-
* `protected` 是**有意的注入口**:真双库套件用一只覆盖本方法为抛错的子类来证 V10(「注入 audit 写失败
|
|
243
|
-
* ⇒ 整事务回滚、数据仍在」)。把注入点做成 mock 层的猴补丁反而证不了这件事 —— 它证的是 mock。
|
|
244
|
-
*/
|
|
245
|
-
protected writeAuditRow(conn: SqlTxConn, row: {
|
|
246
|
-
domain: string;
|
|
247
|
-
action: RetentionAuditAction;
|
|
248
|
-
audit: RetentionAuditContext;
|
|
249
|
-
deleted: number;
|
|
250
|
-
skipped: number;
|
|
251
|
-
tombstones: number;
|
|
252
|
-
}): Promise<void>;
|
|
193
|
+
private refusalOf;
|
|
194
|
+
/** 部署仍在引用的候选(无钩 ⇒ 空集)。 */
|
|
195
|
+
private referencedBy;
|
|
196
|
+
/** 提交前末句:部署的审计行。无钩 ⇒ 部署不记审计。 */
|
|
197
|
+
private auditedBy;
|
|
253
198
|
/**
|
|
254
199
|
* 墓碑写入(幂等)。返回**真正新落地**的墓碑数 —— 重跑时既有墓碑不重复计数,于是 receipt 的
|
|
255
200
|
* `tombstones` 与 `deleted` 在幂等重跑上同步归零。
|
|
@@ -287,10 +232,10 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
287
232
|
/**
|
|
288
233
|
* CAS 栅栏 `pending → expired`,每行恰一胜者(胜负由 `status = 'pending'` 谓词在引擎里裁,跨副本安全)。
|
|
289
234
|
*
|
|
290
|
-
* 事务形(§5 F2 + §6 F5,一步不省):
|
|
291
|
-
* ① `
|
|
235
|
+
* 事务形(§5 F2 + §6 F5 + K4,一步不省):
|
|
236
|
+
* ① `holdLock` 钩(首句;部署的 hold 哨兵行锁读)—— `"held"` ⇒ 本事务零变更、全计 skipped 返回;
|
|
292
237
|
* ② 候选读 + CAS UPDATE;
|
|
293
|
-
* ③
|
|
238
|
+
* ③ `audit` 钩(提交前末句;部署的审计行,同事务)→ COMMIT。**没有**提交前的第二次 hold 复核:域的行锁在 ① 就拿住了并持有到
|
|
294
239
|
* COMMIT,一个并发的 PUT hold 在此期间提交不了(它抢同一把锁)——一段恒真的"复核"比没有更坏。
|
|
295
240
|
*
|
|
296
241
|
* 视界判据**两条臂都写出来**:`deadline` 在场按 deadline,缺席按 `created_at_ms`。少了后一条臂,一条
|
|
@@ -310,14 +255,22 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
310
255
|
* receipt 口径:`deleted` = **本次 CAS 赢下的行数**(过期销毁的是那道 pending 门,行本身按设计留在库里
|
|
311
256
|
* 供审计/对账);`tombstones` = 0(没有行被移除,写墓碑会让「墓碑 ⇒ 这行没了」这条读法失真)。
|
|
312
257
|
*/
|
|
313
|
-
expireCheckpoints(input:
|
|
258
|
+
expireCheckpoints(input: {
|
|
259
|
+
domain: string;
|
|
260
|
+
cutoffMs: number;
|
|
261
|
+
}): Promise<RetentionReceipt>;
|
|
314
262
|
/**
|
|
315
263
|
* 视界谓词的两条臂(`deadline` 在场按 deadline、缺席按 `created_at_ms`)—— 两方言逐字相同,占位符各自编号。
|
|
316
264
|
* 抽成一处是因为它同时被「可过期候选」与「被 pin 的计数」两条查询用,手抄两份必分家。
|
|
317
265
|
*/
|
|
318
266
|
private horizonArms;
|
|
319
|
-
/**
|
|
320
|
-
|
|
267
|
+
/**
|
|
268
|
+
* 「这张卡**所属的 run** 被一次活跑占着」= [ref] 的 live-pinned 判据(SQL 谓词形,两方言同文本;候选读、pinned 计数、
|
|
269
|
+
* CAS 更新三处同一只,`row` 只换行引用名)。连的是归属列 `host_session_id` —— run 的认领 `task_active` 挂在 run 的会话上,
|
|
270
|
+
* cascade 的级上卡自己的会话(`session_id`)上没有认领;按卡自己的会话判,一条仍挂着的 cascade run 的那张卡会被当成无主
|
|
271
|
+
* 过期,随后 run 收割把这条 run 判失败。归属为 NULL(滚动升级窗内旧副本写的行,下次起服 M49 回填)⇒ 不算被占。
|
|
272
|
+
*/
|
|
273
|
+
private static pinnedExists;
|
|
321
274
|
/**
|
|
322
275
|
* **可过期**的候选 token(保护谓词写在 SQL 里、扣在 `LIMIT` **之前**)。
|
|
323
276
|
*
|
|
@@ -400,26 +353,28 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
400
353
|
* lineage-aware 的会话树删除。**引用在删除事务内重查**(core 契约逐字:「references are re-checked inside
|
|
401
354
|
* the deletion transaction, never assumed from a prior scan」),有活引用的树**整棵**跳过计 `skipped`。
|
|
402
355
|
*
|
|
403
|
-
* 事务形(§5 F2 + §6 F5):
|
|
404
|
-
* ① `
|
|
356
|
+
* 事务形(§5 F2 + §6 F5 + K4):
|
|
357
|
+
* ① `holdLock` 钩(首句;部署的 hold 哨兵行锁读)—— `"held"` ⇒ 零删、全 skip 返回;锁持有到 COMMIT;
|
|
405
358
|
* ② **一条**加锁读同时完成「候选 + 活引用重查」(谓词下推 + `FOR UPDATE`,见
|
|
406
|
-
* {@link SqlRetentionStore.sessionCandidates})
|
|
407
|
-
* ②′
|
|
408
|
-
*
|
|
359
|
+
* {@link SqlRetentionStore.sessionCandidates});每只候选的会话行在此锁住;
|
|
360
|
+
* ②′ 读写序律的写者半 = `session.beforeCommit` 钩(每只候选根一次,`op: "retention-delete"`;会话座的那一只钩):用**本事务的连接、新语句**锁定读一次认领;
|
|
361
|
+
* 有认领 ⇒ `{ refuse }`,整棵跳过;然后 `liveReferences` 钩(余下候选;部署不给 ⇒ 空集);
|
|
362
|
+
* ③ `beforeDelete` 钩(终集,行带化身:部署删它的十三张表、自算结束了的空间)→ 本执行器按序删引擎座表({@link SqlRetentionStore.purgeSessionTrees})
|
|
363
|
+
* → 墓碑 → `audit` 钩(提交前末句,同事务)→ COMMIT。
|
|
409
364
|
*
|
|
410
365
|
* 🔴 活引用重查为什么是**候选查询本身**而不是第二条查询(codex 交叉复审 R1 的两条 high 合并采纳):
|
|
411
366
|
* · 两条查询之间有窗口,而下推之后「被查到的」按构造就是「四条腿一条都不命中的」;
|
|
412
367
|
* · `FOR UPDATE` 让这些会话行在本事务期间不可被 `touch()` 拉回视界、也不可被 session-sync 改写属主 ——
|
|
413
368
|
* 旧形(不加锁 + 尾部无条件删 `session_event`)可以在属主被并发改写后,把**别的租户**的历史删掉;
|
|
414
369
|
* · 旧形还在删完 `task_active` **之后**才去复核它,那道复核因此恒真(自己刚把证据删了)—— 一段恒真的
|
|
415
|
-
* "防护"比没有更坏。删除之前的判据是候选查询 + ②′
|
|
370
|
+
* "防护"比没有更坏。删除之前的判据是候选查询 + ②′ 那一读(会话座的 `beforeCommit` 钩),删除后不再假装复核。
|
|
416
371
|
* 与认领的互斥(共同锁序,读写序律两半):
|
|
417
372
|
* · 认领半:`createRun` 在认领事务里**先锁根会话行**(`session_meta … FOR UPDATE`)再插 `task_active`(`run-store-sql.ts` 的 `createRun` 顶注)
|
|
418
373
|
* ⇒ 候选查询锁住会话行之后才来的认领等在那一行上,本事务提交后它锁定读到零行 ⇒ `sessionAbsent`,不建行;
|
|
419
|
-
* · 写者半(
|
|
374
|
+
* · 写者半(②′,会话座的 `beforeCommit` 钩):候选查询开始时**已经持着**会话行锁、尚未提交的认领 —— 候选查询等它提交后才拿到行锁,而那条 `NOT EXISTS task_active`
|
|
420
375
|
* 读的是语句开始时的快照(PG 读已提交下非目标表按语句快照读),看不见刚提交的认领;②′ 是行锁之后的**新语句**锁定读(PG 新快照、TiDB 当前读),
|
|
421
376
|
* 认领已提交就读得到 ⇒ 这棵树跳过。被锁住的根行上不会再有新认领(认领先锁根行),所以 ②′ 之后到提交之间没有窗。
|
|
422
|
-
* `skipped`
|
|
377
|
+
* 被拒的树计进 `skipped`(K4:拒 ⇒ 计 skipped,见下「receipt 口径」)。
|
|
423
378
|
*
|
|
424
379
|
* 活引用的四条腿(与设计稿 §2 的清单对表,并如实标注一条**结构上不存在**的边):
|
|
425
380
|
* · `task_active` —— 活跑 claim(在线协调器的第一道门,同一张表同一条判据);
|
|
@@ -431,37 +386,61 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
431
386
|
* 会话悬空(它的字节是它自己的),所以这条边**结构上不需要保护**。设计稿把「fork 子」列进 lineage
|
|
432
387
|
* 清单是按 core 契约的通用措辞抄的;本仓的 fork 语义使它落空,记在这里免得后人当缺口再"补"一次。
|
|
433
388
|
*
|
|
434
|
-
* receipt 口径:`
|
|
389
|
+
* receipt 口径:`skipped` = 本域过视界、本轮没删的树:{@link SqlRetentionStore.countProtectedSessions} 独立测得的受保护数 + 钩放下的候选
|
|
390
|
+
* (`beforeCommit` 拒的、`liveReferences` 引的 —— 候选读排除了受保护的树,两部分各自测得、各自 ≥ 0)。账法与
|
|
391
|
+
* {@link SqlRetentionStore.countPinnedExpiryCandidates} 同一条:中途翻转的树(例:PG 上候选读等锁期间提交的认领 —— 被拒,计数语句又看得见它)最多两边各记一次,
|
|
392
|
+
* 刻意选的失真方向是轻微重复计数。
|
|
393
|
+
* `deleted` = **删掉的会话树棵数**(= `session_meta` 的命中行数),不是级联删掉的总行数
|
|
435
394
|
* ——后者跨十余张表、随部署形态漂(附件表可能不在场),做不成稳定判据;而「幂等重跑 ⇒ 0」这条契约在
|
|
436
395
|
* 两种口径下同真。`tombstones` = 本次**新落地**的墓碑数(重跑时既有墓碑不重复计)。
|
|
437
396
|
*/
|
|
438
|
-
deleteExpiredSessions(input:
|
|
439
|
-
|
|
440
|
-
|
|
397
|
+
deleteExpiredSessions(input: {
|
|
398
|
+
domain: string;
|
|
399
|
+
cutoffMs: number;
|
|
400
|
+
}): Promise<SessionTreesReceipt>;
|
|
441
401
|
/**
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
-
*
|
|
445
|
-
*
|
|
446
|
-
*
|
|
447
|
-
*
|
|
448
|
-
*
|
|
449
|
-
* (
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
402
|
+
* **删一只在删会话**(在线删除的执行体;合同外,本仓自己的面 —— 与 `previewRetention` 同类)。与 {@link deleteExpiredSessions} 跑**同一段**会话树事务体
|
|
403
|
+
* ({@link eraseTreesInTxn}),只是「删谁」由调用方点名(删除协调器的围栏写下的令牌)而不是视界选:
|
|
404
|
+
* E1 锁行 `session_meta … FOR UPDATE`(读属主 + 化身)—— 行不在 / 属主不是围栏判过的那一位(`owner`:域键,部署行与墓碑按它写)⇒ `absent`。
|
|
405
|
+
* 同 id 的重登记(`INSERT … ON DUPLICATE`)、围栏、认领都先锁这一行 ⇒ 都等在这把锁上;
|
|
406
|
+
* E2 会话座的事务内钩 `erase`:这一行此刻处于 `token` 那一次删除的在删态(判官读旁表的在删令牌,同一连接)—— 不是 ⇒ `refused`(另一次删除接管了它,
|
|
407
|
+
* 或它已删完而同 id 是新住客 —— 新行不带这只令牌)。令牌只在围栏判过属主、判过认领之后写下,在删期间认领落不下 ⇒ 这里不再判属主与认领;
|
|
408
|
+
* E3–E6 部署行(`beforeDelete` 钩)→ 引擎座行({@link purgeSessionTrees},行最后 + 命中数断言)→ 墓碑(域 = 属主,`""` = 无主桶)→ 提交;之后读一次无出处卸载结果数。
|
|
409
|
+
* 事务里只有 SQL 语句(完成信箱围栏在部署钩、会话盒在最后一腿,都在里面);对象存储字节、空间、进程态在调用方的提交之后(`session-erase.ts` 的收尾)。没有 hold / 审计:那是留存决定者的事。
|
|
410
|
+
*/
|
|
411
|
+
eraseSession(input: {
|
|
412
|
+
readonly sessionId: string;
|
|
413
|
+
readonly owner: string | null;
|
|
414
|
+
readonly token: string;
|
|
415
|
+
}): Promise<SessionEraseOutcome>;
|
|
416
|
+
/**
|
|
417
|
+
* 全库无出处卸载结果数(告知数:这类行任何会话删除都删不到 ⇒ 删除不完整)。**在破坏性事务之前**读,两只入口同调:聚合读加不了锁、也不决定任何写 ⇒ 不进事务;
|
|
418
|
+
* 删一棵会话树不改它(按出处列删的行出处非空);读失败 ⇒ 抛在任何一字节被删之前(重试从同一状态开始),不会让一次已提交的删除丢掉收尾。
|
|
419
|
+
*/
|
|
420
|
+
private unattributableToolResults;
|
|
421
|
+
/**
|
|
422
|
+
* **会话树事务体 —— 删净会话的唯一一段**(`eraseSession` 与 `deleteExpiredSessions` 同调;调用方已锁住这批会话行、判过认领):
|
|
423
|
+
* 部署行(`beforeDelete` 钩:部署的十三张表)→ 引擎座行({@link purgeSessionTrees})→ 墓碑。全库无出处卸载结果数在事务之前读({@link unattributableToolResults})。
|
|
424
|
+
* `domain` = 这批会话的域键(`COALESCE(owner, '')`);行面回执里每只会话的删前属主由它读回(`""` ⇒ 无主)。
|
|
425
|
+
* `ruleMarks` = 规则行的 rev 高水位记号随不随会话走 —— 两个决定者唯一的行面之差({@link RuleMarks})。
|
|
426
|
+
*/
|
|
427
|
+
private eraseTreesInTxn;
|
|
428
|
+
/**
|
|
429
|
+
* 会话树里**引擎座表**这一半的删除:同一组 DELETE、同一个相对次序,发在执行器事务的连接上。部署的十三张表在这之前已由
|
|
430
|
+
* `beforeDelete` 钩删完(K4 次序:部署行先于执行器行;部署那一半见 `plugins/retention-deployment.ts`)。
|
|
431
|
+
* 次序的承重理由:
|
|
432
|
+
* · `checkpoint` 的属主门是 `session_meta.owner` 的 EXISTS 子查询 ⇒ 它**必须**排在 `session_meta` 删除**之前**
|
|
433
|
+
* (meta 一没,门就恒假、一行都删不掉);部署钩里的 `checkpoint_ctx` 同一道门,同一条理由(钩先于本方法,天然满足);
|
|
434
|
+
* · file-history 的 scope 哨兵先锁、再抹规则行(记号随不随会话走 = {@link RuleMarks})、再删 file-history 的行。
|
|
435
|
+
* 引擎 [ref] 的会话树步表(`RETENTION_SESSION_TREE_STEPS`)里本方法执行的是 6(检查点)/ 7(工具结果)/ 8(会话策略)/ 9(文件历史)/
|
|
436
|
+
* 10(会话信箱,收件箱四表在场时;信箱店 `drop` 的同一组语句)/ 11(会话本体)六步,相对次序与表同;1–5 共五步
|
|
437
|
+
* (workflow journal 与 run、后台子代与其信箱、名册)本执行器不删 —— 登记过的既有欠(对表钉在 `test/retention-hook-order.test.ts`)。
|
|
456
438
|
*
|
|
457
|
-
*
|
|
458
|
-
*
|
|
459
|
-
*
|
|
460
|
-
* 在同一事务里已经删掉 ⇒ {@link SqlRetentionStore.sessionCandidates} 从此**永远枚举不到**这些行:它们不是
|
|
461
|
-
* "下一轮再清",是**没有任何清理路径**的孤儿。域隔离不靠这道门承担 —— `ids` 已经是**本域** session_meta
|
|
462
|
-
* 里选出来并 `FOR UPDATE` 锁住的候选集,行级门去掉之后越域仍然结构上不可能。
|
|
439
|
+
* 属主门读**域键**(两只入口同:留存传本轮的域,`eraseSession` 传 `owner ?? ""`),经 {@link SqlRetentionStore.domainWhere} 表达 —— `""` = 无主桶
|
|
440
|
+
* `(owner IS NULL OR owner = '')`;有主域 `owner = ?`。`<=>` 拿字符串 `""` 去比 NULL 会一行都不匹配(「无主会话永远清不掉」的病),所以这一族门
|
|
441
|
+
* (meta / checkpoint,以及部署钩里的 checkpoint_ctx)只用这一种写法。
|
|
463
442
|
*/
|
|
464
|
-
protected purgeSessionTrees(conn: SqlTxConn, domain: string, ids: readonly string[]): Promise<number>;
|
|
443
|
+
protected purgeSessionTrees(conn: SqlTxConn, domain: string, ids: readonly string[], ruleMarks: RuleMarks): Promise<number>;
|
|
465
444
|
/**
|
|
466
445
|
* 属主 session 已亡的 offloaded 结果(core 契约:「whose owning sessions are gone (or past the horizon),
|
|
467
446
|
* skipping refs still reachable from live transcripts」)。
|
|
@@ -478,9 +457,12 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
478
457
|
* 都是猜;实体清理归既有的 TTL 腿(core `ToolResultStore.reap`,`boot/reapers.ts` 驱动)。这与 core 的
|
|
479
458
|
* 「an UNOWNED entry is never deleted」是同一条纪律的两处执行点。
|
|
480
459
|
*
|
|
481
|
-
* 事务形与另外两只方法逐字同款(
|
|
460
|
+
* 事务形与另外两只方法逐字同款(`holdLock` 钩首句 → 删除+墓碑 → `audit` 钩末句,同 commit 同 rollback)。
|
|
482
461
|
*/
|
|
483
|
-
deleteOrphanToolResults(input:
|
|
462
|
+
deleteOrphanToolResults(input: {
|
|
463
|
+
domain: string;
|
|
464
|
+
cutoffMs: number;
|
|
465
|
+
}): Promise<RetentionReceipt>;
|
|
484
466
|
/** 「活转录可达」的行数(属主会话仍在 `session_meta`、域是本域、行已过视界)= receipt 的 `skipped`。 */
|
|
485
467
|
protected countLiveReachableToolResults(exec: {
|
|
486
468
|
query: SqlDriver["query"];
|
|
@@ -489,12 +471,4 @@ export declare class SqlRetentionStore implements ManagedRetentionCapability {
|
|
|
489
471
|
cutoffMs: number;
|
|
490
472
|
}): Promise<number>;
|
|
491
473
|
}
|
|
492
|
-
/** MySQL-protocol (TiDB) binding。 */
|
|
493
|
-
export declare class TiDBRetentionStore extends SqlRetentionStore {
|
|
494
|
-
constructor(pool: MySqlPool, opts: SqlRetentionStoreOptions);
|
|
495
|
-
}
|
|
496
|
-
/** PostgreSQL binding。 */
|
|
497
|
-
export declare class PgRetentionStore extends SqlRetentionStore {
|
|
498
|
-
constructor(pool: PgPool, opts: SqlRetentionStoreOptions);
|
|
499
|
-
}
|
|
500
474
|
//# sourceMappingURL=retention-store-sql.d.ts.map
|