@sema-agent/server 7.147.0 → 7.149.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 +1468 -24
- package/README.md +35 -7
- package/README.zh-CN.md +18 -8
- package/USAGE.md +444 -193
- package/deploy/sema-up/README.md +16 -5
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +20 -4
- package/deploy/sema-up/chart/values.yaml +3 -2
- package/deploy/sema-up/cluster-up.sh +74 -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/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/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 +14 -39
- 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 +13 -1
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +21 -0
- 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/approval-card.d.ts +36 -38
- package/dist/approval-gate-currency.js +3 -2
- package/dist/approval-leg-origin.d.ts +33 -0
- package/dist/approval-leg-origin.js +4 -0
- package/dist/approval-reconciler.d.ts +4 -13
- package/dist/approval-reconciler.js +2 -2
- package/dist/approval.d.ts +13 -11
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +15 -7
- package/dist/auth-bridge.d.ts +9 -15
- package/dist/auth-bridge.js +4 -11
- package/dist/auth-keys.d.ts +10 -1
- package/dist/auth-keys.js +8 -0
- 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 +5 -2
- 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/deployment-mods.d.ts +1 -1
- package/dist/boot/execution-env.d.ts +17 -7
- package/dist/boot/execution-env.js +47 -42
- package/dist/boot/execution-lane.d.ts +6 -4
- package/dist/boot/execution-lane.js +3 -1
- package/dist/boot/exit-boundary.d.ts +2 -2
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +17 -15
- package/dist/boot/memory-consolidation.d.ts +37 -29
- package/dist/boot/memory-consolidation.js +11 -5
- package/dist/boot/org-delivery.d.ts +3 -2
- package/dist/boot/org-memory.js +1 -1
- package/dist/boot/parked-revive-gate.js +2 -2
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +19 -16
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +60 -70
- package/dist/boot/retention-lane.d.ts +4 -4
- package/dist/boot/retention-lane.js +2 -2
- package/dist/boot/runner-deps.d.ts +28 -7
- package/dist/boot/runner-deps.js +14 -5
- package/dist/boot/runtime-caps.d.ts +2 -2
- package/dist/boot/runtime-caps.js +16 -2
- package/dist/boot/session-faces.d.ts +16 -7
- package/dist/boot/session-faces.js +114 -94
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.d.ts +1 -0
- package/dist/boot/stage-01-config.js +13 -4
- package/dist/boot/stage-02-web-admin-pull.d.ts +2 -0
- package/dist/boot/stage-02-web-admin-pull.js +16 -3
- package/dist/boot/stage-03-store-backend.d.ts +4 -0
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +3 -0
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +8 -3
- package/dist/boot/stage-05-execution-env.js +2 -2
- package/dist/boot/stage-06-runners.d.ts +12 -13
- package/dist/boot/stage-06-runners.js +23 -15
- package/dist/boot/stage-07-capability-layer.d.ts +13 -9
- package/dist/boot/stage-07-capability-layer.js +5 -3
- package/dist/boot/stage-08-reapers.d.ts +13 -9
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +14 -16
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +14 -16
- package/dist/boot/stage-10-http-server.js +7 -4
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +6 -0
- package/dist/boot/stores.js +41 -27
- 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 +55 -35
- 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 +7 -1
- package/dist/capabilities/center-plugins.js +32 -10
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +2 -2
- package/dist/capabilities/composite-members.js +2 -2
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +6 -15
- package/dist/capabilities/scenarios.js +11 -16
- package/dist/capabilities/skills.d.ts +1 -1
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +39 -11
- package/dist/capability-facts.js +35 -7
- package/dist/card-settle-stored-scope.d.ts +56 -0
- package/dist/card-settle-stored-scope.js +27 -0
- package/dist/card-void.d.ts +8 -13
- package/dist/card-void.js +2 -7
- package/dist/center-credential-renewer.d.ts +6 -2
- package/dist/center-credential-renewer.js +7 -3
- package/dist/config-catalog.d.ts +28 -1
- package/dist/config-catalog.js +95 -85
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +43 -3
- package/dist/config-invariants.js +69 -5
- package/dist/config-lkg.d.ts +23 -1
- package/dist/config-lkg.js +17 -3
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -110
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +62 -21
- package/dist/config.d.ts +14 -21
- package/dist/config.js +141 -64
- package/dist/context-window-notice.d.ts +31 -0
- package/dist/context-window-notice.js +28 -0
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +46 -11
- package/dist/deployment-shape.js +8 -0
- 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.js +2 -1
- package/dist/env-name-allowlist-knobs.d.ts +6 -5
- package/dist/env-name-allowlist-knobs.js +5 -0
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-lane-caps.d.ts +25 -23
- package/dist/execution-lane-caps.js +18 -26
- package/dist/execution-placement.d.ts +58 -18
- package/dist/execution-placement.js +41 -2
- 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.js +1 -0
- 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 +3 -3
- 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 +23 -3
- package/dist/history-anchor.js +24 -4
- 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 +7 -2
- package/dist/hooks/command-spawn.js +13 -6
- package/dist/hooks/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +72 -57
- package/dist/hooks/hook-runner.js +271 -193
- 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 +76 -79
- package/dist/http/approval-sweeps.d.ts +3 -3
- package/dist/http/approval-sweeps.js +56 -31
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claimed-run.d.ts +16 -8
- package/dist/http/claimed-run.js +8 -0
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +78 -30
- package/dist/http/durable-run-leg.d.ts +11 -4
- package/dist/http/durable-run-leg.js +45 -21
- package/dist/http/execution-context.d.ts +122 -47
- package/dist/http/execution-context.js +135 -43
- 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 +4 -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 +1 -1
- package/dist/http/memory-store-refusal-reply.js +3 -0
- package/dist/http/owner-access.d.ts +392 -67
- package/dist/http/owner-access.js +370 -35
- package/dist/http/principal-gate.d.ts +39 -89
- package/dist/http/principal-gate.js +26 -68
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +9 -13
- 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 +46 -12
- package/dist/http/resume-ctx-read.js +31 -6
- package/dist/http/resume-legs.d.ts +54 -19
- package/dist/http/resume-legs.js +408 -196
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/route-ctx.d.ts +31 -32
- package/dist/http/routes/a2a-serve.d.ts +43 -5
- package/dist/http/routes/a2a-serve.js +60 -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 -67
- 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 +16 -19
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +4 -4
- package/dist/http/routes/diagnostics.d.ts +29 -3
- package/dist/http/routes/diagnostics.js +49 -18
- 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 +2 -0
- 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 +10 -19
- package/dist/http/routes/observability.js +3 -3
- package/dist/http/routes/principal-inbox.d.ts +4 -2
- package/dist/http/routes/principal-inbox.js +5 -4
- package/dist/http/routes/projects.d.ts +1 -1
- package/dist/http/routes/projects.js +3 -2
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +20 -5
- 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 +155 -237
- 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 +28 -7
- package/dist/http/routes/session-sync.js +63 -50
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.js +87 -124
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +237 -187
- 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 +43 -45
- package/dist/http/server.js +61 -11
- 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 +12 -0
- package/dist/http/stored-body-replay.js +2 -2
- package/dist/http/submit-ctx.d.ts +17 -8
- package/dist/http/submit-ctx.js +8 -5
- 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 +4 -3
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +2 -0
- 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/leg-facts.d.ts +7 -2
- package/dist/leg-facts.js +1 -0
- package/dist/local-store-declaration.d.ts +54 -0
- package/dist/local-store-declaration.js +59 -0
- package/dist/lsp-evict.d.ts +6 -4
- package/dist/lsp-evict.js +2 -3
- package/dist/mcp-assertion-header.d.ts +1 -1
- package/dist/mcp-assertion-header.js +1 -1
- package/dist/memory-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-project-layer.js +1 -1
- package/dist/memory-scope.d.ts +33 -6
- package/dist/memory-scope.js +68 -19
- package/dist/memory-store-refusal.d.ts +5 -2
- package/dist/memory-sync-client.d.ts +3 -2
- package/dist/memory-sync-client.js +8 -5
- package/dist/model-compat.d.ts +17 -8
- package/dist/model-compat.js +6 -2
- package/dist/model-context-window.d.ts +57 -0
- package/dist/model-context-window.js +21 -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 +40 -20
- package/dist/model-entry-refusal.js +57 -30
- 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-reach-scope.d.ts +2 -1
- 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 +23 -14
- package/dist/namespaced-rule-name.js +8 -11
- 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 +72 -40
- package/dist/observability/fail-open.js +74 -40
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.js +4 -5
- 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 +6 -2
- package/dist/observability/secret-env-scrub.d.ts +1 -1
- package/dist/observability/secret-env-scrub.js +1 -1
- 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-completion-inbox.d.ts +3 -3
- package/dist/orchestration/workflow-completion-inbox.js +3 -2
- package/dist/org-delivery-gate.d.ts +36 -10
- package/dist/org-delivery-gate.js +12 -8
- 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 +532 -0
- package/dist/owner-faces.js +126 -0
- package/dist/park-row-commit.d.ts +67 -0
- package/dist/park-row-commit.js +76 -0
- package/dist/parked-decide.d.ts +76 -12
- package/dist/parked-decide.js +152 -11
- package/dist/parked-revive-surface.d.ts +14 -4
- package/dist/parked-revive-surface.js +5 -4
- package/dist/peer-directory.d.ts +7 -9
- 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 +3 -25
- package/dist/plugins/adoption-log-sql.js +23 -21
- 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 +18 -7
- package/dist/plugins/approval-ask-store-file.js +37 -14
- package/dist/plugins/approval-ask-store-memory.d.ts +12 -4
- package/dist/plugins/approval-ask-store-memory.js +24 -10
- package/dist/plugins/approval-ask-store-sql.d.ts +40 -21
- package/dist/plugins/approval-ask-store-sql.js +44 -15
- package/dist/plugins/approval-exemption-skill-cutoff.d.ts +64 -0
- package/dist/plugins/approval-exemption-skill-cutoff.js +122 -0
- package/dist/plugins/approval-exemption-skill-m46.d.ts +14 -0
- package/dist/plugins/approval-exemption-skill-m46.js +21 -0
- package/dist/plugins/approval-exemption-store.d.ts +32 -2
- package/dist/plugins/approval-exemption-store.js +42 -19
- 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 +2 -0
- package/dist/plugins/blob-backend.js +9 -6
- package/dist/plugins/caching-session-store.d.ts +13 -1
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +32 -5
- package/dist/plugins/checkpoint-index-columns.js +36 -1
- package/dist/plugins/checkpoint-store-face.d.ts +83 -10
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.js +1 -0
- 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 +36 -18
- package/dist/plugins/ensure-schema-lock-policy.js +76 -9
- package/dist/plugins/file-run-store.d.ts +85 -32
- package/dist/plugins/file-run-store.js +177 -94
- 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 +2 -2
- 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 +62 -23
- package/dist/plugins/local-checkpoint-store.js +197 -77
- package/dist/plugins/local-data-dir-modes-m39.js +2 -1
- package/dist/plugins/local-data-root-admission.d.ts +52 -0
- package/dist/plugins/local-data-root-admission.js +100 -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 +29 -6
- package/dist/plugins/local-engine-high-water.js +27 -19
- package/dist/plugins/local-session-store.d.ts +458 -140
- package/dist/plugins/local-session-store.js +906 -292
- 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 +18 -1
- package/dist/plugins/local-task-attachment-store.js +22 -1
- package/dist/plugins/memory-embedder.js +9 -7
- package/dist/plugins/memory-engine-pg.d.ts +3 -2
- package/dist/plugins/memory-engine-pg.js +14 -5
- package/dist/plugins/memory-engine-sql-apply.d.ts +8 -4
- package/dist/plugins/memory-engine-sql-apply.js +6 -8
- package/dist/plugins/memory-engine-tidb.d.ts +4 -2
- package/dist/plugins/memory-engine-tidb.js +11 -2
- 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 +53 -36
- package/dist/plugins/memory-run-store.js +116 -88
- package/dist/plugins/one-time-migration-marker.d.ts +26 -0
- package/dist/plugins/one-time-migration-marker.js +13 -0
- package/dist/plugins/one-time-migrations.d.ts +214 -47
- package/dist/plugins/one-time-migrations.js +481 -135
- package/dist/plugins/org-delivery-quota-store.d.ts +34 -11
- package/dist/plugins/org-delivery-quota-store.js +31 -15
- package/dist/plugins/permission-rule-store-file.d.ts +3 -3
- package/dist/plugins/permission-rule-store-sql.d.ts +5 -64
- package/dist/plugins/permission-rule-store-sql.js +11 -95
- package/dist/plugins/pg-pool.d.ts +2 -32
- package/dist/plugins/pg-pool.js +24 -17
- package/dist/plugins/remote-env-device.d.ts +3 -2
- package/dist/plugins/remote-env-e2b.d.ts +8 -32
- package/dist/plugins/remote-env-e2b.js +44 -32
- package/dist/plugins/remote-env-host.d.ts +51 -17
- package/dist/plugins/remote-env-host.js +111 -42
- package/dist/plugins/remote-env-k8s.d.ts +40 -45
- package/dist/plugins/remote-env-k8s.js +111 -60
- package/dist/plugins/remote-env-local-docker.d.ts +152 -15
- package/dist/plugins/remote-env-local-docker.js +352 -72
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/retention-deployment.d.ts +49 -17
- package/dist/plugins/retention-deployment.js +39 -8
- 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 +82 -75
- package/dist/plugins/run-store-sql.js +164 -125
- 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 +56 -0
- package/dist/plugins/scenario-prefix-switch-m42.js +56 -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 +131 -14
- package/dist/plugins/schema-consistency.js +388 -18
- package/dist/plugins/schema-drift-sentence.d.ts +10 -6
- package/dist/plugins/schema-drift-sentence.js +15 -7
- package/dist/plugins/schema-ensure-legs.d.ts +9 -0
- package/dist/plugins/schema-ensure-legs.js +1 -1
- 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 +27 -3
- package/dist/plugins/session-ext-table.js +19 -6
- package/dist/plugins/session-fork.d.ts +15 -1
- package/dist/plugins/session-fork.js +3 -0
- package/dist/plugins/session-ownership.d.ts +1 -1
- package/dist/plugins/session-placement.d.ts +27 -20
- package/dist/plugins/session-placement.js +15 -12
- package/dist/plugins/session-row-sql.d.ts +12 -0
- package/dist/plugins/session-row-sql.js +3 -3
- 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 +38 -12
- package/dist/plugins/session-store-sql.js +130 -30
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/shared-memory-store-sql.d.ts +0 -69
- package/dist/plugins/shared-memory-store-sql.js +2 -1
- package/dist/plugins/shell-sentinel-owner-m48.d.ts +42 -0
- package/dist/plugins/shell-sentinel-owner-m48.js +9 -0
- package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
- package/dist/plugins/sql-driver.d.ts +1 -1
- package/dist/plugins/sql-driver.js +2 -1
- package/dist/plugins/sql-errors.d.ts +32 -5
- package/dist/plugins/sql-errors.js +55 -7
- package/dist/plugins/sql-json-column.d.ts +8 -7
- package/dist/plugins/sql-json-column.js +10 -6
- package/dist/plugins/stop-then-start-sentence.d.ts +16 -0
- package/dist/plugins/stop-then-start-sentence.js +7 -0
- package/dist/plugins/store-backend.d.ts +99 -16
- package/dist/plugins/store-backend.js +230 -65
- package/dist/plugins/store-contracts.d.ts +123 -33
- package/dist/plugins/store-contracts.js +38 -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 +15 -3
- package/dist/plugins/task-attachment-store.js +22 -9
- package/dist/plugins/tidb-pool.d.ts +11 -6
- package/dist/plugins/tidb-pool.js +39 -18
- 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/plugins/workspace-custody.d.ts +44 -0
- package/dist/plugins/workspace-custody.js +47 -0
- 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/project-identity.d.ts +8 -7
- package/dist/project-identity.js +40 -17
- package/dist/project-layer-key.d.ts +13 -2
- package/dist/project-layer-key.js +9 -1
- package/dist/question.d.ts +13 -23
- package/dist/question.js +21 -39
- package/dist/read-deny-floor-notice.d.ts +36 -0
- package/dist/read-deny-floor-notice.js +40 -0
- package/dist/{plain-string-record.d.ts → request-declaration-disposition.d.ts} +9 -23
- package/dist/request-declaration-disposition.js +39 -0
- 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/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 +5 -3
- package/dist/rules-consent.js +1 -0
- package/dist/run-acceptance.d.ts +3 -1
- package/dist/run-acceptance.js +3 -0
- package/dist/run-cancel-card.d.ts +28 -0
- package/dist/run-cancel-card.js +19 -0
- package/dist/run-cancel-context.d.ts +10 -0
- package/dist/run-cancel-context.js +1 -0
- package/dist/run-local.d.ts +14 -6
- package/dist/run-local.js +117 -90
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +56 -21
- package/dist/runs.js +73 -43
- package/dist/runtime-caps-resolver.d.ts +21 -6
- package/dist/runtime-caps-resolver.js +17 -4
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -5
- package/dist/sealed-key-layout.js +5 -0
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +115 -27
- package/dist/security.d.ts +128 -158
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +25 -0
- package/dist/server-secret-env.d.ts +55 -25
- package/dist/server-secret-env.js +75 -22
- package/dist/session-agent.d.ts +3 -2
- package/dist/session-children-retire.d.ts +13 -8
- package/dist/session-children-retire.js +9 -7
- 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 +5 -5
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +52 -5
- 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 +0 -71
- package/dist/session-resident-background.js +4 -3
- package/dist/session-row.d.ts +2 -1
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/session-workspace.d.ts +3 -3
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-admission.d.ts +33 -0
- package/dist/store-admission.js +49 -0
- package/dist/store-posture.d.ts +141 -20
- package/dist/store-posture.js +205 -3
- package/dist/stored-request-hooks-m20.js +2 -2
- 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/checkpoint-store-sql.d.ts +34 -29
- package/dist/stores-sql/checkpoint-store-sql.js +78 -49
- package/dist/stores-sql/file-history-store-sql.d.ts +1 -1
- package/dist/stores-sql/file-history-store-sql.js +3 -5
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/stores-sql/pg-session-storage.d.ts +7 -5
- package/dist/stores-sql/pg-session-storage.js +54 -46
- package/dist/stores-sql/retention-store-sql.d.ts +87 -19
- package/dist/stores-sql/retention-store-sql.js +92 -27
- package/dist/stores-sql/session-policy-store-sql.d.ts +32 -10
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +12 -6
- package/dist/stores-sql/tidb-session-storage.d.ts +4 -4
- package/dist/stores-sql/tidb-session-storage.js +13 -8
- package/dist/stores-sql/tidb-session-store.d.ts +36 -17
- package/dist/stores-sql/tidb-session-store.js +69 -39
- package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
- package/dist/stores-sql/tool-result-store-sql.js +4 -6
- package/dist/stores-sql/windowed-session-storage.d.ts +5 -0
- package/dist/stores-sql/windowed-session-storage.js +9 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +3 -8
- package/dist/task-a2a.js +28 -30
- package/dist/task-cwd.d.ts +43 -7
- package/dist/task-cwd.js +11 -0
- package/dist/task-mcp.d.ts +3 -3
- package/dist/task-mcp.js +4 -4
- package/dist/task-settings.d.ts +14 -10
- package/dist/task-settings.js +19 -7
- package/dist/terminal.d.ts +27 -43
- package/dist/terminal.js +49 -14
- package/dist/tool-approval.d.ts +173 -163
- package/dist/tool-approval.js +247 -232
- package/dist/trace/core-keyset-guard.d.ts +13 -6
- 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 +24 -21
- package/dist/trace/engine-notice-wire.js +7 -3
- package/dist/trace/exit-seat.d.ts +30 -4
- package/dist/trace/exit-seat.js +40 -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 +4 -31
- 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 +59 -44
- package/dist/trace/project.js +60 -26
- package/dist/trace/redact.d.ts +135 -27
- package/dist/trace/redact.js +884 -260
- package/dist/trace/self-minted-wire.d.ts +567 -20
- package/dist/trace/self-minted-wire.js +205 -24
- package/dist/trace/wire-projection-faces.d.ts +5 -6
- package/dist/trace/wire-projection-faces.js +2 -2
- 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 -23
- 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/center-request.d.ts +2 -2
- package/dist/web-admin-client/center-request.js +15 -15
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -1
- 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/http-client.d.ts +1 -1
- package/dist/web-admin-client/http-client.js +23 -4
- 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 +8 -4
- package/dist/web-admin-client/skills-mcp.d.ts +2 -2
- package/dist/web-admin-client/types.d.ts +1 -2
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/docs/error-text-lexicon.json +317 -0
- package/package.json +8 -3
- package/scripts/drain-check-local.mjs +118 -147
- package/scripts/drain-check.mysql.sql +22 -2
- package/scripts/drain-check.pg.sql +22 -2
- package/scripts/embed-minimal.mjs +183 -0
- package/wire-changes/server@7.148.0.json +1517 -0
- package/wire-changes/server@7.149.0.json +372 -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
- package/dist/plain-string-record.js +0 -70
|
@@ -19,6 +19,7 @@ import { buildCapturedOutput, createCutError } from "../exec-cut.js";
|
|
|
19
19
|
import { SANDBOX_IPV6_DEFAULT, sandboxEgressGaps, sandboxPodSysctls } from "../sandbox-egress-policy.js";
|
|
20
20
|
import { FileError, ExecutionError, RemoteExecutionError, withRetry, RollingTailBuffer, markTruncated, } from "@sema-agent/core";
|
|
21
21
|
import { capabilitiesFor } from "../execution-lane-caps.js";
|
|
22
|
+
import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
|
|
22
23
|
import { ADAPTER_START, BOOTSTRAP_START, buildFloorPodSeat, createSandboxReadFloor, FLOOR_K8S_CONFIGMAP_KEY, engineStart, floorArgv, } from "./sandbox-read-floor.js";
|
|
23
24
|
import { fileErrorFromExec, classifyFsStderr } from "./remote-env-file-error.js";
|
|
24
25
|
import { createPosixShellFs } from "./posix-shell-fs.js";
|
|
@@ -48,6 +49,8 @@ export { applyPodSpecPatch } from "./k8s-exec-protocol.js";
|
|
|
48
49
|
import { sandboxRunEndHoldMs } from "./k8s-pod-reaper.js";
|
|
49
50
|
import { BROKER_COMMAND, BROKER_CONTAINER_NAME, BROKER_LEASE_DIR, BROKER_LEASE_KEY, BROKER_PROBE_ARG, BROKER_VOLUME_NAME } from "../broker/constants.js";
|
|
50
51
|
import { buildSandboxLeaseFile, placeholderLeaseEntries, sandboxGitRouteEnv } from "../sandbox-git-lease.js";
|
|
52
|
+
import { witnessEnv } from "../env-witness.js";
|
|
53
|
+
import { createEgressFetch } from "../egress-redirect.js";
|
|
51
54
|
function minted(c) {
|
|
52
55
|
return c.ok ? { ...c, origin: "minted" } : c;
|
|
53
56
|
}
|
|
@@ -108,6 +111,8 @@ const RESTORE_DOWNLOAD_EXIT = 22;
|
|
|
108
111
|
const RESTORE_TRANSFER_EXIT = 75;
|
|
109
112
|
const RESTORE_STORE_BUSY_STATUSES = [408, 429, 500, 502, 503, 504];
|
|
110
113
|
const RESTORE_STORE_BUSY_EXIT = 69;
|
|
114
|
+
const RESTORE_404_MARKER = "SNAPSHOT_GET_404";
|
|
115
|
+
const RESTORE_404_ANSWER_BYTES = 4096;
|
|
111
116
|
function restoreClassOfExit(exitCode) {
|
|
112
117
|
switch (exitCode) {
|
|
113
118
|
case RESTORE_STORE_BUSY_EXIT:
|
|
@@ -209,7 +214,6 @@ export class RemoteK8sExecutionEnv {
|
|
|
209
214
|
floor;
|
|
210
215
|
cwd;
|
|
211
216
|
podName;
|
|
212
|
-
podIP;
|
|
213
217
|
leaseRef;
|
|
214
218
|
destroyed = false;
|
|
215
219
|
handleSnapshotId;
|
|
@@ -280,12 +284,13 @@ export class RemoteK8sExecutionEnv {
|
|
|
280
284
|
this.floor = this.deps.readFloor ?? createSandboxReadFloor({ lane: PROVIDER, knob: config.sandboxReadFloor, ...(config.logger !== undefined ? { logger: config.logger } : {}) });
|
|
281
285
|
this.capabilities = capabilitiesFor({ remoteExec: { provider: PROVIDER, s3Snapshot: this.cfg.s3Snapshot }, sandboxReadFloor: config.sandboxReadFloor });
|
|
282
286
|
const bgMax = Math.max(1, Math.min(K8S_BG_MAX_TIMEOUT_SEC, Math.floor(this.cfg.timeoutMs / 1000)));
|
|
287
|
+
const backgroundShellOn = DEPLOYMENT_SHAPE_PREDICATES.backgroundShell.holds({ remoteExec: { provider: PROVIDER } });
|
|
283
288
|
this.backgroundCapabilities = {
|
|
284
|
-
supported:
|
|
289
|
+
supported: backgroundShellOn,
|
|
285
290
|
maxConcurrent: K8S_BG_MAX_CONCURRENT,
|
|
286
291
|
defaultBgTimeoutSec: Math.min(K8S_BG_DEFAULT_TIMEOUT_SEC, bgMax),
|
|
287
292
|
maxBgTimeoutSec: bgMax,
|
|
288
|
-
supportsDetach:
|
|
293
|
+
supportsDetach: backgroundShellOn,
|
|
289
294
|
};
|
|
290
295
|
}
|
|
291
296
|
get sandboxLeaseRef() {
|
|
@@ -453,13 +458,14 @@ export class RemoteK8sExecutionEnv {
|
|
|
453
458
|
async releasePod() {
|
|
454
459
|
const name = this.podName;
|
|
455
460
|
this.podName = undefined;
|
|
456
|
-
this.podIP = undefined;
|
|
457
461
|
if (name)
|
|
458
462
|
await this.deletePod(name).catch(() => { });
|
|
459
463
|
}
|
|
460
464
|
armSpace() {
|
|
461
|
-
if (this.spaceLane.state
|
|
462
|
-
|
|
465
|
+
if (this.spaceLane.state !== "open")
|
|
466
|
+
return;
|
|
467
|
+
this.spaceLane.space.fence.arm(this.cfg.dataTimeoutMs);
|
|
468
|
+
witnessEnv(this.cfg.runId);
|
|
463
469
|
}
|
|
464
470
|
async endSpace(space) {
|
|
465
471
|
await this.fenceCall(() => space.fence.end(), "delete").catch(() => undefined);
|
|
@@ -581,6 +587,7 @@ export class RemoteK8sExecutionEnv {
|
|
|
581
587
|
this.cacheUnavailable("claim_failed", ensured.detail, lane.cache);
|
|
582
588
|
return undefined;
|
|
583
589
|
}
|
|
590
|
+
witnessEnv(this.cfg.runId);
|
|
584
591
|
return { ...lane.cache, fresh: ensured.fresh, bindDeadline: Date.now() + this.cfg.dataTimeoutMs };
|
|
585
592
|
}
|
|
586
593
|
default: {
|
|
@@ -798,7 +805,6 @@ export class RemoteK8sExecutionEnv {
|
|
|
798
805
|
}
|
|
799
806
|
}
|
|
800
807
|
const deadline = Date.now() + this.cfg.readyTimeoutMs;
|
|
801
|
-
let podIP;
|
|
802
808
|
for (;;) {
|
|
803
809
|
if (signal?.aborted) {
|
|
804
810
|
await this.deletePod(name).catch(() => { });
|
|
@@ -815,10 +821,8 @@ export class RemoteK8sExecutionEnv {
|
|
|
815
821
|
const status = got.json?.status;
|
|
816
822
|
const phase = status?.phase;
|
|
817
823
|
const brokerStatus = status?.containerStatuses?.find((c) => c.name === BROKER_CONTAINER_NAME);
|
|
818
|
-
if (phase === "Running" && (broker === undefined || brokerStatus?.ready === true))
|
|
819
|
-
podIP = status?.podIP;
|
|
824
|
+
if (phase === "Running" && (broker === undefined || brokerStatus?.ready === true))
|
|
820
825
|
break;
|
|
821
|
-
}
|
|
822
826
|
if (phase === "Failed" || phase === "Succeeded") {
|
|
823
827
|
await this.deletePod(name).catch(() => { });
|
|
824
828
|
return this.refusePod(name, phase, status?.reason, status?.message);
|
|
@@ -858,14 +862,12 @@ export class RemoteK8sExecutionEnv {
|
|
|
858
862
|
return { ok: false, error: new RemoteExecutionError("connect_failed", "env destroyed during connect") };
|
|
859
863
|
}
|
|
860
864
|
this.podName = name;
|
|
861
|
-
this.podIP = podIP;
|
|
862
865
|
this.leaseRef = leaseName !== undefined && broker !== undefined ? { namespace: ns, podName: name, leaseSecretName: leaseName, origins: [...broker.origins] } : undefined;
|
|
863
866
|
const askHome = this.homeSeat.asks;
|
|
864
867
|
const mk = await this.runExec(ADAPTER_START, `mkdir -p ${shellQuote(this.cfg.mountPath)}${askHome ? ` && { ${LANE_HOME_PROBE_COMMAND} || true; }` : ""}`);
|
|
865
868
|
if (!mk.ok || mk.value.exitCode !== 0) {
|
|
866
869
|
await this.deletePod(name).catch(() => { });
|
|
867
870
|
this.podName = undefined;
|
|
868
|
-
this.podIP = undefined;
|
|
869
871
|
return { ok: false, error: new RemoteExecutionError("connect_failed", `workspace mkdir failed: ${mk.ok ? mk.value.stderr : mk.error.message}`) };
|
|
870
872
|
}
|
|
871
873
|
if (askHome) {
|
|
@@ -873,7 +875,6 @@ export class RemoteK8sExecutionEnv {
|
|
|
873
875
|
if (verdict !== undefined) {
|
|
874
876
|
await this.deletePod(name).catch(() => { });
|
|
875
877
|
this.podName = undefined;
|
|
876
|
-
this.podIP = undefined;
|
|
877
878
|
const error = new RemoteExecutionError("connect_failed", verdict.refusal);
|
|
878
879
|
return verdict.answered ? this.holdRefusal(error) : { ok: false, error };
|
|
879
880
|
}
|
|
@@ -1081,9 +1082,9 @@ export class RemoteK8sExecutionEnv {
|
|
|
1081
1082
|
storeFetch(url, init) {
|
|
1082
1083
|
const bound = AbortSignal.timeout(Math.max(1, Math.min(this.cfg.rpcTimeoutMs, init.timeoutMs ?? this.cfg.rpcTimeoutMs)));
|
|
1083
1084
|
const signal = init.signal ? AbortSignal.any([init.signal, bound]) : bound;
|
|
1084
|
-
return (this.deps.fetch
|
|
1085
|
+
return createEgressFetch("declare the final object-store address as MINIO_ENDPOINT", this.deps.fetch)(url, { method: init.method, ...(init.body !== undefined ? { body: init.body } : {}), signal });
|
|
1085
1086
|
}
|
|
1086
|
-
async readPointer(space, pointer, signal) {
|
|
1087
|
+
async readPointer(space, pointer, signal, timeoutMs) {
|
|
1087
1088
|
const url = this.presignSnapshot({ lane: "space", space, method: "GET", pointer });
|
|
1088
1089
|
if (!url.ok)
|
|
1089
1090
|
return url;
|
|
@@ -1091,50 +1092,83 @@ export class RemoteK8sExecutionEnv {
|
|
|
1091
1092
|
let res;
|
|
1092
1093
|
let body;
|
|
1093
1094
|
try {
|
|
1094
|
-
res = await this.storeFetch(url.value, { method: "GET", ...(signal ? { signal } : {}) });
|
|
1095
|
+
res = await this.storeFetch(url.value, { method: "GET", ...(signal ? { signal } : {}), ...(timeoutMs !== undefined ? { timeoutMs } : {}) });
|
|
1095
1096
|
body = await res.text();
|
|
1096
1097
|
}
|
|
1097
1098
|
catch (e) {
|
|
1098
1099
|
return spaceReadFailed(what, `: ${this.redactUrl(errorMessageOf(e), url.value)}`, e);
|
|
1099
1100
|
}
|
|
1100
1101
|
if (isNoSuchBucketAnswer(res.status, body))
|
|
1101
|
-
return
|
|
1102
|
+
return { ...spaceReadFailed(what, ` (${SNAPSHOT_BUCKET_MISSING})`), bucketMissing: true };
|
|
1102
1103
|
if (res.status === 404)
|
|
1103
1104
|
return ok(undefined);
|
|
1104
1105
|
if (!res.ok)
|
|
1105
1106
|
return spaceReadFailed(what, ` (HTTP ${res.status})`);
|
|
1106
1107
|
return ok(body.trim());
|
|
1107
1108
|
}
|
|
1108
|
-
refuseMissingBucket(
|
|
1109
|
+
refuseMissingBucket(target, read) {
|
|
1109
1110
|
const bucket = this.cfg.s3Snapshot.bucket;
|
|
1110
|
-
|
|
1111
|
+
const fields = {
|
|
1111
1112
|
bucket,
|
|
1112
1113
|
code: SNAPSHOT_BUCKET_MISSING,
|
|
1113
1114
|
effect: "the workspace snapshot bucket does not exist in the object store (the server never creates buckets) — this run is refused rather than started on a workspace that could be neither restored nor saved",
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1115
|
+
};
|
|
1116
|
+
switch (target.lane) {
|
|
1117
|
+
case "space":
|
|
1118
|
+
this.spaceLine("workspace_snapshot_bucket_missing", target.space, fields);
|
|
1119
|
+
break;
|
|
1120
|
+
case "park":
|
|
1121
|
+
this.snapshotLine("workspace_snapshot_bucket_missing", { ...(this.cfg.sessionId ? { sessionId: this.cfg.sessionId } : {}), ...fields });
|
|
1122
|
+
break;
|
|
1123
|
+
default: {
|
|
1124
|
+
const unreachable = target;
|
|
1125
|
+
throw new Error(`unhandled snapshot lane: ${String(unreachable.lane)}`);
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
const detail = ` (${SNAPSHOT_BUCKET_MISSING}): the workspace snapshot bucket "${bucket}" (WORKSPACE_SNAPSHOT_BUCKET; default ${WORKSPACE_SNAPSHOT_BUCKET_DEFAULT}) does not exist in the object store — ` +
|
|
1116
1129
|
`refusing to start this run on a workspace that could be neither restored nor saved. Ways out: create the bucket, or set WORKSPACE_SNAPSHOT_BUCKET to one that exists, ` +
|
|
1117
|
-
"or set WORKSPACE_PERSIST=off for a deployment that keeps no workspace between runs"
|
|
1130
|
+
"or set WORKSPACE_PERSIST=off for a deployment that keeps no workspace between runs";
|
|
1131
|
+
return this.holdRefusal(read === "pointer" ? spaceReadFailed("pointer", detail).error : new RemoteExecutionError("connect_failed", `workspace snapshot archive read failed${detail}`));
|
|
1118
1132
|
}
|
|
1119
1133
|
async readLatest(space, signal) {
|
|
1120
1134
|
const r = await this.readPointer(space, "latest", signal);
|
|
1121
|
-
|
|
1135
|
+
if (!r.ok)
|
|
1136
|
+
return r.bucketMissing ? this.refuseMissingBucket({ lane: "space", space }, "pointer") : { ok: false, error: r.error };
|
|
1137
|
+
return ok(r.value === undefined ? undefined : r.value);
|
|
1122
1138
|
}
|
|
1123
1139
|
async writePointer(space, pointer, body, timeoutMs) {
|
|
1124
1140
|
const method = body === null ? "DELETE" : "PUT";
|
|
1125
1141
|
const url = this.presignSnapshot({ lane: "space", space, method, pointer });
|
|
1126
1142
|
if (!url.ok)
|
|
1127
1143
|
return url;
|
|
1128
|
-
const what =
|
|
1144
|
+
const what = `workspace space pointer ${method === "PUT" ? "write" : "delete"}`;
|
|
1145
|
+
const until = timeoutMs !== undefined ? Date.now() + timeoutMs : undefined;
|
|
1146
|
+
let lost;
|
|
1129
1147
|
try {
|
|
1130
1148
|
const res = await this.storeFetch(url.value, { method, ...(body === null ? {} : { body }), ...(timeoutMs !== undefined ? { timeoutMs } : {}) });
|
|
1131
|
-
if (
|
|
1132
|
-
return
|
|
1149
|
+
if (res.ok || (method === "DELETE" && res.status === 404))
|
|
1150
|
+
return ok(undefined);
|
|
1151
|
+
return { ok: false, error: new RemoteExecutionError("connect_failed", `${what} failed (HTTP ${res.status})`) };
|
|
1133
1152
|
}
|
|
1134
1153
|
catch (e) {
|
|
1135
|
-
|
|
1154
|
+
lost = e;
|
|
1136
1155
|
}
|
|
1137
|
-
|
|
1156
|
+
const left = until === undefined ? undefined : until - Date.now();
|
|
1157
|
+
const back = left !== undefined && left <= 0 ? undefined : await this.readPointer(space, pointer, undefined, left);
|
|
1158
|
+
const inTime = until === undefined || Date.now() <= until;
|
|
1159
|
+
if (back?.ok && inTime && back.value === (body ?? undefined))
|
|
1160
|
+
return ok(undefined);
|
|
1161
|
+
const readBack = back === undefined || !inTime
|
|
1162
|
+
? "not decided — the deadline passed before a read-back could answer"
|
|
1163
|
+
: back.ok
|
|
1164
|
+
? back.value === undefined
|
|
1165
|
+
? "the pointer is absent"
|
|
1166
|
+
: "the pointer names another snapshot"
|
|
1167
|
+
: back.error.message;
|
|
1168
|
+
return {
|
|
1169
|
+
ok: false,
|
|
1170
|
+
error: new RemoteExecutionError("connect_failed", `${what} failed: ${this.redactUrl(errorMessageOf(lost), url.value)} — read back: ${readBack}`, lost instanceof Error ? lost : undefined),
|
|
1171
|
+
};
|
|
1138
1172
|
}
|
|
1139
1173
|
async awaitSpaceCommit(space, signal) {
|
|
1140
1174
|
for (;;) {
|
|
@@ -1238,19 +1272,36 @@ export class RemoteK8sExecutionEnv {
|
|
|
1238
1272
|
const url = presigned.value;
|
|
1239
1273
|
const tmp = "/tmp/ws-snap.tgz";
|
|
1240
1274
|
const excludes = (this.cfg.snapshotExclude ?? []).map((item) => ` --exclude=${shellQuote(`./${item}`)}`).join("");
|
|
1241
|
-
const cmd = `tar czf ${tmp}${excludes} -C ${shellQuote(this.cfg.mountPath)} . && curl -
|
|
1275
|
+
const cmd = `tar czf ${tmp}${excludes} -C ${shellQuote(this.cfg.mountPath)} . && curl -sS -o /dev/null -w '%{http_code}' -X PUT -T ${tmp} ${shellQuote(url)}; ` +
|
|
1242
1276
|
`rc=$?; rm -f ${tmp}; exit $rc`;
|
|
1277
|
+
const until = Date.now() + boundMs;
|
|
1243
1278
|
const r = await this.runExec(ADAPTER_START, cmd, { timeoutMs: boundMs });
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1279
|
+
const stored = await this.archiveStored(target, snapshotId, until - Date.now());
|
|
1280
|
+
if (!stored.ok) {
|
|
1281
|
+
const pod = !r.ok
|
|
1282
|
+
? `the upload exec failed: ${this.redactUrl(r.error.message, url)}`
|
|
1283
|
+
: `the upload exited ${r.value.exitCode}${/^\d{3}$/.test(r.value.stdout.trim()) ? `, HTTP ${r.value.stdout.trim()}` : ""}${r.value.stderr.trim() ? `: ${this.redactUrl(r.value.stderr, url).slice(0, 300)}` : ""}`;
|
|
1284
|
+
return { ok: false, error: new RemoteExecutionError("connect_failed", `workspace snapshot upload left no object under the snapshot id (read back: ${stored.why}); ${pod}`, r.ok ? undefined : r.error) };
|
|
1285
|
+
}
|
|
1248
1286
|
const name = this.podName;
|
|
1249
1287
|
this.podName = undefined;
|
|
1250
|
-
this.podIP = undefined;
|
|
1251
1288
|
await this.deletePod(name).catch(() => { });
|
|
1252
1289
|
return ok(snapshotId);
|
|
1253
1290
|
}
|
|
1291
|
+
async archiveStored(target, snapshotId, timeoutMs) {
|
|
1292
|
+
if (timeoutMs <= 0)
|
|
1293
|
+
return { ok: false, why: "no time left in the snapshot bound for the read-back" };
|
|
1294
|
+
const url = this.presignSnapshot({ ...target, method: "HEAD", snapshotId });
|
|
1295
|
+
if (!url.ok)
|
|
1296
|
+
return { ok: false, why: url.error.message };
|
|
1297
|
+
try {
|
|
1298
|
+
const res = await this.storeFetch(url.value, { method: "HEAD", timeoutMs });
|
|
1299
|
+
return res.ok ? { ok: true } : { ok: false, why: `HEAD ${res.status}` };
|
|
1300
|
+
}
|
|
1301
|
+
catch (e) {
|
|
1302
|
+
return { ok: false, why: `HEAD failed: ${this.redactUrl(errorMessageOf(e), url.value)}` };
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1254
1305
|
resumeVM(snapshotId, options) {
|
|
1255
1306
|
if (!this.cfg.s3Snapshot)
|
|
1256
1307
|
return Promise.resolve(unsupported("resumeVM"));
|
|
@@ -1302,7 +1353,7 @@ export class RemoteK8sExecutionEnv {
|
|
|
1302
1353
|
const url = presigned.value;
|
|
1303
1354
|
const cmd = `code=$(curl -s -o /tmp/ws.tgz -w '%{http_code}' ${shellQuote(url)}); rc=$?; ` +
|
|
1304
1355
|
`if [ "$rc" != "0" ]; then echo "snapshot GET got no whole answer (curl exit $rc, HTTP $code)" >&2; exit ${RESTORE_TRANSFER_EXIT}; fi; ` +
|
|
1305
|
-
`if [ "$code" = "404" ]; then echo
|
|
1356
|
+
`if [ "$code" = "404" ]; then echo ${RESTORE_404_MARKER}; head -c ${RESTORE_404_ANSWER_BYTES} /tmp/ws.tgz; exit 0; fi; ` +
|
|
1306
1357
|
`case "$code" in ${RESTORE_STORE_BUSY_STATUSES.join("|")}) echo "snapshot GET HTTP $code" >&2; exit ${RESTORE_STORE_BUSY_EXIT};; esac; ` +
|
|
1307
1358
|
`if [ "$code" != "200" ]; then echo "snapshot GET HTTP $code" >&2; exit ${RESTORE_DOWNLOAD_EXIT}; fi; ` +
|
|
1308
1359
|
`tar xzf /tmp/ws.tgz -C ${shellQuote(this.cfg.mountPath)} && rm -f /tmp/ws.tgz`;
|
|
@@ -1317,7 +1368,11 @@ export class RemoteK8sExecutionEnv {
|
|
|
1317
1368
|
? { cls: restoreClassOfExit(r.value.exitCode), detail: `workspace snapshot restore exited ${r.value.exitCode}: ${this.redactUrl(r.value.stderr, url).slice(0, 300)}` }
|
|
1318
1369
|
: undefined;
|
|
1319
1370
|
if (!failure) {
|
|
1320
|
-
if (r.ok && r.value.stdout.
|
|
1371
|
+
if (r.ok && r.value.stdout.startsWith(RESTORE_404_MARKER)) {
|
|
1372
|
+
if (isNoSuchBucketAnswer(404, r.value.stdout.slice(RESTORE_404_MARKER.length))) {
|
|
1373
|
+
await this.releasePod();
|
|
1374
|
+
return this.refuseMissingBucket(target, "archive");
|
|
1375
|
+
}
|
|
1321
1376
|
await this.dropDangling(target, snapshotId);
|
|
1322
1377
|
return { ok: true, value: this.workspaceHandle(), origin: "minted" };
|
|
1323
1378
|
}
|
|
@@ -1404,7 +1459,6 @@ export class RemoteK8sExecutionEnv {
|
|
|
1404
1459
|
if (alive?.status === 200 && phase === "Running")
|
|
1405
1460
|
return ok(this.workspaceHandle());
|
|
1406
1461
|
this.podName = undefined;
|
|
1407
|
-
this.podIP = undefined;
|
|
1408
1462
|
}
|
|
1409
1463
|
return this.connect();
|
|
1410
1464
|
}
|
|
@@ -1457,7 +1511,6 @@ export class RemoteK8sExecutionEnv {
|
|
|
1457
1511
|
}
|
|
1458
1512
|
const name = this.podName;
|
|
1459
1513
|
this.podName = undefined;
|
|
1460
|
-
this.podIP = undefined;
|
|
1461
1514
|
if (name)
|
|
1462
1515
|
await this.deletePod(name).catch(() => { });
|
|
1463
1516
|
}
|
|
@@ -1753,7 +1806,15 @@ export class RemoteK8sExecutionEnv {
|
|
|
1753
1806
|
const cut = (c) => {
|
|
1754
1807
|
finish(() => ({ ok: false, error: createCutError(c, captured()) }));
|
|
1755
1808
|
};
|
|
1756
|
-
const
|
|
1809
|
+
const adoptOnTimeout = opts?.detach?.adoptOnTimeout === true && bounds.wallMs !== undefined && wallMs === bounds.wallMs;
|
|
1810
|
+
let onDetach;
|
|
1811
|
+
const wallTimer = wallMs !== undefined
|
|
1812
|
+
? setTimeout(() => {
|
|
1813
|
+
if (adoptOnTimeout && onDetach?.("timeout") === true)
|
|
1814
|
+
return;
|
|
1815
|
+
cut({ code: "timeout", message: `command exceeded ${wallMs}ms` });
|
|
1816
|
+
}, wallMs)
|
|
1817
|
+
: undefined;
|
|
1757
1818
|
let livenessTimer;
|
|
1758
1819
|
const liveness = bounds.liveness;
|
|
1759
1820
|
const armLiveness = () => {
|
|
@@ -1855,28 +1916,31 @@ export class RemoteK8sExecutionEnv {
|
|
|
1855
1916
|
});
|
|
1856
1917
|
const detach = opts?.detach;
|
|
1857
1918
|
if (detach) {
|
|
1858
|
-
const
|
|
1919
|
+
const adoptRunning = (cause) => {
|
|
1859
1920
|
if (settled || spliceSink)
|
|
1860
|
-
return;
|
|
1921
|
+
return false;
|
|
1861
1922
|
const out = outTail ? outTail.result() : { text: "", droppedBytes: 0 };
|
|
1862
1923
|
const err = errBuf.result();
|
|
1863
1924
|
const shellId = detach.adopt({ sock, reroute: (sink) => { spliceSink = sink; } });
|
|
1864
1925
|
if (shellId === undefined) {
|
|
1865
1926
|
spliceSink = undefined;
|
|
1866
|
-
return;
|
|
1927
|
+
return false;
|
|
1867
1928
|
}
|
|
1868
1929
|
settled = true;
|
|
1869
1930
|
clearTimeout(wallTimer);
|
|
1870
1931
|
clearTimeout(livenessTimer);
|
|
1871
1932
|
opts?.signal?.removeEventListener("abort", onAbort);
|
|
1872
1933
|
removeDetachListener?.();
|
|
1873
|
-
resolvePromise(ok({ stdout: markTruncated(out.text, out.droppedBytes), stderr: markTruncated(err.text, err.droppedBytes), exitCode: 0, detached: { shellId } }));
|
|
1934
|
+
resolvePromise(ok({ stdout: markTruncated(out.text, out.droppedBytes), stderr: markTruncated(err.text, err.droppedBytes), exitCode: 0, detached: { shellId, ...(cause !== undefined ? { cause } : {}) } }));
|
|
1935
|
+
return true;
|
|
1874
1936
|
};
|
|
1937
|
+
onDetach = adoptRunning;
|
|
1938
|
+
const onDetachSignal = () => void adoptRunning();
|
|
1875
1939
|
if (detach.signal.aborted)
|
|
1876
|
-
|
|
1940
|
+
onDetachSignal();
|
|
1877
1941
|
else {
|
|
1878
|
-
detach.signal.addEventListener("abort",
|
|
1879
|
-
removeDetachListener = () => detach.signal.removeEventListener("abort",
|
|
1942
|
+
detach.signal.addEventListener("abort", onDetachSignal, { once: true });
|
|
1943
|
+
removeDetachListener = () => detach.signal.removeEventListener("abort", onDetachSignal);
|
|
1880
1944
|
}
|
|
1881
1945
|
}
|
|
1882
1946
|
});
|
|
@@ -1920,6 +1984,7 @@ export class RemoteK8sExecutionEnv {
|
|
|
1920
1984
|
stderrFilter: call,
|
|
1921
1985
|
detach: {
|
|
1922
1986
|
signal: detachSignal,
|
|
1987
|
+
adoptOnTimeout: options?.autoBackgroundOnTimeout === true,
|
|
1923
1988
|
tee,
|
|
1924
1989
|
adopt: (io) => {
|
|
1925
1990
|
const adopted = this.bgManager.adoptSync((ctx) => {
|
|
@@ -1944,20 +2009,6 @@ export class RemoteK8sExecutionEnv {
|
|
|
1944
2009
|
this.endExec(inflight);
|
|
1945
2010
|
}
|
|
1946
2011
|
}
|
|
1947
|
-
async getHost(port) {
|
|
1948
|
-
const c = await this.ensureConnected();
|
|
1949
|
-
if (!c.ok || !this.podIP)
|
|
1950
|
-
return undefined;
|
|
1951
|
-
return `${this.podIP}:${port}`;
|
|
1952
|
-
}
|
|
1953
|
-
async startBackground(command) {
|
|
1954
|
-
const wrapped = command.replace(/[\\"$`]/g, (c) => "\\" + c);
|
|
1955
|
-
const r = await this.exec(`(nohup sh -c "${wrapped}" >>/tmp/lsp-bridge.log 2>&1 &) ; echo started`, { timeout: 30 });
|
|
1956
|
-
if (!r.ok)
|
|
1957
|
-
throw new RemoteExecutionError("connect_failed", `startBackground failed: ${r.error.message}`, r.error);
|
|
1958
|
-
if (r.value.exitCode !== 0)
|
|
1959
|
-
throw new RemoteExecutionError("connect_failed", `startBackground exited ${r.value.exitCode}: ${r.value.stderr.slice(0, 200)}`);
|
|
1960
|
-
}
|
|
1961
2012
|
async *execStream(command, options) {
|
|
1962
2013
|
const c = await this.ensureConnected();
|
|
1963
2014
|
if (!c.ok)
|