@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,14 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { SCENARIO_SUBJECT_PREFIX } from "../owner-brands.js";
|
|
2
|
+
import { redactErrorMessage, redactLedgerEventData, runRowErrorCodeOf, sealRunRowResult } from "../observability/run-terminal.js";
|
|
3
|
+
import { outwardPlane, persistedPlaneOf } from "../terminal.js";
|
|
3
4
|
import { projectUsageStats, USAGE_SCAN_LIMIT } from "../usage-analytics.js";
|
|
4
5
|
import { join } from "node:path";
|
|
5
|
-
import { existsSync,
|
|
6
|
+
import { closeSync, existsSync, fsyncSync, openSync, readFileSync, readdirSync, renameSync, rmSync, statSync } from "node:fs";
|
|
7
|
+
import { IS_WIN32 } from "./host-platform.js";
|
|
6
8
|
import { randomBytes } from "node:crypto";
|
|
7
9
|
import { AppendLog, atomicWriteFile, ensureDir, isProcessLive, processFingerprint, sanitizePathComponent, sanitizeScope, writeThenLink } from "@sema-agent/core";
|
|
8
10
|
import { recordFailOpen } from "../observability/fail-open.js";
|
|
9
11
|
import { replayJsonlSkipping } from "../observability/corrupt-read-seat.js";
|
|
10
12
|
import { joinFromStore, splitForStore } from "./wiring-section-codec.js";
|
|
11
|
-
import { RUN_HOLDER_DEATH_CODES, RUN_ORPHANED_ERROR, RUN_STALLED_ERROR, StoreBootRefusalError, buildRunOrphanedError, isTerminalRunStatus, settledLegObservationOf } from "./store-contracts.js";
|
|
13
|
+
import { RUN_HOLDER_DEATH_CODES, RUN_ORPHANED_ERROR, RUN_STALLED_ERROR, RUN_STALL_DEFAULT_WIRING, RUN_STALL_VERDICT_UNLANDED_TAG, StoreBootRefusalError, runLivenessOf, buildRunOrphanedError, isTerminalRunStatus, settledLegObservationOf } from "./store-contracts.js";
|
|
14
|
+
import { buildSessionRunRollups } from "./session-run-rollup.js";
|
|
15
|
+
import { normalizedRunPreviewM45 } from "./run-preview-m45.js";
|
|
16
|
+
import { SHELL_SENTINEL_OWNER_M48 } from "./shell-sentinel-owner-m48.js";
|
|
12
17
|
import { notifyRunTerminal } from "../observability/run-terminal.js";
|
|
13
18
|
import { readRunIdentityCells, runIdentityCells } from "../identity-source.js";
|
|
14
19
|
import { createInProcessSpaceCommitTable, fenceSpaceCommitAtTerminal, SPACE_COMMIT_RECORD_SCHEMA } from "../workspace-space-commit.js";
|
|
@@ -58,6 +63,9 @@ const PARK_ORPHAN_SETTLE_MS = 30_000;
|
|
|
58
63
|
export class RunStoreStrictHydrateError extends StoreBootRefusalError {
|
|
59
64
|
name = "RunStoreStrictHydrateError";
|
|
60
65
|
}
|
|
66
|
+
export function fileRunStoreDirsFor(root) {
|
|
67
|
+
return { runs: join(root, "runs"), active: join(root, "runs", "active"), tmp: join(root, "tmp"), spaceCommits: join(root, "space-commits") };
|
|
68
|
+
}
|
|
61
69
|
export class FileRunStore {
|
|
62
70
|
runsDir;
|
|
63
71
|
activeDir;
|
|
@@ -77,19 +85,24 @@ export class FileRunStore {
|
|
|
77
85
|
claimOwner = { nonce: randomBytes(12).toString("hex"), ...processFingerprint() };
|
|
78
86
|
claimLocks = new Map();
|
|
79
87
|
logger;
|
|
88
|
+
rootRows;
|
|
80
89
|
strictHydrate;
|
|
90
|
+
stall;
|
|
81
91
|
constructor(root, opts) {
|
|
82
92
|
this.logger = opts;
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
85
|
-
this.
|
|
86
|
-
|
|
93
|
+
this.stall = opts.stall ?? RUN_STALL_DEFAULT_WIRING;
|
|
94
|
+
this.rootRows = opts.rootRows;
|
|
95
|
+
this.strictHydrate = opts.strictHydrate === true;
|
|
96
|
+
const dirs = fileRunStoreDirsFor(root);
|
|
97
|
+
this.runsDir = dirs.runs;
|
|
98
|
+
this.activeDir = dirs.active;
|
|
99
|
+
this.tmpDir = dirs.tmp;
|
|
87
100
|
this.blobsDir = join(root, "run-blobs");
|
|
88
|
-
this.spaceCommitsDir =
|
|
101
|
+
this.spaceCommitsDir = dirs.spaceCommits;
|
|
89
102
|
this.spaceCommits = createInProcessSpaceCommitTable({
|
|
90
103
|
load: (spaceKey) => this.loadSpaceCommit(spaceKey),
|
|
91
104
|
save: (record) => {
|
|
92
|
-
|
|
105
|
+
ensureDir(this.spaceCommitsDir);
|
|
93
106
|
atomicWriteFile(this.tmpDir, this.spaceCommitPath(record.spaceKey), `${JSON.stringify(record)}\n`);
|
|
94
107
|
},
|
|
95
108
|
remove: (spaceKey) => rmSync(this.spaceCommitPath(spaceKey), { force: true }),
|
|
@@ -353,17 +366,21 @@ export class FileRunStore {
|
|
|
353
366
|
}
|
|
354
367
|
}
|
|
355
368
|
writeRunFile(r) {
|
|
356
|
-
|
|
369
|
+
ensureDir(this.runDir(r.taskId));
|
|
357
370
|
atomicWriteFile(this.tmpDir, this.runJsonPath(r.taskId), `${JSON.stringify(this.toDisk(r))}\n`);
|
|
358
371
|
}
|
|
359
|
-
persist(
|
|
360
|
-
this.writeRunFile(
|
|
361
|
-
this.runs.
|
|
372
|
+
persist(draft) {
|
|
373
|
+
this.writeRunFile(draft);
|
|
374
|
+
const live = this.runs.get(draft.taskId);
|
|
375
|
+
if (live === undefined)
|
|
376
|
+
this.runs.set(draft.taskId, draft);
|
|
377
|
+
else
|
|
378
|
+
Object.assign(live, draft);
|
|
362
379
|
}
|
|
363
380
|
eventLogFor(taskId) {
|
|
364
381
|
let log = this.eventLogs.get(taskId);
|
|
365
382
|
if (!log) {
|
|
366
|
-
|
|
383
|
+
ensureDir(this.runDir(taskId));
|
|
367
384
|
log = new AppendLog(this.eventsPath(taskId));
|
|
368
385
|
this.eventLogs.set(taskId, log);
|
|
369
386
|
}
|
|
@@ -371,13 +388,17 @@ export class FileRunStore {
|
|
|
371
388
|
}
|
|
372
389
|
async createRun(taskId, sessionId, owner, instanceId, meta = {}) {
|
|
373
390
|
const idemKey = meta.idem?.key ?? null;
|
|
374
|
-
return this.
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
391
|
+
return this.rootRows().withRootRow(sessionId, async (present) => {
|
|
392
|
+
if (!present)
|
|
393
|
+
return { ok: false, sessionAbsent: true };
|
|
394
|
+
return this.withClaimLock(sessionId, async () => {
|
|
395
|
+
const acquired = await this.acquireClaim(sessionId, taskId);
|
|
396
|
+
if (!acquired.ok) {
|
|
397
|
+
const existing = this.submittedRow(taskId, idemKey);
|
|
398
|
+
return existing ? { ok: false, existing: this.toRecord(existing) } : acquired;
|
|
399
|
+
}
|
|
400
|
+
return this.commitNewRun(taskId, sessionId, owner, instanceId, meta, idemKey);
|
|
401
|
+
});
|
|
381
402
|
});
|
|
382
403
|
}
|
|
383
404
|
submittedRow(taskId, idemKey) {
|
|
@@ -434,15 +455,13 @@ export class FileRunStore {
|
|
|
434
455
|
const r = this.runs.get(taskId);
|
|
435
456
|
if (!r || r.objectivePreview !== null)
|
|
436
457
|
return;
|
|
437
|
-
this.
|
|
438
|
-
r.objectivePreview = preview;
|
|
458
|
+
this.persist({ ...r, objectivePreview: preview });
|
|
439
459
|
}
|
|
440
460
|
async requestCancel(taskId, owner) {
|
|
441
461
|
const r = this.runs.get(taskId);
|
|
442
462
|
if (!r || !ownerEq(r.owner, owner) || r.status !== "running")
|
|
443
463
|
return false;
|
|
444
|
-
r
|
|
445
|
-
this.persist(r);
|
|
464
|
+
this.persist({ ...r, cancelRequested: true });
|
|
446
465
|
return true;
|
|
447
466
|
}
|
|
448
467
|
async isCancelRequested(taskId, owner) {
|
|
@@ -453,8 +472,7 @@ export class FileRunStore {
|
|
|
453
472
|
const r = this.runs.get(taskId);
|
|
454
473
|
if (!r || !ownerEq(r.owner, owner) || r.status !== "running")
|
|
455
474
|
return false;
|
|
456
|
-
r
|
|
457
|
-
this.persist(r);
|
|
475
|
+
this.persist({ ...r, preemptRequested: true });
|
|
458
476
|
return true;
|
|
459
477
|
}
|
|
460
478
|
async isPreemptRequested(taskId, owner) {
|
|
@@ -463,10 +481,9 @@ export class FileRunStore {
|
|
|
463
481
|
}
|
|
464
482
|
async heartbeat(taskId, owner) {
|
|
465
483
|
const r = this.runs.get(taskId);
|
|
466
|
-
if (r && ownerEq(r.owner, owner) && r.status === "running")
|
|
467
|
-
r
|
|
468
|
-
|
|
469
|
-
}
|
|
484
|
+
if (r && ownerEq(r.owner, owner) && r.status === "running")
|
|
485
|
+
this.persist({ ...r, updatedAt: new Date() });
|
|
486
|
+
return r !== undefined && r.status === "running";
|
|
470
487
|
}
|
|
471
488
|
async appendEvent(taskId, seq, type, data) {
|
|
472
489
|
data = redactLedgerEventData(type, data);
|
|
@@ -569,12 +586,8 @@ export class FileRunStore {
|
|
|
569
586
|
}
|
|
570
587
|
let pending;
|
|
571
588
|
if (r.status === "running" || r.status === "suspended" || r.status === "needs_review") {
|
|
572
|
-
|
|
573
|
-
r
|
|
574
|
-
r.error = error;
|
|
575
|
-
r.errorCode = result === null ? null : (outwardPlane(result.terminal).errorCode ?? null);
|
|
576
|
-
r.updatedAt = new Date();
|
|
577
|
-
this.persist(r);
|
|
589
|
+
const errorCode = runRowErrorCodeOf(result);
|
|
590
|
+
this.persist({ ...r, status, result, error, errorCode, updatedAt: new Date() });
|
|
578
591
|
pending = {
|
|
579
592
|
runId: taskId,
|
|
580
593
|
sessionId: r.sessionId,
|
|
@@ -582,7 +595,7 @@ export class FileRunStore {
|
|
|
582
595
|
status,
|
|
583
596
|
resultTaskId: result?.taskId,
|
|
584
597
|
model: result?.model,
|
|
585
|
-
errorCode:
|
|
598
|
+
errorCode: errorCode ?? undefined,
|
|
586
599
|
errorMessage: (result === null ? undefined : outwardPlane(result.terminal).errorMessage) ?? error ?? undefined,
|
|
587
600
|
elapsedMs: Math.max(0, Date.now() - r.createdAt.getTime()),
|
|
588
601
|
};
|
|
@@ -597,33 +610,30 @@ export class FileRunStore {
|
|
|
597
610
|
const sealed = sealRunRowResult(result);
|
|
598
611
|
const r = this.runs.get(taskId);
|
|
599
612
|
if (r && (r.status === "running" || r.status === "suspended")) {
|
|
600
|
-
r
|
|
601
|
-
r.result = sealed;
|
|
602
|
-
r.updatedAt = new Date();
|
|
603
|
-
this.persist(r);
|
|
613
|
+
this.persist({ ...r, status: "suspended", result: sealed, errorCode: runRowErrorCodeOf(sealed), updatedAt: new Date() });
|
|
604
614
|
}
|
|
605
615
|
}
|
|
606
616
|
async setNeedsReview(taskId, result) {
|
|
607
617
|
const sealed = sealRunRowResult(result);
|
|
608
618
|
const r = this.runs.get(taskId);
|
|
609
619
|
if (r && (r.status === "running" || r.status === "needs_review")) {
|
|
610
|
-
r
|
|
611
|
-
r.result = sealed;
|
|
612
|
-
r.updatedAt = new Date();
|
|
613
|
-
this.persist(r);
|
|
620
|
+
this.persist({ ...r, status: "needs_review", result: sealed, errorCode: runRowErrorCodeOf(sealed), updatedAt: new Date() });
|
|
614
621
|
}
|
|
615
622
|
}
|
|
616
623
|
async markResuming(taskId, instanceId) {
|
|
617
624
|
const r = this.runs.get(taskId);
|
|
618
625
|
if (!r || (r.status !== "suspended" && r.status !== "needs_review"))
|
|
619
626
|
return false;
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
+
this.persist({
|
|
628
|
+
...r,
|
|
629
|
+
status: "running",
|
|
630
|
+
result: null,
|
|
631
|
+
errorCode: null,
|
|
632
|
+
instanceId,
|
|
633
|
+
cancelRequested: false,
|
|
634
|
+
preemptRequested: false,
|
|
635
|
+
updatedAt: new Date(),
|
|
636
|
+
});
|
|
627
637
|
return true;
|
|
628
638
|
}
|
|
629
639
|
async getActiveTaskId(sessionId) {
|
|
@@ -633,8 +643,7 @@ export class FileRunStore {
|
|
|
633
643
|
const r = this.runs.get(taskId);
|
|
634
644
|
if (this.active.get(sessionId) !== taskId || r === undefined || r.status !== "running")
|
|
635
645
|
return false;
|
|
636
|
-
r
|
|
637
|
-
this.persist(r);
|
|
646
|
+
this.persist({ ...r, updatedAt: new Date() });
|
|
638
647
|
write({ instanceId: r.instanceId });
|
|
639
648
|
return true;
|
|
640
649
|
}
|
|
@@ -702,62 +711,10 @@ export class FileRunStore {
|
|
|
702
711
|
}
|
|
703
712
|
return latest === undefined ? undefined : settledLegObservationOf(latest.taskId, latest.result);
|
|
704
713
|
}
|
|
705
|
-
async
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
continue;
|
|
710
|
-
const arr = bySession.get(r.sessionId) ?? [];
|
|
711
|
-
arr.push(r);
|
|
712
|
-
bySession.set(r.sessionId, arr);
|
|
713
|
-
}
|
|
714
|
-
const cursorAt = opts.cursor ? Date.parse(opts.cursor.lastActivityAt) : undefined;
|
|
715
|
-
const qlc = opts.q?.toLowerCase();
|
|
716
|
-
const summaries = [];
|
|
717
|
-
for (const [sessionId, arr] of bySession) {
|
|
718
|
-
if (qlc && !arr.some((r) => r.objectivePreview?.toLowerCase().includes(qlc)))
|
|
719
|
-
continue;
|
|
720
|
-
const sorted = [...arr].sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime() || (a.taskId < b.taskId ? 1 : a.taskId > b.taskId ? -1 : 0));
|
|
721
|
-
const latest = sorted[0];
|
|
722
|
-
const latestRunId = latest.result?.runId;
|
|
723
|
-
let last = -Infinity;
|
|
724
|
-
let first = Infinity;
|
|
725
|
-
for (const r of arr) {
|
|
726
|
-
const t = r.createdAt.getTime();
|
|
727
|
-
if (t > last)
|
|
728
|
-
last = t;
|
|
729
|
-
if (t < first)
|
|
730
|
-
first = t;
|
|
731
|
-
}
|
|
732
|
-
summaries.push({
|
|
733
|
-
sessionId,
|
|
734
|
-
owner: latest.owner,
|
|
735
|
-
lastActivityAt: new Date(last).toISOString(),
|
|
736
|
-
firstActivityAt: new Date(first).toISOString(),
|
|
737
|
-
runCount: arr.length,
|
|
738
|
-
objectivePreview: latest.objectivePreview,
|
|
739
|
-
lastStatus: latest.status,
|
|
740
|
-
lastRunId: latest.taskId,
|
|
741
|
-
...(typeof latestRunId === "string" && latestRunId !== "" ? { lastTaskRunId: latestRunId } : {}),
|
|
742
|
-
title: null,
|
|
743
|
-
pinned: false,
|
|
744
|
-
});
|
|
745
|
-
}
|
|
746
|
-
return summaries
|
|
747
|
-
.filter((s) => {
|
|
748
|
-
if (cursorAt === undefined)
|
|
749
|
-
return true;
|
|
750
|
-
const t = Date.parse(s.lastActivityAt);
|
|
751
|
-
return t < cursorAt || (t === cursorAt && s.sessionId < opts.cursor.sessionId);
|
|
752
|
-
})
|
|
753
|
-
.sort((a, b) => Date.parse(b.lastActivityAt) - Date.parse(a.lastActivityAt) || (a.sessionId < b.sessionId ? 1 : a.sessionId > b.sessionId ? -1 : 0))
|
|
754
|
-
.slice(0, opts.limit);
|
|
755
|
-
}
|
|
756
|
-
async deleteBySession(sessionId, expectedSessionOwner) {
|
|
757
|
-
void expectedSessionOwner;
|
|
758
|
-
const claimed = this.active.get(sessionId);
|
|
759
|
-
if (claimed !== undefined)
|
|
760
|
-
return { active: claimed };
|
|
714
|
+
async sessionRunRollups(opts = {}) {
|
|
715
|
+
return buildSessionRunRollups(this.runs.values(), opts);
|
|
716
|
+
}
|
|
717
|
+
async deleteBySession(sessionId) {
|
|
761
718
|
this.dropSectionBlobs(sessionId);
|
|
762
719
|
let removed = 0;
|
|
763
720
|
for (const [taskId, r] of [...this.runs]) {
|
|
@@ -806,21 +763,45 @@ export class FileRunStore {
|
|
|
806
763
|
let reaped = 0;
|
|
807
764
|
for (const r of this.runs.values()) {
|
|
808
765
|
if (r.status === "running" && pred(r)) {
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
766
|
+
this.persist({
|
|
767
|
+
...r,
|
|
768
|
+
status: "failed",
|
|
769
|
+
result: null,
|
|
770
|
+
error: reason,
|
|
771
|
+
errorCode: code,
|
|
772
|
+
updatedAt: new Date(),
|
|
773
|
+
});
|
|
815
774
|
reaped += 1;
|
|
816
775
|
}
|
|
817
776
|
}
|
|
818
777
|
this.sweepClaims();
|
|
819
778
|
return reaped;
|
|
820
779
|
}
|
|
821
|
-
async reapStale(
|
|
822
|
-
const
|
|
823
|
-
|
|
780
|
+
async reapStale() {
|
|
781
|
+
const nowMs = Date.now();
|
|
782
|
+
const windowMs = this.stall.windowMs();
|
|
783
|
+
const reaped = this.reapRunning((r) => runLivenessOf(this.toRecord(r), nowMs, windowMs) === "due", RUN_STALLED_ERROR, RUN_HOLDER_DEATH_CODES.stalled);
|
|
784
|
+
if (reaped > 0)
|
|
785
|
+
this.stall.onVerdicts(reaped);
|
|
786
|
+
return reaped;
|
|
787
|
+
}
|
|
788
|
+
async observeRun(row) {
|
|
789
|
+
const nowMs = Date.now();
|
|
790
|
+
const windowMs = this.stall.windowMs();
|
|
791
|
+
if (runLivenessOf(row, nowMs, windowMs) !== "due")
|
|
792
|
+
return row;
|
|
793
|
+
let landed = 0;
|
|
794
|
+
try {
|
|
795
|
+
landed = this.reapRunning((r) => r.taskId === row.taskId && runLivenessOf(this.toRecord(r), nowMs, windowMs) === "due", RUN_STALLED_ERROR, RUN_HOLDER_DEATH_CODES.stalled);
|
|
796
|
+
}
|
|
797
|
+
catch (err) {
|
|
798
|
+
recordFailOpen(RUN_STALL_VERDICT_UNLANDED_TAG, err instanceof Error ? err.message : String(err));
|
|
799
|
+
return row;
|
|
800
|
+
}
|
|
801
|
+
if (landed > 0)
|
|
802
|
+
this.stall.onVerdicts(landed);
|
|
803
|
+
const r = this.runs.get(row.taskId);
|
|
804
|
+
return r ? this.toRecord(r) : row;
|
|
824
805
|
}
|
|
825
806
|
async reclaimOrphanedAtBoot(isResumable) {
|
|
826
807
|
const orphans = [];
|
|
@@ -829,12 +810,14 @@ export class FileRunStore {
|
|
|
829
810
|
orphans.push(r);
|
|
830
811
|
}
|
|
831
812
|
for (const r of orphans) {
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
813
|
+
this.persist({
|
|
814
|
+
...r,
|
|
815
|
+
status: "failed",
|
|
816
|
+
result: null,
|
|
817
|
+
error: RUN_ORPHANED_ERROR,
|
|
818
|
+
errorCode: RUN_HOLDER_DEATH_CODES.orphaned,
|
|
819
|
+
updatedAt: new Date(),
|
|
820
|
+
});
|
|
838
821
|
}
|
|
839
822
|
this.sweepClaims();
|
|
840
823
|
return orphans.length;
|
|
@@ -843,12 +826,14 @@ export class FileRunStore {
|
|
|
843
826
|
this.checkpointProbe = probe;
|
|
844
827
|
}
|
|
845
828
|
failExpiredPark(r) {
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
829
|
+
this.persist({
|
|
830
|
+
...r,
|
|
831
|
+
status: "failed",
|
|
832
|
+
result: null,
|
|
833
|
+
error: "approval expired before decision",
|
|
834
|
+
errorCode: "approval.expired",
|
|
835
|
+
updatedAt: new Date(),
|
|
836
|
+
});
|
|
852
837
|
}
|
|
853
838
|
async reapSuspended(olderThanMs) {
|
|
854
839
|
const probe = this.checkpointProbe;
|
|
@@ -961,7 +946,19 @@ export class FileRunStore {
|
|
|
961
946
|
const verdict = await this.judgeClaim(sessionId, claim, holder);
|
|
962
947
|
if (verdict.kind === "live")
|
|
963
948
|
return { ok: false, activeTaskId: verdict.holderTaskId ?? holder };
|
|
964
|
-
|
|
949
|
+
const stalled = verdict.code === RUN_HOLDER_DEATH_CODES.stalled;
|
|
950
|
+
let taken;
|
|
951
|
+
try {
|
|
952
|
+
taken = this.takeOverClaim(sessionId, verdict.reason, verdict.snapshot, verdict.code);
|
|
953
|
+
}
|
|
954
|
+
catch (e) {
|
|
955
|
+
if (!stalled)
|
|
956
|
+
throw e;
|
|
957
|
+
recordFailOpen(RUN_STALL_VERDICT_UNLANDED_TAG, e instanceof Error ? e.message : String(e));
|
|
958
|
+
return { ok: false, activeTaskId: verdict.snapshot.taskId || holder };
|
|
959
|
+
}
|
|
960
|
+
if (taken && stalled)
|
|
961
|
+
this.stall.onVerdicts(1);
|
|
965
962
|
}
|
|
966
963
|
}
|
|
967
964
|
try {
|
|
@@ -1019,6 +1016,8 @@ export class FileRunStore {
|
|
|
1019
1016
|
return live();
|
|
1020
1017
|
return { kind: "stale", reason: `parked run (${row.status}) has no resumable checkpoint — claim reclaimed`, snapshot };
|
|
1021
1018
|
}
|
|
1019
|
+
if (row && runLivenessOf(this.toRecord(row), Date.now(), this.stall.windowMs()) === "due")
|
|
1020
|
+
return { kind: "stale", reason: RUN_STALLED_ERROR, snapshot, code: RUN_HOLDER_DEATH_CODES.stalled };
|
|
1022
1021
|
const mine = owner?.nonce === this.claimOwner.nonce;
|
|
1023
1022
|
const ownerGone = owner !== undefined && !isProcessLive(owner);
|
|
1024
1023
|
if (!mine && !ownerGone)
|
|
@@ -1051,7 +1050,7 @@ export class FileRunStore {
|
|
|
1051
1050
|
if (row?.status !== snapshot.status || row?.updatedAt.getTime() !== snapshot.updatedAtMs)
|
|
1052
1051
|
return false;
|
|
1053
1052
|
if (row && (row.status === "running" || row.status === "suspended" || row.status === "needs_review")) {
|
|
1054
|
-
this.persist({ ...row, status: "failed", error: reason,
|
|
1053
|
+
this.persist({ ...row, status: "failed", result: null, error: reason, errorCode: code ?? null, updatedAt: new Date() });
|
|
1055
1054
|
}
|
|
1056
1055
|
const quarantine = join(this.tmpDir, `stale-claim.${sanitizePathComponent(sessionId)}.${process.pid}.${randomBytes(6).toString("hex")}`);
|
|
1057
1056
|
try {
|
|
@@ -1093,23 +1092,79 @@ export class FileRunStore {
|
|
|
1093
1092
|
}
|
|
1094
1093
|
this.eventLogs.delete(taskId);
|
|
1095
1094
|
}
|
|
1095
|
+
const dir = this.runDir(taskId);
|
|
1096
|
+
rmSync(dir, { recursive: true, force: true });
|
|
1097
|
+
if (!IS_WIN32 && existsSync(this.runsDir)) {
|
|
1098
|
+
const fd = openSync(this.runsDir, "r");
|
|
1099
|
+
try {
|
|
1100
|
+
fsyncSync(fd);
|
|
1101
|
+
}
|
|
1102
|
+
finally {
|
|
1103
|
+
closeSync(fd);
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1096
1106
|
this.events.delete(taskId);
|
|
1097
1107
|
const dropped = this.runs.get(taskId);
|
|
1098
1108
|
if (dropped?.idemKey != null && this.byIdem.get(dropped.idemKey) === taskId)
|
|
1099
1109
|
this.byIdem.delete(dropped.idemKey);
|
|
1100
1110
|
this.runs.delete(taskId);
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1111
|
+
}
|
|
1112
|
+
withdrawRunsOf(sessionId, ownTaskId) {
|
|
1113
|
+
for (const r of this.runs.values())
|
|
1114
|
+
if (r.sessionId === sessionId && r.taskId !== ownTaskId)
|
|
1115
|
+
return { keep: "runs" };
|
|
1116
|
+
const own = ownTaskId === undefined ? undefined : this.runs.get(ownTaskId);
|
|
1117
|
+
if (own !== undefined && own.sessionId !== sessionId)
|
|
1118
|
+
throw new Error(`FileRunStore.withdrawRunsOf: run ${ownTaskId} belongs to session ${own.sessionId}, not ${sessionId} — refusing to delete it`);
|
|
1119
|
+
this.dropSectionBlobs(sessionId);
|
|
1120
|
+
if (own !== undefined)
|
|
1121
|
+
this.dropRun(own.taskId);
|
|
1122
|
+
return "proceed";
|
|
1123
|
+
}
|
|
1124
|
+
migrateRunErrorCodeColumnM44() {
|
|
1125
|
+
let migrated = 0;
|
|
1126
|
+
for (const r of this.runs.values()) {
|
|
1127
|
+
const target = r.status === "running" ? null : r.result === null ? r.errorCode : (persistedPlaneOf(r.result).errorCode ?? r.errorCode);
|
|
1128
|
+
if (target === r.errorCode)
|
|
1129
|
+
continue;
|
|
1130
|
+
this.persist({ ...r, errorCode: target });
|
|
1131
|
+
migrated += 1;
|
|
1132
|
+
}
|
|
1133
|
+
return migrated;
|
|
1134
|
+
}
|
|
1135
|
+
migrateRunObjectivePreviewM45() {
|
|
1136
|
+
let migrated = 0;
|
|
1137
|
+
for (const r of this.runs.values()) {
|
|
1138
|
+
if (typeof r.objectivePreview !== "string")
|
|
1139
|
+
continue;
|
|
1140
|
+
const target = normalizedRunPreviewM45(r.objectivePreview);
|
|
1141
|
+
if (target === undefined || target === r.objectivePreview)
|
|
1142
|
+
continue;
|
|
1143
|
+
this.persist({ ...r, objectivePreview: target });
|
|
1144
|
+
migrated += 1;
|
|
1108
1145
|
}
|
|
1146
|
+
return migrated;
|
|
1147
|
+
}
|
|
1148
|
+
clearShellSentinelOwnersM48() {
|
|
1149
|
+
let cleared = 0;
|
|
1150
|
+
for (const r of this.runs.values()) {
|
|
1151
|
+
if (r.owner !== SHELL_SENTINEL_OWNER_M48)
|
|
1152
|
+
continue;
|
|
1153
|
+
this.persist({ ...r, owner: null });
|
|
1154
|
+
cleared += 1;
|
|
1155
|
+
}
|
|
1156
|
+
return cleared;
|
|
1109
1157
|
}
|
|
1110
1158
|
sessionIdsWithRuns() {
|
|
1111
1159
|
return new Set([...this.runs.values()].map((r) => r.sessionId));
|
|
1112
1160
|
}
|
|
1161
|
+
scenarioPrefixOwnerRowsM42() {
|
|
1162
|
+
let n = 0;
|
|
1163
|
+
for (const r of this.runs.values())
|
|
1164
|
+
if (r.owner !== null && r.owner.startsWith(SCENARIO_SUBJECT_PREFIX))
|
|
1165
|
+
n += 1;
|
|
1166
|
+
return n;
|
|
1167
|
+
}
|
|
1113
1168
|
dispose() {
|
|
1114
1169
|
for (const log of [...this.eventLogs.values(), ...this.blobLogs.values()]) {
|
|
1115
1170
|
try {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* structural tests only on mac/Linux; behavior-level bite happens on the first Windows-runner green.
|
|
33
33
|
*/
|
|
34
34
|
import type { ChildProcess } from "node:child_process";
|
|
35
|
-
import { killProcessTree, type BackgroundHardKillOutcome } from "@sema-agent/core";
|
|
35
|
+
import { killProcessTree, signalProcessTree, type BackgroundHardKillOutcome } from "@sema-agent/core";
|
|
36
36
|
import type { Logger } from "../observability/logger.js";
|
|
37
37
|
/** 平台读点全仓一处(`test/host-shell-settle-order.test.ts` 源码钉);别处要平台串从这里取,不直读 Node 的平台字段。 */
|
|
38
38
|
export declare const HOST_PLATFORM: NodeJS.Platform;
|
|
@@ -133,8 +133,29 @@ export declare function hardKillGroupNow(pid: number): BackgroundHardKillOutcome
|
|
|
133
133
|
*/
|
|
134
134
|
export declare function killTreeSoft(pid: number): void;
|
|
135
135
|
/** Graceful tree kill where the CALLER has no escalation timer of its own (currently unused by the host lane —
|
|
136
|
-
* exported for parity with core's surface; the bg driver keeps its own HOST_BG_KILL_GRACE_MS ladder).
|
|
137
|
-
|
|
136
|
+
* exported for parity with core's surface; the bg driver keeps its own HOST_BG_KILL_GRACE_MS ladder).
|
|
137
|
+
* `signalProcessTree` = ONE signal to the whole tree (POSIX: a `ps` snapshot of the descendants of `pid` + the group
|
|
138
|
+
* signal + each descendant; win32: taskkill /T). Never throws. Its root must be a pid that is still OURS (an unreaped
|
|
139
|
+
* child): a reaped pid may already be a stranger's, and a descendant walk from a stranger's pid kills the stranger's
|
|
140
|
+
* children — the one caller (the command-hook ladder) guards that on the child handle. */
|
|
141
|
+
export { killProcessTree, signalProcessTree };
|
|
142
|
+
/**
|
|
143
|
+
* Group probe for a REAPED leader: does the group of `pid` still hold an ORIGINAL member? Ask it only after node reaped the
|
|
144
|
+
* leader (an unreaped leader keeps the pid ours — no question to ask). POSIX reads two numbers:
|
|
145
|
+
* · `kill(-pid, 0)` — is anyone in the group;
|
|
146
|
+
* · `kill(pid, 0)` — is any process holding the number itself.
|
|
147
|
+
* Group empty (ESRCH) ⇒ false. Group non-empty and nobody holds the number (ESRCH) ⇒ true: the kernel never hands out a number that a
|
|
148
|
+
* process still uses as its process-group id, so the number was not recycled and the members are the original ones (Linux's pid
|
|
149
|
+
* allocator; BSD / darwin allocate the same way — inferred, not read from kernel source). Group non-empty and the number IS held
|
|
150
|
+
* (success / EPERM) ⇒ false: while an original member lived the number could not have been handed out, so every original is dead and what
|
|
151
|
+
* answers now is a stranger's new process / group — never ours, so the caller sends it nothing. EPERM on the group probe reads
|
|
152
|
+
* "non-empty" (darwin answers EPERM for a group holding only unreaped zombies, indistinguishable from a live member we may not signal:
|
|
153
|
+
* one extra shot, never a missed member); EPERM on the number probe reads "held" (the process exists, we just cannot touch it).
|
|
154
|
+
* win32 has no process group ⇒ always false (the tree is discovered only at signal time, by taskkill /T, and only from an unreaped
|
|
155
|
+
* root). Never throws. The only residual is the instant between the two probes (an original member dying and its number being
|
|
156
|
+
* recycled inside it) — microseconds, not the grace window.
|
|
157
|
+
*/
|
|
158
|
+
export declare function reapedLeaderGroupAlive(pid: number): boolean;
|
|
138
159
|
/**
|
|
139
160
|
* 登记回执 = 注销的**唯一**凭据(身份即凭据,见簿注)+ 一只幂等的注销把手。
|
|
140
161
|
*
|
|
@@ -127,7 +127,21 @@ export function killTreeSoft(pid) {
|
|
|
127
127
|
}
|
|
128
128
|
process.kill(-pid, "SIGTERM");
|
|
129
129
|
}
|
|
130
|
-
export { killProcessTree };
|
|
130
|
+
export { killProcessTree, signalProcessTree };
|
|
131
|
+
export function reapedLeaderGroupAlive(pid) {
|
|
132
|
+
if (IS_WIN32)
|
|
133
|
+
return false;
|
|
134
|
+
const answers = (target) => {
|
|
135
|
+
try {
|
|
136
|
+
process.kill(target, 0);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
return err.code !== "ESRCH";
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
return answers(-pid) && !answers(pid);
|
|
144
|
+
}
|
|
131
145
|
const liveHostForegroundGroups = new Set();
|
|
132
146
|
export function trackHostForegroundChild(pid) {
|
|
133
147
|
const ticket = {
|
|
@@ -136,6 +136,8 @@ function refusingBakeRow(read) {
|
|
|
136
136
|
export const IMAGE_BAKE_INDEXES = [
|
|
137
137
|
{ table: "image_bake", name: "idx_image_bake_status", columns: ["status"] },
|
|
138
138
|
{ table: "image_bake", name: "idx_image_bake_created", columns: ["created_at"] },
|
|
139
|
+
{ table: "image_bake", name: "uq_image_bake_idem", columns: ["idem_key"], unique: true },
|
|
140
|
+
{ table: "image_bake_event", name: "uq_image_bake_event_line", columns: ["bake_id", "line_ord"], unique: true },
|
|
139
141
|
];
|
|
140
142
|
export async function ensurePgImageBakeSchema(pool, poolName = "standard") {
|
|
141
143
|
for (const stmt of PG_IMAGE_BAKE_SCHEMA)
|