@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,23 +1,18 @@
|
|
|
1
|
-
import { persistedPlaneOf } from "../terminal.js";
|
|
2
1
|
import { memoRedactedRead, memoRedactTerminalResult, redactErrorMessage, sealStoredRunRowResult } from "../observability/run-terminal.js";
|
|
3
|
-
import {
|
|
2
|
+
import { isTerminalRunStatus } from "../plugins/store-contracts.js";
|
|
4
3
|
import { composeSupervisorCost, infraCost, infraUsageFromEvents, hasInfraPricing } from "../observability/cost-taxonomy.js";
|
|
5
4
|
import { recordFailOpen } from "../observability/fail-open.js";
|
|
6
5
|
import { readTurnActivityMs } from "../turn-activity.js";
|
|
7
6
|
import { buildCrossSliceUsage, readResourceWindow } from "../resource-window.js";
|
|
8
|
-
export function runRowStale(deps, run) {
|
|
9
|
-
return run.status === "running" && Date.now() - new Date(run.updatedAt).getTime() > deps.config.runStaleSec * 1000;
|
|
10
|
-
}
|
|
11
7
|
export function runRowExitResult(run) {
|
|
12
8
|
return isTerminalRunStatus(run.status) ? memoRedactTerminalResult("run.result", run.result ?? undefined) : (sealStoredRunRowResult(run.result ?? null, "run.result") ?? undefined);
|
|
13
9
|
}
|
|
14
10
|
export async function readRunFace(deps, runStore, run) {
|
|
15
11
|
const taskId = run.taskId;
|
|
16
|
-
const stale = runRowStale(deps, run);
|
|
17
12
|
const infraRates = deps.config.infraCostRates;
|
|
18
|
-
const needCost = Boolean(run.result?.stats &&
|
|
19
|
-
const needSuggestions =
|
|
20
|
-
const resourceWindow = run.status === "running"
|
|
13
|
+
const needCost = Boolean(run.result?.stats && infraRates && hasInfraPricing(infraRates));
|
|
14
|
+
const needSuggestions = run.status === "completed";
|
|
15
|
+
const resourceWindow = run.status === "running" ? readResourceWindow(run.taskId) : undefined;
|
|
21
16
|
let events;
|
|
22
17
|
let eventsUnavailable = false;
|
|
23
18
|
if (needCost || needSuggestions || resourceWindow !== undefined) {
|
|
@@ -45,7 +40,7 @@ export async function readRunFace(deps, runStore, run) {
|
|
|
45
40
|
if (Array.isArray(arr))
|
|
46
41
|
suggestions = arr.map((s) => String(s));
|
|
47
42
|
}
|
|
48
|
-
const lastActivityAt = run.status === "running"
|
|
43
|
+
const lastActivityAt = run.status === "running" ? readTurnActivityMs(run.taskId) : undefined;
|
|
49
44
|
let crossSliceUsage;
|
|
50
45
|
if (resourceWindow !== undefined) {
|
|
51
46
|
if (eventsUnavailable || events === undefined)
|
|
@@ -56,14 +51,14 @@ export async function readRunFace(deps, runStore, run) {
|
|
|
56
51
|
return {
|
|
57
52
|
taskId: run.taskId,
|
|
58
53
|
sessionId: run.sessionId,
|
|
59
|
-
status:
|
|
54
|
+
status: run.status,
|
|
60
55
|
...(lastActivityAt !== undefined ? { msSinceLastActivity: Math.max(0, Date.now() - lastActivityAt) } : {}),
|
|
61
56
|
...(crossSliceUsage !== undefined ? { crossSliceUsage } : {}),
|
|
62
57
|
result: runRowExitResult(run),
|
|
63
58
|
supervisorCost,
|
|
64
59
|
suggestions,
|
|
65
|
-
errorCode:
|
|
66
|
-
error:
|
|
60
|
+
errorCode: run.errorCode ?? undefined,
|
|
61
|
+
error: isTerminalRunStatus(run.status) ? memoRedactedRead("run.error", run.error ?? undefined, redactErrorMessage) : redactErrorMessage(run.error ?? undefined),
|
|
67
62
|
jobId: run.jobId ?? undefined,
|
|
68
63
|
source: run.source ?? undefined,
|
|
69
64
|
heldBy: isTerminalRunStatus(run.status) ? null : (run.instanceId ?? null),
|
package/dist/http/send.d.ts
CHANGED
|
@@ -64,10 +64,12 @@ export declare function endSseWithError(res: ServerResponse, frame: {
|
|
|
64
64
|
readonly message: string;
|
|
65
65
|
}): void;
|
|
66
66
|
export declare function sendJson(res: ServerResponse, status: number, body: unknown): void;
|
|
67
|
+
/** HTTP 入口给每条响应挂上本部署的日志器(缺席 = 本部署没有日志器,与全局兜底同读)。 */
|
|
68
|
+
export declare function attachResponseLogger(res: ServerResponse, logger: Logger | undefined): void;
|
|
67
69
|
/** A6([ref] lens1 §C3/lens3 §C3a): canonical error-response sender for sites that already carry a
|
|
68
70
|
* machine `errorCode` — `errorCode` is a required positional arg (not optional-bag) so a call site
|
|
69
71
|
* cannot regress to the "code but no errorCode" shape the error-code-key-gate forbids. Body shape is
|
|
70
|
-
* `{ error: message, errorCode, ...extra }
|
|
72
|
+
* `{ error: message, errorCode, ...extra }` (written by the one refusal writer {@link sendRefusal}); a site that used to ALSO emit a legacy `code` key keeps it
|
|
71
73
|
* by passing `{ code: ... }` inside `extra` — this is a pure call-site migration (zero wire-contract
|
|
72
74
|
* change), not a new response shape. Sites where the two machine-code channels genuinely disagree, or
|
|
73
75
|
* where `error`/`errorCode` aren't cleanly separable from the rest of the body, are left on raw
|
|
@@ -93,13 +95,13 @@ export declare function invalidJsonError(reason: InvalidJsonReason): HttpError;
|
|
|
93
95
|
export declare function httpErrorCode(status: number, code?: string): string;
|
|
94
96
|
/**
|
|
95
97
|
* 一只 `HttpError` 读成 {@link Refusal}:码经 {@link httpErrorCode}(带码的 throw 原样优先,否则按状态给粗码),句 = `message`,机读事实 = `extra`
|
|
96
|
-
* (如场景门的 `
|
|
98
|
+
* (如场景门的 `scenario` / `source`、条数帽的 `field` / `reason` / `count` / `cap`)。**拆 `HttpError` 的唯一一处** —— 别的站点自己拆
|
|
97
99
|
* `status` / `code` / `message` 拼体就丢了 `extra`(`test/refusal-one-composer.test.ts` 的静态门钉着)。
|
|
98
100
|
*/
|
|
99
101
|
export declare function httpErrorRefusal(e: HttpError): Refusal;
|
|
100
102
|
/** 一只 `HttpError` 的拒体成员 = {@link refusalBody}({@link httpErrorRefusal})。 */
|
|
101
103
|
export declare function httpErrorBody(e: HttpError): RefusalBody;
|
|
102
|
-
/** 整面拒:状态 = `e.status`,体 = {@link httpErrorBody}。手里拿着一只 `HttpError` 的路由站点一律调它。 */
|
|
104
|
+
/** 整面拒:状态 = `e.status`,体 = {@link httpErrorRefusal} 经出线点 {@link sendRefusal}(与 {@link httpErrorBody} 同一只组句)。手里拿着一只 `HttpError` 的路由站点一律调它。 */
|
|
103
105
|
export declare function sendHttpError(res: ServerResponse, e: HttpError): void;
|
|
104
106
|
/**
|
|
105
107
|
* 🔴 B1 / [ref] —— `SessionPolicyError` → 应答,经 {@link sessionPolicyErrorHttp} 那**一只**映射
|
|
@@ -135,4 +137,11 @@ export declare function msg(e: unknown): string;
|
|
|
135
137
|
* codex r10 [high] 纵深:错误句可带凭据回显 ⇒ 先过 `redactHead`(有上限、不抛)。
|
|
136
138
|
*/
|
|
137
139
|
export declare function logRequestError(logger: Logger | undefined, req: IncomingMessage, err: unknown): void;
|
|
140
|
+
/**
|
|
141
|
+
* 一只抛出物的**栈顶帧**,写成 `<仓内路径>:<行>`(`request_error` 行的出处位:排障时「哪一行读到了 `undefined`」不必再复现)。
|
|
142
|
+
* 取栈的第一条读得出位置的帧(内建 / 匿名帧跳过);路径只留 `src/` · `dist/` · `node_modules/` 起的尾段 —— 宿主机的绝对前缀(用户目录 / 容器卷名)不出门;
|
|
143
|
+
* 不带列、不带函数名、不带消息体(消息已在 `err` 位,过它自己的脱敏)。读不出(非 `Error` / 无栈 / 无位置帧)⇒ `undefined`,调用点不写该键。
|
|
144
|
+
* 纯解析、无 catch:只读 `stack` 这一个成员(与 {@link msg} 读 `message` 同一姿势 —— 同一只抛出物读两个成员,守不守访问器是同一个问题,不在这里单独设一道兜底)。
|
|
145
|
+
*/
|
|
146
|
+
export declare function topFrameOf(err: unknown): string | undefined;
|
|
138
147
|
//# sourceMappingURL=send.d.ts.map
|
package/dist/http/send.js
CHANGED
|
@@ -2,8 +2,9 @@ import { SessionError, SessionPolicyError } from "@sema-agent/core";
|
|
|
2
2
|
import { sessionPolicyErrorFacts, sessionPolicyErrorHttp, sessionPolicyErrorSentence } from "../session-policy-wire.js";
|
|
3
3
|
import { openFaceFaultWire, sessionErrorWireOf } from "../session-error-wire.js";
|
|
4
4
|
import { redactErrorMessage, redactHead } from "../observability/run-terminal.js";
|
|
5
|
+
import { seatText } from "../trace/exit-seat.js";
|
|
5
6
|
import { createCodedHttpError } from "../security.js";
|
|
6
|
-
import { refusalBody } from "./refusal-body.js";
|
|
7
|
+
import { refusalBody, refusalWireBytes } from "./refusal-body.js";
|
|
7
8
|
export const SSE_RESPONSE_MARK = Symbol("sema.http.sse-response");
|
|
8
9
|
export function isSseResponse(res) {
|
|
9
10
|
return res[SSE_RESPONSE_MARK] === true;
|
|
@@ -32,8 +33,27 @@ export function sendJson(res, status, body) {
|
|
|
32
33
|
res.writeHead(status, { "content-type": "application/json" });
|
|
33
34
|
res.end(JSON.stringify(body));
|
|
34
35
|
}
|
|
36
|
+
const RESPONSE_LOGGER = Symbol("sema.http.response-logger");
|
|
37
|
+
export function attachResponseLogger(res, logger) {
|
|
38
|
+
if (logger !== undefined)
|
|
39
|
+
res[RESPONSE_LOGGER] = logger;
|
|
40
|
+
}
|
|
41
|
+
function sendRefusal(res, status, refusal) {
|
|
42
|
+
let bytes;
|
|
43
|
+
try {
|
|
44
|
+
bytes = refusalWireBytes(refusal);
|
|
45
|
+
}
|
|
46
|
+
catch (fault) {
|
|
47
|
+
const reported = new TypeError(`refusal ${refusal.errorCode} was not written: its facts carry a reserved key, or reading / serializing them threw`, { cause: fault });
|
|
48
|
+
logRequestError(res[RESPONSE_LOGGER], res.req, reported);
|
|
49
|
+
sendOpenFaceFault(res, reported);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
res.writeHead(status, { "content-type": "application/json" });
|
|
53
|
+
res.end(bytes);
|
|
54
|
+
}
|
|
35
55
|
export function sendError(res, status, errorCode, message, extra) {
|
|
36
|
-
|
|
56
|
+
sendRefusal(res, status, extra === undefined ? { errorCode, message } : { errorCode, message, facts: extra });
|
|
37
57
|
}
|
|
38
58
|
export const INVALID_JSON_REASONS = ["not_json", "not_object"];
|
|
39
59
|
export const INVALID_JSON_MESSAGES = {
|
|
@@ -66,14 +86,14 @@ export function httpErrorBody(e) {
|
|
|
66
86
|
return refusalBody(httpErrorRefusal(e));
|
|
67
87
|
}
|
|
68
88
|
export function sendHttpError(res, e) {
|
|
69
|
-
|
|
89
|
+
sendRefusal(res, e.status, httpErrorRefusal(e));
|
|
70
90
|
}
|
|
71
91
|
export function sendSessionPolicyError(res, e, sentencePrefix = "") {
|
|
72
92
|
if (!(e instanceof SessionPolicyError))
|
|
73
93
|
return false;
|
|
74
94
|
const h = sessionPolicyErrorHttp(e.code);
|
|
75
95
|
const facts = sessionPolicyErrorFacts(e);
|
|
76
|
-
sendError(res, h.status, h.errorCode, redactErrorMessage(`${sentencePrefix}${sessionPolicyErrorSentence(e)}`) ?? "session policy error", facts
|
|
96
|
+
sendError(res, h.status, h.errorCode, redactErrorMessage(`${sentencePrefix}${sessionPolicyErrorSentence(e)}`) ?? "session policy error", facts);
|
|
77
97
|
return true;
|
|
78
98
|
}
|
|
79
99
|
export function sendSessionError(res, e, face) {
|
|
@@ -90,12 +110,28 @@ export function sendOpenFaceFault(res, e) {
|
|
|
90
110
|
}
|
|
91
111
|
function sendSessionWire(res, e, wire) {
|
|
92
112
|
const sentence = wire.sentence ?? (e instanceof SessionError ? redactErrorMessage(e.message) : undefined) ?? "session store error";
|
|
93
|
-
sendError(res, wire.status, wire.errorCode, sentence, wire.
|
|
113
|
+
sendError(res, wire.status, wire.errorCode, sentence, wire.facts);
|
|
94
114
|
}
|
|
95
115
|
export function msg(e) {
|
|
96
116
|
return e instanceof Error ? e.message : String(e);
|
|
97
117
|
}
|
|
98
118
|
export function logRequestError(logger, req, err) {
|
|
99
|
-
|
|
119
|
+
const at = topFrameOf(err);
|
|
120
|
+
logger?.error("request_error", { method: req.method, url: req.url, err: redactHead(msg(err), 2000), ...(at !== undefined ? { at } : {}) });
|
|
121
|
+
}
|
|
122
|
+
const STACK_FRAME_LOCATION = /^\s*at (?:.*? \()?(?:file:\/\/)?(\/.*?|[A-Za-z]:[\\/].*?):(\d+):\d+\)?$/;
|
|
123
|
+
export function topFrameOf(err) {
|
|
124
|
+
const stack = err instanceof Error ? err.stack : undefined;
|
|
125
|
+
if (typeof stack !== "string")
|
|
126
|
+
return undefined;
|
|
127
|
+
for (const line of stack.split("\n")) {
|
|
128
|
+
const m = STACK_FRAME_LOCATION.exec(line);
|
|
129
|
+
if (m === null)
|
|
130
|
+
continue;
|
|
131
|
+
const path = m[1].replace(/\\/g, "/");
|
|
132
|
+
const tail = /(?:^|\/)((?:src|dist|node_modules)\/.*)$/.exec(path)?.[1] ?? path.slice(path.lastIndexOf("/") + 1);
|
|
133
|
+
return seatText("operator-log-text", `${tail}:${m[2]}`);
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
100
136
|
}
|
|
101
137
|
//# sourceMappingURL=send.js.map
|
package/dist/http/server.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import http from "node:http";
|
|
2
2
|
import type { MemoryComplianceFaces, MemoryOriginFaces, SessionMemoryStatusFace } from "../memory-operator-faces.js";
|
|
3
3
|
import type { SideQueryAccounting } from "../budget.js";
|
|
4
|
+
import type { SessionPurgeOutcome } from "../session-deletion.js";
|
|
4
5
|
import type { IncomingMessage } from "node:http";
|
|
5
6
|
import { type Runner, type RunnerDeps, type TaskSpec, type TaskResult, type WorkflowRunStore, type MemoryEntry, type MemoryExportBundle, type MemoryImportReport, type SideQuerySpec, type SideQueryResult, type Brain, type EngineNotice } from "@sema-agent/core";
|
|
6
7
|
import type { TaskRequestBody } from "./wire-types.js";
|
|
7
8
|
import type { ServiceConfig } from "../config-types.js";
|
|
8
9
|
import { type SessionMirrorRuling } from "../web-admin-client/facade.js";
|
|
9
10
|
import type { RestartSignal } from "@sema-agent/settings-schema/fleet";
|
|
10
|
-
import { type OwnerAwareSessionStore } from "../security.js";
|
|
11
|
+
import { type AuthorizeInput, type OwnerAwareSessionStore } from "../security.js";
|
|
11
12
|
import type { PeerDesk, PeerLease } from "../peer-seat.js";
|
|
12
13
|
import type { ExecutionRoot, ResolvedTaskSpec } from "./execution-context.js";
|
|
13
14
|
import type { RunStore, ImageIndex, ImageBake, CheckpointStoreFull, ResumeAnchorStore, ApprovalExemptionStore, ApprovalNonceStore, ServiceSessionPolicyStore, ServiceFileHistoryStore, ToolResultStoreFull, StoreBackend } from "../plugins/store-backend.js";
|
|
@@ -21,6 +22,7 @@ import type { SubagentSteerRegistry } from "../orchestration/subagent-steer.js";
|
|
|
21
22
|
import { type WorkflowCompletionInbox } from "../orchestration/workflow-completion-inbox.js";
|
|
22
23
|
import type { FleetLeaseManager } from "../fleet-lease.js";
|
|
23
24
|
import { type FleetEventBus } from "../fleet/fleet-bus.js";
|
|
25
|
+
import type { SessionResidentCounts } from "../session-resident-background.js";
|
|
24
26
|
import type { ElicitationCoordinator } from "../elicitation.js";
|
|
25
27
|
import type { QuestionCoordinator } from "../question.js";
|
|
26
28
|
import { type ParkedAskRedeem, type ToolApprovalCoordinator } from "../tool-approval.js";
|
|
@@ -41,13 +43,17 @@ export { coarseStatusForState, errorCodeForExit };
|
|
|
41
43
|
import type { SessionNotifyDoor } from "../session-notify-door.js";
|
|
42
44
|
import { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills } from "./admission.js";
|
|
43
45
|
import { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath } from "./route-table.js";
|
|
44
|
-
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath
|
|
46
|
+
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath };
|
|
45
47
|
export { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills };
|
|
46
|
-
import { explicitOperatorOk
|
|
48
|
+
import { explicitOperatorOk } from "./principal-gate.js";
|
|
47
49
|
export { explicitOperatorOk };
|
|
48
50
|
/** Per-request authorization context resolved before building the spec (identity, owned session). */
|
|
49
51
|
export interface RequestAuth {
|
|
50
|
-
|
|
52
|
+
/**
|
|
53
|
+
* 这次请求 / 这条腿的**主体**(分区键;`owner-brands.ts`):没带场景头 ⇒ 与验过的人逐字节同;带了 ⇒ `_scn:<场景>:<人>`。行属主 / 检查点 scope / 附件 / 锚读它,
|
|
54
|
+
* 人面(场景裁定 / 运维 / 治理 / 引擎 `spec.principal`)由装配器经 `partsOf` 解码出人。自建 authorizer 交它自己验过的那一只身份串(没有场景时就是人)。
|
|
55
|
+
*/
|
|
56
|
+
subject?: string;
|
|
51
57
|
sessionId: string;
|
|
52
58
|
memoryScope?: string;
|
|
53
59
|
/** 142-S4:the SHAPE-VALIDATED **且已归一(小写)** 的 `body.projectId`(authorizer 的 core
|
|
@@ -93,14 +99,13 @@ export interface ServiceCoreDeps {
|
|
|
93
99
|
* 不带 ⇒ 现铸并登记)。省掉是编译错;绕过类型造的 deps 在 {@link createHttpServer} 入口拒启。单用户嵌入传
|
|
94
100
|
* `createAuthorizer(config, runner.sessions)`(包根导出)—— 店没有属主读时它退化为只派 principal 与会话 id。
|
|
95
101
|
*/
|
|
96
|
-
authorize: (ctx:
|
|
97
|
-
req: IncomingMessage;
|
|
98
|
-
body: TaskRequestBody;
|
|
99
|
-
}) => Promise<RequestAuth>;
|
|
102
|
+
authorize: (ctx: AuthorizeInput) => Promise<RequestAuth>;
|
|
100
103
|
/**
|
|
101
104
|
* Map an inbound request body + resolved auth to a TaskSpec. The SERVICE/deployment owns model
|
|
102
105
|
* + tools + mcp here (callers only supply content). `auth` carries the principal-derived memory scope —
|
|
103
|
-
* prefer it over anything in the body.
|
|
106
|
+
* prefer it over anything in the body. The root session is not read from `auth` either: the resolver's one reading of
|
|
107
|
+
* "which session is this leg on" is `opts.execution.root` (`auth.sessionId` is the authorizer's hand-off to the server's
|
|
108
|
+
* execution-context resolver, not a second reading for the resolver).
|
|
104
109
|
* The root session is NOT the resolver's to write: the return type carries no `sessionId`
|
|
105
110
|
* (`ResolvedTaskSpec`); the server stamps the root the authorizer resolved onto every spec it executes
|
|
106
111
|
* (`http/execution-context.ts` `stampSpecRoot`). A resolver that needs the root reads `opts.execution.root`.
|
|
@@ -155,7 +160,8 @@ export interface ServiceCoreDeps {
|
|
|
155
160
|
* `principalCaps`、同一份部署缺省):凡回答「此主体在此场景能看见哪些 MCP 服务器 / A2A 对端」的口 —— `GET /v1/capabilities/mcp` 的状态面、
|
|
156
161
|
* `GET /v1/sessions/:id/mcp` 与 `…/a2a` 两张会话面板 —— 的场景名都由它给,**点名与缺席都问**:点名 ⇒ 判在册 / allowlist,
|
|
157
162
|
* 拒体(400 `scenario_unknown` 附在册词表 / 400 `scenario_not_allowed` 附 allowlist)与任务提交腿逐字同;缺席 ⇒ 指派链(中心 ruling 胜者,
|
|
158
|
-
* 否则部署缺省),与这位主体 run 时同一读法(指派悬空 ⇒ 503 `state.scenario_assignment_unknown`,同提交腿)
|
|
163
|
+
* 否则部署缺省),与这位主体 run 时同一读法(指派悬空 ⇒ 503 `state.scenario_assignment_unknown`,同提交腿)。中心配了却答不出这位主体的裁定 ⇒
|
|
164
|
+
* 点名与缺席同答 503 `state.scenario_assignment_unavailable`(同提交腿)。
|
|
159
165
|
* 读面上这只门走**只读腿**(`createScenarioGate(…, "peek")`):问中心裁定时 center 抖动的那一拍,不替这个主体的真提交留下 fail-closed 降级项
|
|
160
166
|
* (提交腿自己是 `"enforce"`)。
|
|
161
167
|
* 🔴 **必填**:读口的场景名只有这一个来源,没有「缺接缝 ⇒ 读部署缺省 / 点名 404」这类第二种读法 —— 漏接是**编译错**(嵌入方自己装配时,工厂与它的型从包根导出:
|
|
@@ -236,7 +242,8 @@ export interface ServiceStoreDeps {
|
|
|
236
242
|
/** §0.5 session-ownership: the durable session abstraction (`SessionRepo`-style) the service OWNS — session
|
|
237
243
|
* IDENTITY/enumeration (E16 list) + lifecycle (E17 fork, E21 history delete) come from HERE, not the
|
|
238
244
|
* `task_run` runs ledger. When it carries `listSessions`, GET /v1/sessions sources sessions from the session
|
|
239
|
-
* store (task_run only joins for run
|
|
245
|
+
* store (task_run only joins for the run-derived half of the row); without it the list answers 501 — the run store is
|
|
246
|
+
* not a session lister. `fork` enables the fork route; the delete route rides `purgeSession` (the coordinator over the one session eraser). */
|
|
240
247
|
sessionStorage?: OwnerAwareSessionStore;
|
|
241
248
|
/**
|
|
242
249
|
* [ref] —— 跨会话车道的**发现席**(core `RunnerDeps.peerDirectory`),与 `RunnerDeps` 侧**同一个对象**
|
|
@@ -283,7 +290,7 @@ export interface ServiceStoreDeps {
|
|
|
283
290
|
* 已配 AND 有 store backend(main.ts 建;写点在两条 send lane 的 withLedgerRecording)。 */
|
|
284
291
|
sendFileLedger?: import("../plugins/send-file-ledger.js").SendFileLedger;
|
|
285
292
|
/** [ref] 用户输入受理账本(「200 applied」受理的影子;单写者 = `src/user-input-ledger.ts` 的活对象,boot 装配在 stage-07 并跑一次收敛)。
|
|
286
|
-
* 在场 ⇔ 有 store backend(生产恒与 `runStore` 同源于 backend)。消费点:steer 的 live 腿 /
|
|
293
|
+
* 在场 ⇔ 有 store backend(生产恒与 `runStore` 同源于 backend)。消费点:steer 的 live 腿 / 同步子代的 steer([ref])受理前写 `accepted`(写不进 ⇒ 503
|
|
287
294
|
* `steering.ledger_unavailable`)、三条 run 腿开通告口那一拍铸 `crashed` 通告并在收场时 settle、`GET /v1/sessions/:id` 的
|
|
288
295
|
* `userInputUndrained` 读面。缺席只出现在不接 backend 的 stub-harness 上(那时没有这一面,行为与修前逐字相同)。 */
|
|
289
296
|
userInputLedger?: import("../user-input-ledger.js").UserInputLedger;
|
|
@@ -373,8 +380,8 @@ export interface ServiceCoordinatorDeps {
|
|
|
373
380
|
sessionTitler?: import("../session-titler.js").SessionTitler;
|
|
374
381
|
}
|
|
375
382
|
/** **函数/构件缝**:main.ts 把跨多个子系统的动作编译成一个可调用面交给路由(路由不该自己
|
|
376
|
-
* 重组零件——见 backend 的同款论证)。parked-revive
|
|
377
|
-
*
|
|
383
|
+
* 重组零件——见 backend 的同款论证)。parked-revive 两件是同族的构件缝(按行解析的赎回面工厂 +
|
|
384
|
+
* 父约束重建器),与 backgroundAgentStore 齐备才构成赎回腿。 */
|
|
378
385
|
export interface ServiceSeamDeps {
|
|
379
386
|
/**
|
|
380
387
|
* device lane 的 WS 汇聚端(design/device-executor-lane-v2 §5,车A-3)—— 本仓**首个** WS 服务端。
|
|
@@ -385,7 +392,7 @@ export interface ServiceSeamDeps {
|
|
|
385
392
|
* ——两者刻意不在这里自动耦合,因为 §8-R7 的顺序(新提交 503 → 新 upgrade 拒 → 停发新指令 →
|
|
386
393
|
* 在途结果照收 → 才断连)是**部署编排**的语义,不是 HTTP 层能自作主张的。
|
|
387
394
|
*
|
|
388
|
-
* 🔴
|
|
395
|
+
* 🔴 **当前生产装配恒缺席,这是有意的**:车A-3 只交汇聚端与这条
|
|
389
396
|
* 挂载缝;`main.ts` 侧的真装配(建店 → 建 hub → 传这个键 → 与 `drainState` 联动 → 与
|
|
390
397
|
* `REMOTE_EXEC=device` 拒启门对齐)属**车A-4/端点车**。在那之前本键只有测试口消费,不是死枝。
|
|
391
398
|
*/
|
|
@@ -417,25 +424,21 @@ export interface ServiceSeamDeps {
|
|
|
417
424
|
* 缺席 = 本部署不是 host 车道(没有工厂读这一格)⇒ 提交点 no-op。装配 = `boot/stage-10-http-server.ts`(host 车道才给)。
|
|
418
425
|
*/
|
|
419
426
|
bindSessionInheritEnv?: import("./session-inherit-env.js").SessionInheritEnvCommitCtx["bindSessionInheritEnv"];
|
|
427
|
+
/**
|
|
428
|
+
* 会话登记簿四表(cwd / shellEnv / inheritEnv / 属主,`boot/execution-env.ts` `createSessionScopedRegistries` 的 `dropSessionOf`)按**住客**清掉一只 ——
|
|
429
|
+
* 记下的住客恰是交来的化身才清、答 `true`。读者只有提交出口(`submission-exit.ts`):被拒提交铸下的会话撤回之后清(同 id 的下一位已登记、写下的条目不动)。
|
|
430
|
+
* 缺席(夹具 / 嵌入方没接)⇒ 本部署没有那几张表。
|
|
431
|
+
*/
|
|
432
|
+
dropSessionScopedOf?: (sessionId: string, incarnation: string) => boolean;
|
|
420
433
|
/** Audit回溯: current context (+ summary) for a session, plus its owner. Enables GET /v1/sessions/:id. `opts.reader` (the
|
|
421
434
|
* verified identity reading the view) ⇒ user message rows carry the rewind handle `taskId` (`audit.ts` `buildRewindHandles`);
|
|
422
435
|
* an embedder's one-parameter implementation stays assignable (it simply never projects handles). */
|
|
423
436
|
sessionAudit?: (sessionId: string, opts?: import("../audit.js").SessionAuditReadOpts) => Promise<({
|
|
424
437
|
owner: string | null;
|
|
425
438
|
} & Record<string, unknown>) | undefined>;
|
|
426
|
-
/** E21
|
|
427
|
-
*
|
|
428
|
-
|
|
429
|
-
* pre-check), which the route maps to 409. Enables DELETE /v1/sessions/:id. Wired by main.ts (all the stores). */
|
|
430
|
-
/** E21 删除协调器。三种结局:删了 / 有活跑(`{active}`,409 `conflict.session_active_run`)/ [ref]:以本会话为根的后台子代没停干净
|
|
431
|
-
* (`{childrenAlive}` = 仍活着的子代句柄,409 `conflict.session_children_alive` 的 `remaining[]`;会话记录不动)。 */
|
|
432
|
-
purgeSession?: (sessionId: string, owner: string | null) => Promise<{
|
|
433
|
-
deleted: boolean;
|
|
434
|
-
} | {
|
|
435
|
-
active: string;
|
|
436
|
-
} | {
|
|
437
|
-
childrenAlive: readonly string[];
|
|
438
|
-
}>;
|
|
439
|
+
/** E21 删除协调器(会话三态 活 → 在删 → 没了,`session-deletion.ts`):删会话的对话史与服务自己的 run 账 / 检查点 / 卸载结果等全部挂靠行,一次调用。
|
|
440
|
+
* 结局 = {@link SessionPurgeOutcome}(删了 / 不在 · 围栏判到认领 · 子代预检拒 · 被接管)。点亮 DELETE /v1/sessions/:id。 */
|
|
441
|
+
purgeSession?: (sessionId: string, owner: string | null) => Promise<SessionPurgeOutcome>;
|
|
439
442
|
/** [ref]③(b): read a BACKGROUND agent-handle child's final report / current status out of the core
|
|
440
443
|
* TaskRegistry (the same face the TaskOutput tool reads — agent handles are NEVER in the run store).
|
|
441
444
|
* Wired in main.ts to `defaultTaskRegistry.pollTask` (non-blocking). Access is the REGISTRATION tuple:
|
|
@@ -569,8 +572,8 @@ export interface ServiceSeamDeps {
|
|
|
569
572
|
* (`controlPlaneRoot`)。②在**挂载期**判掉(工厂返 undefined)。这一族的理由比合规两口更硬:清标的
|
|
570
573
|
* 写前托管行(`OriginClearanceRow.entryText`)在墓碑已落、重录未成的崩溃窗内是那条记忆**唯一的一份**
|
|
571
574
|
* ——落在副本本地盘上 = pod 重建即永久丢失。全文见 src/memory-operator-faces.ts 头注。
|
|
572
|
-
* 🔴 `listClearances`
|
|
573
|
-
* `ControlPlaneCorruptError` —— 那是 fail-closed
|
|
575
|
+
* 🔴 `listClearances` 答 `Promise`(core 7.66.0 [ref] 起引擎经治理店读那份账),账本损坏时**拒**
|
|
576
|
+
* `ControlPlaneCorruptError` —— 那是 fail-closed 信号,不是空数组(路由在 try 内 await)。 */
|
|
574
577
|
memoryOriginFace?: MemoryOriginFaces;
|
|
575
578
|
/** [ref](core 5.58.0 `runMemoryConsolidationDriver`):记忆 **consolidation 阀门**的操作面。
|
|
576
579
|
* 启用 `POST /v1/admin/memory/consolidation/run` 与 `GET /v1/admin/memory/consolidation`(两口 operator-only)。
|
|
@@ -627,11 +630,6 @@ export interface ServiceSeamDeps {
|
|
|
627
630
|
* 🔴 **在场 ⇒ `sessionStorage` 必须带执行席 `executionPlacement`**:认领之后对根会话住客的唯一判官是执行席上的写口;缺 ⇒ `createHttpServer` 拒启
|
|
628
631
|
* (句子 = `PARKED_REVIVE_EXECUTION_SEAT_REQUIRED`)。 */
|
|
629
632
|
parkedReviveSurface?: import("../parked-revive-surface.js").ParkedReviveSurfaceFactory;
|
|
630
|
-
/** 可选第三件:revive args 的 `subagent_type` roster 成员集([ref] Q1 成员性规则)。当前生产装配
|
|
631
|
-
* **恒缺席**(boot 内建 default 无自定义 agents roster,per-request 的 spec.agents 不进 boot 工具)
|
|
632
|
-
* = 恒省略 subagent_type,typed 子代按 general-purpose 形复活(保真度 caveat 已报 core,[ref]
|
|
633
|
-
* 批复审 G-F1;center roster 接线是候件,字段先留给它与测试口)。 */
|
|
634
|
-
parkedKnownAgentTypes?: ReadonlySet<string>;
|
|
635
633
|
/** [ref]/[ref] 跨进程父约束重供:decide 腿按部署配置重建 host 任务的同语义父策略链(exempt 锚=
|
|
636
634
|
* row.rootSessionId),经 core 1.396 的 `parkedResume.inheritedGate` 席位透传——缺席时重启后带
|
|
637
635
|
* requiresParentConstraint 的 parked checkpoint 恒被 core pre-CAS 门诚实拒(不可赎回)。
|
|
@@ -694,14 +692,14 @@ export interface ServiceDeploymentDeps {
|
|
|
694
692
|
* (内建 details+center 条目同判定源盖同名)。absent = 404(与 capabilities 缺席同姿势)。 */
|
|
695
693
|
scenarioDetails?: Record<string, import("../capabilities/scenarios.js").ScenarioDetail>;
|
|
696
694
|
/** Honest /health `sessionBackend` label — the wiring coerces the config enum to "tidb"
|
|
697
|
-
* (meaning "
|
|
698
|
-
* main.ts passes the
|
|
699
|
-
* same derivation as the boot `listening` log). Absent → fall back to the raw config enum. */
|
|
695
|
+
* (meaning "the backend's store, generically"), which on a pg deployment reads as SQL-TiDB and misleads triage.
|
|
696
|
+
* main.ts passes the backend KIND the session store landed on (`pg` / `mysql` / `local` / "memory", `sessionStoreLabelOf`,
|
|
697
|
+
* same derivation as the boot `listening` log) — the kind only; durability is `/health.store.durability`. Absent → fall back to the raw config enum. */
|
|
700
698
|
sessionStoreLabel?: string;
|
|
701
|
-
/** S5 → [ref] ①:持久化姿态的**唯一**装配值(`store-posture.ts`,`boot/stores.ts` 铸):`/health` 的 `storeDegraded`
|
|
702
|
-
*
|
|
703
|
-
* 缺席 = 这个进程不是由 composition root 装起来的(测试夹具形)⇒ `/health` 不带降级位、caps `
|
|
704
|
-
* (`declared` = 配置词,`backend:"memory"` —— 本面不知道任何装出来的后端)。 */
|
|
699
|
+
/** S5 → [ref] ①:持久化姿态的**唯一**装配值(`store-posture.ts`,`boot/stores.ts` 铸):`/health` 的 `storeDegraded`(present-iff `degradedReason` 在场)
|
|
700
|
+
* 与 `store.durability`、caps `store`、诊断 `storeDurability` 同读它,gauge `store_backend_degraded` 与起服布线审计在装配点读同一只。
|
|
701
|
+
* 缺席 = 这个进程不是由 composition root 装起来的(测试夹具形)⇒ `/health` 不带降级位、caps / `/health` / 诊断取诚实下限
|
|
702
|
+
* `unwiredStorePosture`(`declared` = 配置词,`backend:"memory"` ⇒ `ephemeral` —— 本面不知道任何装出来的后端)。 */
|
|
705
703
|
storePosture?: import("../store-posture.js").StorePosture;
|
|
706
704
|
/** [ref] ②:caps `centerWiring` 的读面(`capabilities/center-wiring.ts` `createCenterWiringReader`;入参 = 请求的已验 principal)。
|
|
707
705
|
* 缺席 = 没接中心(或测试夹具)⇒ 键整个缺席。 */
|
|
@@ -711,22 +709,35 @@ export interface ServiceDeploymentDeps {
|
|
|
711
709
|
* Caps `credentialPlane.sandboxGit` calls it on every read and projects the answer as is. Absent = not built by the composition root (a fixture) ⇒
|
|
712
710
|
* the same judge on config alone, the seat counted as not asked. */
|
|
713
711
|
sandboxGitPlane?: () => import("../sandbox-git-plane.js").SandboxGitPlane;
|
|
712
|
+
/**
|
|
713
|
+
* local-docker 车道容器帽的闸的只读面(`plugins/local-docker-capacity.ts`;`DOCKER_MAX_CONTAINERS` 开着才在)。
|
|
714
|
+
* 两个读者:提交门(`run-concurrency-cap.ts`:闸里有起动在等空位 ⇒ 新提交 429 `sandbox_capacity`)与 `/health.sandboxCapacity`。缺席 ⇒ 两处都不读、形状不变。
|
|
715
|
+
*/
|
|
716
|
+
sandboxCapacity?: import("../plugins/local-docker-capacity.js").SandboxCapacityView | undefined;
|
|
714
717
|
/**
|
|
715
718
|
* 本进程起服装上的**运维声明** mod 包数(部署座装配口 `assembleDeploymentMods` 的 `loaded.length`;本服务自铸的注册不算)。一个事实两个出口,同读这一格:
|
|
716
719
|
* `/health` 的 `mods: { deploymentPackages }` 与 `/v1/capabilities` 的 `modsDeploymentPackages: true` —— 都只在 > 0 时在场;0 / 缺席(没声明,或不是由
|
|
717
720
|
* composition root 装起来的夹具)⇒ 两键都缺席,两面与没有声明的部署逐字节同。
|
|
718
721
|
*/
|
|
719
722
|
deploymentModPackages?: number;
|
|
723
|
+
/**
|
|
724
|
+
* 会话 → 调用方登记的工作目录(提交体 `cwd` 的唯一写口 `setSessionCwd` 写的那一张进程内表,`boot/execution-env.ts` `createSessionScopedRegistries`)。
|
|
725
|
+
* **只读**,读者只有 run 外回退口(`POST /v1/sessions/:id/rewind-files`):host 工厂按 `effectiveHostWorkspace(本表.get(会话), ctx)` 定根(`execution-env.ts`
|
|
726
|
+
* host 臂),口在交引擎之前用**同一只函数、同一份入参**问「工厂这一次会不会落到一只用完即删的临时目录」—— 会 ⇒ 拒,不让台账说恢复了而项目没动。
|
|
727
|
+
* 缺席(夹具 / 嵌入方没接)⇒ 读作「没有登记」⇒ host 车道上口拒(fail-closed)。
|
|
728
|
+
*/
|
|
729
|
+
perSessionCwd?: ReadonlyMap<string, string>;
|
|
720
730
|
/**
|
|
721
731
|
* Graceful drain — shared mutable state between main.ts (flips `draining` on SIGTERM) and this server:
|
|
722
732
|
* • while `draining`, NEW model-running submissions (the billable submit paths) get 503 + Retry-After, so an
|
|
723
733
|
* orchestrator/shell retries against the replacement instance; read paths + in-flight verbs (steer/cancel/
|
|
724
734
|
* respond/subagent) stay open so the runs we are waiting on can still finish/interact.
|
|
725
735
|
* • `inflight` is ASSIGNED BY createServer (a live union of this replica's in-flight legs: durable bg/resume
|
|
726
|
-
* `inflightRuns` + live sync/resume streams `steerableRuns`, the leader leg,
|
|
727
|
-
* shells/monitors — `inflightBreakdown` is the same read split into its
|
|
728
|
-
*
|
|
729
|
-
*
|
|
736
|
+
* `inflightRuns` + live sync/resume streams `steerableRuns`, the leader leg, the background sub-agents that outlived the leg
|
|
737
|
+
* that spawned them, and the session-resident background shells/monitors — `inflightBreakdown` is the same read split into its
|
|
738
|
+
* four terms) — an observable fact (`/health.inflight`).
|
|
739
|
+
* `blockingInflight` (also ASSIGNED BY createServer) is the SAME breakdown function minus the session-resident shell term: "is there still
|
|
740
|
+
* work that must be waited out" — the drain wait main.ts polls after SIGTERM, the orphan/lease windows and the SIGHUP idle window read THAT.
|
|
730
741
|
* • /health carries `draining:true` + `version` (build self-description); draining is a readiness reason
|
|
731
742
|
* (`http/readiness.ts`) ⇒ `/readyz` 503 + `/health` `ready:false` (the k8s readiness 摘流信号).
|
|
732
743
|
* • [ref]:`attachedStreams` 同样 ASSIGNED BY createServer —— 本副本当前打开着的 SSE 流条数
|
|
@@ -738,11 +749,13 @@ export interface ServiceDeploymentDeps {
|
|
|
738
749
|
*/
|
|
739
750
|
drainState?: import("../fleet/drain-entry.js").DrainState;
|
|
740
751
|
/**
|
|
741
|
-
*
|
|
742
|
-
*
|
|
743
|
-
* `drainState.blockingInflight`(排空 / 孤儿窗与附着租约自退 / SIGHUP
|
|
752
|
+
* 会话驻留后台行的读口:本进程活过起它的腿、仍在跑的**后台子代理**与**后台 shell / monitor**,一次走查交出两项(`session-resident-background.ts` 的
|
|
753
|
+
* `countSessionResidentBackground` 在 composition root 绑上围栏表;法与边界见该文件头)。`createHttpServer` 把两项并进**唯一的分项函数** `inflightBreakdown`:
|
|
754
|
+
* `backgroundAgents` 进阻断集 `drainState.blockingInflight`(排空 / 孤儿窗与附着租约自退 / SIGHUP 空闲窗判停读它)与总数,`sessionResident` 只进总数 `drainState.inflight`。
|
|
755
|
+
* 读口**不许抛**:判停路径每拍读它,排空首读在期限计时器装上之前 —— 一抛就永不硬停(组合根那只按会话收住读失败、计 1 并报出)。
|
|
756
|
+
* 缺席(嵌入方 / 夹具)= 两项恒 0,两个读数逐字同 7.145.x。
|
|
744
757
|
*/
|
|
745
|
-
sessionResidentBackground?: () =>
|
|
758
|
+
sessionResidentBackground?: () => SessionResidentCounts;
|
|
746
759
|
/** 编排器片 2 件 3:服务租约此刻的读数(`fleet/serving-lease.ts` 的客户端交出;引擎信号铸点与计费准入判同读)。缺席 = 没装租约客户端
|
|
747
760
|
* (非 fleet 成员 / 没接中心 / 测试夹具)⇒ `none`(与没有租约的引擎逐字同)。 */
|
|
748
761
|
servingLease?: () => import("../fleet/engine-signal.js").ServingLeaseView;
|
package/dist/http/server.js
CHANGED
|
@@ -4,7 +4,7 @@ import { validatePendingSteer } from "@sema-agent/core";
|
|
|
4
4
|
import {} from "../web-admin-client/facade.js";
|
|
5
5
|
import { describeValueShape } from "@sema-agent/settings-schema";
|
|
6
6
|
import { HttpError } from "../security.js";
|
|
7
|
-
import { SessionForkInProgressError } from "../execution-placement.js";
|
|
7
|
+
import { SessionDeletingError, SessionForkInProgressError } from "../execution-placement.js";
|
|
8
8
|
import {} from "../memory-sync.js";
|
|
9
9
|
import {} from "../orchestration/workflow-agent-steer.js";
|
|
10
10
|
import {} from "../orchestration/workflow-completion-inbox.js";
|
|
@@ -19,13 +19,14 @@ import { cascadeConfig } from "./run-meta.js";
|
|
|
19
19
|
export { cascadeConfig };
|
|
20
20
|
import { coarseStatusForState, errorCodeForExit } from "./routes/images.js";
|
|
21
21
|
export { coarseStatusForState, errorCodeForExit };
|
|
22
|
-
import { sendError, sendHttpError, sendOpenFaceFault, logRequestError } from "./send.js";
|
|
22
|
+
import { attachResponseLogger, sendError, sendHttpError, sendOpenFaceFault, logRequestError } from "./send.js";
|
|
23
23
|
import { createRequestGuards } from "./request-guards.js";
|
|
24
24
|
import { createRunConcurrencyGate, liveRunIdsOf } from "./run-concurrency-cap.js";
|
|
25
25
|
import { sqlEngineSeatIssue } from "../sql-engine-posture.js";
|
|
26
26
|
import { parkDecisionStoreRefusal } from "../orchestration/workflow-park-decision.js";
|
|
27
27
|
import { CHECKPOINT_CTX_SEALING_REQUIRED } from "./checkpoint-ctx.js";
|
|
28
28
|
import { PARKED_REVIVE_EXECUTION_SEAT_REQUIRED } from "../parked-decide.js";
|
|
29
|
+
import { a2aAudienceIdentityBoundaryRefusal, operatorDeclarationRefusal } from "../config-invariants.js";
|
|
29
30
|
import { retiredServiceDepsRefusal } from "./retired-service-deps.js";
|
|
30
31
|
import { createAdmission, MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills } from "./admission.js";
|
|
31
32
|
import { createResumeLegs } from "./resume-legs.js";
|
|
@@ -33,9 +34,10 @@ import * as facts from "../capability-facts.js";
|
|
|
33
34
|
import { createDispatch } from "./dispatch.js";
|
|
34
35
|
import { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath, isProbePath } from "./route-table.js";
|
|
35
36
|
import { createApprovalSweeps } from "./approval-sweeps.js";
|
|
36
|
-
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath
|
|
37
|
+
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath };
|
|
37
38
|
export { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills };
|
|
38
|
-
import { explicitOperatorOk
|
|
39
|
+
import { explicitOperatorOk } from "./principal-gate.js";
|
|
40
|
+
import { configuredIdentitySources } from "../identity-source.js";
|
|
39
41
|
export { explicitOperatorOk };
|
|
40
42
|
class DrainYieldingPreemptBook extends Map {
|
|
41
43
|
drainingNow;
|
|
@@ -76,6 +78,31 @@ export function createHttpServer(rawDeps) {
|
|
|
76
78
|
if (retired !== undefined)
|
|
77
79
|
throw new Error(retired);
|
|
78
80
|
}
|
|
81
|
+
{
|
|
82
|
+
const operatorDeclarationFailure = operatorDeclarationRefusal(deps.config);
|
|
83
|
+
if (operatorDeclarationFailure !== undefined) {
|
|
84
|
+
throw new Error(operatorDeclarationFailure);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
{
|
|
88
|
+
const bridgeDeclared = configuredIdentitySources(deps.config).includes("sso");
|
|
89
|
+
const verifierWired = deps.webAdminJwtVerifier !== undefined;
|
|
90
|
+
if (verifierWired && !bridgeDeclared) {
|
|
91
|
+
throw new Error("createHttpServer: a webAdminJwtVerifier was injected but the config declares no auth bridge — set authBridgeIssuer (AUTH_BRIDGE_ISSUER) or configure the center (webAdmin), " +
|
|
92
|
+
"since which identity sources this deployment has is read from the config alone (the owner gates, /health.auth and the one-time migrations read it); " +
|
|
93
|
+
"refusing to start rather than verify SSO tokens on a deployment the owner gates read as having no identity boundary");
|
|
94
|
+
}
|
|
95
|
+
if (bridgeDeclared && !verifierWired) {
|
|
96
|
+
throw new Error("createHttpServer: the config declares an auth bridge (authBridgeIssuer, or the center base webAdmin.baseUrl when that is unset) but no webAdminJwtVerifier was injected — " +
|
|
97
|
+
"the service boot builds one from that same issuer; inject a verifier for it, or remove the bridge and the center from the config, " +
|
|
98
|
+
"since /health.auth, the owner gates and the one-time migrations read the bridge from the config alone; refusing to start rather than report SSO sign-in that verifies nobody");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
{
|
|
102
|
+
const audienceBoundaryFailure = a2aAudienceIdentityBoundaryRefusal(deps.config.a2aServe, configuredIdentitySources(deps.config).length === 0);
|
|
103
|
+
if (audienceBoundaryFailure !== undefined)
|
|
104
|
+
throw new Error(audienceBoundaryFailure);
|
|
105
|
+
}
|
|
79
106
|
{
|
|
80
107
|
const issue = sqlEngineSeatIssue(deps.backend, deps.sqlEngine);
|
|
81
108
|
if (issue !== undefined) {
|
|
@@ -106,15 +133,19 @@ export function createHttpServer(rawDeps) {
|
|
|
106
133
|
const steerableRuns = new Map();
|
|
107
134
|
const wakeParkMints = new Map();
|
|
108
135
|
const counters = { uncountedBillableInflight: 0, admittedInflight: 0 };
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
136
|
+
const inflightBreakdown = () => {
|
|
137
|
+
const resident = deps.sessionResidentBackground?.() ?? { backgroundAgents: 0, sessionResident: 0 };
|
|
138
|
+
return {
|
|
139
|
+
http: liveRunIdsOf(inflightRuns, steerableRuns).size + counters.uncountedBillableInflight + counters.admittedInflight,
|
|
140
|
+
leader: deps.leaderEndpoint?.inflight?.() ?? 0,
|
|
141
|
+
backgroundAgents: resident.backgroundAgents,
|
|
142
|
+
sessionResident: resident.sessionResident,
|
|
143
|
+
};
|
|
144
|
+
};
|
|
114
145
|
if (deps.drainState) {
|
|
115
146
|
deps.drainState.inflightBreakdown = inflightBreakdown;
|
|
116
147
|
deps.drainState.inflight = () => inflightTotal(inflightBreakdown());
|
|
117
|
-
deps.drainState.blockingInflight = () => blockingInflightOf(
|
|
148
|
+
deps.drainState.blockingInflight = () => blockingInflightOf(inflightBreakdown());
|
|
118
149
|
}
|
|
119
150
|
let lastBillableActivityAt = performance.now();
|
|
120
151
|
let firstBillableActivityAt = null;
|
|
@@ -154,10 +185,10 @@ export function createHttpServer(rawDeps) {
|
|
|
154
185
|
const cs = deps.checkpointStore;
|
|
155
186
|
if (!cs)
|
|
156
187
|
return false;
|
|
157
|
-
const scope = await cs.peekPendingScope(sessionId);
|
|
188
|
+
const scope = await cs.peekPendingScope(sessionId, { axis: "run" });
|
|
158
189
|
if (scope === null || scope === undefined)
|
|
159
190
|
return false;
|
|
160
|
-
const token = await cs.findPendingTokenBySession(sessionId, scope);
|
|
191
|
+
const token = await cs.findPendingTokenBySession(sessionId, scope, { axis: "run" });
|
|
161
192
|
if (!token)
|
|
162
193
|
return false;
|
|
163
194
|
return await cs.setPendingSteer(token, scope, { text, trusted: false });
|
|
@@ -167,13 +198,14 @@ export function createHttpServer(rawDeps) {
|
|
|
167
198
|
}
|
|
168
199
|
};
|
|
169
200
|
}
|
|
170
|
-
const { quotaExceeded, ownerCostQuotaDenied, ownerFleetLeaseDenied, ownerLeaseDenied, ownerQuotaDenied, leaseDenied, usageWindowDenialFor, usageWindowDenied, rateLimited, safeDecode,
|
|
201
|
+
const { quotaExceeded, ownerCostQuotaDenied, ownerFleetLeaseDenied, ownerLeaseDenied, ownerQuotaDenied, leaseDenied, usageWindowDenialFor, usageWindowDenied, rateLimited, safeDecode, readJson, readRawBody } = createRequestGuards({ deps });
|
|
171
202
|
const { prepareSpec } = createAdmission({ deps, readJson, runnerFor });
|
|
172
203
|
const { admitRun } = createRunConcurrencyGate({ deps, inflightRuns, steerableRuns });
|
|
173
|
-
const { routeCtxBase, resumeCheckpoint, driveResumeIntoRunLog, driveResumeLeg,
|
|
174
|
-
const { denyExpiredApprovals, redeemParkedAsk } = createApprovalSweeps({ deps, resumeCheckpoint,
|
|
204
|
+
const { routeCtxBase, resumeCheckpoint, driveResumeIntoRunLog, driveResumeLeg, decisionRowAdmits, resumePreempted, startFreshHostTurn, resumeWake, sessionNotifyDoor } = createResumeLegs({ deps, runnerFor, idemCache, inflightRuns, preemptableRuns, steerableRuns, wakeParkMints, counters, readJson, readRawBody, rateLimited, quotaExceeded, ownerQuotaDenied, leaseDenied, ownerLeaseDenied, usageWindowDenied, admitRun, safeDecode, prepareSpec, finalizeTaskResult, ownerCostQuotaDenied, ownerFleetLeaseDenied, usageWindowDenialFor });
|
|
205
|
+
const { denyExpiredApprovals, redeemParkedAsk } = createApprovalSweeps({ deps, resumeCheckpoint, decisionRowAdmits });
|
|
175
206
|
const { handle } = createDispatch({ deps, noteActivity, routeCtxBase, counters });
|
|
176
207
|
const server = http.createServer((req, res) => {
|
|
208
|
+
attachResponseLogger(res, deps.logger);
|
|
177
209
|
void handle(req, res).catch((err) => {
|
|
178
210
|
if (err instanceof HttpError) {
|
|
179
211
|
if (!res.headersSent)
|
|
@@ -191,6 +223,10 @@ export function createHttpServer(rawDeps) {
|
|
|
191
223
|
sendError(res, 409, err.code, err.message);
|
|
192
224
|
return;
|
|
193
225
|
}
|
|
226
|
+
if (err instanceof SessionDeletingError) {
|
|
227
|
+
sendError(res, 409, err.code, err.message);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
194
230
|
sendOpenFaceFault(res, err);
|
|
195
231
|
});
|
|
196
232
|
});
|
|
@@ -223,7 +259,7 @@ export function createHttpServer(rawDeps) {
|
|
|
223
259
|
recordTaskResult(result);
|
|
224
260
|
deps.planCacheProbe?.record(principal, objective, result.terminal.kind === "completed");
|
|
225
261
|
}
|
|
226
|
-
const isRunLiveOnThisReplica = (taskId) => inflightRuns
|
|
262
|
+
const isRunLiveOnThisReplica = (taskId) => liveRunIdsOf(inflightRuns, steerableRuns).has(taskId);
|
|
227
263
|
return Object.assign(server, { denyExpiredApprovals, isRunLiveOnThisReplica, redeemParkedAsk, sessionNotifyDoor });
|
|
228
264
|
}
|
|
229
265
|
//# sourceMappingURL=server.js.map
|