@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,55 +1,394 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createLogger } from "../observability/logger.js";
|
|
2
|
+
import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
|
|
3
|
+
import { FACES, fleetOn, listFilterOf, ownerCellOf, qualsOf, visibleOn } from "../owner-faces.js";
|
|
4
|
+
import { mintOwnedRow, partsOf, personOf, subjectOf } from "../owner-brands.js";
|
|
5
|
+
import { sessionCellFor } from "../security.js";
|
|
2
6
|
import { openFaceFaultWire, SessionOwnerUnreadableError } from "../session-error-wire.js";
|
|
3
7
|
import { seatText } from "../trace/exit-seat.js";
|
|
4
|
-
import { explicitOperatorOk,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import { actsForDeployment, devOpenDeployment, explicitOperatorOk, gatedSubject, sendPrincipalRefusal, sendUnauthorized, traceTokenPresented } from "./principal-gate.js";
|
|
9
|
+
import { RUN_NOT_FOUND_MESSAGE, runNotFoundMessage, SESSION_NOT_FOUND_MESSAGE } from "./route-ctx.js";
|
|
10
|
+
import { sendError, sendJson } from "./send.js";
|
|
11
|
+
export function callerOf(req, w) {
|
|
12
|
+
const subject = gatedSubject(req, w.config);
|
|
13
|
+
const fleet = devOpenDeployment(w.config) ? "dev_open" : actsForDeployment(req, w.config, () => subject) ? "deployment_token" : undefined;
|
|
14
|
+
return {
|
|
15
|
+
subject,
|
|
16
|
+
operator: explicitOperatorOk(subject === undefined ? undefined : personOf(subject), w.config),
|
|
17
|
+
fleet,
|
|
18
|
+
traceRead: traceTokenPresented(req, w.config),
|
|
19
|
+
principalRequired: DEPLOYMENT_SHAPE_PREDICATES.principalRequired.holds(w.config),
|
|
20
|
+
multiTenant: DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds(w.config),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function callerOfDecision(base, decider, roster) {
|
|
24
|
+
return { ...base, subject: deciderSubjectOf(base.subject, decider), operator: explicitOperatorOk(decider, roster), fleet: undefined, traceRead: false };
|
|
25
|
+
}
|
|
26
|
+
export function deciderSubjectOf(requestSubject, decider) {
|
|
27
|
+
return decider === undefined ? undefined : subjectOf(decider, requestSubject === undefined ? undefined : partsOf(requestSubject).scenario);
|
|
28
|
+
}
|
|
29
|
+
export const ROUTE_FACES = {
|
|
30
|
+
"runs-submit": null,
|
|
31
|
+
"runs-by-idem": "run.read",
|
|
32
|
+
"run-detail": "run.read",
|
|
33
|
+
"run-events": "run.read",
|
|
34
|
+
"run-cancel": "run.drive",
|
|
35
|
+
"run-steer": "run.supervise",
|
|
36
|
+
"run-interrupt": "run.supervise",
|
|
37
|
+
"run-detach": "run.supervise",
|
|
38
|
+
"run-compact": "run.supervise",
|
|
39
|
+
"run-subagent-output": "run.supervise",
|
|
40
|
+
"run-subagent-stream": "run.supervise",
|
|
41
|
+
"run-subagent-steer": "run.supervise",
|
|
42
|
+
"run-subagent-resume": "run.supervise",
|
|
43
|
+
"run-task-output": "run.supervise",
|
|
44
|
+
"run-task-stop": "run.supervise",
|
|
45
|
+
"elicitation-respond": null,
|
|
46
|
+
"question-respond": null,
|
|
47
|
+
"tool-approval-respond": null,
|
|
48
|
+
"tool-approval-read": null,
|
|
49
|
+
"task-ask-decision": null,
|
|
50
|
+
"run-permission-mode": "run.supervise",
|
|
51
|
+
"run-memory-capture-optout": "run.drive",
|
|
52
|
+
"session-init": null,
|
|
53
|
+
"session-settings": null,
|
|
54
|
+
"session-mcp": null,
|
|
55
|
+
"session-a2a": null,
|
|
56
|
+
"session-head": "session.read",
|
|
57
|
+
"session-execution-placement": "session.placement",
|
|
58
|
+
"session-events": "session.read",
|
|
59
|
+
"session-fork": "session.own",
|
|
60
|
+
"session-policy-get": "session.policy",
|
|
61
|
+
"session-policy-put": "session.policy",
|
|
62
|
+
"session-memory-erase": "session.erase",
|
|
63
|
+
"session-memory-status": "session.read",
|
|
64
|
+
"session-workspace": null,
|
|
65
|
+
"session-detail": "session.read",
|
|
66
|
+
"session-rewind-files": "session.supervise",
|
|
67
|
+
"session-patch": "session.act",
|
|
68
|
+
"session-delete": "session.delete",
|
|
69
|
+
"session-sync-manifest": "session.own",
|
|
70
|
+
"session-sync-entries": "session.own",
|
|
71
|
+
"session-sync-plan": "session.own",
|
|
72
|
+
"session-sync-import": "session.own",
|
|
73
|
+
"session-sync-import-entries": "session.own",
|
|
74
|
+
"session-sync-blob-put": "session.own",
|
|
75
|
+
"session-sync-history-blob": "session.own",
|
|
76
|
+
"session-memory-sync": "session.act",
|
|
77
|
+
"session-background-list": "session.supervise",
|
|
78
|
+
"session-background-stop": "session.supervise",
|
|
79
|
+
"session-children-retire": "session.supervise",
|
|
80
|
+
"mcp-reconnect": "session.supervise",
|
|
81
|
+
"session-wake": null,
|
|
82
|
+
"session-notify": "session.notify",
|
|
83
|
+
"tasks-source-summary": "list.read",
|
|
84
|
+
"task-trace-list": "list.read",
|
|
85
|
+
"task-tool-result": "run.trace",
|
|
86
|
+
"task-trace-turns": "run.trace",
|
|
87
|
+
"task-trace-stream": "run.trace",
|
|
88
|
+
"task-trace-artifacts": "run.trace",
|
|
89
|
+
"usage-analytics": "list.read",
|
|
90
|
+
"approvals-list": null,
|
|
91
|
+
"approvals-stream": null,
|
|
92
|
+
"assistant-inbox": null,
|
|
93
|
+
"assistant-tasks": null,
|
|
94
|
+
"approval-decide": null,
|
|
95
|
+
"approval-exemptions-list": "session.exemption",
|
|
96
|
+
"approval-exemption-delete": "session.exemption",
|
|
97
|
+
"assistant-task-preempt": "run.preempt",
|
|
98
|
+
"assistant-task-resume": "run.resume",
|
|
99
|
+
"assistant-task-plan-review": "run.decision",
|
|
100
|
+
"sessions-list": "session.list",
|
|
101
|
+
"sendfile-links": "list.read",
|
|
102
|
+
"fleet-stream": "list.read",
|
|
103
|
+
"projects-list": "list.read",
|
|
104
|
+
"project-get": "list.read",
|
|
105
|
+
"agents-roster": "list.read",
|
|
106
|
+
};
|
|
107
|
+
export const RUN_STATE_FACES = {
|
|
108
|
+
"runs-by-idem": "observe",
|
|
109
|
+
"run-detail": "observe",
|
|
110
|
+
"run-events": "observe",
|
|
111
|
+
"run-cancel": "raw",
|
|
112
|
+
"run-steer": "raw",
|
|
113
|
+
"run-interrupt": "raw",
|
|
114
|
+
"run-detach": "raw",
|
|
115
|
+
"run-compact": "raw",
|
|
116
|
+
"run-subagent-output": "observe",
|
|
117
|
+
"run-subagent-stream": "observe",
|
|
118
|
+
"run-task-output": "observe",
|
|
119
|
+
"run-task-stop": "observe",
|
|
120
|
+
"run-subagent-steer": "raw",
|
|
121
|
+
"run-subagent-resume": "raw",
|
|
122
|
+
"run-permission-mode": "raw",
|
|
123
|
+
"run-memory-capture-optout": "raw",
|
|
124
|
+
"task-tool-result": "raw",
|
|
125
|
+
"task-trace-turns": "raw",
|
|
126
|
+
"task-trace-stream": "observe",
|
|
127
|
+
"task-trace-artifacts": "raw",
|
|
128
|
+
"assistant-task-preempt": "raw",
|
|
129
|
+
"assistant-task-resume": "raw",
|
|
130
|
+
"assistant-task-plan-review": "raw",
|
|
131
|
+
"run.a2a": "observe",
|
|
132
|
+
"run.replay": "observe",
|
|
133
|
+
"run.leader": "raw",
|
|
134
|
+
"run.preview": "raw",
|
|
135
|
+
"run.panel": "raw",
|
|
136
|
+
"run.anchor": "raw",
|
|
137
|
+
};
|
|
138
|
+
export const RUN_SESSION_ASSERTION = {
|
|
139
|
+
"runs-by-idem": { phase: "accept", label: "run.poll" },
|
|
140
|
+
"run-detail": { phase: "accept", label: "run.poll" },
|
|
141
|
+
"run-events": { phase: "accept", label: "run.events" },
|
|
142
|
+
"run-cancel": { phase: "accept", label: "run.cancel" },
|
|
143
|
+
"run-steer": { phase: "accept", label: "run.steer" },
|
|
144
|
+
"run-interrupt": { phase: "accept", label: "run.interrupt" },
|
|
145
|
+
"run-detach": { phase: "accept", label: "run.detach" },
|
|
146
|
+
"run-compact": { phase: "accept", label: "run.compact" },
|
|
147
|
+
"run-subagent-output": { phase: "enforce" },
|
|
148
|
+
"run-subagent-stream": { phase: "enforce" },
|
|
149
|
+
"run-task-output": { phase: "enforce" },
|
|
150
|
+
"run-task-stop": { phase: "enforce" },
|
|
151
|
+
"run-subagent-steer": { phase: "accept", label: "subagent.steer" },
|
|
152
|
+
"run-subagent-resume": { phase: "accept", label: "subagent.resume" },
|
|
153
|
+
"run-permission-mode": { phase: "accept", label: "run.permission_mode" },
|
|
154
|
+
"run-memory-capture-optout": null,
|
|
155
|
+
"task-tool-result": null,
|
|
156
|
+
"task-trace-turns": null,
|
|
157
|
+
"task-trace-stream": null,
|
|
158
|
+
"task-trace-artifacts": null,
|
|
159
|
+
"assistant-task-preempt": null,
|
|
160
|
+
"assistant-task-resume": null,
|
|
161
|
+
"assistant-task-plan-review": null,
|
|
162
|
+
"run.a2a": null,
|
|
163
|
+
"run.replay": null,
|
|
164
|
+
"run.leader": null,
|
|
165
|
+
"run.preview": null,
|
|
166
|
+
"run.panel": null,
|
|
167
|
+
"run.anchor": null,
|
|
168
|
+
};
|
|
169
|
+
export function sessionAssertionVerdict(rule, asserted, rowSession, operator) {
|
|
170
|
+
if (!rowSession)
|
|
171
|
+
return "pass";
|
|
172
|
+
if (asserted === null && rule.phase === "accept")
|
|
173
|
+
return "pass_unasserted";
|
|
174
|
+
if (asserted === rowSession)
|
|
175
|
+
return "pass";
|
|
176
|
+
return operator ? "pass" : "refuse";
|
|
177
|
+
}
|
|
178
|
+
const sessionAssertLog = createLogger();
|
|
179
|
+
const sessionAssertAbsentWarned = new Set();
|
|
180
|
+
export function sessionAsserted(rule, req, rowSession, operator) {
|
|
181
|
+
const verdict = sessionAssertionVerdict(rule, new URL(req.url ?? "", "http://x").searchParams.get("session"), rowSession, operator);
|
|
182
|
+
if (verdict === "pass_unasserted" && rule.phase === "accept" && !sessionAssertAbsentWarned.has(rule.label)) {
|
|
183
|
+
sessionAssertAbsentWarned.add(rule.label);
|
|
184
|
+
sessionAssertLog.warn("run_face_session_assert_absent", { face: rule.label, note: "caller sent no ?session= on a session-bound run — allowed in the accept phase; the enforcement train will 404 this ([1498]⑥/[1499])" });
|
|
185
|
+
}
|
|
186
|
+
return verdict !== "refuse";
|
|
187
|
+
}
|
|
188
|
+
function sessionAssertionHolds(entry, admitted) {
|
|
189
|
+
const rule = Object.hasOwn(RUN_SESSION_ASSERTION, entry.mouth) ? RUN_SESSION_ASSERTION[entry.mouth] : null;
|
|
190
|
+
return rule === null || sessionAsserted(rule, entry.req, admitted.row.sessionId, admitted.quals.has("operator"));
|
|
191
|
+
}
|
|
192
|
+
export async function runRowAt(mouth, store, row) {
|
|
193
|
+
const face = Object.hasOwn(RUN_STATE_FACES, mouth) ? RUN_STATE_FACES[mouth] : undefined;
|
|
194
|
+
switch (face) {
|
|
195
|
+
case "observe":
|
|
196
|
+
return store.observeRun(row);
|
|
197
|
+
case "raw":
|
|
198
|
+
return row;
|
|
199
|
+
case undefined:
|
|
200
|
+
throw new Error(`owner access: mouth ${mouth} reads a run row but is not registered in RUN_STATE_FACES`);
|
|
11
201
|
default: {
|
|
12
|
-
const
|
|
13
|
-
throw new Error(`owner access: unknown
|
|
202
|
+
const unknownFace = face;
|
|
203
|
+
throw new Error(`owner access: unknown run-state face ${String(unknownFace)}`);
|
|
14
204
|
}
|
|
15
205
|
}
|
|
16
206
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return runOwnerReadable(principal, owner === null ? null : mintDurableOwnerKey(owner), config);
|
|
207
|
+
function faceOfRoute(route) {
|
|
208
|
+
const face = ROUTE_FACES[route];
|
|
209
|
+
if (face === null)
|
|
210
|
+
throw new Error(`owner access: route ${route} has no owner face`);
|
|
211
|
+
return face;
|
|
23
212
|
}
|
|
24
|
-
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
213
|
+
function doorRefusal(face, faceId, caller) {
|
|
214
|
+
if (caller.subject !== undefined || fleetOn(faceId, caller))
|
|
215
|
+
return undefined;
|
|
216
|
+
switch (face.door) {
|
|
217
|
+
case "P401":
|
|
218
|
+
return caller.principalRequired ? "principal" : undefined;
|
|
219
|
+
case "I401":
|
|
220
|
+
return "identity";
|
|
221
|
+
case "I401r":
|
|
222
|
+
return caller.principalRequired ? "identity" : undefined;
|
|
223
|
+
case "none":
|
|
224
|
+
return undefined;
|
|
225
|
+
default: {
|
|
226
|
+
const unknownDoor = face.door;
|
|
227
|
+
throw new Error(`owner access: unknown door ${String(unknownDoor)}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
29
230
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
231
|
+
function sendDoorRefusal(entry, res, kind) {
|
|
232
|
+
if (kind === "principal")
|
|
233
|
+
sendPrincipalRefusal(res, entry.req, entry.w.config);
|
|
234
|
+
else
|
|
235
|
+
sendUnauthorized(res, "identity");
|
|
236
|
+
}
|
|
237
|
+
export function enter(req, res, w, route) {
|
|
238
|
+
const entry = callerEntry(req, w, route);
|
|
239
|
+
const refused = doorRefusal(FACES[entry.face], entry.face, entry.caller);
|
|
240
|
+
if (refused !== undefined) {
|
|
241
|
+
sendDoorRefusal(entry, res, refused);
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
return entry;
|
|
245
|
+
}
|
|
246
|
+
export function callerEntry(req, w, route) {
|
|
247
|
+
return { face: faceOfRoute(route), mouth: route, caller: callerOf(req, w), req, w };
|
|
248
|
+
}
|
|
249
|
+
export function protocolEntry(req, w, face, caller) {
|
|
250
|
+
return { face, mouth: face, caller, req, w };
|
|
251
|
+
}
|
|
252
|
+
export function withCaller(entry, caller) {
|
|
253
|
+
return { ...entry, caller };
|
|
254
|
+
}
|
|
255
|
+
export function refuse(entry, res, reason, id) {
|
|
256
|
+
entry.w.logger?.info("owner_gate_refused", { policyFace: entry.face, reason, principalPresent: entry.caller.subject !== undefined });
|
|
257
|
+
const projection = FACES[entry.face].projection;
|
|
258
|
+
switch (projection) {
|
|
259
|
+
case "run_missing":
|
|
260
|
+
sendError(res, 404, "not_found.run", id === undefined ? RUN_NOT_FOUND_MESSAGE : runNotFoundMessage(id));
|
|
261
|
+
return;
|
|
262
|
+
case "task_missing":
|
|
263
|
+
sendError(res, 404, "not_found.run", "task not found");
|
|
264
|
+
return;
|
|
265
|
+
case "decision_missing":
|
|
266
|
+
if (entry.w.config.directDoorActive)
|
|
267
|
+
sendError(res, 401, "principal_unverified", "principal proof required");
|
|
268
|
+
else
|
|
269
|
+
sendError(res, 404, "not_found.run", "task not found");
|
|
270
|
+
return;
|
|
271
|
+
case "session_missing":
|
|
272
|
+
sendError(res, 404, "not_found.session", SESSION_NOT_FOUND_MESSAGE);
|
|
273
|
+
return;
|
|
274
|
+
case "exemption_missing":
|
|
275
|
+
sendError(res, 404, "not_found.session", "not found");
|
|
276
|
+
return;
|
|
277
|
+
case "deleted_false":
|
|
278
|
+
sendJson(res, 200, { deleted: false });
|
|
279
|
+
return;
|
|
280
|
+
case "run_exists":
|
|
281
|
+
case "attach_absent":
|
|
282
|
+
case "omit":
|
|
283
|
+
throw new Error(`owner access: face ${entry.face} projects ${projection} — the caller answers it, refuse() does not`);
|
|
284
|
+
default: {
|
|
285
|
+
const unknownProjection = projection;
|
|
286
|
+
throw new Error(`owner access: unknown projection ${String(unknownProjection)}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function rowRead(reading) {
|
|
291
|
+
return reading !== undefined && reading !== null;
|
|
292
|
+
}
|
|
293
|
+
function verdictOn(entry, cell) {
|
|
294
|
+
const face = FACES[entry.face];
|
|
295
|
+
const quals = qualsOf(entry.caller, cell);
|
|
296
|
+
if (face.operator && quals.has("operator"))
|
|
297
|
+
return quals;
|
|
298
|
+
if (doorRefusal(face, entry.face, entry.caller) !== undefined)
|
|
299
|
+
return "door";
|
|
300
|
+
return visibleOn(entry.face, quals) ? quals : "not_visible";
|
|
301
|
+
}
|
|
302
|
+
function judge(entry, row, cell) {
|
|
303
|
+
const verdict = verdictOn(entry, cell);
|
|
304
|
+
return verdict === "door" || verdict === "not_visible" ? verdict : { row: mintOwnedRow(row), quals: verdict };
|
|
33
305
|
}
|
|
34
|
-
export
|
|
35
|
-
|
|
36
|
-
|
|
306
|
+
export function deliverVerdict(entry, res, verdict, id) {
|
|
307
|
+
if (verdict === "door") {
|
|
308
|
+
sendDoorRefusal(entry, res, doorRefusal(FACES[entry.face], entry.face, entry.caller));
|
|
37
309
|
return undefined;
|
|
38
|
-
|
|
39
|
-
|
|
310
|
+
}
|
|
311
|
+
if (verdict === "not_visible") {
|
|
312
|
+
refuse(entry, res, "not_visible", id);
|
|
313
|
+
return undefined;
|
|
314
|
+
}
|
|
315
|
+
return verdict;
|
|
316
|
+
}
|
|
317
|
+
export async function admitRunRow(entry, res, runStore, row, id) {
|
|
318
|
+
if (!rowRead(row)) {
|
|
319
|
+
refuse(entry, res, "missing", id);
|
|
320
|
+
return undefined;
|
|
321
|
+
}
|
|
322
|
+
const admitted = deliverVerdict(entry, res, judge(entry, row, ownerCellOf(row.owner)), id);
|
|
323
|
+
if (admitted === undefined)
|
|
324
|
+
return undefined;
|
|
325
|
+
if (!sessionAssertionHolds(entry, admitted)) {
|
|
326
|
+
refuse(entry, res, "session_mismatch", id);
|
|
327
|
+
return undefined;
|
|
328
|
+
}
|
|
329
|
+
return { ...admitted, row: mintOwnedRow(await runRowAt(entry.mouth, runStore, admitted.row)) };
|
|
330
|
+
}
|
|
331
|
+
export async function admitRunById(entry, res, runStore, taskId) {
|
|
332
|
+
return admitRunRow(entry, res, runStore, await runStore.getRun(taskId), taskId);
|
|
333
|
+
}
|
|
334
|
+
export async function readVisibleRun(entry, runStore, taskId) {
|
|
335
|
+
const row = await runStore.getRun(taskId);
|
|
336
|
+
return rowRead(row) && seesRun(entry, row.owner) ? runRowAt(entry.mouth, runStore, row) : undefined;
|
|
337
|
+
}
|
|
338
|
+
export function seesRun(entry, owner) {
|
|
339
|
+
const verdict = verdictOn(entry, ownerCellOf(owner));
|
|
340
|
+
return verdict !== "door" && verdict !== "not_visible";
|
|
40
341
|
}
|
|
41
|
-
export
|
|
342
|
+
export function seesRunAs(face, caller, owner) {
|
|
343
|
+
return visibleOn(face, qualsOf(caller, ownerCellOf(owner)));
|
|
344
|
+
}
|
|
345
|
+
export function judgeRun(entry, row) {
|
|
346
|
+
const verdict = judge(entry, row, ownerCellOf(row.owner));
|
|
347
|
+
return verdict === "door" || verdict === "not_visible" ? undefined : verdict;
|
|
348
|
+
}
|
|
349
|
+
export function sessionRowPresent(reading) {
|
|
350
|
+
return rowRead(reading) && reading.owner !== undefined;
|
|
351
|
+
}
|
|
352
|
+
export async function readOwnerCell(entry, sessionId, read) {
|
|
353
|
+
if (FACES[entry.face].unreadable === "raise")
|
|
354
|
+
return read();
|
|
42
355
|
try {
|
|
43
356
|
return await read();
|
|
44
357
|
}
|
|
45
358
|
catch (e) {
|
|
46
359
|
if (!(e instanceof SessionOwnerUnreadableError))
|
|
47
360
|
throw e;
|
|
48
|
-
logger?.warn("session_owner_unreadable", { face, sessionId, errorCode: openFaceFaultWire(e).errorCode, err: seatText("operator-log-text", e.message) });
|
|
361
|
+
entry.w.logger?.warn("session_owner_unreadable", { face: entry.mouth, sessionId, errorCode: openFaceFaultWire(e).errorCode, err: seatText("operator-log-text", e.message) });
|
|
362
|
+
return undefined;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
export async function admitSessionRow(entry, res, store, sessionId, reading) {
|
|
366
|
+
if (!sessionRowPresent(reading)) {
|
|
367
|
+
refuse(entry, res, "missing");
|
|
49
368
|
return undefined;
|
|
50
369
|
}
|
|
370
|
+
return deliverVerdict(entry, res, await judgeSessionRow(entry, store, sessionId, reading));
|
|
371
|
+
}
|
|
372
|
+
export async function judgeSessionRow(entry, store, sessionId, reading) {
|
|
373
|
+
return judge(entry, reading, await sessionCellFor(entry.face, entry.caller, store, sessionId, reading.owner));
|
|
374
|
+
}
|
|
375
|
+
export async function admitSessionById(entry, res, store, sessionId) {
|
|
376
|
+
const head = await readOwnerCell(entry, sessionId, () => store.headOf(sessionId));
|
|
377
|
+
return admitSessionRow(entry, res, store, sessionId, head);
|
|
378
|
+
}
|
|
379
|
+
export async function judgeSession(entry, store, sessionId, reading) {
|
|
380
|
+
if (!sessionRowPresent(reading))
|
|
381
|
+
return undefined;
|
|
382
|
+
const verdict = await judgeSessionRow(entry, store, sessionId, reading);
|
|
383
|
+
return verdict === "door" || verdict === "not_visible" ? undefined : verdict;
|
|
384
|
+
}
|
|
385
|
+
export function admittedAsFleet(entry, admitted) {
|
|
386
|
+
return FACES[entry.face].fleet.some((q) => admitted.quals.has(q));
|
|
387
|
+
}
|
|
388
|
+
export function entryIsFleet(entry) {
|
|
389
|
+
return fleetOn(entry.face, entry.caller);
|
|
51
390
|
}
|
|
52
|
-
export function
|
|
53
|
-
return (
|
|
391
|
+
export function routeListFilter(req, w, route) {
|
|
392
|
+
return listFilterOf(faceOfRoute(route), callerOf(req, w));
|
|
54
393
|
}
|
|
55
394
|
//# sourceMappingURL=owner-access.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
2
|
import type { ServiceConfig } from "../config-types.js";
|
|
3
|
-
import { type
|
|
3
|
+
import { type Person, type Subject } from "../owner-brands.js";
|
|
4
4
|
import { type IdentitySource, type RunIdentity } from "../identity-source.js";
|
|
5
5
|
import type { Logger } from "../observability/logger.js";
|
|
6
6
|
/** Coerce a possibly-repeated request header to a single string (or undefined). */
|
|
@@ -15,9 +15,10 @@ export declare function systemFor(req: IncomingMessage, config: ServiceConfig):
|
|
|
15
15
|
* 其他 scheme(Basic 等,非我方凭证空间)不管——由原有门语义处置,避免误伤未知代理注头。 */
|
|
16
16
|
export declare function bearerPresentedButUnverified(req: IncomingMessage, config: ServiceConfig): boolean;
|
|
17
17
|
/** 「这次请求出示了这台部署的只读 trace 凭据(`TRACE_TOKEN`)」—— 一句,三处读:凭据验不过判({@link bearerPresentedButUnverified})、门前读路谓词
|
|
18
|
-
* (`dispatch.ts` 的 `readCredentialOk`)、fleet 读档的只读臂(
|
|
18
|
+
* (`dispatch.ts` 的 `readCredentialOk`)、fleet 读档的只读臂(属主存取器 `owner-access.ts` 的 `callerOf`;列表面经 `owner-faces.ts` 的 `listFilterOf`)。没配 ⇒ 恒 false。 */
|
|
19
19
|
export declare function traceTokenPresented(req: IncomingMessage, config: ServiceConfig): boolean;
|
|
20
|
-
/** loopback
|
|
20
|
+
/** 对端是不是本机 loopback(`127.0.0.1` / `::1`)—— 一处定义,diagnostics 门与任何「本机自用」判据同吃。拼法不在这里判:先过地址的唯一规范形
|
|
21
|
+
* (`canonicalAddress`:IPv4-mapped ⇒ 点分 IPv4、IPv6 压缩小写),再比两只规范值。缺席 / 不是地址 ⇒ false(fail-closed)。 */
|
|
21
22
|
export declare function isLoopbackAddress(addr: string | undefined): boolean;
|
|
22
23
|
/**
|
|
23
24
|
* 🔴 **这次请求验过的身份来源 —— 全仓唯一的判定次序**:按 {@link IDENTITY_SOURCES} 的序逐词问,答第一个验得过的词(次序与它为什么是这个次序见
|
|
@@ -38,14 +39,20 @@ export declare function admitRunIdentity(req: IncomingMessage, source: IdentityS
|
|
|
38
39
|
* 新一跑)⇒ 空 —— 属主本人的凭据没有在这次受理里出示过(律 3)。没有请求 / 请求没过凭据门 ⇒ 空。
|
|
39
40
|
*/
|
|
40
41
|
export declare function runIdentityOf(req: IncomingMessage | undefined, config: ServiceConfig, owner: string | null): RunIdentity | null;
|
|
41
|
-
|
|
42
|
+
/**
|
|
43
|
+
* 🔴 **这次请求的主体**(分区键;读口的唯一请求身份读数 —— 人经 {@link gatedPerson} = `personOf(gatedSubject)` 读,不另读请求)。
|
|
44
|
+
* 主体的判决只在 `security.ts` 的 `verifiedSubject`(三来源的人 + 场景头,记忆化);这里只加「出示了凭据却验不过 ⇒ 没有可信身份」这一条。
|
|
45
|
+
*/
|
|
46
|
+
export declare function gatedSubject(req: IncomingMessage, config: ServiceConfig): Subject | undefined;
|
|
47
|
+
/** 这次请求的人(人面汇点的读数:成本 / 租约 / 运维名册 / 场景裁定)= {@link gatedSubject} 背后的人。 */
|
|
48
|
+
export declare function gatedPerson(req: IncomingMessage, config: ServiceConfig): Person | undefined;
|
|
42
49
|
/**
|
|
43
50
|
* 「**出示了凭证但验不过** ≠ **没出示**」在 **direct-door principal JWT** 面上的形 —— 本仓
|
|
44
51
|
* {@link bearerPresentedButUnverified} 早就是同一条律在 Bearer 面的形,这里只是把它推到另一面。
|
|
45
52
|
*
|
|
46
53
|
* 判据三段,缺一不成立:①这台机器是直连门(BFF/gated 上 `principalHeader` 由上游验过,本函数恒 false ⇒
|
|
47
54
|
* 那条部署形上零行为变化);②`X-Approval-Principal-Token` **在场**(缺席 = 真的没出示,那是
|
|
48
|
-
* `auth.principal_required` 的语义,不许借本码);③它**验不过**({@link
|
|
55
|
+
* `auth.principal_required` 的语义,不许借本码);③它**验不过**({@link verifiedPerson} 回 undefined)。
|
|
49
56
|
*/
|
|
50
57
|
export declare function principalTokenPresentedButUnverified(req: IncomingMessage, config: ServiceConfig): boolean;
|
|
51
58
|
/**
|
|
@@ -87,94 +94,30 @@ export declare const UNAUTHORIZED_OPERATOR = "unauthorized \u2014 this endpoint
|
|
|
87
94
|
export declare const UNAUTHORIZED_IDENTITY = "unauthorized \u2014 this endpoint acts for a named caller and the request carries no caller identity this deployment verifies: identify the caller the way this deployment does (a registry sign-in token as the Bearer token, a signed principal token on a direct-door deployment, or the principal header set by a trusted front end)";
|
|
88
95
|
export declare function sendUnauthorized(res: ServerResponse, face: UnauthorizedFace): void;
|
|
89
96
|
/**
|
|
90
|
-
* 🔴
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* · `owner === null` —— 无属主的行(dev / 存量),本来就是开放的;
|
|
97
|
-
* · `principal === owner` —— 自己的行。⚠️ `principal` 必须是**验过**的身份(`gatedPrincipal`),
|
|
98
|
-
* 不是自述头 —— `owner` 是创建时从验过的 principal 落库的,拿自述头来比就等于谁都能读别人的 run;
|
|
99
|
-
* · [ref] C8 **窄互认**:非 `requirePrincipal` 部署上那批 `anon:shell-live` 哨兵行 + 无身份的调用方
|
|
100
|
-
* (cli 停发哨兵头后的存量会话,否则「能续跑但看不见」)。`gatedPrincipal` 的回值是 `string | undefined`
|
|
101
|
-
* ⇒ 原文那半个 `principal === null` 比较结构上不可达,抽取时一并去掉(语义逐字不变)。
|
|
102
|
-
*
|
|
103
|
-
* **不含 operator 臂**(刻意,[ref]⑥ 台账):跨属主 operator 在 poll/events/cancel 三读面上今天就是 404,
|
|
104
|
-
* 放宽它是一次独立裁定。需要 operator 臂的读面在**自己的调用点**显式并上 {@link explicitOperatorOk} ——
|
|
105
|
-
* 那样「谁多给了 operator 一条路」在代码上看得见,而不是被偷偷塞进共享谓词里。
|
|
106
|
-
*/
|
|
107
|
-
export declare function runOwnerReadable(principal: Principal | undefined, owner: DurableOwnerKey | null, config: Pick<ServiceConfig, "requirePrincipal">): boolean;
|
|
108
|
-
/** 「这台部署配了任何一把 service 凭证吗」—— fail-closed 写门族的真值源,也是身份来源 `service_token` 接没接线的那一句。**单一属主**:`handle()` 的
|
|
109
|
-
* 凭证门、[ref] 的 parked 赎回席、[ref] 的 consolidation 阀门启动期告警、以及下面 {@link wiredIdentitySources} 读同一句(手抄迟早只改一处,而这条判据
|
|
110
|
-
* 决定的是「无凭证部署上写口开不开」)。住在本叶(与 {@link systemFor} 同处)而不是 `dispatch.ts`:身份原语只依赖本叶。 */
|
|
111
|
-
export declare function hasServiceAuth(config: ServiceConfig): boolean;
|
|
112
|
-
/** {@link wiredIdentitySources} 读的装配:部署配置 + 入口预认证的鉴权桥(装了才挂身份;`FlatServiceDeps` 结构上满足)。 */
|
|
113
|
-
export interface IdentityWiring {
|
|
114
|
-
readonly config: ServiceConfig;
|
|
115
|
-
readonly webAdminJwtVerifier?: object | undefined;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* 🔴 **「这台部署的装配能回哪几个身份来源」的唯一读法**({@link IDENTITY_SOURCES} 里接了线的那几个词,序同表)。两处读它、不各写一份:
|
|
119
|
-
* `/health.auth`(自报位,`http/health-self-report.ts`:`kinds` 与 `required` 同一次求值 —— `required` = 其中有 `service_token`)与 {@link devOpenDeployment}(门)
|
|
120
|
-
* —— 于是「这台部署认不认身份、门武没武装」在自报面与门上只有一只答案。
|
|
121
|
-
*/
|
|
122
|
-
export declare function wiredIdentitySources(w: IdentityWiring): readonly IdentitySource[];
|
|
123
|
-
/**
|
|
124
|
-
* 🔴 **「这台部署有没有身份边界」的唯一判据**([ref];[ref] 改读身份来源)。dev-open = 装配**没接任何身份来源**({@link wiredIdentitySources} 为空:
|
|
125
|
-
* 没配 service token、没装鉴权桥、没开直连门)、**也没声明**只读 trace token 或 `REQUIRE_PRINCIPAL`:请求里没有任何东西替主体头作保,头是谁都能自报的
|
|
126
|
-
* **标签**(过滤 / 展示用),不是身份。装了鉴权桥的部署(SSO 单开)带登录令牌的调用方是验过的身份 ⇒ 不是 dev-open(修前只看 token / `REQUIRE_PRINCIPAL`,
|
|
127
|
-
* 这一形被读成 dev-open,任何人 fleet-wide 读全部会话)。
|
|
128
|
-
* 三处读它、不各写一份:fleet 调用方的第一臂({@link sessionCallerOf} —— fleet 面的 {@link fleetViewOf} 与会话行属主门都经它)、
|
|
129
|
-
* 会话面的属主谓词({@link sessionOwnerReadable})、`/metrics` 族的免凭据臂(`dispatch.ts`)—— 于是「调用方是谁」在列表、单会话面与指标面上只有一只读法。
|
|
97
|
+
* 🔴 **dev-open 的判据** = 部署形表行 `identityBoundary` 不成立(`deployment-shape.ts`;「这台部署有没有身份边界」的唯一答者):
|
|
98
|
+
* 没声明 `REQUIRE_PRINCIPAL`、配置没接任何已验身份来源(没配 service token、没配鉴权桥 issuer —— 含中心回退、没开直连门)、也没声明只读 trace token:
|
|
99
|
+
* 请求里没有任何东西替主体头作保,头是谁都能自报的**标签**(过滤 / 展示用),不是身份。只读配置:鉴权桥的验签器由起服第 9 段按同一个配置读数建
|
|
100
|
+
* (配置里有桥 ⇔ 装了验签器;验签器与配置里的桥两者不一致的装配(任一方向)在 `createHttpServer` 拒),所以这里与先于验签器的一次性迁移段读到同一个答案。
|
|
101
|
+
* 两处读它、不各写一份:调用方的 fleet 一格(属主存取器 `owner-access.ts` 的 `callerOf` —— 面表的 `dev_open` 资格与 fleet 列表面都经它)、
|
|
102
|
+
* `/metrics` 族的免凭据臂(`dispatch.ts`)—— 于是「调用方是谁」在列表、单行面与指标面上只有一只读法。
|
|
130
103
|
*/
|
|
131
|
-
export declare function devOpenDeployment(
|
|
104
|
+
export declare function devOpenDeployment(config: ServiceConfig): boolean;
|
|
132
105
|
/**
|
|
133
106
|
* 🔴 **律(一句,一个参数)**:出示这台部署的 service 凭据且不报主体的调用方代部署本人说话(fleet),**除非部署声明 `SERVICE_TOKEN_ACTS_FOR_DEPLOYMENT=false`**
|
|
134
107
|
* —— 此时它是无身份调用方,按各面既有的「过了凭据门、没有主体」那一臂答。带主体头的 service 凭据请求是前端(BFF)代那位主体发的 —— 它读那位主体,
|
|
135
108
|
* 不读全舰队(两形同读);部署姿态(单用户 / 多租)不改这一句(单用户形上的主体头同样是「这次请求为谁」)。
|
|
136
109
|
* 本函数是这条律的**唯一实施点**:声明位({@link ServiceConfig.serviceTokenActsForDeployment},env 一处)是这里的一个合取项,两个读者一次继承 ——
|
|
137
|
-
* fleet
|
|
138
|
-
* 投的是同一只读法({@link serviceTokenDeclaredActsForDeployment})与同一只武装谓词(`http/health-self-report.ts`)。先判声明与凭据、后取主体:`
|
|
110
|
+
* 调用方的 fleet 一格(属主存取器 `owner-access.ts` 的 `callerOf`)与 `/metrics` 族的 service 臂(`dispatch.ts`);不加拒码、不加闸点。自报位 `/health.auth.serviceTokenActsForDeployment`
|
|
111
|
+
* 投的是同一只读法({@link serviceTokenDeclaredActsForDeployment})与同一只武装谓词(`http/health-self-report.ts`)。先判声明与凭据、后取主体:`subject` 只在两者都成立时才求值(调用点那一次 {@link gatedSubject}),
|
|
139
112
|
* 没带凭据的请求不因主体头的形而改答。
|
|
140
113
|
*/
|
|
141
|
-
export declare function actsForDeployment(req: IncomingMessage, config: ServiceConfig,
|
|
114
|
+
export declare function actsForDeployment(req: IncomingMessage, config: ServiceConfig, subject: () => Subject | undefined): boolean;
|
|
142
115
|
/**
|
|
143
116
|
* 声明位 `SERVICE_TOKEN_ACTS_FOR_DEPLOYMENT` 的**唯一读法**:门({@link actsForDeployment})、自报位(`http/health-self-report.ts`)、起服行
|
|
144
117
|
* ({@link buildServiceTokenPostureNotice})三处都经它,不各写一份真值判断。只有字面 `true` 是「代部署本人」:`loadConfig` 恒写这一格(缺省 `true`),
|
|
145
118
|
* 绕过类型手搓的配置缺这一格 ⇒ 读作不代(fail-closed:安全轴上的缺席不静默放宽),三处同读 —— 不会出现「门收窄、自报位说缺席、起服行沉默」。
|
|
146
119
|
*/
|
|
147
120
|
export declare function serviceTokenDeclaredActsForDeployment(config: Pick<ServiceConfig, "serviceTokenActsForDeployment">): boolean;
|
|
148
|
-
/**
|
|
149
|
-
* 🔴 **「这个调用方是不是 fleet 调用方(看得到所有租户)」的唯一铸点**({@link SessionCaller}):验过的主体 + 是不是 fleet —— {@link devOpenDeployment} 上的任何
|
|
150
|
-
* 调用方,或 {@link actsForDeployment}(出示 service 凭据、不报主体,除非部署声明 `SERVICE_TOKEN_ACTS_FOR_DEPLOYMENT=false`)。带主体头的是那位主体,不是 fleet;只读 trace token 不是 service 凭据;operator 不在这里
|
|
151
|
-
* (运维口各自读 {@link explicitOperatorOk})。读者:会话行属主门(无主 placed 行的放行臂)与 fleet 面的 {@link fleetViewOf} —— 同一问一只读法。
|
|
152
|
-
*/
|
|
153
|
-
export declare function sessionCallerOf(req: IncomingMessage, w: IdentityWiring): SessionCaller;
|
|
154
|
-
/** fleet 面的两档(闭集):`read` = 只读面,只读 trace 凭据在这一档也是 fleet;`write` = 写面,只认 {@link sessionCallerOf}(读凭据不能变成跨租户写权)。 */
|
|
155
|
-
export type FleetFace = "read" | "write";
|
|
156
|
-
/** 一次 fleet 面判定的读数:`fleetWide` = 看全舰队(不钉人);否则 `gateOwner` = 钉住的那位验过的主体,`null` = 没有可用身份(调用点答 401 identity)。 */
|
|
157
|
-
export interface FleetView {
|
|
158
|
-
readonly fleetWide: boolean;
|
|
159
|
-
readonly gateOwner: Principal | null;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* 🔴 **fleet 面「看全舰队,还是钉住一位主体」的唯一读法**。fleet 判据只有一个来源 —— {@link sessionCallerOf};本函数只把它投成 fleet 面要的两格,
|
|
163
|
-
* 并按档并上只读 trace 凭据(读档)。读者 —— 读档:舰队流、会话列表、发件链接列表、后台名册、trace 五口、用量三口、`/v1/tasks/source-summary`;
|
|
164
|
-
* 写档:删除、fork、同步族(拉取与推送同门)。
|
|
165
|
-
*/
|
|
166
|
-
export declare function fleetViewOf(req: IncomingMessage, w: IdentityWiring, face: FleetFace): FleetView;
|
|
167
|
-
/**
|
|
168
|
-
* **「这个调用方能不能动这只会话」的唯一谓词**(会话面:视图 / head / 事件流 / 记忆状态与自助抹除 / 改名置顶 / 后台任务 / MCP 重连 /
|
|
169
|
-
* 面板的上一腿 MCP 投影)。没有身份边界的部署({@link devOpenDeployment})上不钉任何人(与会话列表同读,列表把这只会话列给谁,谁就读得到它);
|
|
170
|
-
* 有身份边界的部署上:
|
|
171
|
-
* · **无主的行**经无主臂的唯一判据 `ownerlessRowOpen`(`security.ts`):普通会话照旧对任何调用方开放;委派子代的 placed 行只对 fleet 调用方
|
|
172
|
-
* ({@link sessionCallerOf})开放 —— 任何具名主体、没有 service 凭据的无身份调用方都与别人的行同体(调用点答 404)([ref])。
|
|
173
|
-
* 代价如实:升级前写下、属主还没定下的存量子代行连它将来的属主也暂时读不到(SQL 两店由一次性迁移 M23 在窗内每次起服回填;本机文件店没有回填臂;7.144.0 起没有任何店在停驻时定属主 —— 属主只由建行那一笔记下引擎交来的 `placement.owner`);
|
|
174
|
-
* · 有主的行就是 run 面那一条谓词({@link runOwnerReadable}),一字不变。
|
|
175
|
-
* run 面(poll / events / cancel …)不读本谓词 —— 那是 run 资源的门,另一只。
|
|
176
|
-
*/
|
|
177
|
-
export declare function sessionOwnerReadable(caller: SessionCaller, cell: SessionOwnerCell, w: IdentityWiring): boolean;
|
|
178
121
|
/**
|
|
179
122
|
* 运维名册 —— 「谁是 operator」读的两格(都住在部署配置里):具名名单 `OPERATOR_PRINCIPALS` 与单用户形的显式声明 `OPERATOR_SINGLE_USER`。
|
|
180
123
|
* 两者互斥(声明只在单用户形、名单为空时成立;否则拒启 —— 一个事实一个来源,`config-invariants.ts` 的 `operator-single-user`)。
|
|
@@ -186,24 +129,13 @@ export type OperatorRoster = Pick<ServiceConfig, "operatorPrincipals" | "operato
|
|
|
186
129
|
* · 名单非空 ⇒ 验过的主体在名单里才是;
|
|
187
130
|
* · 单用户形显式声明 `OPERATOR_SINGLE_USER=true` ⇒ 这台部署的**每个调用方**都是(单用户形只有一位用户,能到这台部署的就是他;边界是部署自己的
|
|
188
131
|
* 凭据门 —— 没配凭据的部署上,能连上端口的都是)。声明只在单用户形成立(起服不变量)。
|
|
189
|
-
* `
|
|
132
|
+
* `person` 必须是验过的人(`gatedPerson` / `personOf(主体)`),绝不是自述头,也不是带场景的主体(名册登记的是人)。全部运维面(审批队列、steer / interrupt / wake 的属主门旁路、记忆运维口、bake 门……)读这一只 —— 只答授权;
|
|
133
|
+
* 送话口的文本框架(`trusted`)从不读它(调用方的话恒 `trusted: false`,见 `routes/runs.ts` steer 口的注);
|
|
190
134
|
* 🔴 SINGLE mint point (E1):不要再造兄弟。
|
|
191
135
|
*/
|
|
192
|
-
export declare function explicitOperatorOk(
|
|
193
|
-
/** 「这台部署**有没有**运维」的唯一读法(名单非空 ∨ 单用户声明在场)—— 能力事实 `operatorLane
|
|
136
|
+
export declare function explicitOperatorOk(person: Person | undefined, roster: OperatorRoster): boolean;
|
|
137
|
+
/** 「这台部署**有没有**运维」的唯一读法(名单非空 ∨ 单用户声明在场)—— 能力事实 `operatorLane` 读这一只(整理阀门的可达性告警随本条退役)。单用户形上,装了运维面的进程里它恒真(`operator-declaration-required`:服务进程起服第 1 段、`createHttpServer` 对不声明的单用户形拒),多租形上空名单 ⇒ 假。 */
|
|
194
138
|
export declare function operatorRosterPresent(roster: OperatorRoster): boolean;
|
|
195
|
-
/**
|
|
196
|
-
* 起服提示([ref]):单用户形(`REQUIRE_PRINCIPAL` 未开)+ 没有运维名册 ⇒ 一行 warn。「空名单 = 人人是」那条读法退役之后这一形没有运维:
|
|
197
|
-
* 运维口(诊断 `GET /v1/diagnostics/wiring` —— 每台 main.ts 装起来的部署都挂着它 —— 、`GET /v1/outcomes`、管理与记忆治理口)对谁都答 501,
|
|
198
|
-
* 审批队列(挂着时)只给每个调用方看自己的;补回它们只要一行配置 —— 不拒启:升级那一拍打掉一台今天跑得好好的单用户机器比一条提示重。
|
|
199
|
-
* 多租形不提示(它另有拒启不变量)。
|
|
200
|
-
*/
|
|
201
|
-
export declare function buildOperatorUndeclaredNotice(config: OperatorRoster & Pick<ServiceConfig, "requirePrincipal">): {
|
|
202
|
-
event: "operator_undeclared_single_user";
|
|
203
|
-
fields: {
|
|
204
|
-
detail: string;
|
|
205
|
-
};
|
|
206
|
-
} | undefined;
|
|
207
139
|
/**
|
|
208
140
|
* 起服一行:部署声明 `SERVICE_TOKEN_ACTS_FOR_DEPLOYMENT=false` ⇒ `service_token_posture { actsForDeployment: false }`(info);缺省不打。
|
|
209
141
|
* 声明形让运维面板开位当天成片 401,而「位关了」与「token 错了」在 wire 上同体(反探测律),这一行是起服时唯一一处说清这台部署选了哪一读法的地方。
|