@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
|
@@ -3,13 +3,16 @@ import { skillCardFacts } from "../../approval-card.js";
|
|
|
3
3
|
import { hostDecisionFacts, readDecider, retiredDecisionKeyFacts, DECIDED_BY_NOT_IN_PROOF } from "../../host-decision.js";
|
|
4
4
|
import { sameExecutionRecord } from "@sema-agent/core";
|
|
5
5
|
import { findParkedAgentForCheckpoint } from "../../parked-decide.js";
|
|
6
|
-
import { DECIDED_REPLAY_SCAN_CAP } from "../../plugins/checkpoint-store-face.js";
|
|
6
|
+
import { DECIDED_REPLAY_SCAN_CAP, pendingTriageOrder } from "../../plugins/checkpoint-store-face.js";
|
|
7
7
|
import { approvalPayloadFingerprint } from "../../plugins/approval-payload-fingerprint.js";
|
|
8
8
|
import { carriesDeploymentListQuestion, standingAnswerDurablyRecordable } from "../../tool-approval.js";
|
|
9
9
|
import { APPROVAL_GATE_KINDS } from "../../approval-content-kind.js";
|
|
10
10
|
import { isParkedRunStatus } from "../../plugins/store-contracts.js";
|
|
11
|
-
import { principalFrom,
|
|
12
|
-
import {
|
|
11
|
+
import { principalFrom, ownerOfCheckpointScope, scopeCellOf, CHECKPOINT_PUBLIC_SCOPE, PRINCIPAL_TOKEN_HEADER, APPROVAL_MAC_HEADER, APPROVAL_MAC_KID_HEADER } from "../../security.js";
|
|
12
|
+
import { keyAdmits } from "../../owner-faces.js";
|
|
13
|
+
import { personOf } from "../../owner-brands.js";
|
|
14
|
+
import { editedPlanBinding, verifyDirectDoorProof } from "../../principal-jwt.js";
|
|
15
|
+
import { isWellFormedUnicode } from "../../principal-shape.js";
|
|
13
16
|
import { MAX_APPROVAL_REASON_CHARS, projectQuestionAnswer, questionAnswerFromProjection } from "../../approval-hmac.js";
|
|
14
17
|
import { PLAN_APPROVE_PERMISSION_MODES_AFTER, isPlanApprovePermissionModeAfter, planReviewDecisionExitsPlan, storedBodyPermissionMode } from "../../task-settings.js";
|
|
15
18
|
import { MAX_APPROVAL_NONCE_CHARS } from "../../plugins/approval-nonce-store.js";
|
|
@@ -19,8 +22,8 @@ import { buildRunName } from "../../fleet/fleet-bus.js";
|
|
|
19
22
|
import { sleep } from "../sse-log.js";
|
|
20
23
|
import { bindSseLifecycle } from "../sse-lifecycle.js";
|
|
21
24
|
import { sendJson, sendError, sseHeaders, logRequestError, SSE_MAX_STREAM_MS, SSE_HEARTBEAT_IDLE_MS } from "../send.js";
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
25
|
+
import { gatedSubject, explicitOperatorOk, sendPrincipalRefusal } from "../principal-gate.js";
|
|
26
|
+
import { admitRunById, admitSessionById, callerEntry, callerOf, callerOfDecision, deciderSubjectOf, enter, judgeRun, protocolEntry, readVisibleRun, refuse, withCaller } from "../owner-access.js";
|
|
24
27
|
import { governanceOriginOf } from "../../runtime-governance.js";
|
|
25
28
|
import { deploymentListAsks } from "../../approval.js";
|
|
26
29
|
import { grantBindingOf } from "../../standing-answer-grant.js";
|
|
@@ -32,7 +35,7 @@ import { recordFailOpen } from "../../observability/fail-open.js";
|
|
|
32
35
|
import { MAX_CHECKPOINT_ID_CHARS, durableRowIdentity } from "../../checkpoint-identity.js";
|
|
33
36
|
import { MAX_KEY_ECHO, keyClosureClause, scanKeyClosure } from "../../request-key-closure.js";
|
|
34
37
|
import { fieldConflictFacts } from "../../field-conflict.js";
|
|
35
|
-
import { buildSettlementEvidence
|
|
38
|
+
import { buildSettlementEvidence } from "../../gate-settlement.js";
|
|
36
39
|
import { seatText } from "../../trace/exit-seat.js";
|
|
37
40
|
import { approvalQueueKindOfDoorId } from "../../approval-queue-kind.js";
|
|
38
41
|
import { defaultPeerInboundFace, parsePeerInboundId, peerBoxScope } from "../../peer-inbound-face.js";
|
|
@@ -215,7 +218,7 @@ export function checkQuestionAnswer(v) {
|
|
|
215
218
|
return shapeOk ? { ok: true, value: v } : { ok: false, kind: "shape" };
|
|
216
219
|
}
|
|
217
220
|
async function decideIdempotentReplay(cs, args) {
|
|
218
|
-
const { sessionId, out, binding, decision, payload,
|
|
221
|
+
const { sessionId, out, binding, decision, payload, decider, warn } = args;
|
|
219
222
|
if (out.status !== 404 || out.body.errorCode !== "not_found.approval")
|
|
220
223
|
return undefined;
|
|
221
224
|
const boundCallId = binding.boundCallId;
|
|
@@ -238,12 +241,9 @@ async function decideIdempotentReplay(cs, args) {
|
|
|
238
241
|
for (const row of rows) {
|
|
239
242
|
if (row.decision === null)
|
|
240
243
|
return undefined;
|
|
241
|
-
if (!
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
warn("decide_replay_scope_mismatch", { sessionId });
|
|
245
|
-
return undefined;
|
|
246
|
-
}
|
|
244
|
+
if (!keyAdmits("scope.decide", decider, scopeCellOf(row.scope))) {
|
|
245
|
+
warn("decide_replay_scope_mismatch", { sessionId });
|
|
246
|
+
return undefined;
|
|
247
247
|
}
|
|
248
248
|
if (binding.boundInputHash === undefined || row.boundInputHash !== binding.boundInputHash)
|
|
249
249
|
return undefined;
|
|
@@ -279,9 +279,9 @@ async function decideIdempotentReplay(cs, args) {
|
|
|
279
279
|
},
|
|
280
280
|
};
|
|
281
281
|
}
|
|
282
|
-
async function gateObjectivePreview(reader, runStore, agentStore, gate) {
|
|
283
|
-
const previewOf =
|
|
284
|
-
const own = (await runStore.getActiveTaskId(
|
|
282
|
+
async function gateObjectivePreview(reader, runStore, agentStore, gate, runSessionId) {
|
|
283
|
+
const previewOf = (taskId) => readVisibleRun(reader, runStore, taskId);
|
|
284
|
+
const own = typeof runSessionId === "string" ? ((await runStore.getActiveTaskId(runSessionId)) ?? (await runStore.latestRunForSession(runSessionId))?.taskId) : undefined;
|
|
285
285
|
if (own !== undefined)
|
|
286
286
|
return (await previewOf(own))?.objectivePreview ?? null;
|
|
287
287
|
if (agentStore === undefined)
|
|
@@ -311,8 +311,8 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
311
311
|
return;
|
|
312
312
|
}
|
|
313
313
|
const cs = park.checkpointStore;
|
|
314
|
-
const principal =
|
|
315
|
-
const operator = explicitOperatorOk(principal, deps.config);
|
|
314
|
+
const principal = gatedSubject(req, deps.config);
|
|
315
|
+
const operator = explicitOperatorOk(principal === undefined ? undefined : personOf(principal), deps.config);
|
|
316
316
|
const ownScope = principal ?? CHECKPOINT_PUBLIC_SCOPE;
|
|
317
317
|
if (match.decl.id === "approvals-stream") {
|
|
318
318
|
const ownerParam = operator ? (new URLSearchParams(match.search).get("owner") ?? undefined) : undefined;
|
|
@@ -354,16 +354,15 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
354
354
|
sendError(res, 400, "request.path_malformed", "malformed id (invalid percent-encoding)");
|
|
355
355
|
return;
|
|
356
356
|
}
|
|
357
|
-
|
|
357
|
+
const exEntry = callerEntry(req, deps, match.decl.id);
|
|
358
|
+
if (!exEntry.caller.operator) {
|
|
358
359
|
const owned = facts.sessionOwnership(deps);
|
|
359
360
|
if (!owned.available) {
|
|
360
361
|
sendError(res, 501, "capability.session_store_required", "approval exemptions require a session-store backend");
|
|
361
362
|
return;
|
|
362
363
|
}
|
|
363
|
-
if ((await
|
|
364
|
-
sendError(res, 404, "not_found.session", "not found");
|
|
364
|
+
if ((await admitSessionById(exEntry, res, owned.sessionStorage, exSessionId)) === undefined)
|
|
365
365
|
return;
|
|
366
|
-
}
|
|
367
366
|
}
|
|
368
367
|
if (match.decl.id === "approval-exemptions-list") {
|
|
369
368
|
if (exToolName !== undefined) {
|
|
@@ -398,11 +397,12 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
398
397
|
}
|
|
399
398
|
const ledger = facts.durableRuns(deps);
|
|
400
399
|
const agentStore = deps.backgroundAgentStore;
|
|
400
|
+
const previewEntry = protocolEntry(req, deps, "run.preview", callerOf(req, deps));
|
|
401
401
|
const inbox = (await Promise.all(summaries.map(async (s) => {
|
|
402
402
|
let objective = null;
|
|
403
403
|
if (ledger.available) {
|
|
404
404
|
try {
|
|
405
|
-
objective = await gateObjectivePreview(
|
|
405
|
+
objective = await gateObjectivePreview(previewEntry, ledger.runStore, agentStore, s, await cs.hostSessionOfCard(s.token));
|
|
406
406
|
}
|
|
407
407
|
catch (err) {
|
|
408
408
|
recordFailOpen("server.assistant-inbox.objective-preview-unreadable", `run row read for the inbox row of session ${JSON.stringify(s.sessionId)} failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -428,11 +428,12 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
428
428
|
...(s.boundGrantDigest !== undefined ? { boundGrantDigest: s.boundGrantDigest } : {}),
|
|
429
429
|
...skillCardFacts(s),
|
|
430
430
|
...(s.boundGrantAbsence !== undefined ? { boundGrantAbsence: s.boundGrantAbsence } : {}),
|
|
431
|
+
...(s.runOrigin !== undefined ? { runOrigin: s.runOrigin } : {}),
|
|
431
432
|
objective,
|
|
432
433
|
input,
|
|
433
434
|
};
|
|
434
435
|
})))
|
|
435
|
-
.sort(
|
|
436
|
+
.sort(pendingTriageOrder);
|
|
436
437
|
sendJson(res, 200, { inbox });
|
|
437
438
|
return;
|
|
438
439
|
}
|
|
@@ -453,7 +454,13 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
453
454
|
sendApprovalsReadFailure(req, res, deps.logger, err);
|
|
454
455
|
return;
|
|
455
456
|
}
|
|
456
|
-
const
|
|
457
|
+
const hosts = await Promise.all(summaries.map((s) => cs.hostSessionOfCard(s.token)));
|
|
458
|
+
const byGate = new Map();
|
|
459
|
+
summaries.forEach((s, i) => {
|
|
460
|
+
const host = hosts[i];
|
|
461
|
+
if (typeof host === "string")
|
|
462
|
+
byGate.set(host, s);
|
|
463
|
+
});
|
|
457
464
|
const runs = await runStore.listRuns({ owner: ownerOfCheckpointScope(scope), limit: 100 });
|
|
458
465
|
const tasks = runs
|
|
459
466
|
.filter((r) => r.status === "running" || isParkedRunStatus(r.status))
|
|
@@ -482,20 +489,18 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
482
489
|
return;
|
|
483
490
|
}
|
|
484
491
|
const runStore = runs.runStore;
|
|
485
|
-
|
|
486
|
-
|
|
492
|
+
const preemptEntry = enter(req, res, deps, match.decl.id);
|
|
493
|
+
if (preemptEntry === undefined)
|
|
487
494
|
return;
|
|
488
|
-
}
|
|
489
495
|
if (!deps.config.resourceSuspend) {
|
|
490
496
|
sendError(res, 501, "feature.preemption_disabled", "preemption not enabled on this worker (needs RESOURCE_SUSPEND=true + a durable checkpoint store)");
|
|
491
497
|
return;
|
|
492
498
|
}
|
|
493
499
|
const taskId = match.params.taskId;
|
|
494
|
-
const
|
|
495
|
-
if (
|
|
496
|
-
sendError(res, 404, "not_found.run", "task not found");
|
|
500
|
+
const preemptAdmitted = (await admitRunById(preemptEntry, res, runStore, taskId));
|
|
501
|
+
if (preemptAdmitted === undefined)
|
|
497
502
|
return;
|
|
498
|
-
|
|
503
|
+
const run = preemptAdmitted.row;
|
|
499
504
|
if (run.status === "running") {
|
|
500
505
|
const ownedHere = run.instanceId != null && run.instanceId === deps.instanceId;
|
|
501
506
|
if (ownedHere && !preemptableRuns.has(taskId)) {
|
|
@@ -541,23 +546,17 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
541
546
|
return;
|
|
542
547
|
}
|
|
543
548
|
const runStore = runs.runStore;
|
|
544
|
-
|
|
545
|
-
|
|
549
|
+
const resumeEntry = enter(req, res, deps, match.decl.id);
|
|
550
|
+
if (resumeEntry === undefined)
|
|
546
551
|
return;
|
|
547
|
-
}
|
|
548
552
|
const restatement = readResumeRestatement(await readJson(req));
|
|
549
553
|
const taskId = match.params.taskId;
|
|
550
|
-
const
|
|
551
|
-
if (
|
|
552
|
-
sendError(res, 404, "not_found.run", "task not found");
|
|
553
|
-
return;
|
|
554
|
-
}
|
|
555
|
-
const explicitOperator = explicitOperatorOk(principal, deps.config);
|
|
556
|
-
if (!explicitOperator && run.owner !== null && run.owner !== principal) {
|
|
557
|
-
sendError(res, 404, "not_found.run", "task not found");
|
|
554
|
+
const resumeAdmitted = (await admitRunById(resumeEntry, res, runStore, taskId));
|
|
555
|
+
if (resumeAdmitted === undefined)
|
|
558
556
|
return;
|
|
559
|
-
|
|
560
|
-
const
|
|
557
|
+
const run = resumeAdmitted.row;
|
|
558
|
+
const explicitOperator = resumeAdmitted.quals.has("operator");
|
|
559
|
+
const out = await resumePreempted(run.sessionId, req, true, { subject: resumeEntry.caller.subject, operator: explicitOperator }, restatement);
|
|
561
560
|
sendResumeOutcome(res, out, deps.logger);
|
|
562
561
|
return;
|
|
563
562
|
}
|
|
@@ -660,17 +659,15 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
660
659
|
}
|
|
661
660
|
}
|
|
662
661
|
const sighting = typeof body.checkpointId === "string" ? { face: "checkpointId", value: body.checkpointId } : undefined;
|
|
662
|
+
const decisionEntry = callerEntry(req, deps, match.decl.id);
|
|
663
663
|
const run = await runStore.getRun(taskId);
|
|
664
664
|
if (!run) {
|
|
665
|
-
if (deps.config.directDoorActive)
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
}
|
|
669
|
-
deps.logger?.info?.("decide_404", { reason: "no-row", taskId, principalPresent: principal !== undefined });
|
|
670
|
-
sendError(res, 404, "not_found.run", "task not found");
|
|
665
|
+
if (!deps.config.directDoorActive)
|
|
666
|
+
deps.logger?.info?.("decide_404", { reason: "no-row", taskId, principalPresent: principal !== undefined });
|
|
667
|
+
refuse(decisionEntry, res, "missing");
|
|
671
668
|
return;
|
|
672
669
|
}
|
|
673
|
-
let deciderPrincipal = principal;
|
|
670
|
+
let deciderPrincipal = principal === undefined ? undefined : personOf(principal);
|
|
674
671
|
let singleUse;
|
|
675
672
|
if (deps.config.directDoorActive) {
|
|
676
673
|
const store = deps.approvalNonceStore;
|
|
@@ -695,13 +692,15 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
695
692
|
deciderPrincipal = proof.principal;
|
|
696
693
|
singleUse = proof.singleUse === undefined ? undefined : { proof: proof.singleUse, store };
|
|
697
694
|
}
|
|
698
|
-
const
|
|
699
|
-
|
|
695
|
+
const deciderEntry = withCaller(decisionEntry, callerOfDecision(decisionEntry.caller, deciderPrincipal, deps.config));
|
|
696
|
+
const decisionAdmitted = judgeRun(deciderEntry, run);
|
|
697
|
+
if (decisionAdmitted === undefined) {
|
|
700
698
|
deps.logger?.info?.("decide_404", { reason: "owner-mismatch", taskId, principalPresent: principal !== undefined });
|
|
701
|
-
|
|
699
|
+
refuse(deciderEntry, res, "not_visible");
|
|
702
700
|
return;
|
|
703
701
|
}
|
|
704
|
-
const
|
|
702
|
+
const explicitOperator = decisionAdmitted.quals.has("operator");
|
|
703
|
+
const plan = await preparePlanReview(run.sessionId, { taskId, principalPresent: principal !== undefined }, { subject: deciderSubjectOf(principal, deciderPrincipal), operator: explicitOperator }, sighting, restated.restatement);
|
|
705
704
|
if (!plan.ok) {
|
|
706
705
|
sendResumeOutcome(res, plan.answer, deps.logger);
|
|
707
706
|
return;
|
|
@@ -725,7 +724,7 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
725
724
|
return;
|
|
726
725
|
}
|
|
727
726
|
}
|
|
728
|
-
const out = await drivePlanReview(plan.prepared, decision, decision === "edit" ? body.editedPlan : undefined, typeof body.reason === "string" ? body.reason : undefined, hostDecisionFacts(decidedByReading.decider, deciderPrincipal), req, true, isPlanApprovePermissionModeAfter(body.permissionModeAfter) ? body.permissionModeAfter : undefined
|
|
727
|
+
const out = await drivePlanReview(plan.prepared, decision, decision === "edit" ? body.editedPlan : undefined, typeof body.reason === "string" ? body.reason : undefined, hostDecisionFacts(decidedByReading.decider, deciderPrincipal), req, true, isPlanApprovePermissionModeAfter(body.permissionModeAfter) ? body.permissionModeAfter : undefined);
|
|
729
728
|
sendResumeOutcome(res, out, deps.logger);
|
|
730
729
|
return;
|
|
731
730
|
}
|
|
@@ -862,7 +861,7 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
862
861
|
updatedInput: body.updatedInput,
|
|
863
862
|
...(typeof body.feedback === "string" ? { feedback: body.feedback } : {}),
|
|
864
863
|
};
|
|
865
|
-
let deciderPrincipal = principal;
|
|
864
|
+
let deciderPrincipal = principal === undefined ? undefined : personOf(principal);
|
|
866
865
|
if (deps.config.directDoorActive) {
|
|
867
866
|
const hdr = (n) => {
|
|
868
867
|
const h = req.headers[n];
|
|
@@ -881,39 +880,17 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
881
880
|
}
|
|
882
881
|
deciderPrincipal = proof.principal;
|
|
883
882
|
}
|
|
884
|
-
const
|
|
885
|
-
if (!
|
|
883
|
+
const deciderCaller = { subject: deciderSubjectOf(principal, deciderPrincipal), operator: explicitOperatorOk(deciderPrincipal, deps.config) };
|
|
884
|
+
if (!deciderCaller.operator) {
|
|
886
885
|
const cpScope = await cs
|
|
887
886
|
.peekPendingScope(sessionId, { gateKinds: APPROVAL_GATE_KINDS })
|
|
888
887
|
.then((s) => (s === undefined ? cs.peekPendingScope(sessionId) : s));
|
|
889
|
-
|
|
890
|
-
const ownsIt = cpScope == null || decodedCpScope === undefined || decodedCpScope === deciderPrincipal;
|
|
891
|
-
if (!ownsIt) {
|
|
888
|
+
if (!keyAdmits("scope.decide", deciderCaller, scopeCellOf(cpScope ?? CHECKPOINT_PUBLIC_SCOPE))) {
|
|
892
889
|
sendError(res, 404, "not_found.approval", "approval not found");
|
|
893
890
|
return;
|
|
894
891
|
}
|
|
895
892
|
}
|
|
896
|
-
|
|
897
|
-
let pendingGrant;
|
|
898
|
-
const grantOnCommit = remember && deps.approvalExemptionStore
|
|
899
|
-
? async (grant) => {
|
|
900
|
-
const canonical = grant.rememberableToolName;
|
|
901
|
-
if (!canonical)
|
|
902
|
-
return;
|
|
903
|
-
pendingGrant = { sessionId: grant.overrideSessionId ?? sessionId, toolName: canonical };
|
|
904
|
-
}
|
|
905
|
-
: undefined;
|
|
906
|
-
const out = await resumeCheckpoint(sessionId, decision, body.reason ?? undefined, hostDecisionFacts(decider, deciderPrincipal), req, answer, binding, grantOnCommit, true, { principal: deciderPrincipal, explicitOperator }, restated.restatement);
|
|
907
|
-
if (pendingGrant !== undefined && decisionCommittedOf(out) && deps.approvalExemptionStore) {
|
|
908
|
-
try {
|
|
909
|
-
await deps.approvalExemptionStore.grant(pendingGrant.sessionId, pendingGrant.toolName, deciderPrincipal ?? null);
|
|
910
|
-
rememberApplied = true;
|
|
911
|
-
deps.logger?.info?.("approval_exemption_granted", { sessionId: pendingGrant.sessionId, toolName: pendingGrant.toolName, grantedBy: deciderPrincipal ?? null });
|
|
912
|
-
}
|
|
913
|
-
catch (e) {
|
|
914
|
-
deps.logger?.warn?.("approval_exemption_grant_failed", { sessionId: pendingGrant.sessionId, toolName: pendingGrant.toolName, error: String(e).slice(0, 200) });
|
|
915
|
-
}
|
|
916
|
-
}
|
|
893
|
+
const out = await resumeCheckpoint(sessionId, decision, body.reason ?? undefined, hostDecisionFacts(decider, deciderPrincipal), req, answer, binding, remember ? { grantedBy: deciderPrincipal ?? null, laneCannotRecord: "refuse" } : undefined, true, deciderCaller, restated.restatement);
|
|
917
894
|
const replay = await decideIdempotentReplay(cs, {
|
|
918
895
|
sessionId,
|
|
919
896
|
out,
|
|
@@ -925,15 +902,14 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
|
|
|
925
902
|
...((r) => (r !== undefined ? { reason: r } : {}))(decisionReasonOf(body)),
|
|
926
903
|
...(binding.feedback !== undefined ? { feedback: binding.feedback } : {}),
|
|
927
904
|
},
|
|
928
|
-
|
|
929
|
-
explicitOperator,
|
|
905
|
+
decider: deciderCaller,
|
|
930
906
|
warn: (event, fields) => deps.logger?.warn?.(event, fields),
|
|
931
907
|
});
|
|
932
908
|
if (replay !== undefined) {
|
|
933
909
|
sendResumeOutcome(res, replay, deps.logger);
|
|
934
910
|
return;
|
|
935
911
|
}
|
|
936
|
-
sendResumeOutcome(res, out, deps.logger, remember
|
|
912
|
+
sendResumeOutcome(res, out, deps.logger, remember ? { rememberApplied: out.rememberApplied === true } : undefined);
|
|
937
913
|
return;
|
|
938
914
|
}
|
|
939
915
|
}
|
|
@@ -1003,6 +979,8 @@ function approvalsReadFailureOf(err) {
|
|
|
1003
979
|
case "deployment":
|
|
1004
980
|
case "unclassified":
|
|
1005
981
|
return "approvals.read_unavailable";
|
|
982
|
+
case "defect":
|
|
983
|
+
return "internal.error";
|
|
1006
984
|
default: {
|
|
1007
985
|
const unhandled = fault;
|
|
1008
986
|
throw new Error(`store fault class without an approvals read answer: ${String(unhandled)}`);
|
|
@@ -1010,15 +988,18 @@ function approvalsReadFailureOf(err) {
|
|
|
1010
988
|
}
|
|
1011
989
|
}
|
|
1012
990
|
function sendApprovalsReadFailure(req, res, logger, err) {
|
|
1013
|
-
logRequestError(logger, req, err);
|
|
1014
991
|
const failure = approvalsReadFailureOf(err);
|
|
1015
992
|
switch (failure) {
|
|
1016
993
|
case "approvals.read_corrupt":
|
|
994
|
+
logRequestError(logger, req, err);
|
|
1017
995
|
sendError(res, 500, "approvals.read_corrupt", "a stored approval row cannot be read - retrying this request will fail the same way until an operator repairs or removes the row");
|
|
1018
996
|
return;
|
|
1019
997
|
case "approvals.read_unavailable":
|
|
998
|
+
logRequestError(logger, req, err);
|
|
1020
999
|
sendError(res, 503, "approvals.read_unavailable", "the approvals queue could not be read right now - retry this request; until a read succeeds, this answer does not mean nothing is pending");
|
|
1021
1000
|
return;
|
|
1001
|
+
case "internal.error":
|
|
1002
|
+
throw err;
|
|
1022
1003
|
default: {
|
|
1023
1004
|
const unhandled = failure;
|
|
1024
1005
|
throw new Error(`approvals read failure word without an answer: ${String(unhandled)}`);
|
|
@@ -1156,6 +1137,10 @@ export async function streamApprovals(req, res, cs, live, peerInbound, sessions,
|
|
|
1156
1137
|
if (!res.writableEnded)
|
|
1157
1138
|
res.write(`event: error\ndata: ${JSON.stringify({ type: "error", errorCode: "approvals.read_unavailable", message: "the approvals queue could not be read - this stream stays open and retries on its next poll; until a read succeeds, silence here does not mean nothing is pending" })}\n\n`);
|
|
1158
1139
|
break;
|
|
1140
|
+
case "internal.error":
|
|
1141
|
+
if (!res.writableEnded)
|
|
1142
|
+
res.write(`event: error\ndata: ${JSON.stringify({ type: "error", errorCode: "internal.error", message: "the approvals queue could not be read because of an internal error - this stream is closing; reconnecting will fail the same way until the server is fixed" })}\n\n`);
|
|
1143
|
+
throw err;
|
|
1159
1144
|
default: {
|
|
1160
1145
|
const unhandled = failure;
|
|
1161
1146
|
throw new Error(`approvals read failure word without a stream answer: ${String(unhandled)}`);
|
|
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { uuidv7, sanitizePathComponent } from "@sema-agent/core";
|
|
3
3
|
import { HttpError } from "../../security.js";
|
|
4
4
|
import { sendJson, sendError } from "../send.js";
|
|
5
|
-
import {
|
|
5
|
+
import { gatedSubject, sendPrincipalRefusal } from "../principal-gate.js";
|
|
6
6
|
import { assertNever } from "../route-ctx.js";
|
|
7
7
|
import { attachmentKindOf, readProjectBundle } from "../../project-bundle.js";
|
|
8
8
|
export async function handleAttachments(req, res, match, ctx) {
|
|
@@ -17,7 +17,7 @@ export async function handleAttachments(req, res, match, ctx) {
|
|
|
17
17
|
sendError(res, 501, "capability.attachment_store_required", "attachment store not configured");
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
const principal =
|
|
20
|
+
const principal = gatedSubject(req, deps.config);
|
|
21
21
|
if (deps.config.requirePrincipal && principal === undefined) {
|
|
22
22
|
sendPrincipalRefusal(res, req, deps.config);
|
|
23
23
|
return;
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* ── 结清口:子代结清只有一只协调器 ─────────────────────────────────────────────────────────────────
|
|
32
32
|
* `POST /v1/sessions/:id/children/retire`(无体)→ 200 `{ children: string[] }`:**显式**结清以本会话为根的后台子代(running 停掉、parked
|
|
33
33
|
* 作废卡并对账翻终态),与 `DELETE /v1/sessions/:id` 同调**一只**预检 `probeSessionChildren` 与**一只**协调器 `retireSessionChildren`
|
|
34
|
-
* (`session-children-retire.ts`)、同一个 scope(`
|
|
34
|
+
* (`session-children-retire.ts`)、同一个 scope(`sessionTenantScope`)。预检有本副本结束不了的 ⇒ 409 `conflict.session_children_alive{remaining}`
|
|
35
35
|
* (与删除门同码同投影,一只都不动);停不净(时序失败)⇒ 与删除门同一失败契约(通用 500,重试收敛)。`children` = 首轮观察到、且已全部
|
|
36
36
|
* 结清的子代,每项经名册的 id 投影 `rosterAgentId`(与换绑 / 导入两门 409 体的 `children` 同形同投影)。它不判根认领(停止口也不判):
|
|
37
37
|
* 根 run 活着时它可再派子代 —— 由换绑 / 导入门写事务内的认领读兜。鉴权 / 限流 / 无凭据写门与停止口同。
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
* 「把树结清」是两个意图、两只口。
|
|
40
40
|
*
|
|
41
41
|
* 🔴 **停止口在无凭据写门内**(`credentialGated: ["POST"]`;车OL F1 = 7.102.0 合并复审 gpt-6 腿 [high]):门的两个合取项它都中
|
|
42
|
-
* —— ① 授权的唯一输入是 principal 头(属主判 `
|
|
42
|
+
* —— ① 授权的唯一输入是 principal 头(属主判 `admitSessionRow` 与 operator 臂 `explicitOperatorOk` 读的都是 `gatedSubject`,
|
|
43
43
|
* 无 service 凭证的部署上它收调用方自报的头);② 不可撤销、爆炸半径跨租户(知道会话 id + 自报它的属主 ⇒ 停掉那个会话的后台
|
|
44
44
|
* 进程,`includeRetained:true` 连显式 retain 的活服务一起停)。于是无 service 凭证且未开 `ALLOW_UNAUTHED_WRITES` 的部署上它与
|
|
45
45
|
* 其余改写门同码同句 503 `auth.service_token_required`(在路由之前,`dispatch.ts` 那一道),同一只会话级收敛函数的另一个调用点
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
*/
|
|
50
50
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
51
51
|
import { type TaskRegistry, type BackgroundShellHardKillReceipt } from "@sema-agent/core";
|
|
52
|
-
import {
|
|
52
|
+
import type { RouteCtx, RouteMatch, RouteIdsOf } from "../route-ctx.js";
|
|
53
53
|
/** `description` 的显示截断(模型描述通常一句话;回落的命令文本可能是一整段脚本)。 */
|
|
54
54
|
export declare const DESCRIPTION_MAX = 500;
|
|
55
55
|
/** core `list()` 的行型(从唯一的消费位取,不抄结构)。 */
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { defaultTaskRegistry } from "@sema-agent/core";
|
|
3
3
|
import { reapSessionBackgroundHard } from "../../background-session-reap.js";
|
|
4
|
-
import { probeSessionChildren, retireSessionChildren,
|
|
4
|
+
import { probeSessionChildren, retireSessionChildren, sessionTenantScope, SessionChildrenStopIncompleteError } from "../../session-children-retire.js";
|
|
5
5
|
import { rosterAgentId } from "./agents-roster.js";
|
|
6
6
|
import { redactSecrets } from "../../trace/redact.js";
|
|
7
7
|
import { sendJson, sendError } from "../send.js";
|
|
8
|
-
import {
|
|
9
|
-
import {} from "../route-ctx.js";
|
|
10
|
-
import { assertNever, SESSION_NOT_FOUND_MESSAGE } from "../route-ctx.js";
|
|
8
|
+
import { admitSessionById, enter } from "../owner-access.js";
|
|
9
|
+
import { assertNever } from "../route-ctx.js";
|
|
11
10
|
import * as facts from "../../capability-facts.js";
|
|
12
|
-
import { sessionOwnerCellOf } from "../../security.js";
|
|
13
11
|
const LIST_LIMIT = 500;
|
|
14
12
|
export const DESCRIPTION_MAX = 500;
|
|
15
13
|
const ROW_KEY_DISPOSITION = {
|
|
@@ -50,11 +48,9 @@ export async function handleBackground(req, res, match, ctx) {
|
|
|
50
48
|
const id = match.decl.id;
|
|
51
49
|
if ((id === "session-background-stop" || id === "session-children-retire") && ctx.helpers.rateLimited(req, res))
|
|
52
50
|
return;
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
sendPrincipalRefusal(res, req, deps.config);
|
|
51
|
+
const entry = enter(req, res, deps, id);
|
|
52
|
+
if (entry === undefined)
|
|
56
53
|
return;
|
|
57
|
-
}
|
|
58
54
|
let includeRetained = false;
|
|
59
55
|
if (id === "session-background-stop") {
|
|
60
56
|
const parsed = StopBodySchema.safeParse((await ctx.helpers.readJson(req)) ?? {});
|
|
@@ -74,15 +70,11 @@ export async function handleBackground(req, res, match, ctx) {
|
|
|
74
70
|
sendError(res, 501, "capability.session_ownership_required", "the session background faces require the session-ownership face (sessionStorage.headOf)");
|
|
75
71
|
return;
|
|
76
72
|
}
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
79
|
-
sendError(res, 404, "not_found.session", SESSION_NOT_FOUND_MESSAGE);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const operator = explicitOperatorOk(principal, deps.config);
|
|
83
|
-
if (!operator && !ctx.helpers.sessionOwnerOk(req, res, await sessionOwnerCellOf(owned.sessionStorage, sessionId, owner)))
|
|
73
|
+
const admitted = await admitSessionById(entry, res, owned.sessionStorage, sessionId);
|
|
74
|
+
if (admitted === undefined)
|
|
84
75
|
return;
|
|
85
|
-
const
|
|
76
|
+
const owner = admitted.row.owner;
|
|
77
|
+
const scope = sessionTenantScope(owner);
|
|
86
78
|
switch (id) {
|
|
87
79
|
case "session-background-list": {
|
|
88
80
|
const rows = defaultTaskRegistry.list({ owner: sessionId, sessionId, scope }, { limit: LIST_LIMIT }).map(projectRow);
|
|
@@ -2,10 +2,10 @@ import { PERMISSION_MODES, USER_ATTACHMENT_SEAT, expandTiers, reasoningEffortLev
|
|
|
2
2
|
import { modelImageInput, modelReasoningDecl, isAtMentionable, selectableAliasNames, selectableCatalog } from "../../model-select.js";
|
|
3
3
|
import { buildDroppedEntriesWire } from "../../web-admin-client/read-warnings.js";
|
|
4
4
|
import { buildCandidateRejectedWire } from "../../web-admin-client/candidate-gate.js";
|
|
5
|
-
import {
|
|
6
|
-
import { isRosterGateArmed } from "../../config.js";
|
|
5
|
+
import { readModelPlaneFace } from "../../model-plane-face.js";
|
|
7
6
|
import { modelKeyPoisonOf, resolveModelApiKey } from "../../key-resolver.js";
|
|
8
7
|
import { projectSealedKeyCapability } from "../../sealed-key.js";
|
|
8
|
+
import { SESSION_READ_REDACTED_LEAVES } from "../../audit.js";
|
|
9
9
|
import { DEPLOYMENT_SHAPE_PREDICATES } from "../../deployment-shape.js";
|
|
10
10
|
import { taskWriteFaceRefusal } from "../../hosted-posture.js";
|
|
11
11
|
import { leaderEntryRefusal, leaderRunEntry } from "../../leader/run-entry.js";
|
|
@@ -22,9 +22,10 @@ import { assertNever } from "../route-ctx.js";
|
|
|
22
22
|
import { fileHistoryCaptureOf } from "../../file-history-capture.js";
|
|
23
23
|
import { projectMemoryEngineCapability } from "../../memory-posture.js";
|
|
24
24
|
import { projectWriteProtectionCapability } from "../../write-protection.js";
|
|
25
|
-
import { projectStoreCapability } from "../../store-posture.js";
|
|
25
|
+
import { projectStoreCapability, unwiredStorePosture } from "../../store-posture.js";
|
|
26
26
|
import { projectWebSearchCapability } from "../../plugins/web-search.js";
|
|
27
27
|
import { projectExecutionLaneCapability } from "../../capabilities/execution-lane.js";
|
|
28
|
+
import { SETTINGS_CONTRACT_CAPABILITY } from "../../capabilities/settings-contract.js";
|
|
28
29
|
import { judgeSandboxGitPlane, sandboxGitPlanePremisesOf } from "../../sandbox-git-plane.js";
|
|
29
30
|
import { MCP_ASSERTION_HEADER_SENT, MCP_REQUEST_TRANSPORT_KINDS } from "../../mcp-assertion-header.js";
|
|
30
31
|
import { gateCompositeMembers } from "../../capabilities/composite-members.js";
|
|
@@ -34,7 +35,7 @@ import { centerEntitlementSourceWired } from "../../runtime-caps-resolver.js";
|
|
|
34
35
|
import * as facts from "../../capability-facts.js";
|
|
35
36
|
import { judgeAutoModeArming } from "../../auto-mode-face.js";
|
|
36
37
|
import { coercePermissionModeStrict, PERMISSION_MODE_WORDS, taskHooksHonored } from "../../task-settings.js";
|
|
37
|
-
import {
|
|
38
|
+
import { gatedPerson, sendPrincipalRefusal } from "../principal-gate.js";
|
|
38
39
|
import { readAdoptionImportCapability } from "../../adoption/import.js";
|
|
39
40
|
import { headReadOf } from "../../session-incarnation.js";
|
|
40
41
|
import { callerTrust } from "../caller-trust.js";
|
|
@@ -78,10 +79,10 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
78
79
|
return;
|
|
79
80
|
}
|
|
80
81
|
const entitlementSource = centerEntitlementSourceWired(deps.config);
|
|
81
|
-
const { fault: autoModeFault, ...autoMode } = await judgeAutoModeArming(deps.autoModeFace, { requestedMode, floor: autonomyModeFloor(deps.config.autonomy), principal:
|
|
82
|
+
const { fault: autoModeFault, ...autoMode } = await judgeAutoModeArming(deps.autoModeFace, { requestedMode, floor: autonomyModeFloor(deps.config.autonomy), principal: gatedPerson(req, deps.config), localDeny: deps.config.permissionsDisableAutoMode });
|
|
82
83
|
if (autoModeFault !== undefined)
|
|
83
84
|
deps.logger?.warn("auto_mode_face_resolver_fault", { fault: autoModeFault });
|
|
84
|
-
const rulesLaneForCaller = facts.ruleLaneForCaller(deps,
|
|
85
|
+
const rulesLaneForCaller = facts.ruleLaneForCaller(deps, gatedPerson(req, deps.config)).available;
|
|
85
86
|
const streamApprovalFact = facts.streamApproval(deps);
|
|
86
87
|
sendJson(res, 200, gateCompositeMembers({
|
|
87
88
|
...deps.capabilities,
|
|
@@ -96,10 +97,10 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
96
97
|
? {
|
|
97
98
|
enabled: true,
|
|
98
99
|
protocolVersion: DEVICE_PROTOCOL_VERSION,
|
|
99
|
-
maxInflightPerDevice: deps.config.remoteExec
|
|
100
|
+
maxInflightPerDevice: deps.config.remoteExec.provider === "device" ? (deps.config.remoteExec.maxInflightPerDevice ?? 4) : 4,
|
|
100
101
|
wsPath: DEVICE_WS_PATH,
|
|
101
102
|
management: facts.deviceManagement(deps).available,
|
|
102
|
-
...(deps.config.remoteExec
|
|
103
|
+
...(deps.config.remoteExec.provider === "device" && deps.config.remoteExec.relay.kind === "url" ? { relayUrl: deps.config.remoteExec.relay.url } : {}),
|
|
103
104
|
}
|
|
104
105
|
: false,
|
|
105
106
|
sessionEvents: facts.sessionEventStream(deps).available,
|
|
@@ -112,8 +113,8 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
112
113
|
memory: false,
|
|
113
114
|
memoryWrite: false,
|
|
114
115
|
memoryEngine: projectMemoryEngineCapability(deps.memoryPosture),
|
|
115
|
-
store: projectStoreCapability(deps.storePosture ??
|
|
116
|
-
centerWiring: deps.centerWiring?.(
|
|
116
|
+
store: projectStoreCapability(deps.storePosture ?? unwiredStorePosture(deps.config.dbBackend), deps.sqlEngine?.facts),
|
|
117
|
+
centerWiring: deps.centerWiring?.(gatedPerson(req, deps.config)),
|
|
117
118
|
webSearch: projectWebSearchCapability(deps.webSearchProvider),
|
|
118
119
|
sessionBackgroundable: facts.durableRuns(deps).available,
|
|
119
120
|
runMemoryCaptureOptOut: facts.durableRuns(deps).available,
|
|
@@ -122,7 +123,7 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
122
123
|
sharedMemory: facts.sharedMemoryRead(deps).available,
|
|
123
124
|
principalInboxDelivery: facts.principalInboxDelivery(deps).available,
|
|
124
125
|
adoption: facts.adoption(deps).available,
|
|
125
|
-
adoptionImport: await readAdoptionImportCapability(facts.adoptionSessionImport(deps),
|
|
126
|
+
adoptionImport: await readAdoptionImportCapability(facts.adoptionSessionImport(deps), gatedPerson(req, deps.config), deps.config),
|
|
126
127
|
memoryBundle: facts.memoryBundle(deps).available,
|
|
127
128
|
memoryCompliance: facts.memoryCompliance(deps).available,
|
|
128
129
|
memoryOrigin: facts.memoryOrigin(deps).available,
|
|
@@ -151,6 +152,7 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
151
152
|
subagentResume: facts.subagentSteer(deps).available,
|
|
152
153
|
taskSettings: { permissions: true, permissionMode: true, model: true, outputStyle: true, env: DEPLOYMENT_SHAPE_PREDICATES.callerCwd.holds(deps.config), hooks: taskHooksHonored(deps.config), pluginHooks: taskHooksHonored(deps.config), managedHookGroups: taskHooksHonored(deps.config), httpHookAllowlists: taskHooksHonored(deps.config), tightenOnlySeats: true, approvalFrameFamilies: true, autoCompactEnabled: true },
|
|
153
154
|
settings: { permissions: { allowGrant: true, allowLayer: true, layers: true, layeredAllow: true, callerTrust: callerTrust(req, deps.config).trust } },
|
|
155
|
+
settingsContract: SETTINGS_CONTRACT_CAPABILITY,
|
|
154
156
|
permissionModeAuto: {
|
|
155
157
|
accepted: true,
|
|
156
158
|
classifierSeat: deps.autoModeFace?.seatMounted === true,
|
|
@@ -201,11 +203,13 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
201
203
|
approvalDecidedVia: true,
|
|
202
204
|
planReviewCheckpointId: true,
|
|
203
205
|
permissionModes: [...PERMISSION_MODES],
|
|
204
|
-
sessionReadRedaction:
|
|
206
|
+
sessionReadRedaction: [...SESSION_READ_REDACTED_LEAVES],
|
|
205
207
|
sideQuery: true,
|
|
206
208
|
agentRoster: facts.agentRoster(deps).available,
|
|
209
|
+
projects: facts.projectRegistry(deps).available,
|
|
207
210
|
retention: retentionAdvertisement(deps.config),
|
|
208
211
|
peerLane: Boolean(deps.peerDirectory),
|
|
212
|
+
scenarioSubject: true,
|
|
209
213
|
sessionList: facts.sessionList(deps).available,
|
|
210
214
|
sessionSearch: facts.sessionList(deps).available,
|
|
211
215
|
sessionFork: facts.sessionFork(deps).available,
|
|
@@ -214,9 +218,10 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
214
218
|
promptSuggestions: true,
|
|
215
219
|
sessionPolicy: facts.sessionPolicy(deps).available,
|
|
216
220
|
sessionRulesNamespaceForms: sessionRulesNamespaceFormsHonored(),
|
|
217
|
-
rewindFiles: Boolean(deps.fileHistoryStore),
|
|
218
221
|
restoreFiles: Boolean(deps.fileHistoryStore),
|
|
219
222
|
rewindFilesTo: Boolean(deps.fileHistoryStore && deps.resumeAnchorStore && headReadOf(deps.sessionStorage)),
|
|
223
|
+
sessionRewindFiles: facts.sessionRewindFiles(deps).available,
|
|
224
|
+
sessionRewindFilesPreview: facts.sessionRewindFilesPreview(deps).available,
|
|
220
225
|
fileHistoryCapture: fileHistoryCaptureOf(deps.fileHistoryStore, deps.config.fileHistoryCapture),
|
|
221
226
|
scheduler: facts.hostScheduler(deps.config).available,
|
|
222
227
|
sessionSync: facts.sessionSync(deps).available,
|
|
@@ -249,7 +254,7 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
249
254
|
return;
|
|
250
255
|
}
|
|
251
256
|
case "capability-mcp": {
|
|
252
|
-
const principal =
|
|
257
|
+
const principal = gatedPerson(req, deps.config);
|
|
253
258
|
if (deps.config.requirePrincipal && !principal) {
|
|
254
259
|
sendPrincipalRefusal(res, req, deps.config);
|
|
255
260
|
return;
|
|
@@ -264,7 +269,7 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
264
269
|
return;
|
|
265
270
|
}
|
|
266
271
|
case "capability-mcp-probe": {
|
|
267
|
-
const principal =
|
|
272
|
+
const principal = gatedPerson(req, deps.config);
|
|
268
273
|
if (deps.config.requirePrincipal && !principal) {
|
|
269
274
|
sendPrincipalRefusal(res, req, deps.config);
|
|
270
275
|
return;
|
|
@@ -298,6 +303,8 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
298
303
|
...(m.maxTokens ? { maxOutputTokens: m.maxTokens } : {}),
|
|
299
304
|
...((levels) => (levels !== undefined ? { supportedEffortLevels: [...levels] } : {}))(reasoningEffortLevelsOf(m)),
|
|
300
305
|
...(m.compat !== undefined ? { compat: m.compat } : {}),
|
|
306
|
+
...(m.thinkingLevelMap !== undefined ? { thinkingLevelMap: m.thinkingLevelMap } : {}),
|
|
307
|
+
...(m.defaultThinking !== undefined ? { defaultThinking: m.defaultThinking } : {}),
|
|
301
308
|
...mentionBit(name),
|
|
302
309
|
routePairing: routePairingOf(deps, name, m),
|
|
303
310
|
}));
|
|
@@ -310,11 +317,7 @@ export async function handleCapabilities(req, res, match, ctx) {
|
|
|
310
317
|
defaultModel: { id: deps.config.model.id, ...(defaultName ? { name: defaultName } : {}) },
|
|
311
318
|
droppedEntries: buildDroppedEntriesWire(deps.config.droppedCatalogEntries),
|
|
312
319
|
...(candidateRejection !== undefined ? { candidateRejected: buildCandidateRejectedWire(candidateRejection) } : {}),
|
|
313
|
-
modelPlane:
|
|
314
|
-
envTableIsPlaceholder: isRosterGateArmed(deps.config.webAdmin),
|
|
315
|
-
candidateRejection,
|
|
316
|
-
latestPlaneRefusal: deps.latestPlaneRefusalState?.(),
|
|
317
|
-
}),
|
|
320
|
+
modelPlane: readModelPlaneFace(deps.config, deps),
|
|
318
321
|
aliases: selectableAliasNames(deps.config.models, atCatalog, deps.config.modelRefusals).map((name) => ({ name, ...mentionBit(name) })),
|
|
319
322
|
});
|
|
320
323
|
return;
|