@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
package/dist/brain.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Brain, type BreakerState, type Model } from "@sema-agent/core";
|
|
2
2
|
import type { ServiceConfig } from "./config-types.js";
|
|
3
|
-
import { type
|
|
3
|
+
import { type CredentialIdentity } from "./key-resolver.js";
|
|
4
4
|
import { type RestartSliceCtx } from "./web-admin-client/restart-signal.js";
|
|
5
5
|
/**
|
|
6
6
|
* 配了快切层(failover ≥2 路 / 断路器)时,**每路**的重试上限。
|
|
@@ -62,24 +62,13 @@ export type DegradeRoutePlane = Pick<ServiceConfig, "degrade" | "models" | "gate
|
|
|
62
62
|
*/
|
|
63
63
|
export declare function degradeTargetOf(config: Pick<ServiceConfig, "degrade" | "models">): Model | undefined;
|
|
64
64
|
/**
|
|
65
|
-
* [ref](
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* 所以重贴会签。🔴 明文是活秘密:只活在壳的闭包里,指纹只取摘要({@link degradeRouteFingerprint}),绝不进日志 / 序列化面。
|
|
71
|
-
* 目标没有自有凭据 ⇒ `{}`。两张表至多一个条目有效(registry-core 互斥:带 sealedApiKey 的条目不落 modelApiKeyEnv)。
|
|
65
|
+
* [ref]:读出 `target`(降级壳焊的那只目标,{@link degradeTargetOf})此刻的凭据**身份**(不是值;读法是 key 链的 `credentialIdentityOf`,
|
|
66
|
+
* 与记忆整理席同一只)—— 唯一读法:createBrain 组壳时与目标 Model 一起冻结它,`degrade-route` 指纹的两侧读数与启动摘要同读它。
|
|
67
|
+
* 查的名字与序:目标真名、再 `degrade.to`(后者可能是 `default` 别名,两张 key 表按真名索引、env 车道的目录则反过来);每个名字上托管密钥压过 env 引用。
|
|
68
|
+
* 托管密钥重贴 = 新身份,要重启才进壳 —— 指纹带它的身份摘要,所以重贴会签。🔴 明文是活秘密:只活在壳的闭包里,指纹只取摘要,绝不进日志 / 序列化面。
|
|
69
|
+
* 目标没有自有凭据 ⇒ `{}`。
|
|
72
70
|
*/
|
|
73
|
-
export
|
|
74
|
-
readonly apiKeyEnv?: string;
|
|
75
|
-
readonly sealed?: string | SealedCustodyPoison;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* [ref]:读出 `target`(降级壳焊的那只目标,{@link degradeTargetOf})此刻的凭据身份 —— **唯一**读法:createBrain 组壳时冻结它,
|
|
79
|
-
* `degrade-route` 指纹的两侧读数与启动摘要同读它。查表的键与序与修前 `fbOwnApiKey` 同:目标真名、再 `degrade.to`(后者可能是
|
|
80
|
-
* `default` 别名,两张 key 表按真名索引、env 车道的目录则反过来);每个名字上托管密钥压过 env 引用(key-resolver 的序)。
|
|
81
|
-
*/
|
|
82
|
-
export declare function degradeCredentialIdentityOf(config: Pick<ServiceConfig, "degrade" | "modelApiKeyEnv" | "modelApiKeys">, target: Pick<Model, "name">): DegradeCredentialIdentity;
|
|
71
|
+
export declare function degradeCredentialIdentityOf(config: Pick<ServiceConfig, "degrade" | "modelApiKeyEnv" | "modelApiKeys">, target: Pick<Model, "name">): CredentialIdentity;
|
|
83
72
|
/**
|
|
84
73
|
* [ref]:降级壳的**路由指纹**(纯数据)—— `degrade-route` 重启片 `baked` / `current` 两侧读数的唯一读法。
|
|
85
74
|
*
|
package/dist/brain.js
CHANGED
|
@@ -2,8 +2,7 @@ import { adjudicateModelRoute, createAnthropicBrain, createCircuitBreakerBrain,
|
|
|
2
2
|
import { routeKeyOf } from "@sema-agent/core";
|
|
3
3
|
import { buildDefaultResilience } from "./config-types.js";
|
|
4
4
|
import { resolveModelApiKey } from "./key-resolver.js";
|
|
5
|
-
import {
|
|
6
|
-
import { isModelKeyPoison, modelKeyPoisonIdentity } from "./key-resolver.js";
|
|
5
|
+
import { credentialIdentityFingerprint, credentialIdentityOf } from "./key-resolver.js";
|
|
7
6
|
import { anthropicRouteRoot, brainLaneFor, mountRoutes, routeTableOf } from "./model-provider.js";
|
|
8
7
|
import { openaiRouteBaseUrl } from "./model-route-endpoint.js";
|
|
9
8
|
import { anthropicLaneCredentialOf, declaredCredential } from "./model-route-gap.js";
|
|
@@ -156,12 +155,9 @@ export function degradeTargetOf(config) {
|
|
|
156
155
|
}
|
|
157
156
|
export function degradeCredentialIdentityOf(config, target) {
|
|
158
157
|
for (const name of config.degrade === undefined ? [target.name] : [target.name, config.degrade.to]) {
|
|
159
|
-
const
|
|
160
|
-
if (sealed !== undefined)
|
|
161
|
-
return
|
|
162
|
-
const apiKeyEnv = config.modelApiKeyEnv?.[name];
|
|
163
|
-
if (apiKeyEnv !== undefined)
|
|
164
|
-
return { apiKeyEnv };
|
|
158
|
+
const identity = credentialIdentityOf(config, name);
|
|
159
|
+
if (identity.sealed !== undefined || identity.apiKeyEnv !== undefined)
|
|
160
|
+
return identity;
|
|
165
161
|
}
|
|
166
162
|
return {};
|
|
167
163
|
}
|
|
@@ -175,17 +171,9 @@ function degradeWeldFingerprint(config, target, credential) {
|
|
|
175
171
|
return {
|
|
176
172
|
model: catalogEntryFingerprint(target),
|
|
177
173
|
endpoint: openaiRouteBaseUrl(target.baseUrl, config.gatewayBaseUrl) ?? null,
|
|
178
|
-
|
|
179
|
-
sealedKey: sealedIdentityFingerprint(credential.sealed),
|
|
174
|
+
...credentialIdentityFingerprint(credential),
|
|
180
175
|
};
|
|
181
176
|
}
|
|
182
|
-
function sealedIdentityFingerprint(sealed) {
|
|
183
|
-
if (sealed === undefined)
|
|
184
|
-
return null;
|
|
185
|
-
if (isModelKeyPoison(sealed))
|
|
186
|
-
return { poisoned: modelKeyPoisonIdentity(sealed), reason: sealed.reason };
|
|
187
|
-
return { digest: createHash("sha256").update(sealed, "utf8").digest("hex").slice(0, 16) };
|
|
188
|
-
}
|
|
189
177
|
export function buildFailoverFirstByteNotice(config) {
|
|
190
178
|
const r = config.resilience ?? DEFAULT_RESILIENCE;
|
|
191
179
|
const fallbacks = config.gatewayFallbackUrls.length;
|
package/dist/budget.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isModelPriced, modelCostToPricing } from "@sema-agent/core";
|
|
2
|
-
import {
|
|
2
|
+
import { currentPerson } from "./observability/principal-context.js";
|
|
3
3
|
import { isPermissionRuleEventKind, permissionRuleEventWordOf } from "./observability/permission-rule-events.js";
|
|
4
4
|
import { promptManifestRecordOf, configAssembledRecordOf } from "./observability/prompt-manifest.js";
|
|
5
5
|
import { crossBoundaryTaintEventData } from "./trace/project.js";
|
|
@@ -85,9 +85,9 @@ export function createTracer(metrics, costQuota, modelUsage, fleetUsage, fleetLe
|
|
|
85
85
|
metrics.inc("brain_calls_total", { provider: providerName(e.provider ?? "unknown"), model: modelId(e.model) });
|
|
86
86
|
if (e.costMicroUsd) {
|
|
87
87
|
metrics.inc("model_cost_micro_usd_total", { model: modelId(e.model) }, e.costMicroUsd);
|
|
88
|
-
const
|
|
89
|
-
if (
|
|
90
|
-
costQuota?.add(
|
|
88
|
+
const person = currentPerson();
|
|
89
|
+
if (person)
|
|
90
|
+
costQuota?.add(person, e.costMicroUsd);
|
|
91
91
|
}
|
|
92
92
|
else if (e.costMicroUsd === undefined) {
|
|
93
93
|
metrics.inc("brain_calls_unpriced_total", { model: modelId(e.model) });
|
|
@@ -96,8 +96,8 @@ export function createTracer(metrics, costQuota, modelUsage, fleetUsage, fleetLe
|
|
|
96
96
|
const qwRaw = quotaWeightFor?.(e.model);
|
|
97
97
|
const qw = typeof qwRaw === "number" && Number.isFinite(qwRaw) && qwRaw > 0 ? qwRaw : 1;
|
|
98
98
|
const weightedTokens = Math.round((e.totalInputTokens + e.completionTokens) * qw);
|
|
99
|
-
fleetUsage?.record(
|
|
100
|
-
fleetLease?.recordSpend(
|
|
99
|
+
fleetUsage?.record(currentPerson(), e.model, e.taskId, { inputTokens: e.totalInputTokens, outputTokens: e.completionTokens, ...(e.costMicroUsd !== undefined ? { costMicroUsd: e.costMicroUsd } : {}), weightedTokens, quotaWeightAtUse: qw });
|
|
100
|
+
fleetLease?.recordSpend(currentPerson(), { weightedTokens, ...(e.costMicroUsd !== undefined ? { costMicroUsd: e.costMicroUsd } : {}) });
|
|
101
101
|
if (e.turn !== undefined) {
|
|
102
102
|
if (e.firstTokenMs !== undefined)
|
|
103
103
|
metrics.observe("brain_first_token_ms", e.firstTokenMs);
|
|
@@ -60,10 +60,16 @@ export declare const PLUGIN_MANIFEST_MAX_BYTES: number;
|
|
|
60
60
|
* 布局同族)。返回 ok:true+dir:undefined = 插件没有 skills 目录(可以只有 commands——那是 cli 壳的
|
|
61
61
|
* 半场,worker 装 0 个 skill 不算失败);ok:false = 路径逃逸/manifest 本体畸形,整条拒装。
|
|
62
62
|
* manifest 臂分立(V2-⑦,原 broad-catch 是 fail-open):**不存在**=可选面,缺省 skills/;**存在但**
|
|
63
|
-
* 本体逃逸根外/非普通文件/超界/读失败/JSON 坏 = ok:false 走既有 warning 面。
|
|
63
|
+
* 本体逃逸根外/非普通文件/超界/读失败/JSON 坏 = ok:false 走既有 warning 面。
|
|
64
|
+
*
|
|
65
|
+
* `hooksModule`(ok:true 时同一趟顺带回报,**不**第二次读 manifest):这个插件带不带 hooks 模块 —— 入口有两个,任一在场即真:
|
|
66
|
+
* ① manifest 本体是对象且**自有**顶层键 `hooks` 在场(内联对象或路径串都算;只判键在不在,值不判,嵌套里的 `hooks` 字样不算);
|
|
67
|
+
* ② `hooks/hooks.json` 条目在场({@link hooksFileEntryMayBePresent},只问条目、不读内容)。
|
|
68
|
+
* 只是一条事实交给调用方去响(不改上面的装载判定一字:manifest 是非对象 JSON 时照旧可装、缺省 skills/)。 */
|
|
64
69
|
export declare function resolvePluginSkillsRoot(cloneRoot: string): {
|
|
65
70
|
ok: true;
|
|
66
71
|
dir?: string;
|
|
72
|
+
hooksModule: boolean;
|
|
67
73
|
} | {
|
|
68
74
|
ok: false;
|
|
69
75
|
reason: string;
|
|
@@ -97,6 +103,8 @@ export declare function materializablePlugins(eff: {
|
|
|
97
103
|
url: string;
|
|
98
104
|
sha?: string;
|
|
99
105
|
}>;
|
|
106
|
+
/** 中心 plugin 缓存根 `<数据根>/plugin-cache`(组合根传给 {@link applyCenterPlugins} 的 `cacheRoot` 与一次性迁移 M39 的名册同读这一只)。 */
|
|
107
|
+
export declare function pluginCacheRootFor(dataRoot: string): string;
|
|
100
108
|
/** 总入口(条款 3/7/8):逐条物化 + 装载 + 让位合并。materialize 盘位 = `<cacheRoot>/<name>/live`
|
|
101
109
|
* (成功后原子 rename 替换,失败保留旧盘位 = LKG)。 */
|
|
102
110
|
export declare function applyCenterPlugins(baseline: LoadedSkill[], eff: {
|
|
@@ -2,9 +2,11 @@ import { execFile } from "node:child_process";
|
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
import { promises as fsp, realpathSync, existsSync, readFileSync, lstatSync, statSync } from "node:fs";
|
|
4
4
|
import { join, resolve, isAbsolute, sep } from "node:path";
|
|
5
|
+
import { ensureDir, hostOfUrl, HOST_UNREADABLE_SENTENCE } from "@sema-agent/core";
|
|
5
6
|
import { assertConfined, loadSkills } from "./skills.js";
|
|
6
7
|
import { buildDisplaySafeUrl, redactSecrets } from "../trace/redact.js";
|
|
7
8
|
import { gitSubprocessEnv } from "../server-secret-env.js";
|
|
9
|
+
import { errorCodeOf } from "../observability/err-text.js";
|
|
8
10
|
const execFileP = promisify(execFile);
|
|
9
11
|
export const MAX_PLUGIN_SOURCE_URL_CHARS = 2048;
|
|
10
12
|
export const DEFAULT_PLUGIN_ALLOW_HOSTS = ["github.com"];
|
|
@@ -35,14 +37,12 @@ export function validatePluginDecl(decl, allowHosts) {
|
|
|
35
37
|
if (!/^https:\/\//i.test(url)) {
|
|
36
38
|
return { ok: false, name, reason: `plugin source must be an https:// URL (contract: https-only; got ${buildDisplaySafeUrl(url)})` };
|
|
37
39
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
host
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return { ok: false, name, reason: "https url does not parse" };
|
|
40
|
+
const reading = hostOfUrl(url);
|
|
41
|
+
if ("unreadable" in reading) {
|
|
42
|
+
return { ok: false, name, reason: `plugin source url names no host this allowlist can judge — ${HOST_UNREADABLE_SENTENCE[reading.unreadable]}` };
|
|
44
43
|
}
|
|
45
|
-
|
|
44
|
+
const host = reading.host;
|
|
45
|
+
if (!allowHosts.some((h) => allowlistHostOf(h) === host)) {
|
|
46
46
|
return { ok: false, name, reason: `host ${host} not in PLUGINS_ALLOW_HOSTS (default github.com; extend with a comma-separated https mirror domain list)` };
|
|
47
47
|
}
|
|
48
48
|
if (decl.sha !== undefined) {
|
|
@@ -53,6 +53,13 @@ export function validatePluginDecl(decl, allowHosts) {
|
|
|
53
53
|
}
|
|
54
54
|
return { ok: true, name, url };
|
|
55
55
|
}
|
|
56
|
+
function allowlistHostOf(entry) {
|
|
57
|
+
const bare = !/[/?#@\\\s]/.test(entry) && (entry.startsWith("[") ? entry.endsWith("]") : !entry.includes(":"));
|
|
58
|
+
if (!bare || entry === "")
|
|
59
|
+
return undefined;
|
|
60
|
+
const reading = hostOfUrl(`https://${entry}/`);
|
|
61
|
+
return "host" in reading ? reading.host : undefined;
|
|
62
|
+
}
|
|
56
63
|
export function gitClonePlan(o) {
|
|
57
64
|
if (o.sha === undefined) {
|
|
58
65
|
return { steps: [["clone", "--depth", "1", "--quiet", o.url, o.dest]] };
|
|
@@ -68,6 +75,7 @@ export function gitClonePlan(o) {
|
|
|
68
75
|
export const PLUGIN_MANIFEST_MAX_BYTES = 64 * 1024;
|
|
69
76
|
export function resolvePluginSkillsRoot(cloneRoot) {
|
|
70
77
|
let skillsPath = "skills";
|
|
78
|
+
let manifestHasHooksKey = false;
|
|
71
79
|
const rootReal = realpathSync(cloneRoot);
|
|
72
80
|
const manifestPath = join(cloneRoot, ".claude-plugin", "plugin.json");
|
|
73
81
|
let manifestPresent = false;
|
|
@@ -89,11 +97,13 @@ export function resolvePluginSkillsRoot(cloneRoot) {
|
|
|
89
97
|
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
90
98
|
if (typeof manifest.skillsPath === "string" && manifest.skillsPath !== "")
|
|
91
99
|
skillsPath = manifest.skillsPath;
|
|
100
|
+
manifestHasHooksKey = Object.hasOwn(manifest, "hooks");
|
|
92
101
|
}
|
|
93
102
|
catch (e) {
|
|
94
103
|
return { ok: false, reason: `plugin manifest rejected: ${e instanceof Error ? e.message : String(e)}` };
|
|
95
104
|
}
|
|
96
105
|
}
|
|
106
|
+
const hooksModule = manifestHasHooksKey || hooksFileEntryMayBePresent(cloneRoot);
|
|
97
107
|
if (isAbsolute(skillsPath))
|
|
98
108
|
return { ok: false, reason: `skillsPath must be relative (got ${skillsPath})` };
|
|
99
109
|
const candidate = resolve(rootReal, skillsPath);
|
|
@@ -101,12 +111,22 @@ export function resolvePluginSkillsRoot(cloneRoot) {
|
|
|
101
111
|
return { ok: false, reason: `skillsPath escapes the plugin root (${skillsPath})` };
|
|
102
112
|
}
|
|
103
113
|
if (!existsSync(candidate))
|
|
104
|
-
return { ok: true };
|
|
114
|
+
return { ok: true, hooksModule };
|
|
105
115
|
const real = realpathSync(candidate);
|
|
106
116
|
if (real !== rootReal && !real.startsWith(rootReal + sep)) {
|
|
107
117
|
return { ok: false, reason: `skillsPath resolves outside the plugin root via symlink (${skillsPath})` };
|
|
108
118
|
}
|
|
109
|
-
return { ok: true, dir: candidate };
|
|
119
|
+
return { ok: true, dir: candidate, hooksModule };
|
|
120
|
+
}
|
|
121
|
+
function hooksFileEntryMayBePresent(cloneRoot) {
|
|
122
|
+
try {
|
|
123
|
+
lstatSync(join(cloneRoot, "hooks", "hooks.json"));
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
const code = errorCodeOf(e);
|
|
128
|
+
return code !== "ENOENT" && code !== "ENOTDIR";
|
|
129
|
+
}
|
|
110
130
|
}
|
|
111
131
|
const PLUGINS_DOMAIN_FAILURE_NAME = "(plugins domain)";
|
|
112
132
|
function declaredPlugins(eff) {
|
|
@@ -132,6 +152,9 @@ export function materializablePlugins(eff, allowHosts) {
|
|
|
132
152
|
return v.ok ? [{ name: v.name, url: v.url, ...(v.sha !== undefined ? { sha: v.sha } : {}) }] : [];
|
|
133
153
|
});
|
|
134
154
|
}
|
|
155
|
+
export function pluginCacheRootFor(dataRoot) {
|
|
156
|
+
return join(dataRoot, "plugin-cache");
|
|
157
|
+
}
|
|
135
158
|
export async function applyCenterPlugins(baseline, eff, opts) {
|
|
136
159
|
const shape = declaredPlugins(eff);
|
|
137
160
|
const out = { skills: [...baseline], failures: [], letGo: [], lkgUsed: [] };
|
|
@@ -165,12 +188,12 @@ export async function applyCenterPlugins(baseline, eff, opts) {
|
|
|
165
188
|
let materialized = false;
|
|
166
189
|
try {
|
|
167
190
|
await fsp.rm(staging, { recursive: true, force: true });
|
|
168
|
-
|
|
191
|
+
ensureDir(staging);
|
|
169
192
|
const plan = gitClonePlan({ url: v.url, dest: staging, sha: v.sha });
|
|
170
193
|
for (const step of plan.steps)
|
|
171
194
|
await runGit(step);
|
|
172
195
|
await fsp.rm(liveDir, { recursive: true, force: true });
|
|
173
|
-
|
|
196
|
+
ensureDir(join(opts.cacheRoot, v.name));
|
|
174
197
|
await fsp.rename(staging, liveDir);
|
|
175
198
|
materialized = true;
|
|
176
199
|
}
|
|
@@ -194,6 +217,9 @@ export async function applyCenterPlugins(baseline, eff, opts) {
|
|
|
194
217
|
opts.logger?.warn("center_plugin_manifest_rejected", { plugin: v.name, reason: rootCheck.reason });
|
|
195
218
|
continue;
|
|
196
219
|
}
|
|
220
|
+
if (rootCheck.hooksModule) {
|
|
221
|
+
opts.logger?.warn("center_plugin_hooks_not_loaded", { plugin: v.name, note: `engine does not load the hooks module of center plugin ${v.name}; skills are loaded` });
|
|
222
|
+
}
|
|
197
223
|
if (!rootCheck.dir)
|
|
198
224
|
continue;
|
|
199
225
|
const loaded = loadSkills(rootCheck.dir, { source: "center", confineTo: liveDir, toolsShareThisFilesystem: opts.toolsShareThisFilesystem, ...(opts.logger !== undefined ? { logger: opts.logger } : {}) });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { authBridgeIssuerOf } from "../
|
|
1
|
+
import { authBridgeIssuerOf } from "../identity-source.js";
|
|
2
2
|
import { isDisclosableIdentity } from "@sema-agent/settings-schema";
|
|
3
3
|
export const CENTER_ISSUER_WORDS = ["explicit", "fallback"];
|
|
4
4
|
export function buildCenterWiring(f) {
|
|
@@ -41,13 +41,14 @@ export declare const COMPOSITE_CAPABILITY_MEMBERS: {
|
|
|
41
41
|
readonly deviceExecutor: readonly ["enabled", "protocolVersion", "maxInflightPerDevice", "wsPath", "management", "relayUrl"];
|
|
42
42
|
readonly fleet: readonly ["stream", "sessionScope", "observe", "resume", "bgNotifyFailClosed", "steerPriority", "hookFailureNotice", "leaseClient", "generationEcho"];
|
|
43
43
|
readonly memoryEngine: readonly ["backend", "vectorMode"];
|
|
44
|
-
readonly store: readonly ["declared", "backend", "
|
|
44
|
+
readonly store: readonly ["declared", "backend", "durability", "degradedReason", "sql"];
|
|
45
45
|
readonly centerWiring: readonly ["effectivePull", "effectiveRevision", "lease", "leaseHealth", "failMode", "usageReport", "issuer", "worker", "caller"];
|
|
46
46
|
readonly webSearch: readonly ["backend"];
|
|
47
47
|
readonly background: readonly ["listFace", "exitFaces"];
|
|
48
48
|
readonly taskSettings: readonly ["permissions", "permissionMode", "model", "outputStyle", "env", "hooks", "pluginHooks", "managedHookGroups", "httpHookAllowlists", "tightenOnlySeats", "approvalFrameFamilies", "autoCompactEnabled"];
|
|
49
49
|
readonly settings: readonly ["permissions"];
|
|
50
|
-
readonly
|
|
50
|
+
readonly settingsContract: readonly ["version", "hookEntryFields"];
|
|
51
|
+
readonly permissionModeAuto: readonly ["accepted", "classifierSeat", "entitlementSource", "armed", "reason", "refusedBy", "model"];
|
|
51
52
|
readonly writeProtection: readonly ["armed", "rows", "replaced"];
|
|
52
53
|
readonly executionLane: readonly ["provider", "toolsOnThisHost", "isolated"];
|
|
53
54
|
readonly retention: readonly ["mode", "maxAgeDays"];
|
|
@@ -2,13 +2,14 @@ export const COMPOSITE_CAPABILITY_MEMBERS = {
|
|
|
2
2
|
deviceExecutor: ["enabled", "protocolVersion", "maxInflightPerDevice", "wsPath", "management", "relayUrl"],
|
|
3
3
|
fleet: ["stream", "sessionScope", "observe", "resume", "bgNotifyFailClosed", "steerPriority", "hookFailureNotice", "leaseClient", "generationEcho"],
|
|
4
4
|
memoryEngine: ["backend", "vectorMode"],
|
|
5
|
-
store: ["declared", "backend", "
|
|
5
|
+
store: ["declared", "backend", "durability", "degradedReason", "sql"],
|
|
6
6
|
centerWiring: ["effectivePull", "effectiveRevision", "lease", "leaseHealth", "failMode", "usageReport", "issuer", "worker", "caller"],
|
|
7
7
|
webSearch: ["backend"],
|
|
8
8
|
background: ["listFace", "exitFaces"],
|
|
9
9
|
taskSettings: ["permissions", "permissionMode", "model", "outputStyle", "env", "hooks", "pluginHooks", "managedHookGroups", "httpHookAllowlists", "tightenOnlySeats", "approvalFrameFamilies", "autoCompactEnabled"],
|
|
10
10
|
settings: ["permissions"],
|
|
11
|
-
|
|
11
|
+
settingsContract: ["version", "hookEntryFields"],
|
|
12
|
+
permissionModeAuto: ["accepted", "classifierSeat", "entitlementSource", "armed", "reason", "refusedBy", "model"],
|
|
12
13
|
writeProtection: ["armed", "rows", "replaced"],
|
|
13
14
|
executionLane: ["provider", "toolsOnThisHost", "isolated"],
|
|
14
15
|
retention: ["mode", "maxAgeDays"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ExecutionLane
|
|
1
|
+
import { type ExecutionLane } from "../execution-lane-caps.js";
|
|
2
2
|
export interface ExecutionLaneCapability {
|
|
3
|
-
/** 本部署的执行车道词(闭集 = {@link ExecutionLane}
|
|
3
|
+
/** 本部署的执行车道词(闭集 = {@link ExecutionLane} 八词;合成之后恒是部署声明的那一条;无手 = 声明的 `"none"`,见头注)。 */
|
|
4
4
|
readonly provider: ExecutionLane;
|
|
5
5
|
/** 工具跑的那台机器就是本进程这台吗(= server 盘上的绝对路径对模型的工具有没有意义)。
|
|
6
6
|
* 属主 = 部署形表行 `toolsOnThisHost`,与 `skills[].baseDir` 的铸点同一行。 */
|
|
@@ -11,13 +11,13 @@ export interface ExecutionLaneCapability {
|
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* 部署席 → 消费端窄投影。形照 `projectWebSearchCapability` / `projectSqlEngineCapability`:
|
|
14
|
-
* 不碰 config.ts(
|
|
14
|
+
* 不碰 config.ts(只从车道表模块取能力位,那是叶),于是本模块是叶。
|
|
15
15
|
*
|
|
16
|
-
* 🔴 本处**不写**任何缺席折词([ref] 门 D)
|
|
16
|
+
* 🔴 本处**不写**任何缺席折词([ref] 门 D):入参是已合成的配置,车道必在(没有声明的部署在合成步拒启)。
|
|
17
17
|
*/
|
|
18
18
|
export declare function projectExecutionLaneCapability(config: {
|
|
19
|
-
readonly remoteExec
|
|
20
|
-
readonly provider:
|
|
21
|
-
}
|
|
19
|
+
readonly remoteExec: {
|
|
20
|
+
readonly provider: ExecutionLane;
|
|
21
|
+
};
|
|
22
22
|
}): ExecutionLaneCapability;
|
|
23
23
|
//# sourceMappingURL=execution-lane.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
|
|
2
|
-
import {
|
|
2
|
+
import { laneIsolated, laneWiresExecutionEnv } from "../execution-lane-caps.js";
|
|
3
3
|
export function projectExecutionLaneCapability(config) {
|
|
4
|
-
const lane =
|
|
4
|
+
const lane = config.remoteExec.provider;
|
|
5
5
|
const handsWired = laneWiresExecutionEnv(lane);
|
|
6
6
|
return {
|
|
7
7
|
provider: lane,
|
|
@@ -42,7 +42,7 @@ export declare function pickHandsRunner(hands: ScenarioHands, pair: HandsRunnerP
|
|
|
42
42
|
/**
|
|
43
43
|
* 一个场景在一台部署上起的 run **有没有工作区** —— core prepare 的 `handsEnabled`(`ownedEnv || deps.executionEnv`)在本仓的镜像,**唯一一只判官**。
|
|
44
44
|
* 两个条件缺一不可:场景挂手({@link pickHandsRunner} 选有手 Runner,即带 `executionEnvFactory` 的那只)∧ 这台部署的执行车道有手
|
|
45
|
-
* (`execution-lane-caps.ts` 的 `laneWiresExecutionEnv`:`
|
|
45
|
+
* (`execution-lane-caps.ts` 的 `laneWiresExecutionEnv`:`none` 车道整台没有 factory)。引擎对 `userAttachments` 里 `path` 条目的拒
|
|
46
46
|
* (`config.user_attachment_invalid`「this run has no workspace」)与场景详情读面的 `attachmentSupplies` 都落在这一只的答案上。
|
|
47
47
|
* **穷举 switch**:`ScenarioHands` 加词而此处不表态 = 编译红(与 {@link pickHandsRunner} 同一条纪律)。
|
|
48
48
|
*/
|
|
@@ -27,6 +27,7 @@ export declare function createRepoClient(kind: GitApiKind, baseUrl: string, toke
|
|
|
27
27
|
export declare class GiteaClient implements RepoReadClient {
|
|
28
28
|
private readonly baseUrl;
|
|
29
29
|
private readonly token?;
|
|
30
|
+
/** 出站出口:Git host 回重定向 ⇒ 拒(`token` 凭据头只去被判过的那个根),不是静默跟随。 */
|
|
30
31
|
private readonly fetchImpl;
|
|
31
32
|
constructor(baseUrl: string, token?: string | undefined, fetchImpl?: typeof fetch);
|
|
32
33
|
private api;
|
|
@@ -51,6 +52,7 @@ export declare class GiteaClient implements RepoReadClient {
|
|
|
51
52
|
export declare class GitHubClient implements RepoReadClient {
|
|
52
53
|
private readonly baseUrl;
|
|
53
54
|
private readonly token?;
|
|
55
|
+
/** 出站出口:Git host 回重定向 ⇒ 拒(Bearer 凭据只去被判过的那个根),不是静默跟随。 */
|
|
54
56
|
private readonly fetchImpl;
|
|
55
57
|
constructor(baseUrl: string, token?: string | undefined, fetchImpl?: typeof fetch);
|
|
56
58
|
private api;
|
|
@@ -13,6 +13,8 @@ export function parseRepo(input) {
|
|
|
13
13
|
const MAX_FILE_BYTES = 96 * 1024;
|
|
14
14
|
const MAX_TREE_ENTRIES = 2000;
|
|
15
15
|
const REQUEST_TIMEOUT_MS = 15_000;
|
|
16
|
+
import { createEgressFetch } from "../egress-redirect.js";
|
|
17
|
+
import { readUpstreamJson } from "../upstream-body.js";
|
|
16
18
|
export { GIT_API_KINDS, isGitApiKind } from "../git-api-kind.js";
|
|
17
19
|
const RepoInfoWire = z.looseObject({ default_branch: z.string().optional() });
|
|
18
20
|
const TreeWire = z.looseObject({
|
|
@@ -32,7 +34,7 @@ function pathSegmentsRejectingTraversal(path) {
|
|
|
32
34
|
}
|
|
33
35
|
return segments;
|
|
34
36
|
}
|
|
35
|
-
export function createRepoClient(kind, baseUrl, token, fetchImpl
|
|
37
|
+
export function createRepoClient(kind, baseUrl, token, fetchImpl) {
|
|
36
38
|
switch (kind) {
|
|
37
39
|
case "gitea":
|
|
38
40
|
return new GiteaClient(baseUrl, token, fetchImpl);
|
|
@@ -48,10 +50,10 @@ export class GiteaClient {
|
|
|
48
50
|
baseUrl;
|
|
49
51
|
token;
|
|
50
52
|
fetchImpl;
|
|
51
|
-
constructor(baseUrl, token, fetchImpl
|
|
53
|
+
constructor(baseUrl, token, fetchImpl) {
|
|
52
54
|
this.baseUrl = baseUrl;
|
|
53
55
|
this.token = token;
|
|
54
|
-
this.fetchImpl = fetchImpl;
|
|
56
|
+
this.fetchImpl = createEgressFetch("declare the final address as GIT_API_BASEURL", fetchImpl);
|
|
55
57
|
}
|
|
56
58
|
async api(path, accept = "application/json") {
|
|
57
59
|
const headers = { accept };
|
|
@@ -66,12 +68,12 @@ export class GiteaClient {
|
|
|
66
68
|
return res;
|
|
67
69
|
}
|
|
68
70
|
async defaultBranch({ owner, repo }) {
|
|
69
|
-
const info = RepoInfoWire.parse(await (await this.api(`/repos/${owner}/${repo}`))
|
|
71
|
+
const info = RepoInfoWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}`)));
|
|
70
72
|
return info.default_branch || "main";
|
|
71
73
|
}
|
|
72
74
|
async tree(coords, ref) {
|
|
73
75
|
const { owner, repo } = coords;
|
|
74
|
-
const body = TreeWire.parse(await (await this.api(`/repos/${owner}/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=true&per_page=${MAX_TREE_ENTRIES}`))
|
|
76
|
+
const body = TreeWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=true&per_page=${MAX_TREE_ENTRIES}`)));
|
|
75
77
|
const paths = (body.tree ?? []).filter((e) => e.type === "blob").map((e) => e.path);
|
|
76
78
|
return body.truncated
|
|
77
79
|
? [...paths, `…[truncated, tree has more than ${MAX_TREE_ENTRIES} entries]`]
|
|
@@ -80,7 +82,7 @@ export class GiteaClient {
|
|
|
80
82
|
async readFile(coords, path, ref) {
|
|
81
83
|
const { owner, repo } = coords;
|
|
82
84
|
const segments = pathSegmentsRejectingTraversal(path);
|
|
83
|
-
const body = ContentsWire.parse(await (await this.api(`/repos/${owner}/${repo}/contents/${segments.map(encodeURIComponent).join("/")}?ref=${encodeURIComponent(ref)}`))
|
|
85
|
+
const body = ContentsWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}/contents/${segments.map(encodeURIComponent).join("/")}?ref=${encodeURIComponent(ref)}`)));
|
|
84
86
|
if (body.type !== "file" || body.content == null)
|
|
85
87
|
throw new Error(`not a file: ${path}`);
|
|
86
88
|
const text = body.encoding === "base64" ? Buffer.from(body.content, "base64").toString("utf8") : body.content;
|
|
@@ -99,10 +101,10 @@ export class GitHubClient {
|
|
|
99
101
|
baseUrl;
|
|
100
102
|
token;
|
|
101
103
|
fetchImpl;
|
|
102
|
-
constructor(baseUrl, token, fetchImpl
|
|
104
|
+
constructor(baseUrl, token, fetchImpl) {
|
|
103
105
|
this.baseUrl = baseUrl;
|
|
104
106
|
this.token = token;
|
|
105
|
-
this.fetchImpl = fetchImpl;
|
|
107
|
+
this.fetchImpl = createEgressFetch("declare the final address as GIT_API_BASEURL", fetchImpl);
|
|
106
108
|
}
|
|
107
109
|
async api(path, accept = "application/vnd.github+json") {
|
|
108
110
|
const headers = { accept, "x-github-api-version": "2022-11-28" };
|
|
@@ -117,12 +119,12 @@ export class GitHubClient {
|
|
|
117
119
|
return res;
|
|
118
120
|
}
|
|
119
121
|
async defaultBranch({ owner, repo }) {
|
|
120
|
-
const info = RepoInfoWire.parse(await (await this.api(`/repos/${owner}/${repo}`))
|
|
122
|
+
const info = RepoInfoWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}`)));
|
|
121
123
|
return info.default_branch || "main";
|
|
122
124
|
}
|
|
123
125
|
async tree(coords, ref) {
|
|
124
126
|
const { owner, repo } = coords;
|
|
125
|
-
const body = TreeWire.parse(await (await this.api(`/repos/${owner}/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=1`))
|
|
127
|
+
const body = TreeWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=1`)));
|
|
126
128
|
const paths = (body.tree ?? []).filter((e) => e.type === "blob").map((e) => e.path);
|
|
127
129
|
if (paths.length > MAX_TREE_ENTRIES) {
|
|
128
130
|
return [...paths.slice(0, MAX_TREE_ENTRIES), `…[truncated, tree has more than ${MAX_TREE_ENTRIES} entries]`];
|
|
@@ -134,7 +136,7 @@ export class GitHubClient {
|
|
|
134
136
|
async readFile(coords, path, ref) {
|
|
135
137
|
const { owner, repo } = coords;
|
|
136
138
|
const segments = pathSegmentsRejectingTraversal(path);
|
|
137
|
-
const body = ContentsWire.parse(await (await this.api(`/repos/${owner}/${repo}/contents/${segments.map(encodeURIComponent).join("/")}?ref=${encodeURIComponent(ref)}`))
|
|
139
|
+
const body = ContentsWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}/contents/${segments.map(encodeURIComponent).join("/")}?ref=${encodeURIComponent(ref)}`)));
|
|
138
140
|
if (body.type !== "file" || body.content == null)
|
|
139
141
|
throw new Error(`not a file: ${path}`);
|
|
140
142
|
if (body.encoding === "none") {
|
|
@@ -147,7 +149,7 @@ export class GitHubClient {
|
|
|
147
149
|
}
|
|
148
150
|
async pullDiff(coords, index) {
|
|
149
151
|
const { owner, repo } = coords;
|
|
150
|
-
const meta = PullMetaWire.parse(await (await this.api(`/repos/${owner}/${repo}/pulls/${index}`))
|
|
152
|
+
const meta = PullMetaWire.parse(await readUpstreamJson(await this.api(`/repos/${owner}/${repo}/pulls/${index}`)));
|
|
151
153
|
const res = await this.api(`/repos/${owner}/${repo}/pulls/${index}`, "application/vnd.github.v3.diff");
|
|
152
154
|
let text = await res.text();
|
|
153
155
|
const filesInDiff = (text.match(/^diff --git /gm) ?? []).length;
|
|
@@ -73,10 +73,9 @@ export declare function buildExcludeToolsSeat(scenarioExcludes: readonly string[
|
|
|
73
73
|
*/
|
|
74
74
|
export interface ScenarioContext {
|
|
75
75
|
/**
|
|
76
|
-
* 本请求的会话 id。属主 = `boot/resolve-spec.ts` 的 `
|
|
77
|
-
*
|
|
78
|
-
* 等于让一个租户读另一个租户的清单(同 spec
|
|
79
|
-
* body」的逐字纪律)。
|
|
76
|
+
* 本请求的会话 id。属主 = `boot/resolve-spec.ts` 的 `root`(= `opts.execution.root`:authorizer 解析 + 归属校验
|
|
77
|
+
* 过的那一只,续跑 = checkpoint 的会话),**绝不是 `body.sessionId`** —— 后者是调用方自报串,拿它当会话级设施的分区键
|
|
78
|
+
* 等于让一个租户读另一个租户的清单(同 spec 组装处那条「根来自执行上下文,绝不来自请求体」的逐字纪律)。
|
|
80
79
|
*
|
|
81
80
|
* 缺席 = 这条调用形本来就没有会话(`parked-revive-surface.ts` 对不交座的行、boot 期那一次 Agent 工具探针、
|
|
82
81
|
* `builtinScenarioDetails` 的工具名探针)。此时会话级设施退化为 per-call 实例 —— 不为它发明
|
|
@@ -105,7 +104,7 @@ export interface ScenarioDeps {
|
|
|
105
104
|
* could exfil via an arbitrary public URL; the SSRF floor only blocks internal). Single-user TOC keeps WebFetch. */
|
|
106
105
|
requirePrincipal?: boolean;
|
|
107
106
|
/**
|
|
108
|
-
* [ref]:这台部署的执行车道**有没有手**(`laneWiresExecutionEnv
|
|
107
|
+
* [ref]:这台部署的执行车道**有没有手**(`laneWiresExecutionEnv`;声明 `REMOTE_EXEC=none` = 没有)。场景详情读面据它与场景自己的 `hands` 表态一起答
|
|
109
108
|
* 「这个场景的 run 有没有工作区」({@link runHasWorkspace}),进而给出附件可受理供给集。**缺席按没有手读**(宁少说不多说:不广告一个会撞 400 的 `path`)。
|
|
110
109
|
*/
|
|
111
110
|
handsLane?: boolean;
|
|
@@ -261,18 +260,6 @@ export declare const BUILTIN_SCENARIO_HANDS: {
|
|
|
261
260
|
readonly scan: "none";
|
|
262
261
|
readonly cowork: "full";
|
|
263
262
|
};
|
|
264
|
-
/**
|
|
265
|
-
* [ref]:内建场景的**技能范围**(技能 `scenarios` 标签按哪个名字匹配)—— **全仓唯一声明处**:各场景工厂交进 `TaskSpec` 的技能与场景卡上的技能清单都按这张表取范围,
|
|
266
|
-
* 再过同一只过滤(`skills.ts` 的 `skillsInScope`),两边因此恒为同一组技能。按 {@link BuiltinScenarioName} 键控 ⇒ 加 / 删一个内建场景而这里没跟 = 编译红。
|
|
267
|
-
* `code` 的范围是 `default`:它与 default 共用一只工厂(工具 / 技能面恒等由构造保证),打了 `scenarios: code` 的技能不进 code 的 run。center 场景的范围是它自己的名字。
|
|
268
|
-
*/
|
|
269
|
-
export declare const BUILTIN_SCENARIO_SKILL_SCOPE: {
|
|
270
|
-
readonly code: "default";
|
|
271
|
-
readonly default: "default";
|
|
272
|
-
readonly "code-review": "code-review";
|
|
273
|
-
readonly scan: "scan";
|
|
274
|
-
readonly cowork: "cowork";
|
|
275
|
-
};
|
|
276
263
|
/**
|
|
277
264
|
* `branded` = 这台部署是不是品牌部署 —— 部署座挂品牌行读的同一只判官(`brand-identity.ts` `isBrandedDeployment`)交进来;没有默认值:每个调用点说出这件事实。
|
|
278
265
|
* 品牌部署上,品牌行 `when.binding` 那张表里的场景(`BRAND_IDENTITY_SCENARIOS`)的 `promptSummary` 点名 Sema 产品身份 —— 读面说的就是模型收到的。
|
|
@@ -310,7 +297,6 @@ export type ScenarioAvailability = {
|
|
|
310
297
|
export declare function scenarioAvailability(deps: Pick<ScenarioDeps, "repoClient">, toolset: string): ScenarioAvailability;
|
|
311
298
|
/** 拒绝文案的唯一属主:闭集穷举 switch(新增原因词不在这里表态即编译红)。 */
|
|
312
299
|
export declare function scenarioUnavailableMessage(reason: ScenarioUnavailableReason, scenarioLabel: string): string;
|
|
313
|
-
export declare const SCENARIO_NAME_RE: RegExp;
|
|
314
300
|
/**
|
|
315
301
|
* Build the center-declared scenario overlay. Invalid specs are SKIPPED with a warning (never fail
|
|
316
302
|
* boot — same posture as skills/teams); valid ones become scenarios keyed by name, ready to be merged
|
|
@@ -350,6 +336,16 @@ export interface ScenarioRuling {
|
|
|
350
336
|
/** 纯场景名集合(principal/组名不上 wire);空 = 该 principal 无任何指派 = 无治理。 */
|
|
351
337
|
allowlist: string[];
|
|
352
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* 一次中心裁定读数(`principalCaps.scenarioRuling` / `peekScenarioRuling` 的答)—— **三态,各恰一条出路**({@link gateScenarioRequest} 逐态判):
|
|
341
|
+
* · {@link ScenarioRuling} —— 中心答了治理两键 ⇒ 按它执法(指派为缺省、白名单限点名);
|
|
342
|
+
* · `undefined`(**缺席**)—— 这一问没有中心可问,或中心答了但不管场景:部署没接中心(无中心 / 干跑 / `run-local` / 嵌入方不给)、
|
|
343
|
+
* 匿名运行(无 principal,零中心往返)、旧中心不发治理两键 ⇒ 无治理,请求名或部署缺省;
|
|
344
|
+
* · `"unavailable"`(**故障**)—— 部署接了中心、请求带 principal,而这一问答不出来:不可达 / 超时 / 答复读不出(非 2xx、体判坏、
|
|
345
|
+
* 回声不符、在飞期间凭据身份换了)/ 治理两键形不对 ⇒ 该 run 拒。这位主体此刻的指派与白名单不可知:缺省链可能比他的指派更宽,点名也判不了白名单。
|
|
346
|
+
* 缺席与故障的界画在「有没有中心可问」:读数的客户端只在部署接了中心时存在,没接中心的部署走不到故障态。
|
|
347
|
+
*/
|
|
348
|
+
export type ScenarioRulingRead = ScenarioRuling | "unavailable" | undefined;
|
|
353
349
|
/**
|
|
354
350
|
* 一个场景名的**来源**(闭集:新增一词 ⇒ {@link danglingScenarioRefusal} 的穷尽 switch 编译红)。
|
|
355
351
|
* · `ruling` —— 中心按主体指派的场景(`ScenarioRuling.scenario`);
|
|
@@ -373,17 +369,21 @@ export declare function danglingScenarioRefusal(name: string, source: ScenarioNa
|
|
|
373
369
|
/**
|
|
374
370
|
* resolveSpec 的执法入口(指派为默认、body.scenario 可换但限 allowlist)。返回本请求的
|
|
375
371
|
* **在册**生效场景名 —— 返回值一定在 `known` 里:下游直接按它取场景,没有「未知名 → default」的回退臂。
|
|
372
|
+
* 读数 `ruling` 三态各一条出路({@link ScenarioRulingRead}),判序:
|
|
373
|
+
*
|
|
374
|
+
* 1. body.scenario 显式给出而不在册 ⇒ typed 400 `scenario_unknown`(调用方的错;词表面先于治理面,不等中心)。
|
|
375
|
+
* 2. 读数 `"unavailable"`(中心配了却答不出)⇒ 503 `state.scenario_assignment_unavailable`(体 `permanence: "transient"`:这一拍答不出,
|
|
376
|
+
* 不是准入策略 —— 续跑腿据它不折成 409 `resume_blocked_by_policy`,见 `http/checkpoint-ctx.ts` 的 `resumeAssemblyRefusalAnswer`),点名与不点名同拒 ——
|
|
377
|
+
* 这位主体的指派与白名单此刻不可知,缺省链不能替他答,点名也判不了白名单。运维日志一行 `scenario_assignment_unavailable`(`principal`;
|
|
378
|
+
* 取数失败本身由主体客户端的 `onError` 另记一行)。
|
|
379
|
+
* 3. body.scenario 显式给出(在册):白名单非空且集外 ⇒ typed 400 `scenario_not_allowed`(附 allowlist —— 机器码归 wire、人话归壳 / web);
|
|
380
|
+
* 集内,或白名单为空(缺席 / 中心答了「无指派」)⇒ 用户主动切换赢。
|
|
381
|
+
* 4. body.scenario 未给:ruling 胜者 ⇒ 指派为默认;无胜者(缺席 / `scenario: null`)⇒ defaultScenario。链上的名字不在册 ⇒ 503
|
|
382
|
+
* `state.scenario_assignment_unknown`(部署的错 / 中心的错,不是调用方的错),**不**折 default({@link danglingScenarioRefusal})。
|
|
376
383
|
*
|
|
377
|
-
*
|
|
378
|
-
* (400 `scenario_not_allowed`,附 allowlist ——机器码归 wire、人话归壳/web);集内 ⇒ 用户主动切换赢。allowlist 为空
|
|
379
|
-
* (无 ruling / 该 principal 三层皆无指派 / caps 面故障)⇒ 无治理约束,现状放行(与「null 落兜底链」同一语义:分配面未覆盖 =
|
|
380
|
-
* 不收紧,恒不比没有治理时更宽;caps 故障不把用户锁死在 default——场景切换不是权限放大面,fail-open
|
|
381
|
-
* 到现状,与 workflows 面的 fail-closed 是刻意的 posture 差异,见 runtime-caps-resolver)。
|
|
382
|
-
* - body.scenario 未给:ruling 胜者 ⇒ 指派为默认;无胜者 ⇒ defaultScenario 现状链。链上的名字不在册 ⇒ 503
|
|
383
|
-
* `state.scenario_assignment_unknown`(部署的错 / 中心的错,不是调用方的错),**不**折 default
|
|
384
|
-
* ({@link danglingScenarioRefusal})。`principal` 只进那一行运维日志,不参与判定。
|
|
384
|
+
* `principal` 只进运维日志,不参与判定。
|
|
385
385
|
*/
|
|
386
|
-
export declare function gateScenarioRequest(ruling:
|
|
386
|
+
export declare function gateScenarioRequest(ruling: ScenarioRulingRead, bodyScenario: unknown, defaultScenario: string, known: readonly string[], logger?: Logger, principal?: string): string;
|
|
387
387
|
/**
|
|
388
388
|
* 一条请求的场景名过门 —— {@link gateScenarioRequest} 的**唯一一处实参装配**。
|
|
389
389
|
*
|
|
@@ -395,7 +395,8 @@ export declare function gateScenarioRequest(ruling: ScenarioRuling | undefined,
|
|
|
395
395
|
*
|
|
396
396
|
* 契约:`(principal, requested) => 在册的场景名`(返回值一定在册;被拒 ⇒ 抛 {@link gateScenarioRequest} 的那几只 typed 错,
|
|
397
397
|
* 读口不改写)。`requested` 非串(缺席)⇒ 门走指派链(ruling 胜者,否则部署缺省),与 run 时同一读法。
|
|
398
|
-
* `principalCaps` 缺席(无中心 / 干跑 / 嵌入方 / `run-local`)⇒
|
|
398
|
+
* `principalCaps` 缺席(无中心 / 干跑 / 嵌入方 / `run-local`)⇒ 读数恒缺席,门走「请求名或部署缺省」那条链;
|
|
399
|
+
* 在场 ⇒ 它的读数三态({@link ScenarioRulingRead})原样交门,故障态由门拒。
|
|
399
400
|
*/
|
|
400
401
|
export interface ScenarioGateSources {
|
|
401
402
|
readonly config: {
|
|
@@ -404,16 +405,20 @@ export interface ScenarioGateSources {
|
|
|
404
405
|
/** 场景表(活引用):词表按调用时的自有键取,与表同生同灭。 */
|
|
405
406
|
readonly scenarios: Readonly<Record<string, unknown>>;
|
|
406
407
|
readonly principalCaps: {
|
|
407
|
-
scenarioRuling(principal: string | undefined): Promise<
|
|
408
|
-
peekScenarioRuling(principal: string | undefined): Promise<
|
|
408
|
+
scenarioRuling(principal: string | undefined): Promise<ScenarioRulingRead>;
|
|
409
|
+
peekScenarioRuling(principal: string | undefined): Promise<ScenarioRulingRead>;
|
|
409
410
|
} | undefined;
|
|
410
411
|
readonly logger?: Logger;
|
|
411
412
|
}
|
|
412
|
-
export
|
|
413
|
+
export interface ScenarioGate {
|
|
414
|
+
(principal: string | undefined, requested: unknown): Promise<string>;
|
|
415
|
+
/** 在册词表 —— 门判「在不在册」读的**同一张**场景表的自有键(活读,不抄快照)。请求的场景头在分派层判在册读它(读面没有体,不过整只门)。 */
|
|
416
|
+
readonly known: () => readonly string[];
|
|
417
|
+
}
|
|
413
418
|
/**
|
|
414
|
-
* 门问中心裁定走哪条腿(闭集;新增一词 ⇒ 下面的穷尽 `switch` 编译红)—— 与 `resolveRuntimeCaps` / `
|
|
419
|
+
* 门问中心裁定走哪条腿(闭集;新增一词 ⇒ 下面的穷尽 `switch` 编译红)—— 与 `resolveRuntimeCaps` / `peekRuntimeCapsReading` 是同一对:
|
|
415
420
|
* · `enforce` —— 任务提交腿:中心裁定走执法腿,center 硬失败铸下的 fail-closed 降级项两腿都认;
|
|
416
|
-
* · `peek` —— 读面(`GET /v1/capabilities/mcp` 状态面、`GET /v1/sessions/:id/mcp` / `…/a2a` 两张会话面板):只读腿,同一只缓存 / 同一条抓取 /
|
|
421
|
+
* · `peek` —— 读面(`GET /v1/capabilities/mcp` 状态面、`GET /v1/sessions/:id/mcp` / `…/a2a` 两张会话面板):只读腿,同一只缓存 / 同一条抓取 / 同一份读数(中心答不出 ⇒ 读面同拒),但硬失败铸的降级项只对读面自己算数,
|
|
417
422
|
* 不替这个主体的真提交留下 `{allowWorkflows:false, allowFork:false, autoMode:false}` 的短窗 deny(读面不许成为别人被拒的原因)。
|
|
418
423
|
*/
|
|
419
424
|
export type ScenarioGateLeg = "enforce" | "peek";
|