@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
|
@@ -29,47 +29,16 @@
|
|
|
29
29
|
* (车1 已实现)。lane **不补记**它们 —— 补记 = 「删了但审计没落地」的窗口重新打开。receipt 在本文件里
|
|
30
30
|
* 只做两件事:二次确认(日志/指标)与「本轮到底动了多少」的读数。
|
|
31
31
|
*/
|
|
32
|
-
import type { RetentionPolicy
|
|
32
|
+
import type { RetentionPolicy } from "@sema-agent/core";
|
|
33
33
|
import type { RetentionMode } from "../config-types.js";
|
|
34
|
-
import type {
|
|
34
|
+
import type { SessionEraseSettler } from "../session-erase.js";
|
|
35
|
+
import type { RetentionExecutor } from "../plugins/retention-deployment.js";
|
|
35
36
|
/** 同 domain 连续失败多少次算「卡住了」(fail-loud 的阈值)。`5` 与 reaper 家族的
|
|
36
37
|
* `REAPER_FAILURE_WARN_THRESHOLD` 同值同理由:一次抖动(一次重连、一次超时)正是容错要吸收的,
|
|
37
38
|
* 只有**连败**才越过「可诊断」这条线。 */
|
|
38
39
|
export declare const RETENTION_SWEEP_STUCK_THRESHOLD = 5;
|
|
39
40
|
/** 租约 TTL = 本倍数 × sweep 间隔(设计稿 §3)。`2` = 允许一轮跑满一个完整间隔还有余量,再多就该让位。 */
|
|
40
41
|
export declare const RETENTION_LEASE_TTL_FACTOR = 2;
|
|
41
|
-
/**
|
|
42
|
-
* lane 消费的**执行器**面 —— core `ManagedRetentionCapability` 的三方法 + 车1 的非契约窄读口
|
|
43
|
-
* `previewRetention`(audit-only 档的读数源;core 契约无 count 面)+ 声明位。
|
|
44
|
-
*
|
|
45
|
-
* 🔴 三方法的入参是 core 契约形的**超集**(多一个 `audit`):车1 的店在运行期对缺席的审计上下文
|
|
46
|
-
* fail-closed 抛错,所以这里把它写进类型 —— 让「忘了传」变成编译错,而不是一次运行期的破坏性调用被拒。
|
|
47
|
-
*/
|
|
48
|
-
export interface RetentionExecutor {
|
|
49
|
-
readonly retention?: "managed" | "none";
|
|
50
|
-
listRetentionDomains(): Promise<readonly string[]>;
|
|
51
|
-
previewRetention(input: {
|
|
52
|
-
domain: string;
|
|
53
|
-
cutoffMs: number;
|
|
54
|
-
}): Promise<{
|
|
55
|
-
checkpoints: number;
|
|
56
|
-
sessions: number;
|
|
57
|
-
toolResults: number;
|
|
58
|
-
}>;
|
|
59
|
-
expireCheckpoints(input: RetentionDestructiveInput): Promise<RetentionReceipt>;
|
|
60
|
-
deleteExpiredSessions(input: RetentionDestructiveInput): Promise<RetentionSessionsReceipt>;
|
|
61
|
-
deleteOrphanToolResults(input: RetentionDestructiveInput): Promise<RetentionReceipt>;
|
|
62
|
-
}
|
|
63
|
-
/** 破坏性调用的入参(判定时点的三格随行 —— 理由逐字见车1 `RetentionAuditContext` 的头注)。 */
|
|
64
|
-
export interface RetentionDestructiveInput {
|
|
65
|
-
domain: string;
|
|
66
|
-
cutoffMs: number;
|
|
67
|
-
audit: {
|
|
68
|
-
mode: RetentionMode;
|
|
69
|
-
policyDays: number;
|
|
70
|
-
fencingToken: number | null;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
42
|
/** 非破坏性审计行的写口(lane 侧属主的那五个词)。 */
|
|
74
43
|
export interface RetentionAuditSink {
|
|
75
44
|
append(row: {
|
|
@@ -128,17 +97,10 @@ export interface RetentionSweepCtx {
|
|
|
128
97
|
* `createThrottledReaperCatch` 必须建在 `setInterval` 之外是同一条理由。
|
|
129
98
|
*/
|
|
130
99
|
streaks?: Map<string, number>;
|
|
131
|
-
/**
|
|
132
|
-
* (
|
|
133
|
-
|
|
100
|
+
/** 删后收尾(`session-erase.ts`,与会话删除协调器同一只):enforce 删掉会话树之后,把回执里的 `erased` 交给它 —— 附件字节、完成信箱围栏、会话信箱清仓、
|
|
101
|
+
* 住客空间回收、无出处卸载结果的如实告知。每一步失败只记一行(行已删,不再有重试路)。 */
|
|
102
|
+
settle: SessionEraseSettler;
|
|
134
103
|
}
|
|
135
|
-
/**
|
|
136
|
-
* 会话树 sweep 的回执 = core 契约的 `RetentionReceipt` + 本仓一位:`endedSpaces` = 本次删掉的会话树里**结束了的空间**(会话 id + 住客空间键 = 会话化身;
|
|
137
|
-
* 读不出住客的空化身不算),present-iff 非空。lane 把它交给空间的回收座(与会话删除协调器同一只),缓存卷与快照随空间的终结回收。
|
|
138
|
-
*/
|
|
139
|
-
export type RetentionSessionsReceipt = RetentionReceipt & {
|
|
140
|
-
readonly endedSpaces?: readonly EndedSpace[];
|
|
141
|
-
};
|
|
142
104
|
/** 一轮的读数(给日志与判据用;lane 自己不做任何决策依赖它)。 */
|
|
143
105
|
export interface RetentionSweepOutcome {
|
|
144
106
|
/** 本轮真正处理完的 domain 数(丢租中止时 = 中止之前那些)。 */
|
|
@@ -168,7 +130,7 @@ export interface RetentionSweepOutcome {
|
|
|
168
130
|
* 为什么本道必须存在:引擎的门不拦
|
|
169
131
|
* · 没锁时,执行器在场 × 一只 `"none"` 的店 —— 部署于是**广告了一个不执行的留存面**:能力位说
|
|
170
132
|
* `{mode,maxAgeDays}`、审计表也在长,而那只店的行谁都没在删。
|
|
171
|
-
* 本仓的 SQL 后端按同一个事实(扫车道开不开,`plugins/retention-
|
|
133
|
+
* 本仓的 SQL 后端按同一个事实(扫车道开不开,`plugins/retention-declaration.ts` 的 `retentionSweepRuns`)给它铸的三只店声明词,所以 lane 开着时
|
|
172
134
|
* 这三只店在这一格上恒是 `managed`;这一格防的是声明与 lane 脱钩的店(别的后端、替身)。
|
|
173
135
|
* 这些都在**启动期**拒(安全控件不得半开),不是让运维从一台"启动成功、什么也没删"的机器上猜。
|
|
174
136
|
*
|
|
@@ -94,8 +94,8 @@ async function sweepDomainEnforce(ctx, d) {
|
|
|
94
94
|
};
|
|
95
95
|
const checkpoints = await ctx.executor.expireCheckpoints(input);
|
|
96
96
|
const sessions = await ctx.executor.deleteExpiredSessions(input);
|
|
97
|
-
if (sessions.
|
|
98
|
-
await ctx.
|
|
97
|
+
if (sessions.erased !== undefined)
|
|
98
|
+
await (await ctx.settle(sessions.erased)).spaces;
|
|
99
99
|
const toolResults = await ctx.executor.deleteOrphanToolResults(input);
|
|
100
100
|
const touched = checkpoints.deleted + sessions.deleted + toolResults.deleted;
|
|
101
101
|
if (touched > 0) {
|
|
@@ -28,6 +28,7 @@ import type { ToolApprovalCoordinator } from "../tool-approval.js";
|
|
|
28
28
|
import type { MemoryBackend } from "@sema-agent/core";
|
|
29
29
|
import type { MemorySyncRunner } from "../memory-sync-client.js";
|
|
30
30
|
import type { MailboxRecipientLifecycle } from "../plugins/mailbox-recipient-lifecycle.js";
|
|
31
|
+
import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
|
|
31
32
|
import type { PeerDesk } from "../peer-seat.js";
|
|
32
33
|
/**
|
|
33
34
|
* `RunnerDeps.onAsk` 的装配([ref] 件4:从内联闭包提为具名导出,**纯 testability 重构、零行为变化**)。
|
|
@@ -219,19 +220,20 @@ export interface RunnerDepsCtx {
|
|
|
219
220
|
* 缺席=undefined=pre-338 语义(纯 env 部署无中心撤销面)。 */
|
|
220
221
|
mcpRevocations: RunnerDeps["mcpRevocations"];
|
|
221
222
|
/**
|
|
222
|
-
* 交接件⑤ —— commit
|
|
223
|
+
* 交接件⑤ —— commit 尾注的署名(`RunnerDeps.hands.commitCoAuthor`;缺席 = 不署)。手带(`hands`)本身由共享基座铸,调用方只交这一格。
|
|
223
224
|
*
|
|
224
|
-
* 🔴
|
|
225
|
+
* 🔴 为什么手带属于**共享基座**而不是主 runner 的差异键:署名是**部署身份**([ref]① clay 拍:
|
|
225
226
|
* 「署名 = 产品身份资产,归部署」),不是「哪一只 Runner 在跑」的属性。一个被委派出去的子代
|
|
226
227
|
* 提交进的是**同一个仓**、代表的是**同一个部署** —— 它的 commit 少一行 trailer 没有任何理由。
|
|
227
228
|
* 修前两条腿都漏:`main.ts` 与 `run-local.ts` 的 subRunner 都只在主 runner 上写了这一键,而两处
|
|
228
229
|
* 的「差异键」注释块逐条列了 sessionStore / checkpointStore / 四个座位,**都没提 hands**
|
|
229
230
|
* —— 也就是说它不是一次有理由的分歧,是漏配(与本函数头注记的 [ref]§三族A 同一个病族)。
|
|
230
|
-
*
|
|
231
|
+
* 署名由**调用方**给值(而不是在基座里按 `config` 现算):两条腿的判据本就不同(HTTP 腿按
|
|
231
232
|
* 品牌判官 `isBrandedDeployment`(`capabilities/brand-identity.ts`)分 branded/非 branded,run-local 恒是 Sema 本地形),
|
|
232
|
-
*
|
|
233
|
+
* 各自算一次、传进来一次。手带的另一格 `autoBackgroundOnTimeout` 两条腿判据相同(部署旋钮 `AUTO_BACKGROUND_ON_TIMEOUT`),
|
|
234
|
+
* 所以由手带的唯一铸点 {@link buildHandsBand} 按 `config` 读 —— 读点只有一处,两只 Runner 自动同源。
|
|
233
235
|
*/
|
|
234
|
-
|
|
236
|
+
commitCoAuthor: NonNullable<RunnerDeps["hands"]>["commitCoAuthor"];
|
|
235
237
|
executionEnvFactory: RunnerDeps["executionEnvFactory"];
|
|
236
238
|
lspManager: RunnerDeps["lspManager"];
|
|
237
239
|
fleetBus: FleetEventBus;
|
|
@@ -246,7 +248,7 @@ export interface RunnerDepsCtx {
|
|
|
246
248
|
}
|
|
247
249
|
/** [ref] A10 留档发现②:main runner `RunnerDeps` 与 main.ts subRunner 字面量之间此前手工重复
|
|
248
250
|
* 的 ~15 个键,类型标注见 {@link createSharedRunnerDeps} 头注。 */
|
|
249
|
-
export type SharedRunnerDeps = Pick<RunnerDeps, "brain" | "readFace" | "readDenyPatterns" | "readDenyBuiltinTiers" | "readDenyBuiltinExclude" | "readDenyFloorRequired" | "memoryDelegationEvidence" | "memoryProvenance" | "memoryCapturePolicy" | "delegationEntryCaps" | "crossSessionInbound" | "crossSessionDialogExpiry" | "writeProtectedPaths" | "memoryEngineDir" | "allowedTools" | "crossBoundaryPosture" | "models" | "roles" | "tiers" | "pricing" | "tracer" | "promptSource" | "executionEnvFactory" | "lspManager" | "backgroundAgentStore" | "mailboxStore" | "rosterStore" | "mods" | "toolResultStore" | "checkpointStore" | "hands" | "sessionPolicyStore" | "usageWindows" | "usageWindowStore" | "memoryScopeAdmission" | "deploymentMemoryScopes" | "sharedMemoryStores" | "compliancePostureResolver" | "lockedConfig" | "retentionPolicy" | "onNotice" | "mcpRevocations" | "peerSeat">;
|
|
251
|
+
export type SharedRunnerDeps = Pick<RunnerDeps, "brain" | "readFace" | "readDenyPatterns" | "readDenyBuiltinTiers" | "readDenyBuiltinExclude" | "readDenyFloorRequired" | "memoryDelegationEvidence" | "memoryProvenance" | "memoryCapturePolicy" | "delegationEntryCaps" | "crossSessionInbound" | "crossSessionDialogExpiry" | "writeProtectedPaths" | "memoryEngineDir" | "allowedTools" | "crossBoundaryPosture" | "models" | "roles" | "tiers" | "pricing" | "tracer" | "promptSource" | "executionEnvFactory" | "lspManager" | "backgroundAgentStore" | "mailboxStore" | "rosterStore" | "mods" | "toolResultStore" | "checkpointStore" | "fileHistoryStore" | "fileHistoryCapture" | "hands" | "sessionPolicyStore" | "usageWindows" | "usageWindowStore" | "memoryScopeAdmission" | "deploymentMemoryScopes" | "sharedMemoryStores" | "compliancePostureResolver" | "lockedConfig" | "retentionPolicy" | "onNotice" | "mcpRevocations" | "peerSeat">;
|
|
250
252
|
/**
|
|
251
253
|
* [ref] A10 留档发现②(review 2026-07-29,[ref]§三族A 同源修补的延续):main runner 的
|
|
252
254
|
* `RunnerDeps` 字面量(下方 `createRunnerDeps`)与 `main.ts` 里 subRunner 的 `new Runner({...})`
|
|
@@ -273,7 +275,7 @@ export type SharedRunnerDeps = Pick<RunnerDeps, "brain" | "readFace" | "readDeny
|
|
|
273
275
|
* 属性,比再抽一层共享基座更强的同源保证),不重复收纳进这里。
|
|
274
276
|
*/
|
|
275
277
|
/** 基座真实消费的窄面(Pick)——subRunner 调用点(main.ts)只需凑这 13 个字段,不必造全量 ctx。 */
|
|
276
|
-
export type SharedRunnerDepsCtx = Pick<RunnerDepsCtx, "config" | "brain" | "pricing" | "tracer" | "promptSource" | "executionEnvFactory" | "lspManager" | "backgroundAgentStore" | "mailboxStore" | "rosterStore" | "deploymentMods" | "toolResultStore" | "checkpointStore" | "sessionPolicyStore" | "
|
|
278
|
+
export type SharedRunnerDepsCtx = Pick<RunnerDepsCtx, "config" | "brain" | "pricing" | "tracer" | "promptSource" | "executionEnvFactory" | "lspManager" | "backgroundAgentStore" | "mailboxStore" | "rosterStore" | "deploymentMods" | "toolResultStore" | "checkpointStore" | "fileHistoryStore" | "sessionPolicyStore" | "commitCoAuthor" | "usageWindowStore" | "orgMemoryAdmission" | "sharedMemoryStores" | "logger" | "governanceSeams" | "mcpRevocations" | "metrics" | "engineDataRoot" | "peerDesk">;
|
|
277
279
|
/** 转发席只需要 `inc` —— 刻意窄到这一个动词,免得把整只 Metrics 拖进这条纯转发腿。 */
|
|
278
280
|
export interface EngineNoticeMetricsSeat {
|
|
279
281
|
inc: (name: string, labels?: Record<string, string>) => void;
|
|
@@ -347,6 +349,13 @@ export declare const CROSS_BOUNDARY_POSTURE_REQUIRES_PRINCIPAL: {
|
|
|
347
349
|
readonly single_user: false;
|
|
348
350
|
};
|
|
349
351
|
export declare function crossBoundaryPostureOf(requirePrincipal: boolean): CrossBoundaryPosture;
|
|
352
|
+
/**
|
|
353
|
+
* 手带(`RunnerDeps.hands`)的**唯一**铸点(纯数据 ⇒ `build*`)。两格两个来源:署名由腿给(两条腿判据不同,见 {@link RunnerDepsCtx.commitCoAuthor};
|
|
354
|
+
* leader 车道今天不署名,显式交 `undefined`),前台命令超时转后台读部署旋钮 `AUTO_BACKGROUND_ON_TIMEOUT` —— 旋钮的读点只有这里。
|
|
355
|
+
* 共享基座(主 / 无手 / hook 代理 / 子代,HTTP 与 run-local 两条腿)与 leader 车道(`boot/leader.ts` → `LeaderWireConfig.hands`)同调这一只:
|
|
356
|
+
* 有手的每一只 Runner 都拿到它,`/health.autoBackgroundOnTimeout` 说「生效」时没有哪只 Runner 例外。
|
|
357
|
+
*/
|
|
358
|
+
export declare function buildHandsBand(config: Pick<ServiceConfig, "autoBackgroundOnTimeout">, commitCoAuthor: RunnerDepsCtx["commitCoAuthor"]): NonNullable<RunnerDeps["hands"]>;
|
|
350
359
|
export declare function buildDeploymentPostureSeats(config: DeploymentPostureConfig): DeploymentPostureSeats;
|
|
351
360
|
/**
|
|
352
361
|
* 部署读拒行**进场**的唯一告知点(非锚定行一行 `read_deny_unanchored_rows`;判据与行形在 `read-deny-anchor-audit.ts`)。律:**一份读拒行的值第一次装进 Runner 席时点名一次** ——
|
|
@@ -356,5 +365,17 @@ export declare function buildDeploymentPostureSeats(config: DeploymentPostureCon
|
|
|
356
365
|
*/
|
|
357
366
|
export declare function announceReadDenyRows(config: Pick<ServiceConfig, "readDenyPatterns">, logger: Pick<Logger, "warn">): void;
|
|
358
367
|
export declare function createSharedRunnerDeps(ctx: SharedRunnerDepsCtx): SharedRunnerDeps;
|
|
368
|
+
/**
|
|
369
|
+
* 这台部署**声明本机属主的规则桶**吗(core `RunnerDeps.localOwnerRules`:不带主体的 run 经规则店的 `forLocalOwner()` 读持久规则,而不是读零规则)。
|
|
370
|
+
* 声明 ⟺ 单用户形(部署形表 `multiTenant` 不成立 —— `REQUIRE_PRINCIPAL` 未开)∧ 规则店装配了。
|
|
371
|
+
*
|
|
372
|
+
* 规则店缺席时不声明:core 把「声明了却没有可存规则的桶」当配置矛盾、在每次 prepare 整轮拒(连带主体的 run 一起),而「没有规则店」本来就是
|
|
373
|
+
* 「没有持久规则」—— 声明与店同生同灭。多租形不声明:不带主体的调用方在那里不是任何人的代表,零规则地板是对的。
|
|
374
|
+
* 单用户形上不带主体的调用方就是这台部署的那一个人(身份边界由跨键不变量 `single-user-anonymous-boundary` 守:无凭据 ∧ 写面无鉴权 ∧ 监听不只在回环 ⇒ 拒启)。
|
|
375
|
+
* 收编(adoption)把本机属主桶整桶改键到一个主体名下,收编计划同时要求 `REQUIRE_PRINCIPAL=true` ⇒ 声明随之撤回(计划表的 `core-decl` 行)。
|
|
376
|
+
*
|
|
377
|
+
* 读者两处、同读这一只:Runner 装配({@link createRunnerDeps})与运维整理阀门的写判官(`boot/stage-06-runners.ts`)。
|
|
378
|
+
*/
|
|
379
|
+
export declare function localOwnerRulesDeclared(config: Parameters<typeof DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds>[0], permissionRuleStore: RunnerDeps["permissionRuleStore"]): boolean;
|
|
359
380
|
export declare function createRunnerDeps(ctx: RunnerDepsCtx): RunnerDeps;
|
|
360
381
|
//# sourceMappingURL=runner-deps.d.ts.map
|
package/dist/boot/runner-deps.js
CHANGED
|
@@ -75,6 +75,9 @@ export function crossBoundaryPostureOf(requirePrincipal) {
|
|
|
75
75
|
}
|
|
76
76
|
throw new Error(`cross-boundary posture table has no word for requirePrincipal=${requirePrincipal} (the table must map both values)`);
|
|
77
77
|
}
|
|
78
|
+
export function buildHandsBand(config, commitCoAuthor) {
|
|
79
|
+
return { commitCoAuthor, autoBackgroundOnTimeout: config.autoBackgroundOnTimeout };
|
|
80
|
+
}
|
|
78
81
|
export function buildDeploymentPostureSeats(config) {
|
|
79
82
|
const crossSessionLayers = buildCrossSessionInboundLayers(config);
|
|
80
83
|
const lkgRows = lkgReadDenyRows(config.configLkgPath);
|
|
@@ -124,9 +127,11 @@ export function createSharedRunnerDeps(ctx) {
|
|
|
124
127
|
mailboxStore: ctx.mailboxStore ? ctx.mailboxStore : undefined,
|
|
125
128
|
rosterStore: ctx.rosterStore ? ctx.rosterStore : undefined,
|
|
126
129
|
mods: ctx.deploymentMods,
|
|
127
|
-
hands: ctx.
|
|
130
|
+
hands: buildHandsBand(ctx.config, ctx.commitCoAuthor),
|
|
128
131
|
toolResultStore: ctx.toolResultStore,
|
|
129
132
|
checkpointStore: ctx.checkpointStore ? ctx.checkpointStore : undefined,
|
|
133
|
+
fileHistoryStore: ctx.fileHistoryStore ? ctx.fileHistoryStore : undefined,
|
|
134
|
+
fileHistoryCapture: coreFileHistoryCaptureSeat(ctx.fileHistoryStore, ctx.config.fileHistoryCapture),
|
|
130
135
|
sessionPolicyStore: ctx.sessionPolicyStore ? ctx.sessionPolicyStore : undefined,
|
|
131
136
|
memoryScopeAdmission: ctx.orgMemoryAdmission.memoryScopeAdmission ? ctx.orgMemoryAdmission.memoryScopeAdmission : undefined,
|
|
132
137
|
deploymentMemoryScopes: ctx.orgMemoryAdmission.deploymentMemoryScopes && ctx.orgMemoryAdmission.deploymentMemoryScopes.length > 0 ? ctx.orgMemoryAdmission.deploymentMemoryScopes : undefined,
|
|
@@ -142,8 +147,11 @@ export function createSharedRunnerDeps(ctx) {
|
|
|
142
147
|
};
|
|
143
148
|
return shared;
|
|
144
149
|
}
|
|
150
|
+
export function localOwnerRulesDeclared(config, permissionRuleStore) {
|
|
151
|
+
return permissionRuleStore !== undefined && !DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds(config);
|
|
152
|
+
}
|
|
145
153
|
export function createRunnerDeps(ctx) {
|
|
146
|
-
const { config, logger, metrics, localRoot, outcomeSink, elicitation, question, toolApproval, sessionStore, memoryEngine, sessionCaptureRecords, memorySyncRunner, runtimeCapsResolver,
|
|
154
|
+
const { config, logger, metrics, localRoot, outcomeSink, elicitation, question, toolApproval, sessionStore, memoryEngine, sessionCaptureRecords, memorySyncRunner, runtimeCapsResolver, permissionRuleStore, fleetBus, workflowRunStore, workflowJournalStore, workflowAgentRegistry, workflowNotifyGate, deliverWorkflowCompletion, } = ctx;
|
|
147
155
|
const peerSessionLister = sessionStore.listSessionRows?.bind(sessionStore);
|
|
148
156
|
const memoryEngineIncident = createMemoryEngineIncidentSink({ logger, metrics });
|
|
149
157
|
const sharedRunnerDeps = createSharedRunnerDeps(ctx);
|
|
@@ -228,9 +236,8 @@ export function createRunnerDeps(ctx) {
|
|
|
228
236
|
}
|
|
229
237
|
: undefined,
|
|
230
238
|
runtimeCapsResolver: runtimeCapsResolver ? runtimeCapsResolver : undefined,
|
|
231
|
-
fileHistoryStore: fileHistoryStore ? fileHistoryStore : undefined,
|
|
232
|
-
fileHistoryCapture: coreFileHistoryCaptureSeat(fileHistoryStore, config.fileHistoryCapture),
|
|
233
239
|
permissionRuleStore: permissionRuleStore ? permissionRuleStore : undefined,
|
|
240
|
+
localOwnerRules: localOwnerRulesDeclared(config, permissionRuleStore),
|
|
234
241
|
onBackgroundChildEvent: fleetBackgroundChildPublisher(fleetBus, (msg, fields) => logger.info(msg, fields)),
|
|
235
242
|
loadProjectMemory: !DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds(config) && config.projectMemoryEnabled
|
|
236
243
|
? makeLoadProjectMemory({ logger, instructionSource: createInstructionSourceSeat(sessionStore, sharedRunnerDeps.onNotice) })
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { ServiceConfig } from "../config.js";
|
|
11
11
|
import type { Logger } from "../observability/logger.js";
|
|
12
|
-
import { type EntitlementsResolverFn, type MemoryOptOutVerdictSource } from "../runtime-caps-resolver.js";
|
|
12
|
+
import { type EntitlementsResolverFn, type MemoryOptOutVerdictSource, type RuntimeCapsReading } from "../runtime-caps-resolver.js";
|
|
13
13
|
export interface RuntimeCapsCtx {
|
|
14
14
|
config: ServiceConfig;
|
|
15
15
|
logger: Logger;
|
|
@@ -50,6 +50,6 @@ export declare function createRuntimeCaps(ctx: RuntimeCapsCtx): {
|
|
|
50
50
|
principalCaps: import("../runtime-caps-resolver.js").PrincipalEntitlementsClient | undefined;
|
|
51
51
|
centerRuntimeCapsResolver: ((principal: string | undefined) => Promise<import("@sema-agent/core").RuntimeCaps | undefined>) | undefined;
|
|
52
52
|
runtimeCapsResolver: EntitlementsResolverFn | undefined;
|
|
53
|
-
|
|
53
|
+
runtimeCapsPeekReading: ((principal: string | undefined) => Promise<RuntimeCapsReading>) | undefined;
|
|
54
54
|
};
|
|
55
55
|
//# sourceMappingURL=runtime-caps.d.ts.map
|
|
@@ -73,7 +73,21 @@ export function createRuntimeCaps(ctx) {
|
|
|
73
73
|
});
|
|
74
74
|
};
|
|
75
75
|
const runtimeCapsResolver = compose(centerRuntimeCapsResolver, true);
|
|
76
|
-
const
|
|
77
|
-
|
|
76
|
+
const peekOver = (base) => compose(base, false);
|
|
77
|
+
const runtimeCapsPeekReading = peekOver(principalCaps === undefined ? undefined : async () => undefined) === undefined
|
|
78
|
+
? undefined
|
|
79
|
+
: async (principal) => {
|
|
80
|
+
let refusedBy;
|
|
81
|
+
const base = principalCaps === undefined
|
|
82
|
+
? undefined
|
|
83
|
+
: async (p) => {
|
|
84
|
+
const reading = await principalCaps.peekRuntimeCapsReading(p);
|
|
85
|
+
refusedBy = reading.autoModeRefusedBy;
|
|
86
|
+
return reading.caps;
|
|
87
|
+
};
|
|
88
|
+
const caps = await peekOver(base)?.(principal);
|
|
89
|
+
return { caps, ...(refusedBy !== undefined ? { autoModeRefusedBy: refusedBy } : {}) };
|
|
90
|
+
};
|
|
91
|
+
return { principalCaps, centerRuntimeCapsResolver, runtimeCapsResolver, runtimeCapsPeekReading };
|
|
78
92
|
}
|
|
79
93
|
//# sourceMappingURL=runtime-caps.js.map
|
|
@@ -25,6 +25,8 @@ import { SessionWatchRegistry } from "../session-watch.js";
|
|
|
25
25
|
import type { TaskListLane } from "./task-list-lane.js";
|
|
26
26
|
import { type RunnerDeps } from "@sema-agent/core";
|
|
27
27
|
import type { MailboxRecipientLifecycle } from "../plugins/mailbox-recipient-lifecycle.js";
|
|
28
|
+
import { type SessionPurgeOutcome } from "../session-deletion.js";
|
|
29
|
+
import { type SessionEraser, type SessionEraseSettler } from "../session-erase.js";
|
|
28
30
|
import type { UserInputLedgerStore } from "../user-input-ledger.js";
|
|
29
31
|
import type { SpaceReclaimer } from "../workspace-space.js";
|
|
30
32
|
export interface SessionFacesCtx {
|
|
@@ -39,6 +41,9 @@ export interface SessionFacesCtx {
|
|
|
39
41
|
toolResultStore: ToolResultStoreFull | undefined;
|
|
40
42
|
resumeAnchorStore: ReturnType<StoreBackend["resumeAnchor"]> | undefined;
|
|
41
43
|
approvalExemptionStore: ReturnType<StoreBackend["approvalExemption"]> | undefined;
|
|
44
|
+
/** 审批问账(E21 级联的一条腿:挂靠被删会话的问行与它们的批随会话删)。读后端的问账本身(`backend.approvalAsk()`),**不看流内审批开关** ——
|
|
45
|
+
* 前世开着协议留下的行,今世关着也照删(与留存律 / 起服收敛同一读法)。缺席 = 本部署没有后端(纯内存 dev)⇒ 无账可删。 */
|
|
46
|
+
approvalAskStore: ReturnType<StoreBackend["approvalAsk"]> | undefined;
|
|
42
47
|
sessionPolicyStore: ReturnType<StoreBackend["sessionPolicy"]> | undefined;
|
|
43
48
|
taskAttachmentStore: TaskAttachmentStore | undefined;
|
|
44
49
|
/** [ref]:文件历史的**擦除脸**(后端在即在,与 `FILE_HISTORY_CAPTURE` 无关;只有删除类动词)。E21 删除读它,
|
|
@@ -62,10 +67,15 @@ export interface SessionFacesCtx {
|
|
|
62
67
|
/** k8s 车道工作区空间的回收座(配了构建缓存卷或快照存储时在场;与托管留存 sweep 同一只)—— E21 级联的一条腿:会话删了 =
|
|
63
68
|
* 这位住客的空间结束了,它的缓存卷、`space/` 快照、该会话停驻车道的快照随之回收。缺席 = 本部署没有可回收的东西。 */
|
|
64
69
|
spaceReclaimer?: SpaceReclaimer;
|
|
70
|
+
/** 删净会话的 **SQL 执行体**(后端的 `sessionEraser`,与留存执行器同一份选项;stage-06 铸)。缺席 = 非 SQL 后端 ⇒ 用会话店的删除锁节 + 上面各店组 local 执行体。 */
|
|
71
|
+
sessionEraser?: SessionEraser;
|
|
72
|
+
/** 删后收尾(stage-06 铸的那一只,留存 lane 同用)。缺席(测试走廊 / 嵌入形)⇒ 用本 ctx 的同几只座铸一只(同一只工厂)。 */
|
|
73
|
+
settleErasedSessions?: SessionEraseSettler;
|
|
65
74
|
}
|
|
66
75
|
export declare function createSessionFaces(ctx: SessionFacesCtx): {
|
|
67
76
|
ownerAware: OwnerAwareSessionStore;
|
|
68
77
|
sessionAudit: ((sessionId: string, opts?: SessionAuditReadOpts) => Promise<{
|
|
78
|
+
projectId?: string | undefined;
|
|
69
79
|
agent?: import("../session-agent.js").SessionAgent | undefined;
|
|
70
80
|
owner: string | null;
|
|
71
81
|
sessionId: string;
|
|
@@ -80,13 +90,13 @@ export declare function createSessionFaces(ctx: SessionFacesCtx): {
|
|
|
80
90
|
promptEpoch?: import("@sema-agent/core").StoredPromptEpoch;
|
|
81
91
|
} | undefined>) | undefined;
|
|
82
92
|
sessionWatchRegistry: SessionWatchRegistry | undefined;
|
|
83
|
-
purgeSession: ((sessionId: string, owner: string | null) => Promise<
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
93
|
+
purgeSession: ((sessionId: string, owner: string | null) => Promise<SessionPurgeOutcome>) | undefined;
|
|
94
|
+
recoverPendingDeletions: (() => Promise<ReadonlyArray<{
|
|
95
|
+
readonly sessionId: string;
|
|
96
|
+
readonly outcome: SessionPurgeOutcome | {
|
|
97
|
+
readonly failed: string;
|
|
98
|
+
};
|
|
99
|
+
}>>) | undefined;
|
|
90
100
|
instrumentDegenerate: ((result: import("@sema-agent/core").TaskResult) => void) | undefined;
|
|
91
101
|
planCacheProbe: PlanCacheProbe;
|
|
92
102
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { buildRewindHandles, buildSessionAudit, buildSessionAuditLocal, buildSessionAuditPg } from "../audit.js";
|
|
2
2
|
import { readSessionAgent } from "../session-agent.js";
|
|
3
|
+
import { readSessionProjectId, sessionWorkspaceStoreOf } from "../session-workspace.js";
|
|
3
4
|
import { makeDegenerateInstrument } from "../degenerate-instrument.js";
|
|
4
5
|
import { PlanCacheProbe } from "../plan-cache-probe.js";
|
|
5
6
|
import { purgeScratchpadDir } from "../env-facts.js";
|
|
@@ -8,19 +9,21 @@ import { setLeafAdvanceListener } from "../session-leaf-bus.js";
|
|
|
8
9
|
import { SessionWatchRegistry, posIntEnv } from "../session-watch.js";
|
|
9
10
|
import { defaultTaskRegistry, peerSessionBoxHandle } from "@sema-agent/core";
|
|
10
11
|
import { reapSessionBackgroundHard } from "../background-session-reap.js";
|
|
11
|
-
import { probeSessionChildren, retireSessionChildren,
|
|
12
|
-
import { SessionActiveRunError } from "../execution-placement.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
12
|
+
import { probeSessionChildren, retireSessionChildren, sessionTenantScope, SessionChildrenStopIncompleteError } from "../session-children-retire.js";
|
|
13
|
+
import { SessionActiveRunError, SessionDeletionSupersededError } from "../execution-placement.js";
|
|
14
|
+
import { CROSS_PROCESS_TAKEOVER_AFTER_MS, deletionTokenMintedAt } from "../session-deletion.js";
|
|
15
|
+
import { createLocalSessionEraser, createSessionEraseSettler } from "../session-erase.js";
|
|
16
|
+
import { headReadOf } from "../session-incarnation.js";
|
|
15
17
|
import { retireSessionId } from "../deleted-session-ids.js";
|
|
16
18
|
import { seatText } from "../trace/exit-seat.js";
|
|
17
19
|
export function createSessionFaces(ctx) {
|
|
18
|
-
const { config, logger, metrics, localRoot, backend, sessionStore, runStore, checkpointStore, toolResultStore, resumeAnchorStore, approvalExemptionStore, sessionPolicyStore, taskAttachmentStore, fileHistoryErasure, workflowCompletionInbox, taskListLane, dropSessionScoped, mailboxStore, mailboxRecipientLifecycle, backgroundAgentStore, userInputLedgerStore, spaceReclaimer, } = ctx;
|
|
20
|
+
const { config, logger, metrics, localRoot, backend, sessionStore, runStore, checkpointStore, toolResultStore, resumeAnchorStore, approvalExemptionStore, approvalAskStore, sessionPolicyStore, taskAttachmentStore, fileHistoryErasure, workflowCompletionInbox, taskListLane, dropSessionScoped, mailboxStore, mailboxRecipientLifecycle, backgroundAgentStore, userInputLedgerStore, spaceReclaimer, } = ctx;
|
|
19
21
|
const mysqlPool = backend?.mysqlPool();
|
|
20
22
|
const auditPgPool = backend?.pgPool();
|
|
21
23
|
const auditLocalRows = localSessionRowsOf(backend);
|
|
22
24
|
const ownerAware = sessionStore;
|
|
23
25
|
const headOf = headReadOf(sessionStore);
|
|
26
|
+
const workspaceStore = sessionWorkspaceStoreOf(sessionStore);
|
|
24
27
|
const sessionAudit = mysqlPool || auditPgPool || auditLocalRows
|
|
25
28
|
? async (sessionId, opts) => {
|
|
26
29
|
const handles = opts !== undefined && resumeAnchorStore !== undefined ? buildRewindHandles(await resumeAnchorStore.listBySession(sessionId), opts.reader) : undefined;
|
|
@@ -31,9 +34,13 @@ export function createSessionFaces(ctx) {
|
|
|
31
34
|
: await buildSessionAuditLocal(auditLocalRows, sessionId, handles);
|
|
32
35
|
if (!audit)
|
|
33
36
|
return undefined;
|
|
34
|
-
const [head, agent] = await Promise.all([
|
|
37
|
+
const [head, agent, projectId] = await Promise.all([
|
|
38
|
+
headOf?.(sessionId),
|
|
39
|
+
opts !== undefined ? readSessionAgent(ownerAware, sessionId) : undefined,
|
|
40
|
+
opts !== undefined ? readSessionProjectId(workspaceStore, sessionId) : undefined,
|
|
41
|
+
]);
|
|
35
42
|
const owner = head?.owner;
|
|
36
|
-
return { ...audit, owner: owner ?? null, ...(agent !== undefined ? { agent } : {}) };
|
|
43
|
+
return { ...audit, owner: owner ?? null, ...(agent !== undefined ? { agent } : {}), ...(projectId !== undefined ? { projectId } : {}) };
|
|
37
44
|
}
|
|
38
45
|
: undefined;
|
|
39
46
|
const sessionWatchRegistry = headOf
|
|
@@ -44,113 +51,132 @@ export function createSessionFaces(ctx) {
|
|
|
44
51
|
})
|
|
45
52
|
: undefined;
|
|
46
53
|
setLeafAdvanceListener(sessionWatchRegistry ? (sid, leaf, owner, seq) => sessionWatchRegistry.notifyLocal(sid, leaf, owner, seq) : undefined);
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const localDeletion = ownerAware.deleteSession;
|
|
55
|
+
const eraser = ctx.sessionEraser ??
|
|
56
|
+
(localDeletion !== undefined
|
|
57
|
+
? createLocalSessionEraser((sid, owner, token, legs) => localDeletion.call(ownerAware, sid, owner, token, legs), {
|
|
58
|
+
runStore, approvalAskStore, checkpointStore, resumeAnchorStore, approvalExemptionStore, taskAttachmentStore, userInputLedgerStore, taskListLane,
|
|
59
|
+
workflowCompletionInbox, mailboxStore, toolResultStore, sessionPolicyStore, fileHistoryErasure,
|
|
60
|
+
}, logger)
|
|
61
|
+
: undefined);
|
|
62
|
+
const settle = ctx.settleErasedSessions ?? createSessionEraseSettler({ attachments: taskAttachmentStore, spaceReclaimer, logger });
|
|
63
|
+
const deletion = ownerAware.sessionDeletion;
|
|
64
|
+
const attempts = new Map();
|
|
65
|
+
const holder = (token) => attempts.get(token) ?? "elsewhere";
|
|
66
|
+
const purge = eraser !== undefined && deletion !== undefined
|
|
67
|
+
? async (sessionId, owner, expect) => {
|
|
68
|
+
const tenantScope = sessionTenantScope(owner);
|
|
69
|
+
const reach = await probeSessionChildren({ agentStore: backgroundAgentStore, checkpointStore, registry: defaultTaskRegistry }, sessionId, tenantScope);
|
|
58
70
|
if (!reach.reachable) {
|
|
59
71
|
logger.warn("session_delete_children_still_alive", { sessionId, remaining: reach.unreachableHandles.length, handles: reach.unreachableHandles });
|
|
60
72
|
return { childrenAlive: reach.unreachableHandles };
|
|
61
73
|
}
|
|
62
|
-
|
|
63
|
-
if ("active" in runs)
|
|
64
|
-
return { active: runs.active };
|
|
65
|
-
{
|
|
66
|
-
const children = await retireSessionChildren({ agentStore: backgroundAgentStore, checkpointStore, registry: defaultTaskRegistry }, sessionId, childScope);
|
|
67
|
-
if (children.observed.length > 0)
|
|
68
|
-
logger.info("session_children_retired", { sessionId, found: children.observed.length, stopped: children.stopped, rounds: children.rounds });
|
|
69
|
-
if (children.stopped === "incomplete") {
|
|
70
|
-
logger.warn("session_delete_children_stop_incomplete", { sessionId, remaining: children.remainingHandles.length, handles: children.remainingHandles });
|
|
71
|
-
throw new SessionChildrenStopIncompleteError(sessionId, children.remainingHandles.length);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (checkpointStore)
|
|
75
|
-
await checkpointStore.deleteBySession(sessionId, owner);
|
|
76
|
-
if (toolResultStore) {
|
|
77
|
-
const report = await toolResultStore.deleteBySession?.(sessionId);
|
|
78
|
-
if (report !== undefined && report.unattributable > 0) {
|
|
79
|
-
logger.warn("tool_result_unattributable_rows_survive_session_delete", {
|
|
80
|
-
sessionId,
|
|
81
|
-
deleted: report.deleted,
|
|
82
|
-
unattributable: report.unattributable,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (resumeAnchorStore)
|
|
87
|
-
await resumeAnchorStore.deleteBySession(sessionId);
|
|
88
|
-
if (approvalExemptionStore)
|
|
89
|
-
await approvalExemptionStore.deleteBySession(sessionId);
|
|
90
|
-
if (sessionPolicyStore?.deleteBySession)
|
|
91
|
-
await sessionPolicyStore.deleteBySession(sessionId);
|
|
92
|
-
if (taskAttachmentStore)
|
|
93
|
-
await taskAttachmentStore.deleteBySession(sessionId);
|
|
94
|
-
if (userInputLedgerStore)
|
|
95
|
-
await userInputLedgerStore.deleteBySession(sessionId);
|
|
96
|
-
if (taskListLane)
|
|
97
|
-
await taskListLane.deleteBySession(sessionId);
|
|
98
|
-
dropSessionScoped?.(sessionId);
|
|
99
|
-
if (fileHistoryErasure) {
|
|
100
|
-
if (typeof fileHistoryErasure.deleteBySession === "function")
|
|
101
|
-
await fileHistoryErasure.deleteBySession(sessionId);
|
|
102
|
-
else {
|
|
103
|
-
await fileHistoryErasure.reap(sessionId, []);
|
|
104
|
-
logger.warn("session_file_history_baselines_retained", {
|
|
105
|
-
sessionId,
|
|
106
|
-
note: "this file-history store has no whole-scope erase verb (deleteBySession); boundaries were reaped but v1 baselines (original file bytes) remain in the store until it implements that verb — an open deletion-rights gap, not silent",
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (workflowCompletionInbox)
|
|
111
|
-
await workflowCompletionInbox.purge(sessionId, owner ?? null).catch((err) => logger.warn("workflow_completion_inbox_purge_failed", { sessionId, err: seatText("operator-log-text", String(err)) }));
|
|
112
|
-
const peerBox = mailboxStore !== undefined && mailboxRecipientLifecycle !== undefined
|
|
113
|
-
? { store: mailboxStore, lifecycle: mailboxRecipientLifecycle, scope: owner ?? "default", handle: peerSessionBoxHandle(sessionId) }
|
|
114
|
-
: undefined;
|
|
115
|
-
if (peerBox !== undefined) {
|
|
116
|
-
await peerBox.lifecycle.retireRecipient(peerBox.scope, peerBox.handle, Date.now());
|
|
117
|
-
}
|
|
118
|
-
await purgeScratchpadDir(config.localDataRoot ?? localRoot, sessionId);
|
|
74
|
+
let fence;
|
|
119
75
|
try {
|
|
120
|
-
await
|
|
76
|
+
fence = await deletion.fence(sessionId, owner, expect === undefined ? { holder } : { holder, expect });
|
|
121
77
|
}
|
|
122
78
|
catch (err) {
|
|
123
|
-
|
|
79
|
+
if (err instanceof SessionActiveRunError)
|
|
80
|
+
return { active: err.activeTaskId };
|
|
81
|
+
throw err;
|
|
124
82
|
}
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
83
|
+
if (fence === undefined)
|
|
84
|
+
return { deleted: false };
|
|
85
|
+
if ("inProgress" in fence)
|
|
86
|
+
return { inProgress: true };
|
|
87
|
+
const { token, incarnation: spaceKey } = fence;
|
|
88
|
+
attempts.set(token, "running");
|
|
89
|
+
const step = async (leg) => {
|
|
90
|
+
if (!(await deletion.holds(sessionId, token)))
|
|
91
|
+
throw new SessionDeletionSupersededError(sessionId);
|
|
92
|
+
return leg();
|
|
93
|
+
};
|
|
94
|
+
let trees;
|
|
129
95
|
try {
|
|
130
|
-
|
|
96
|
+
if (mailboxStore !== undefined && mailboxRecipientLifecycle !== undefined)
|
|
97
|
+
await step(() => mailboxRecipientLifecycle.retireRecipient(tenantScope, peerSessionBoxHandle(sessionId), Date.now()));
|
|
98
|
+
await step(async () => {
|
|
99
|
+
const children = await retireSessionChildren({ agentStore: backgroundAgentStore, checkpointStore, registry: defaultTaskRegistry }, sessionId, tenantScope);
|
|
100
|
+
if (children.observed.length > 0)
|
|
101
|
+
logger.info("session_children_retired", { sessionId, found: children.observed.length, stopped: children.stopped, rounds: children.rounds });
|
|
102
|
+
if (children.stopped === "incomplete") {
|
|
103
|
+
logger.warn("session_delete_children_stop_incomplete", { sessionId, remaining: children.remainingHandles.length, handles: children.remainingHandles });
|
|
104
|
+
throw new SessionChildrenStopIncompleteError(sessionId, children.remainingHandles.length);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
await step(() => purgeScratchpadDir(config.localDataRoot ?? localRoot, sessionId));
|
|
108
|
+
await step(async () => {
|
|
109
|
+
try {
|
|
110
|
+
await reapSessionBackgroundHard(sessionId, tenantScope, { includeRetained: false, reason: "session_deleted" }, logger);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
logger.warn("session_background_reap_failed", { sessionId, err: seatText("operator-log-text", String(err)) });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
await step(() => retireSessionId(sessionId, owner, config));
|
|
117
|
+
const receipt = await eraser.erase({ sessionId, owner, token });
|
|
118
|
+
switch (receipt.outcome) {
|
|
119
|
+
case "superseded":
|
|
120
|
+
throw new SessionDeletionSupersededError(sessionId);
|
|
121
|
+
case "erased":
|
|
122
|
+
trees = receipt.trees;
|
|
123
|
+
break;
|
|
124
|
+
default: {
|
|
125
|
+
const unknownOutcome = receipt;
|
|
126
|
+
throw new Error(`session delete: no arm for erase outcome ${JSON.stringify(unknownOutcome)}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
131
129
|
}
|
|
132
130
|
catch (err) {
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
attempts.set(token, "ended");
|
|
132
|
+
if (err instanceof SessionDeletionSupersededError) {
|
|
133
|
+
logger.info("session_delete_superseded", { sessionId });
|
|
134
|
+
return { inProgress: true };
|
|
135
|
+
}
|
|
135
136
|
throw err;
|
|
136
137
|
}
|
|
138
|
+
attempts.delete(token);
|
|
139
|
+
await sessionStore.forget?.(sessionId);
|
|
137
140
|
sessionWatchRegistry?.dropSession(sessionId);
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
141
|
+
dropSessionScoped?.(sessionId);
|
|
142
|
+
await settle({ ...trees, sessions: [{ sessionId, owner, incarnation: spaceKey }] });
|
|
143
|
+
return { deleted: true };
|
|
144
|
+
}
|
|
145
|
+
: undefined;
|
|
146
|
+
const purgeSession = purge !== undefined ? (sessionId, owner) => purge(sessionId, owner) : undefined;
|
|
147
|
+
const recoverOne = async (sessionId, owner, token) => {
|
|
148
|
+
const unfinished = "the session stays in the deleting state (it reads as gone everywhere); the next start or a repeated DELETE by its owner finishes it";
|
|
149
|
+
try {
|
|
150
|
+
const outcome = await purge(sessionId, owner, token);
|
|
151
|
+
if ("deleted" in outcome && outcome.deleted)
|
|
152
|
+
logger.info("session_delete_recovered", { sessionId });
|
|
153
|
+
else if (!("inProgress" in outcome))
|
|
154
|
+
logger.warn("session_delete_recovery_unfinished", { sessionId, outcome: Object.keys(outcome)[0], effect: unfinished });
|
|
155
|
+
return outcome;
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
logger.warn("session_delete_recovery_unfinished", { sessionId, outcome: "failed", err: seatText("operator-log-text", String(err)), effect: unfinished });
|
|
159
|
+
return { failed: seatText("operator-log-text", String(err)) };
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const recoverPendingDeletions = purge !== undefined && deletion !== undefined
|
|
163
|
+
? async () => {
|
|
164
|
+
const out = [];
|
|
165
|
+
for (const { sessionId, owner, token } of await deletion.pending()) {
|
|
166
|
+
const outcome = await recoverOne(sessionId, owner, token);
|
|
167
|
+
out.push({ sessionId, outcome });
|
|
168
|
+
if ("inProgress" in outcome) {
|
|
169
|
+
const minted = deletionTokenMintedAt(token) ?? Date.now();
|
|
170
|
+
const delayMs = Math.max(1_000, minted + CROSS_PROCESS_TAKEOVER_AFTER_MS - Date.now() + 1_000);
|
|
171
|
+
logger.info("session_delete_recovery_deferred", { sessionId, delayMs, note: "another attempt may still be running this delete; it is taken over once the takeover window has passed" });
|
|
172
|
+
setTimeout(() => void recoverOne(sessionId, owner, token), delayMs).unref?.();
|
|
173
|
+
}
|
|
148
174
|
}
|
|
149
|
-
return
|
|
175
|
+
return out;
|
|
150
176
|
}
|
|
151
177
|
: undefined;
|
|
152
178
|
const instrumentDegenerate = mysqlPool ? makeDegenerateInstrument(mysqlPool, metrics, logger) : undefined;
|
|
153
179
|
const planCacheProbe = new PlanCacheProbe(metrics, logger);
|
|
154
|
-
return { ownerAware, sessionAudit, sessionWatchRegistry, purgeSession, instrumentDegenerate, planCacheProbe };
|
|
180
|
+
return { ownerAware, sessionAudit, sessionWatchRegistry, purgeSession, recoverPendingDeletions, instrumentDegenerate, planCacheProbe };
|
|
155
181
|
}
|
|
156
182
|
//# sourceMappingURL=session-faces.js.map
|