@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,42 +1,45 @@
|
|
|
1
1
|
import { redactErrorMessage, redactHead, redactTerminalResult } from "../../observability/run-terminal.js";
|
|
2
2
|
import { runWithVerification, runCascade, taskNotificationDedupKey, uuidv7 } from "@sema-agent/core";
|
|
3
3
|
import { heldFor } from "../../peer-seat.js";
|
|
4
|
-
import { graftParkToolCallId, markChildrenStoppedByUserOnAbort, syncRefusalHttpStatus, zeroWorkRefusalFacts, releaseKeyIfZeroWorkRefusal, createPromptCommitReader, settleResumeAnchor, HEARTBEAT_MS } from "../../runs.js";
|
|
5
|
-
import { atHostBoundary, sealResultForExit, outwardPlane } from "../../terminal.js";
|
|
4
|
+
import { beatRunHeartbeat, graftParkToolCallId, markChildrenStoppedByUserOnAbort, syncRefusalHttpStatus, zeroWorkRefusalFacts, releaseKeyIfZeroWorkRefusal, createPromptCommitReader, settleResumeAnchor, TurnAnchorCapture, HEARTBEAT_MS } from "../../runs.js";
|
|
5
|
+
import { atHostBoundary, failureCodeOf, sealResultForExit, outwardPlane } from "../../terminal.js";
|
|
6
6
|
import { voidVerifierPauseCard } from "../../verifier-pause-card.js";
|
|
7
|
-
import {
|
|
7
|
+
import { withSubject } from "../../observability/principal-context.js";
|
|
8
8
|
import { fleetRunPublisher, fleetRunLabels, fleetRunResiduals, nameFleetRowOnDelivery } from "../../fleet/fleet-bus.js";
|
|
9
9
|
import { defaultSubagentTailBus } from "../../fleet/subagent-tail-bus.js";
|
|
10
10
|
import { createLiveModelText, modelStreamOfTask } from "../../trace/model-segment.js";
|
|
11
11
|
import { emitPendingWorkflowCompletions, taskNotificationInboxEntry, taskNotificationStreamKeyOf, NotifiedKeys } from "../../orchestration/workflow-completion-inbox.js";
|
|
12
|
-
import { createForwardAppendFailedNote, createLedgerSink
|
|
12
|
+
import { createForwardAppendFailedNote, createLedgerSink } from "../../trace/ledger-sink.js";
|
|
13
|
+
import { createHitlTransport } from "../../hitl-delivery.js";
|
|
13
14
|
import { registerEngineNoticeLeg } from "../../trace/engine-notice-wire.js";
|
|
14
15
|
import { clearTurnActivity, readTurnActivityMs, recordTurnActivity } from "../../turn-activity.js";
|
|
15
16
|
import { buildCancelledLedgerRow, createRunAbort, mintCancelledResult } from "../../run-cancel-context.js";
|
|
16
17
|
import { recordResourceWindow } from "../../resource-window.js";
|
|
17
18
|
import { redactSecrets } from "../../trace/redact.js";
|
|
18
19
|
import { writeLiveFrame, writeLiveHeartbeat } from "../live-frame.js";
|
|
19
|
-
import { contextUsageEventData, turnEndEventData, toolStartEventData, toolEndEventData, taskProgressEventData, taskStartedEventData, taskNotificationEventData, compactedEventData, diagnosticsEventData, brainStatusEventData, steeringInjectedEventData, compactionOutcomeEventData, compactionStartedEventData, workspaceChangedEventData, wiringManifestFaceEventData, toolRosterDeltaEventData, toolProgressEventData, toolDisclosureEventData, humanInputEventData, appendModelUsageDelta, attachModelUsage,
|
|
20
|
+
import { contextUsageEventData, turnEndEventData, toolStartEventData, toolEndEventData, taskProgressEventData, taskStartedEventData, taskNotificationEventData, compactedEventData, diagnosticsEventData, brainStatusEventData, steeringInjectedEventData, compactionOutcomeEventData, compactionStartedEventData, workspaceChangedEventData, wiringManifestFaceEventData, toolRosterDeltaEventData, toolProgressEventData, toolDisclosureEventData, humanInputEventData, appendModelUsageDelta, attachModelUsage, createPromptManifestSeat, identityFields } from "../../trace/project.js";
|
|
20
21
|
import { cascadeConfig, fillRunPreviewOnDelivery, runMeta } from "../run-meta.js";
|
|
21
22
|
import { idemCallerOf, inflightKeyOf, submissionIdemOf } from "../idempotency.js";
|
|
22
|
-
import { replayOfExistingRun } from "../submit-replay.js";
|
|
23
|
-
import { httpErrorCode, sendJson,
|
|
23
|
+
import { isReplayedOutcome, replayedOutcome, replayOfExistingRun } from "../submit-replay.js";
|
|
24
|
+
import { httpErrorCode, sendJson, sseHeaders } from "../send.js";
|
|
24
25
|
import { collectSsePreamble } from "../sse-log.js";
|
|
25
26
|
import { buildApprovalPreamble } from "../../approval-card.js";
|
|
26
|
-
import { approvalPreambleReplays,
|
|
27
|
+
import { approvalPreambleReplays, declaredApprovalFrameFamilies, resolveApprovalLeg, resolveStreamApprovalGate } from "../../tool-approval.js";
|
|
27
28
|
import { buildActiveRunConflict, isActiveRunConflictBody, toDoneFrameResult } from "../active-run-conflict.js";
|
|
28
29
|
import { commitExecutionContext } from "../execution-context.js";
|
|
29
30
|
import { rootSessionAbsentAnswer } from "../execution-context.js";
|
|
31
|
+
import { recheckClaimBeforeLaunch, startClaimHeartbeat } from "../claim-heartbeat.js";
|
|
32
|
+
import { timeClaim } from "../claim-latency.js";
|
|
30
33
|
import { commitSessionInheritEnv } from "../session-inherit-env.js";
|
|
31
|
-
import { headerStr,
|
|
32
|
-
import {
|
|
34
|
+
import { headerStr, gatedPerson, gatedSubject, explicitOperatorOk, runIdentityOf } from "../principal-gate.js";
|
|
35
|
+
import { recoveredSubject } from "../../owner-faces.js";
|
|
36
|
+
import { recordFailOpen } from "../../observability/fail-open.js";
|
|
33
37
|
import { buildSyncSubmitBody } from "../sync-submit-body.js";
|
|
34
38
|
import { assertNever } from "../route-ctx.js";
|
|
35
39
|
import * as facts from "../../capability-facts.js";
|
|
36
|
-
import { persistSubmissionCtx } from "../submit-ctx.js";
|
|
40
|
+
import { persistSubmissionCtx, SUBMIT_CTX_CLAIM_LOST } from "../submit-ctx.js";
|
|
37
41
|
import { withModelReachScope } from "../../model-reach-scope.js";
|
|
38
42
|
import { createInstructionSelectionLeg } from "../../instruction-selection.js";
|
|
39
|
-
import { fieldConflictFacts } from "../../field-conflict.js";
|
|
40
43
|
import { refusalBody } from "../refusal-body.js";
|
|
41
44
|
import { heldWorkflowParkDecisions } from "../../parked-decide.js";
|
|
42
45
|
import { createSessionWorkspaceRecorder, sessionWorkspaceStoreOf } from "../../session-workspace.js";
|
|
@@ -69,8 +72,8 @@ function refusalDoneResult(body) {
|
|
|
69
72
|
const b = body;
|
|
70
73
|
return { status: "failed", errorCode: String(b.errorCode), errorMessage: String(b.error) };
|
|
71
74
|
}
|
|
72
|
-
function
|
|
73
|
-
return resp.status === 200 ? resp.body : refusalDoneResult(resp.body);
|
|
75
|
+
function doneFrameOfOutcome(resp) {
|
|
76
|
+
return { type: "done", result: resp.status === 200 ? resp.body : refusalDoneResult(resp.body), ...(isReplayedOutcome(resp) ? { replay: true } : {}) };
|
|
74
77
|
}
|
|
75
78
|
const MULTI_ATTEMPT_NO_EVENT_CHANNEL_NOTICE = "verify / cascade ran with their normal multi-attempt semantics, but the synchronous /v1/tasks endpoint has no event channel — no status/progress frames exist to replay on this shape. For status / progress / delegated-child frames and the terminal done, submit via POST /v1/runs and read GET /v1/runs/:id/events; note that verify / cascade legs carry no per-turn stream there either (no wiring_manifest / text / turn_end frames — the engine runs those legs as result-returning attempts).";
|
|
76
79
|
export async function handleTasks(req, res, match, ctx) {
|
|
@@ -98,18 +101,18 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
98
101
|
const liveStream = match.decl.id === "tasks-submit-stream";
|
|
99
102
|
{
|
|
100
103
|
const rawIdem = headerStr(req.headers["idempotency-key"]);
|
|
101
|
-
const submitter =
|
|
104
|
+
const submitter = gatedSubject(req, deps.config);
|
|
102
105
|
const keyedBody = rawIdem ? await readJson(req) : undefined;
|
|
103
106
|
const idem = rawIdem ? submissionIdemOf(rawIdem, idemCallerOf(req, ctx), keyedBody) : undefined;
|
|
104
107
|
const inflightKey = idem ? inflightKeyOf(idem, "sync") : undefined;
|
|
105
108
|
const cached = inflightKey ? idemCache.peek(inflightKey) : undefined;
|
|
106
109
|
const keyedRow = idem && !cached && deps.runStore ? await deps.runStore.getRunByIdem(idem.key) : undefined;
|
|
107
110
|
if (keyedRow && deps.runStore) {
|
|
108
|
-
const replay = await replayOfExistingRun(keyedRow, {
|
|
111
|
+
const replay = await replayOfExistingRun(keyedRow, { subject: submitter, idem }, "sync", deps, deps.runStore);
|
|
109
112
|
if (liveStream && replay.status === 200) {
|
|
110
113
|
sseHeaders(res, { "x-task-id": keyedRow.taskId });
|
|
111
114
|
writeMetaFrame(res, keyedRow.taskId, keyedRow.sessionId);
|
|
112
|
-
writeLiveFrame(res,
|
|
115
|
+
writeLiveFrame(res, doneFrameOfOutcome(replay));
|
|
113
116
|
res.end();
|
|
114
117
|
}
|
|
115
118
|
else {
|
|
@@ -127,9 +130,9 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
127
130
|
hb.unref?.();
|
|
128
131
|
res.on("close", () => clearInterval(hb));
|
|
129
132
|
try {
|
|
130
|
-
const resp = await cached;
|
|
133
|
+
const resp = replayedOutcome(await cached);
|
|
131
134
|
if (!res.writableEnded)
|
|
132
|
-
writeLiveFrame(res,
|
|
135
|
+
writeLiveFrame(res, doneFrameOfOutcome(resp));
|
|
133
136
|
}
|
|
134
137
|
finally {
|
|
135
138
|
clearInterval(hb);
|
|
@@ -137,7 +140,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
137
140
|
res.end();
|
|
138
141
|
}
|
|
139
142
|
else {
|
|
140
|
-
const resp = await cached;
|
|
143
|
+
const resp = replayedOutcome(await cached);
|
|
141
144
|
sendSubmitResult(res, resp);
|
|
142
145
|
}
|
|
143
146
|
return;
|
|
@@ -149,7 +152,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
149
152
|
if (!prepared)
|
|
150
153
|
return;
|
|
151
154
|
try {
|
|
152
|
-
runSlot = admitRun(req, res);
|
|
155
|
+
runSlot = await admitRun(req, res, prepared.seat);
|
|
153
156
|
if (runSlot === undefined)
|
|
154
157
|
return;
|
|
155
158
|
const declaredFamilies = declaredApprovalFrameFamilies(prepared.body.settings);
|
|
@@ -164,31 +167,32 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
164
167
|
};
|
|
165
168
|
};
|
|
166
169
|
const assembleApprovalLeg = (streamApprovalOn) => resolveApprovalLeg({ ...approvalLegInput(streamApprovalOn), nowMonotonicMs: performance.now() });
|
|
167
|
-
const principal = prepared.auth?.
|
|
168
|
-
const wiringOperatorFace = explicitOperatorOk(
|
|
170
|
+
const principal = prepared.auth?.subject;
|
|
171
|
+
const wiringOperatorFace = explicitOperatorOk(gatedPerson(req, deps.config), deps.config);
|
|
169
172
|
let wiringReceipt;
|
|
170
173
|
const instructionLeg = createInstructionSelectionLeg();
|
|
171
174
|
const legWiringSections = () => ({ instructions: instructionLeg.segment(), skills: prepared.legFacts?.skills });
|
|
172
175
|
const withRunReceipt = (out) => wiringReceipt !== undefined ? { ...out, wiringManifest: wiringReceipt } : out;
|
|
173
176
|
if (liveStream) {
|
|
174
|
-
if (prepared.verify || prepared.cascade) {
|
|
175
|
-
sendError(res, 400, "request.field_conflict", "verify / cascade are not supported on /v1/tasks/stream (both are multi-attempt, not a single stream) — use /v1/tasks or /v1/runs", fieldConflictFacts("cascade_verify", prepared.verify ? (prepared.cascade ? ["verify", "cascade"] : ["verify"]) : ["cascade"]));
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
177
|
const earlyDurableTid = facts.durableRuns(deps).available ? uuidv7() : undefined;
|
|
179
178
|
const streamLegStartedAt = Date.now();
|
|
180
179
|
const detachOnDisconnect = headerStr(req.headers["x-detach-on-disconnect"]) === "true";
|
|
181
|
-
if (detachOnDisconnect && earlyDurableTid === undefined) {
|
|
182
|
-
sendError(res, 400, "request.precondition_unmet", "x-detach-on-disconnect requires a durable run (a run store + sessionId) — without one the detached result would be unqueryable");
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
180
|
reqState.streamTaskId = earlyDurableTid;
|
|
186
181
|
let usageKey;
|
|
182
|
+
let manifestSeat;
|
|
187
183
|
reqState.streamDetached = detachOnDisconnect;
|
|
184
|
+
let heldTerminal;
|
|
185
|
+
const writeTerminalFrame = (frame) => {
|
|
186
|
+
if (heldTerminal === undefined && prepared.seat.keepsWithoutWithdraw)
|
|
187
|
+
writeLiveFrame(res, frame);
|
|
188
|
+
else
|
|
189
|
+
heldTerminal = frame;
|
|
190
|
+
};
|
|
191
|
+
let stopClaimHeartbeat;
|
|
188
192
|
sseHeaders(res, earlyDurableTid ? { "x-task-id": earlyDurableTid } : undefined);
|
|
189
193
|
if (earlyDurableTid)
|
|
190
194
|
writeMetaFrame(res, earlyDurableTid, prepared.spec.sessionId, prepared.warnings);
|
|
191
|
-
const ac = createRunAbort(prepared.auth?.
|
|
195
|
+
const ac = createRunAbort(prepared.auth?.subject ?? null);
|
|
192
196
|
let closed = false;
|
|
193
197
|
let detachLogged = false;
|
|
194
198
|
let disconnectParkGrace;
|
|
@@ -233,18 +237,9 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
233
237
|
checkpointStore: deps.checkpointStore,
|
|
234
238
|
});
|
|
235
239
|
const replaySessionId = approvalPreambleReplays(approvalLegInput(replayGate.active)) ? prepared.spec.sessionId : undefined;
|
|
236
|
-
|
|
237
|
-
const presentedCompleted = new Set();
|
|
238
|
-
const admitPresentedComplete = (askId) => {
|
|
239
|
-
if (!presentedOnConnection.has(askId))
|
|
240
|
-
return true;
|
|
241
|
-
if (presentedCompleted.has(askId))
|
|
242
|
-
return false;
|
|
243
|
-
presentedCompleted.add(askId);
|
|
244
|
-
return true;
|
|
245
|
-
};
|
|
240
|
+
let connectionTransport;
|
|
246
241
|
if (replaySessionId) {
|
|
247
|
-
const replayOwner =
|
|
242
|
+
const replayOwner = gatedSubject(req, deps.config) ?? null;
|
|
248
243
|
const askStore = replayGate.active ? replayGate.askStore : undefined;
|
|
249
244
|
let presentedAskIds = [];
|
|
250
245
|
const preambleFrames = await collectSsePreamble(async (signal) => {
|
|
@@ -263,13 +258,11 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
263
258
|
for (const f of preambleFrames)
|
|
264
259
|
writeLiveFrame(res, { ...f });
|
|
265
260
|
if (deps.toolApproval && preambleFrames.length > 0) {
|
|
266
|
-
for (const askId of presentedAskIds)
|
|
267
|
-
presentedOnConnection.add(askId);
|
|
268
261
|
const unwatch = deps.toolApproval.watchPresentedCards(presentedAskIds, (frame) => {
|
|
269
|
-
if (res.writableEnded || res.destroyed
|
|
262
|
+
if (res.writableEnded || res.destroyed)
|
|
270
263
|
return;
|
|
271
264
|
writeLiveFrame(res, { ...frame });
|
|
272
|
-
});
|
|
265
|
+
}, () => connectionTransport);
|
|
273
266
|
res.once("close", unwatch);
|
|
274
267
|
}
|
|
275
268
|
}
|
|
@@ -302,30 +295,34 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
302
295
|
};
|
|
303
296
|
if (deps.runStore) {
|
|
304
297
|
const tid = earlyDurableTid ?? uuidv7();
|
|
305
|
-
const created = await deps.runStore.createRun(tid, prepared.spec.sessionId, principal ?? null, deps.instanceId ?? "default", { ...runMeta(prepared, source), identity: runIdentityOf(req, deps.config, principal ?? null), idem: idem ?? null });
|
|
298
|
+
const created = await timeClaim(deps.metrics, "run_claim", deps.runStore.createRun(tid, prepared.spec.sessionId, principal ?? null, deps.instanceId ?? "default", { ...runMeta(prepared, source), identity: runIdentityOf(req, deps.config, principal ?? null), idem: idem ?? null }));
|
|
306
299
|
if (created.ok)
|
|
307
300
|
clearTurnActivity(tid);
|
|
308
301
|
if (created.ok)
|
|
309
302
|
recordResourceWindow(tid, prepared.spec.resourceSuspend);
|
|
310
303
|
if (created.existing) {
|
|
311
|
-
const replay = await replayOfExistingRun(created.existing, {
|
|
312
|
-
|
|
304
|
+
const replay = await replayOfExistingRun(created.existing, { subject: submitter, idem }, "sync", deps, deps.runStore);
|
|
305
|
+
writeTerminalFrame(doneFrameOfOutcome(replay));
|
|
313
306
|
return replay;
|
|
314
307
|
}
|
|
315
308
|
if (created.sessionAbsent) {
|
|
316
309
|
const refused = rootSessionAbsentAnswer();
|
|
317
|
-
|
|
310
|
+
writeTerminalFrame(doneFrameOfOutcome(refused));
|
|
318
311
|
return refused;
|
|
319
312
|
}
|
|
320
313
|
if (!created.ok) {
|
|
321
|
-
const conflict = await buildActiveRunConflict({ runStore: deps.runStore, checkpointStore: deps.checkpointStore, governance: deps.config,
|
|
314
|
+
const conflict = await buildActiveRunConflict({ runStore: deps.runStore, checkpointStore: deps.checkpointStore, governance: deps.config, turnActivity: readTurnActivityMs }, prepared.spec.sessionId, created.activeTaskId);
|
|
322
315
|
const refused = { status: 409, body: conflict };
|
|
323
|
-
|
|
316
|
+
writeTerminalFrame(doneFrameOfOutcome(refused));
|
|
324
317
|
return refused;
|
|
325
318
|
}
|
|
319
|
+
prepared.seat.noteOwnRun(tid);
|
|
320
|
+
if (detachOnDisconnect)
|
|
321
|
+
prepared.seat.markRecord();
|
|
322
|
+
stopClaimHeartbeat = startClaimHeartbeat(deps.runStore, tid, principal ?? null, deps.metrics);
|
|
326
323
|
const placementReject = await commitExecutionContext(deps, { kind: "run", runStore: deps.runStore, taskId: tid }, prepared.execution);
|
|
327
324
|
if (placementReject) {
|
|
328
|
-
|
|
325
|
+
writeTerminalFrame(doneFrameOfOutcome(placementReject));
|
|
329
326
|
return placementReject;
|
|
330
327
|
}
|
|
331
328
|
durableTaskId = tid;
|
|
@@ -333,13 +330,18 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
333
330
|
}
|
|
334
331
|
if (deps.checkpointStore) {
|
|
335
332
|
const ctxRefusal = await persistSubmissionCtx(deps.checkpointStore, deps, durableTaskId !== undefined && deps.runStore ? { runStore: deps.runStore, taskId: durableTaskId } : undefined, prepared);
|
|
336
|
-
if (ctxRefusal) {
|
|
337
|
-
|
|
333
|
+
if (ctxRefusal !== undefined && ctxRefusal !== SUBMIT_CTX_CLAIM_LOST) {
|
|
334
|
+
writeTerminalFrame(doneFrameOfOutcome(ctxRefusal));
|
|
338
335
|
return ctxRefusal;
|
|
339
336
|
}
|
|
340
337
|
}
|
|
338
|
+
const lostClaim = durableTaskId !== undefined && deps.runStore ? await recheckClaimBeforeLaunch(deps, deps.runStore, prepared.spec.sessionId, durableTaskId) : undefined;
|
|
339
|
+
if (lostClaim !== undefined) {
|
|
340
|
+
writeTerminalFrame(doneFrameOfOutcome(lostClaim));
|
|
341
|
+
return lostClaim;
|
|
342
|
+
}
|
|
341
343
|
commitSessionInheritEnv(deps, prepared.spec.sessionId, prepared.body);
|
|
342
|
-
markChildrenStoppedByUserOnAbort(ac.signal, durableTaskId ?? prepared.spec.sessionId, prepared.auth?.
|
|
344
|
+
markChildrenStoppedByUserOnAbort(ac.signal, durableTaskId ?? prepared.spec.sessionId, prepared.auth?.subject);
|
|
343
345
|
let ledgerSink;
|
|
344
346
|
let ledgerTerminal = false;
|
|
345
347
|
if (durableTaskId && deps.runStore) {
|
|
@@ -348,10 +350,12 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
348
350
|
ledgerSink = createLedgerSink({ appendEvent: (seq, type, data) => rs.appendEvent(tid, seq, type, data), persistThinking: deps.config.traceThinking, onActivity: (kind, statusData) => recordTurnActivity(tid, kind, statusData), legSections: legWiringSections, usage: { modelUsage: deps.modelUsage, taskId: tid } });
|
|
349
351
|
usageKey = tid;
|
|
350
352
|
deps.modelUsage?.register(tid);
|
|
353
|
+
manifestSeat = createPromptManifestSeat(deps.promptManifests, tid);
|
|
351
354
|
const owner = principal ?? null;
|
|
352
355
|
const abortFromVerb = () => ac.abort("cancel_verb");
|
|
356
|
+
stopClaimHeartbeat?.();
|
|
353
357
|
durableHeartbeat = setInterval(() => {
|
|
354
|
-
|
|
358
|
+
beatRunHeartbeat(rs, tid, owner, () => ac.abort("stall_verdict"), () => undefined);
|
|
355
359
|
if (!ac.signal.aborted) {
|
|
356
360
|
void Promise.resolve(rs.isCancelRequested?.(tid, owner)).then((c) => { if (c)
|
|
357
361
|
abortFromVerb(); }).catch(() => undefined);
|
|
@@ -366,7 +370,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
366
370
|
let fleetPub;
|
|
367
371
|
try {
|
|
368
372
|
fleetPub = durableTaskId
|
|
369
|
-
? fleetRunPublisher(deps.fleetBus, { runId: durableTaskId, scope:
|
|
373
|
+
? fleetRunPublisher(deps.fleetBus, { runId: durableTaskId, scope: gatedSubject(req, deps.config) ?? "default", rootTaskId: durableTaskId, sessionId: prepared.spec.sessionId, ...fleetRunLabels(prepared.acceptance.objectiveAtSubmit) })
|
|
370
374
|
: undefined;
|
|
371
375
|
if (fleetPub)
|
|
372
376
|
nameFleetRowOnDelivery(prepared.acceptance, fleetPub);
|
|
@@ -407,7 +411,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
407
411
|
live: (row) => {
|
|
408
412
|
if (res.writableEnded || res.destroyed) {
|
|
409
413
|
if (noticeLedger === undefined)
|
|
410
|
-
recordFailOpen(
|
|
414
|
+
recordFailOpen("server.stream.frame-dropped-stream-closed", "frame=engine_notice");
|
|
411
415
|
return;
|
|
412
416
|
}
|
|
413
417
|
writeLiveFrame(res, { type: "engine_notice", ...row });
|
|
@@ -422,7 +426,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
422
426
|
await deps.userInputLedger.announceUndrained({ sessionId: prepared.spec.sessionId, taskId: durableTaskId });
|
|
423
427
|
try {
|
|
424
428
|
const streamBody = async () => {
|
|
425
|
-
await
|
|
429
|
+
await withSubject(recoveredSubject(principal), async () => {
|
|
426
430
|
const tailContentMode = prepared.spec.forwardSubagentEvents === true ? "on" : "progress_only";
|
|
427
431
|
const childText = createLiveModelText();
|
|
428
432
|
const topText = createLiveModelText();
|
|
@@ -507,7 +511,11 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
507
511
|
const causeAtDone = ev.type === "done" ? ac.cause() : undefined;
|
|
508
512
|
await deps.userInputLedger?.observeLegEvent(liveStream, ev);
|
|
509
513
|
await prepared.acceptance.observe(ev);
|
|
514
|
+
if (ev.type === "done")
|
|
515
|
+
prepared.acceptance.settle(ev.result);
|
|
510
516
|
await liveWorkspace.observe(ev);
|
|
517
|
+
if (ledgerSink)
|
|
518
|
+
await manifestSeat?.drain(ledgerSink.append);
|
|
511
519
|
if (ev.type === "done") {
|
|
512
520
|
finalResult = await mintSubmitExitResult(ev.result, deps.checkpointStore);
|
|
513
521
|
if (durableTaskId && finalResult)
|
|
@@ -518,7 +526,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
518
526
|
finalizeTaskResult(ev.result, principal, prepared.spec.objective);
|
|
519
527
|
noteRunOutcome(finalResult);
|
|
520
528
|
await putRewindAnchor();
|
|
521
|
-
settleFleet(outwardPlane(finalResult.terminal).status, fleetRunResiduals(finalResult));
|
|
529
|
+
settleFleet(outwardPlane(finalResult.terminal).status, fleetRunResiduals(finalResult, failureCodeOf(finalResult.terminal)));
|
|
522
530
|
if (ledgerSink && finalResult) {
|
|
523
531
|
if (usageKey && deps.modelUsage && deps.runStore && durableTaskId) {
|
|
524
532
|
const rs2 = deps.runStore;
|
|
@@ -529,7 +537,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
529
537
|
await ledgerSink.onDone(finalResult);
|
|
530
538
|
ledgerTerminal = true;
|
|
531
539
|
}
|
|
532
|
-
|
|
540
|
+
writeTerminalFrame({ ...ev, result: finalResult });
|
|
533
541
|
continue;
|
|
534
542
|
}
|
|
535
543
|
if (ledgerSink) {
|
|
@@ -612,12 +620,11 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
612
620
|
}
|
|
613
621
|
else if (ev.type === "turn_end" || ev.type === "message_committed" || ev.type === "context_usage") {
|
|
614
622
|
const e = ev;
|
|
615
|
-
const ident = liveIdentityFields(e);
|
|
616
623
|
const arm = ev.type === "turn_end"
|
|
617
|
-
? { type: "turn_end", ...turnEndEventData(ev)
|
|
624
|
+
? { type: "turn_end", ...turnEndEventData(ev) }
|
|
618
625
|
: ev.type === "message_committed"
|
|
619
|
-
? { type: "message_committed", entryId: e.entryId, role: e.role, ...(e.toolCallId !== undefined ? { toolCallId: e.toolCallId } : {}), ...
|
|
620
|
-
: { type: "context_usage", ...contextUsageEventData(ev)
|
|
626
|
+
? { type: "message_committed", entryId: e.entryId, role: e.role, ...(e.toolCallId !== undefined ? { toolCallId: e.toolCallId } : {}), ...identityFields(e) }
|
|
627
|
+
: { type: "context_usage", ...contextUsageEventData(ev) };
|
|
621
628
|
writeLiveFrame(res, arm);
|
|
622
629
|
}
|
|
623
630
|
else {
|
|
@@ -628,22 +635,20 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
628
635
|
});
|
|
629
636
|
};
|
|
630
637
|
const askTaskId = durableTaskId ?? uuidv7();
|
|
631
|
-
const askOwner =
|
|
638
|
+
const askOwner = gatedSubject(req, deps.config) ?? null;
|
|
632
639
|
const emitAsk = (frame) => {
|
|
633
640
|
if (res.writableEnded || res.destroyed) {
|
|
634
|
-
recordFailOpen(
|
|
641
|
+
recordFailOpen("server.stream.frame-dropped-stream-closed", `frame=${frame.type}`);
|
|
635
642
|
return;
|
|
636
643
|
}
|
|
637
644
|
writeLiveFrame(res, { ...frame });
|
|
638
645
|
};
|
|
639
646
|
const faceAlive = () => !res.writableEnded && !res.destroyed;
|
|
640
|
-
const
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
};
|
|
646
|
-
const emitQuestion = createLedgerTwinEmit({ sink: ledgerSink, writeLive: writeQuestionLive, liveReachable: faceAlive });
|
|
647
|
+
const hitlTransport = createHitlTransport({
|
|
648
|
+
...(ledgerSink ? { ledger: ledgerSink.append } : {}),
|
|
649
|
+
live: { write: (frame) => writeLiveFrame(res, { ...frame }), alive: faceAlive },
|
|
650
|
+
});
|
|
651
|
+
connectionTransport = hitlTransport;
|
|
647
652
|
await emitPendingWorkflowCompletions(deps.workflowCompletionInbox, prepared.spec.sessionId, askOwner, (frame) => {
|
|
648
653
|
if (closed || res.writableEnded || res.destroyed)
|
|
649
654
|
throw new Error("stream ended before the completion frame was written");
|
|
@@ -654,16 +659,11 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
654
659
|
writeLiveFrame(res, frame);
|
|
655
660
|
}, { route: "sync-stream-open", connection: "live-sse", log: (m, x) => deps.logger?.info?.(m, x) });
|
|
656
661
|
const withElicit = deps.elicitation
|
|
657
|
-
? () => deps.elicitation.runWithContext({ taskId: askTaskId, owner: askOwner,
|
|
662
|
+
? () => deps.elicitation.runWithContext({ taskId: askTaskId, owner: askOwner, transport: hitlTransport, abortSignal: ac.signal }, streamBody)
|
|
658
663
|
: streamBody;
|
|
659
664
|
const withQuestion = () => deps.question
|
|
660
|
-
? deps.question.runWithContext({ taskId: askTaskId, owner: askOwner,
|
|
665
|
+
? deps.question.runWithContext({ taskId: askTaskId, owner: askOwner, transport: hitlTransport, abortSignal: ac.signal }, withElicit)
|
|
661
666
|
: withElicit();
|
|
662
|
-
const emitApproval = (frame) => {
|
|
663
|
-
if (res.writableEnded || res.destroyed)
|
|
664
|
-
throw new Error("live stream ended — approval card undeliverable");
|
|
665
|
-
emitAsk(frame);
|
|
666
|
-
};
|
|
667
667
|
const streamApprovalOn = resolveStreamApprovalGate({
|
|
668
668
|
toolApprovalEnabled: Boolean(deps.toolApproval),
|
|
669
669
|
streamApprovalEnabled: deps.config.streamApproval?.enabled === true,
|
|
@@ -673,27 +673,6 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
673
673
|
const approvalLeg = assembleApprovalLeg(streamApprovalOn);
|
|
674
674
|
const legDeadlineMonotonic = approvalLeg.legDeadlineMonotonic;
|
|
675
675
|
const unattended = approvalLeg.unattended;
|
|
676
|
-
const emitCard = createApprovalCardEmitter({
|
|
677
|
-
...(ledgerSink
|
|
678
|
-
? {
|
|
679
|
-
appendDurable: async (frame) => {
|
|
680
|
-
const { type, ...rest } = frame;
|
|
681
|
-
await ledgerSink.append(type, rest);
|
|
682
|
-
},
|
|
683
|
-
}
|
|
684
|
-
: {}),
|
|
685
|
-
writeLive: (frame) => {
|
|
686
|
-
if (res.writableEnded || res.destroyed)
|
|
687
|
-
throw new Error("live stream ended");
|
|
688
|
-
if (frame.type === "approval_complete" && !admitPresentedComplete(frame.askId))
|
|
689
|
-
return;
|
|
690
|
-
emitAsk(frame);
|
|
691
|
-
},
|
|
692
|
-
});
|
|
693
|
-
const emitRevokeLive = (frame) => {
|
|
694
|
-
if (!res.writableEnded && !res.destroyed)
|
|
695
|
-
emitAsk(frame);
|
|
696
|
-
};
|
|
697
676
|
const approvalCtx = deps.toolApproval && unattended === undefined
|
|
698
677
|
? {
|
|
699
678
|
taskId: askTaskId,
|
|
@@ -703,12 +682,12 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
703
682
|
executionLane: prepared.execution.lane,
|
|
704
683
|
...(streamApprovalOn
|
|
705
684
|
? {
|
|
706
|
-
|
|
707
|
-
|
|
685
|
+
family: "approval_request",
|
|
686
|
+
transport: hitlTransport,
|
|
708
687
|
legKey: "",
|
|
709
688
|
...(legDeadlineMonotonic !== undefined ? { legDeadlineMonotonic } : {}),
|
|
710
689
|
}
|
|
711
|
-
: {
|
|
690
|
+
: { family: "tool_approval", transport: hitlTransport }),
|
|
712
691
|
}
|
|
713
692
|
: undefined;
|
|
714
693
|
if (deps.toolApproval) {
|
|
@@ -749,7 +728,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
749
728
|
}
|
|
750
729
|
else {
|
|
751
730
|
await putRewindAnchor();
|
|
752
|
-
const pending = await deps.checkpointStore?.findPendingTokenBySession(prepared.spec.sessionId);
|
|
731
|
+
const pending = await deps.checkpointStore?.findPendingTokenBySession(prepared.spec.sessionId, undefined, { axis: "run" });
|
|
753
732
|
const dcCause = ac.cause();
|
|
754
733
|
if (pending) {
|
|
755
734
|
if (ledgerSink && !ledgerTerminal) {
|
|
@@ -803,7 +782,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
803
782
|
try {
|
|
804
783
|
const row = await deps.runStore.getRun(durableTaskId);
|
|
805
784
|
if (row?.status === "running") {
|
|
806
|
-
const pending = await deps.checkpointStore?.findPendingTokenBySession(prepared.spec.sessionId);
|
|
785
|
+
const pending = await deps.checkpointStore?.findPendingTokenBySession(prepared.spec.sessionId, undefined, { axis: "run" });
|
|
807
786
|
const backstopCause = ac.cause();
|
|
808
787
|
if (pending) {
|
|
809
788
|
if (ledgerSink && !ledgerTerminal) {
|
|
@@ -822,7 +801,7 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
822
801
|
const retryPlane = outwardPlane(finalResult.terminal);
|
|
823
802
|
await deps.runStore.setTerminal(durableTaskId, retryPlane.status, finalResult, retryPlane.errorMessage ?? null);
|
|
824
803
|
await releaseKeyIfZeroWorkRefusal(deps.runStore, durableTaskId, finalResult);
|
|
825
|
-
settleFleet(retryPlane.status, fleetRunResiduals(finalResult));
|
|
804
|
+
settleFleet(retryPlane.status, fleetRunResiduals(finalResult, failureCodeOf(finalResult.terminal)));
|
|
826
805
|
}
|
|
827
806
|
else if (backstopCause !== undefined) {
|
|
828
807
|
const err = "stream aborted before completion (run cancelled)";
|
|
@@ -854,7 +833,14 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
854
833
|
};
|
|
855
834
|
counters.uncountedBillableInflight++;
|
|
856
835
|
try {
|
|
857
|
-
const settling = idemCache.run(inflightKey, async () =>
|
|
836
|
+
const settling = idemCache.run(inflightKey, async () => {
|
|
837
|
+
try {
|
|
838
|
+
return withRunReceipt(await runStreamSubmitLeg());
|
|
839
|
+
}
|
|
840
|
+
finally {
|
|
841
|
+
await prepared.seat.close();
|
|
842
|
+
}
|
|
843
|
+
});
|
|
858
844
|
if (!ranLive)
|
|
859
845
|
runSlot?.release();
|
|
860
846
|
resp = await settling;
|
|
@@ -867,15 +853,24 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
867
853
|
finally {
|
|
868
854
|
counters.uncountedBillableInflight--;
|
|
869
855
|
clearInterval(hb);
|
|
856
|
+
stopClaimHeartbeat?.();
|
|
870
857
|
if (usageKey)
|
|
871
858
|
deps.modelUsage?.clear(usageKey);
|
|
859
|
+
manifestSeat?.release();
|
|
872
860
|
}
|
|
873
861
|
if (!ranLive && resp && !res.writableEnded) {
|
|
874
|
-
|
|
862
|
+
writeTerminalFrame(doneFrameOfOutcome(replayedOutcome(resp)));
|
|
875
863
|
}
|
|
864
|
+
await prepared.seat.deliverTerminal(() => {
|
|
865
|
+
const frame = heldTerminal;
|
|
866
|
+
heldTerminal = undefined;
|
|
867
|
+
if (frame !== undefined && !res.writableEnded)
|
|
868
|
+
writeLiveFrame(res, frame);
|
|
869
|
+
});
|
|
876
870
|
res.end();
|
|
877
871
|
}
|
|
878
872
|
else {
|
|
873
|
+
let stopSyncClaimHeartbeat;
|
|
879
874
|
const withSyncSubmitKeys = (body) => {
|
|
880
875
|
const extra = {
|
|
881
876
|
...(prepared.verify || prepared.cascade ? { notice: MULTI_ATTEMPT_NO_EVENT_CHANNEL_NOTICE } : {}),
|
|
@@ -889,17 +884,19 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
889
884
|
let durableHeartbeat;
|
|
890
885
|
if (deps.runStore) {
|
|
891
886
|
const tid = uuidv7();
|
|
892
|
-
const created = await deps.runStore.createRun(tid, prepared.spec.sessionId, principal ?? null, deps.instanceId ?? "default", { ...runMeta(prepared, source), identity: runIdentityOf(req, deps.config, principal ?? null), idem: idem ?? null });
|
|
887
|
+
const created = await timeClaim(deps.metrics, "run_claim", deps.runStore.createRun(tid, prepared.spec.sessionId, principal ?? null, deps.instanceId ?? "default", { ...runMeta(prepared, source), identity: runIdentityOf(req, deps.config, principal ?? null), idem: idem ?? null }));
|
|
893
888
|
if (created.ok)
|
|
894
889
|
clearTurnActivity(tid);
|
|
895
890
|
if (created.ok)
|
|
896
891
|
recordResourceWindow(tid, prepared.spec.resourceSuspend);
|
|
897
892
|
if (created.existing)
|
|
898
|
-
return await replayOfExistingRun(created.existing, {
|
|
893
|
+
return await replayOfExistingRun(created.existing, { subject: submitter, idem }, "sync", deps, deps.runStore);
|
|
899
894
|
if (created.sessionAbsent)
|
|
900
895
|
return rootSessionAbsentAnswer();
|
|
901
896
|
if (!created.ok)
|
|
902
|
-
return { status: 409, body: await buildActiveRunConflict({ runStore: deps.runStore, checkpointStore: deps.checkpointStore, governance: deps.config,
|
|
897
|
+
return { status: 409, body: await buildActiveRunConflict({ runStore: deps.runStore, checkpointStore: deps.checkpointStore, governance: deps.config, turnActivity: readTurnActivityMs }, prepared.spec.sessionId, created.activeTaskId) };
|
|
898
|
+
prepared.seat.noteOwnRun(tid);
|
|
899
|
+
stopSyncClaimHeartbeat = startClaimHeartbeat(deps.runStore, tid, principal ?? null, deps.metrics);
|
|
903
900
|
const placementReject = await commitExecutionContext(deps, { kind: "run", runStore: deps.runStore, taskId: tid }, prepared.execution);
|
|
904
901
|
if (placementReject)
|
|
905
902
|
return placementReject;
|
|
@@ -908,19 +905,23 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
908
905
|
}
|
|
909
906
|
if (deps.checkpointStore) {
|
|
910
907
|
const ctxRefusal = await persistSubmissionCtx(deps.checkpointStore, deps, durableTaskId !== undefined && deps.runStore ? { runStore: deps.runStore, taskId: durableTaskId } : undefined, prepared);
|
|
911
|
-
if (ctxRefusal)
|
|
908
|
+
if (ctxRefusal !== undefined && ctxRefusal !== SUBMIT_CTX_CLAIM_LOST)
|
|
912
909
|
return ctxRefusal;
|
|
913
910
|
}
|
|
911
|
+
const lostClaim = durableTaskId !== undefined && deps.runStore ? await recheckClaimBeforeLaunch(deps, deps.runStore, prepared.spec.sessionId, durableTaskId) : undefined;
|
|
912
|
+
if (lostClaim !== undefined)
|
|
913
|
+
return lostClaim;
|
|
914
914
|
commitSessionInheritEnv(deps, prepared.spec.sessionId, prepared.body);
|
|
915
915
|
const syncCancelCtrl = createRunAbort(principal ?? null);
|
|
916
|
-
markChildrenStoppedByUserOnAbort(syncCancelCtrl.signal, durableTaskId ?? prepared.spec.sessionId, prepared.auth?.
|
|
916
|
+
markChildrenStoppedByUserOnAbort(syncCancelCtrl.signal, durableTaskId ?? prepared.spec.sessionId, prepared.auth?.subject);
|
|
917
917
|
if (durableTaskId && deps.runStore) {
|
|
918
918
|
const rs = deps.runStore;
|
|
919
919
|
const tid = durableTaskId;
|
|
920
920
|
const owner = principal ?? null;
|
|
921
921
|
const abortFromVerb = () => syncCancelCtrl.abort("cancel_verb");
|
|
922
|
+
stopSyncClaimHeartbeat?.();
|
|
922
923
|
durableHeartbeat = setInterval(() => {
|
|
923
|
-
|
|
924
|
+
beatRunHeartbeat(rs, tid, owner, () => syncCancelCtrl.abort("stall_verdict"), () => undefined);
|
|
924
925
|
if (!syncCancelCtrl.signal.aborted) {
|
|
925
926
|
void Promise.resolve(rs.isCancelRequested?.(tid, owner)).then((c) => { if (c)
|
|
926
927
|
abortFromVerb(); }).catch(() => undefined);
|
|
@@ -951,14 +952,28 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
951
952
|
const plainLeg = async () => {
|
|
952
953
|
const stream = prepared.runner.runTaskStream(specWithSignal, undefined, heldDecisions);
|
|
953
954
|
const syncWorkspace = createSessionWorkspaceRecorder(sessionWorkspaceStoreOf(deps.sessionStorage), prepared.legFacts?.sessionWitness);
|
|
955
|
+
const anchorKey = durableTaskId;
|
|
956
|
+
const anchorStore = deps.resumeAnchorStore;
|
|
957
|
+
const anchor = new TurnAnchorCapture(undefined, "sync", anchorStore && anchorKey ? async (entryId) => { await anchorStore.put(prepared.spec.sessionId, anchorKey, entryId, principal ?? null); } : undefined);
|
|
954
958
|
for await (const ev of stream) {
|
|
955
959
|
observeSyncLegEvent(ev);
|
|
960
|
+
switch (ev.type) {
|
|
961
|
+
case "human_input":
|
|
962
|
+
anchor.onHumanInput(ev);
|
|
963
|
+
break;
|
|
964
|
+
case "message_committed":
|
|
965
|
+
await anchor.onMessageCommitted(ev.role, ev.entryId);
|
|
966
|
+
break;
|
|
967
|
+
case "turn_end":
|
|
968
|
+
await anchor.onTurnEnd();
|
|
969
|
+
break;
|
|
970
|
+
}
|
|
956
971
|
await prepared.acceptance.observe(ev);
|
|
957
972
|
await syncWorkspace.observe(ev);
|
|
958
973
|
}
|
|
959
974
|
return stream.result();
|
|
960
975
|
};
|
|
961
|
-
result = atHostBoundary(await instructionLeg.run(prepared.spec.sessionId, () =>
|
|
976
|
+
result = atHostBoundary(await instructionLeg.run(prepared.spec.sessionId, () => withSubject(recoveredSubject(principal), () => prepared.verify ? verifyLeg(prepared.verify) : prepared.cascade ? cascadeLeg() : plainLeg())));
|
|
962
977
|
}
|
|
963
978
|
finally {
|
|
964
979
|
counters.uncountedBillableInflight--;
|
|
@@ -1014,18 +1029,25 @@ export async function handleTasks(req, res, match, ctx) {
|
|
|
1014
1029
|
let ranSyncLeg = false;
|
|
1015
1030
|
const settling = idemCache.run(inflightKey, async () => {
|
|
1016
1031
|
ranSyncLeg = true;
|
|
1017
|
-
|
|
1032
|
+
try {
|
|
1033
|
+
return withRunReceipt(await runSyncSubmitLeg());
|
|
1034
|
+
}
|
|
1035
|
+
finally {
|
|
1036
|
+
await prepared.seat.close();
|
|
1037
|
+
}
|
|
1018
1038
|
});
|
|
1019
1039
|
if (!ranSyncLeg)
|
|
1020
1040
|
runSlot?.release();
|
|
1021
|
-
const
|
|
1022
|
-
|
|
1041
|
+
const settled = await settling.finally(() => stopSyncClaimHeartbeat?.());
|
|
1042
|
+
const resp = ranSyncLeg ? settled : replayedOutcome(settled);
|
|
1043
|
+
await prepared.seat.deliverTerminal(() => sendSubmitResult(res, resp));
|
|
1023
1044
|
}
|
|
1024
1045
|
return;
|
|
1025
1046
|
}
|
|
1026
1047
|
finally {
|
|
1027
1048
|
runSlot?.release();
|
|
1028
1049
|
prepared.peerLease.release();
|
|
1050
|
+
await prepared.seat.close();
|
|
1029
1051
|
}
|
|
1030
1052
|
}
|
|
1031
1053
|
}
|