@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/config.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { writeLogText } from "./observability/logger.js";
|
|
1
2
|
import { readFileSync } from "node:fs";
|
|
2
3
|
import { DEFAULT_AT_MENTION, DEFAULT_MODEL_REF, mintCapabilityKeys } from "./model-select.js";
|
|
3
4
|
import { homedir } from "node:os";
|
|
4
5
|
import { isAbsolute, join, posix as posixPath } from "node:path";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { compileAllowList, inheritEnvPolicyProblem, BUILTIN_COMPLIANCE_DENIES, COMPLIANCE_CAPABILITIES, CROSS_SESSION_INBOUND_SETTINGS, CROSS_SESSION_DIALOG_EXPIRY_VALUES, compileReadDeny, resolveReadDenyBuiltins, isModelPriced, PROTOCOL_TABLE, RECOMMENDED_SENSITIVE_PATTERNS, judgeRuleToolName, resolveFileHistoryRetention, resolveLockedKeys, validatePermissionRules, WRITE_PROTECTED_DEFAULT_TABLE, resolveWriteProtectedTable, principalInboxConsumerOf, carriesCredential, isReplicableScope } from "@sema-agent/core";
|
|
7
|
+
import { hostOfUrl, HOST_UNREADABLE_SENTENCE, compileAllowList, inheritEnvPolicyProblem, BUILTIN_COMPLIANCE_DENIES, COMPLIANCE_CAPABILITIES, CROSS_SESSION_INBOUND_SETTINGS, CROSS_SESSION_DIALOG_EXPIRY_VALUES, compileReadDeny, resolveReadDenyBuiltins, isModelPriced, PROTOCOL_TABLE, RECOMMENDED_SENSITIVE_PATTERNS, judgeRuleToolName, resolveFileHistoryRetention, resolveLockedKeys, validatePermissionRules, WRITE_PROTECTED_DEFAULT_TABLE, resolveWriteProtectedTable, principalInboxConsumerOf, carriesCredential, isReplicableScope, resolveBashTimeoutCaps } from "@sema-agent/core";
|
|
7
8
|
import { ROSTER_PRIMARY_ROLES, ROSTER_CHEAP_ROLES, WEB_ADMIN_ENV, retiredEnvRefusal, stripControlAndBidi } from "@sema-agent/settings-schema";
|
|
8
9
|
import { parseApprovalHmacKeys, parsePrincipalJwks } from "./auth-keys.js";
|
|
9
10
|
import { DEFAULT_ELICITATION_THROTTLE } from "./elicitation.js";
|
|
@@ -11,6 +12,7 @@ import { buildRuleListJudgeOptions } from "./permission-rule-list.js";
|
|
|
11
12
|
import { isV2ScopeKey, memoryReplicationCoverage, replicatesProjectLayersOf } from "./memory-scope.js";
|
|
12
13
|
import { memorySyncPeerOf } from "./memory-sync-client.js";
|
|
13
14
|
import { buildMemorySyncIdentityBootRefusal, declaredMemorySyncIdentityFlaw } from "./memory-sync-identity.js";
|
|
15
|
+
import { formatEmbedderIdentityToken, formatReembedAssignment, parseEmbedderIdentityToken } from "./memory-embedder-reembed.js";
|
|
14
16
|
import { assertProjectLayerOwnable } from "./project-identity.js";
|
|
15
17
|
import { projectLayerOwnerOf } from "./project-layer-key.js";
|
|
16
18
|
import { DEFAULT_QUESTION_THROTTLE } from "./question.js";
|
|
@@ -23,12 +25,13 @@ import { ScopeId } from "@sema-agent/settings-schema/api/scopes";
|
|
|
23
25
|
import { centerLaneConfigured, pathBaseUrlRefusal } from "./web-admin-client/center-request.js";
|
|
24
26
|
import { resolveLocalDataRoot } from "./local-data-root.js";
|
|
25
27
|
import { buildWriteProtectionPosture } from "./write-protection.js";
|
|
28
|
+
import { RUN_STALE_SEC_DEFAULT } from "./run-stale-default.js";
|
|
26
29
|
import { normalizeSshFingerprint } from "./ssh-host-key.js";
|
|
27
|
-
import {
|
|
28
|
-
import { THINKING_LEVELS, THINKING_FORMATS, buildModelCompat, isThinkingFormat, isThinkingTier } from "./model-compat.js";
|
|
30
|
+
import { ASSUMED_CONTEXT_WINDOW } from "./model-context-window.js";
|
|
31
|
+
import { MODEL_THINKING_LEVELS, THINKING_LEVELS, THINKING_FORMATS, buildModelCompat, isModelThinkingLevel, isThinkingFormat, isThinkingTier } from "./model-compat.js";
|
|
29
32
|
import {} from "./posture-source.js";
|
|
30
33
|
import { COST_QUOTA_WINDOW_SEC_RANGE, costQuotaWindowSecInRange } from "./observability/cost-quota.js";
|
|
31
|
-
import { NAME_TABLE_BEHAVIOR, TOOL_NAME_ROSTER, describeUnmatchableRuleName, ruleEntryToolName, unmatchableRuleNameOf } from "./namespaced-rule-name.js";
|
|
34
|
+
import { NAME_TABLE_BEHAVIOR, TOOL_NAME_ROSTER, describeUnmatchableRuleName, isRetiredLeftOut, retiredLeftOutEntries, ruleEntryToolName, unmatchableRuleNameOf } from "./namespaced-rule-name.js";
|
|
32
35
|
import { bakeOperatorPrincipalsRefusal, bakeRunnerCredentialRefusal, centerIdentityRefusal, halfOpenDirectDoorRefusal, leaderDurableStoreRefusal, operatorPrincipalsRequiredRefusal, operatorSingleUserRefusal, remoteConfigProviderUrlRefusal, retentionLaneRefusal, workflowParkDecisionDomainRefusal } from "./config-invariants.js";
|
|
33
36
|
import { declaredSemaConfigDir } from "./sema-config-dir.js";
|
|
34
37
|
import { lkgPathOverrideOf } from "./config-lkg.js";
|
|
@@ -39,14 +42,15 @@ import { SANDBOX_IPV6_DEFAULT, SANDBOX_IPV6_WORDS } from "./sandbox-egress-polic
|
|
|
39
42
|
import { WORKSPACE_CACHE_DEFAULT, WORKSPACE_CACHE_MOUNT_DEFAULT, WORKSPACE_CACHE_MOUNT_RESERVED, WORKSPACE_CACHE_SIZE_DEFAULT, WORKSPACE_CACHE_WORDS, isK8sQuantity, mountsOverlap, reservedMountCollision } from "./workspace-cache.js";
|
|
40
43
|
import { DEPLOYMENT_SHAPE_PREDICATES } from "./deployment-shape.js";
|
|
41
44
|
import { sandboxForwardedEnvOf } from "./execution-config-root.js";
|
|
42
|
-
import { SANDBOX_READ_FLOOR_DEFAULT, SANDBOX_READ_FLOOR_WORDS,
|
|
45
|
+
import { SANDBOX_READ_FLOOR_DEFAULT, SANDBOX_READ_FLOOR_WORDS, laneMissingEnv, readDeclaredLaneTable } from "./execution-lane-caps.js";
|
|
43
46
|
import { MEMORY_ENGINE_BACKENDS, SESSION_BACKENDS, STORE_BACKENDS } from "@sema-agent/settings-schema/execution-lanes";
|
|
44
47
|
import { AUTONOMY_MODES } from "./runtime-governance.js";
|
|
48
|
+
import { deploymentRuleRefusal } from "./rule-issue-reading.js";
|
|
45
49
|
import { MAX_NAMED_INERT_ENTRIES, allowLayerEntryCountIssue, describeInertRuleEntries, inertRuleEntriesOf, inertRuleEntryGuidance, ruleEntryListShapeOk } from "./rule-entry-list.js";
|
|
46
50
|
import { readReadDenyEntry } from "./read-deny-entry.js";
|
|
47
51
|
import { createCenterCredentialSource, readCenterCredentialDeclaration } from "./center-credential.js";
|
|
48
52
|
import { parseCenterCredentialRenewLeadMs } from "./center-credential-renewer.js";
|
|
49
|
-
import { modelProviderRefusal } from "./model-provider.js";
|
|
53
|
+
import { catalogBrainLane, modelProviderRefusal } from "./model-provider.js";
|
|
50
54
|
import { modelRouteUrlRefusal } from "./model-route-url.js";
|
|
51
55
|
import { DEVICE_RELAY_NONE, DEVICE_RELAY_RULE, deviceRelayFlaws, httpUrlFlaws } from "@sema-agent/settings-schema";
|
|
52
56
|
import { buildHttpUrlRefusal, buildRefusalShownUrl } from "./url-refusal.js";
|
|
@@ -54,9 +58,10 @@ import { customPkgSourceFromEnv } from "./sandbox-pkg-source.js";
|
|
|
54
58
|
import { anthropicCredentialRefusal, csvOf, declaredCredential, envLaneTable, mintedCheapId, readModelRouteEnv } from "./model-route-gap.js";
|
|
55
59
|
import { displayListEntry } from "./list-entry-display.js";
|
|
56
60
|
import { echoCallerText } from "./caller-text-echo.js";
|
|
61
|
+
import { PRINCIPAL_MAX_BYTES, principalShapeProblem } from "./principal-shape.js";
|
|
57
62
|
import { buildDisplaySafeUrl, redactSecrets } from "./trace/redact.js";
|
|
58
63
|
import { parseConfigLocalOwnerUid } from "./config-dir-trust.js";
|
|
59
|
-
import { allowlistedEnv } from "./server-secret-env.js";
|
|
64
|
+
import { allowlistedEnv, ownCredentialDeclarationRefusal } from "./server-secret-env.js";
|
|
60
65
|
import { ENV_NAME_ALLOWLIST_KNOBS, ENV_NAME_ALLOWLIST_KNOB_NAMES, describeAllowlistPostures } from "./env-name-allowlist-knobs.js";
|
|
61
66
|
import { APPROVAL_ASK_RETENTION_DEFAULT_MS, APPROVAL_ASK_RETENTION_FLOOR_MS } from "./approval-ask-retention.js";
|
|
62
67
|
import { parseModsDeclaration } from "./mods-declaration.js";
|
|
@@ -170,6 +175,10 @@ function nonNegativeIntEnv(name, role, fallback = "0") {
|
|
|
170
175
|
throw new Error(`env ${name}=${n} must be an integer(${role};计数轴不接受小数——单位写漏了?)`);
|
|
171
176
|
return n;
|
|
172
177
|
}
|
|
178
|
+
function parseLocalDockerCapacityEnv() {
|
|
179
|
+
const maxContainers = nonNegativeIntEnv("DOCKER_MAX_CONTAINERS", "local-docker 车道同时在跑的容器数上限");
|
|
180
|
+
return maxContainers > 0 ? { maxContainers } : undefined;
|
|
181
|
+
}
|
|
173
182
|
function numEnvBounded(name, fallback, min, max) {
|
|
174
183
|
const n = numEnv(name, fallback);
|
|
175
184
|
if (n < min || n > max)
|
|
@@ -192,14 +201,6 @@ const CONFIG_NOTICES = [];
|
|
|
192
201
|
export function drainConfigNotices() {
|
|
193
202
|
return CONFIG_NOTICES.splice(0, CONFIG_NOTICES.length);
|
|
194
203
|
}
|
|
195
|
-
let EXEC_LANE_NOTICE;
|
|
196
|
-
function buildExecLaneNotice(remoteExec) {
|
|
197
|
-
const lane = executionLaneOf(remoteExec?.provider);
|
|
198
|
-
return {
|
|
199
|
-
lane,
|
|
200
|
-
source: lane === "in-process" ? "default-unset" : DEPLOYMENT_SHAPE_PREDICATES.singleMachineDefaultLane.holds({ remoteExec }) ? "default-local-provider" : "explicit-env",
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
204
|
const ENV_VALUE_ECHO_CHARS = 120;
|
|
204
205
|
export function parseConfigProvider() {
|
|
205
206
|
const raw = process.env.CONFIG_PROVIDER;
|
|
@@ -208,7 +209,7 @@ export function parseConfigProvider() {
|
|
|
208
209
|
const word = CONFIG_PROVIDER_WORDS.find((w) => w === raw);
|
|
209
210
|
if (word === undefined) {
|
|
210
211
|
throw new Error(`env CONFIG_PROVIDER="${echoCallerText(raw, { maxChars: ENV_VALUE_ECHO_CHARS })}" must be one of: ${CONFIG_PROVIDER_WORDS.join(", ")} — or leave it unset (then ${WEB_ADMIN_ENV.url}, if set, selects the center as the config source; otherwise this worker is env-only). ` +
|
|
211
|
-
`The word is matched exactly (no trimming, no case folding). Refusing to boot rather than guessing: the config source
|
|
212
|
+
`The word is matched exactly (no trimming, no case folding). Refusing to boot rather than guessing: the config source and the local config root both key on this one word.`);
|
|
212
213
|
}
|
|
213
214
|
return word;
|
|
214
215
|
}
|
|
@@ -254,10 +255,6 @@ export function logConfigDiagnostics(logger) {
|
|
|
254
255
|
}
|
|
255
256
|
}
|
|
256
257
|
}
|
|
257
|
-
const laneNotice = EXEC_LANE_NOTICE;
|
|
258
|
-
EXEC_LANE_NOTICE = undefined;
|
|
259
|
-
if (laneNotice && logger.info)
|
|
260
|
-
logger.info("exec_lane_selected", { lane: laneNotice.lane, source: laneNotice.source });
|
|
261
258
|
if (logger.debug) {
|
|
262
259
|
for (const k of configKnobTable()) {
|
|
263
260
|
logger.debug("config_knob_polarity", {
|
|
@@ -407,8 +404,21 @@ function parseDeviceRelayUrlEnv(raw) {
|
|
|
407
404
|
}
|
|
408
405
|
return { kind: "url", url: raw };
|
|
409
406
|
}
|
|
407
|
+
export function entryDeclarableRemoteExec(lane) {
|
|
408
|
+
switch (lane) {
|
|
409
|
+
case "host":
|
|
410
|
+
return {
|
|
411
|
+
provider: "host",
|
|
412
|
+
...(process.env.HOST_WORKSPACE_BASE ? { workspaceBase: process.env.HOST_WORKSPACE_BASE } : {}),
|
|
413
|
+
...((n) => (n !== undefined ? { commandTimeoutMs: n } : {}))(optNumEnvStrict("HOST_COMMAND_TIMEOUT_MS")),
|
|
414
|
+
};
|
|
415
|
+
case "none":
|
|
416
|
+
return { provider: "none" };
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
const envNamesNoLane = (raw) => raw === undefined || raw === "";
|
|
410
420
|
function declaredExecutionLane(raw) {
|
|
411
|
-
if (raw
|
|
421
|
+
if (envNamesNoLane(raw))
|
|
412
422
|
return undefined;
|
|
413
423
|
const table = readDeclaredLaneTable(raw);
|
|
414
424
|
if ("refusal" in table)
|
|
@@ -422,7 +432,7 @@ function declaredExecutionLane(raw) {
|
|
|
422
432
|
const missing = laneMissingEnv(lane, process.env);
|
|
423
433
|
if (missing.length > 0) {
|
|
424
434
|
throw new Error(`REMOTE_EXEC=${lane} but required env ${missing.join(", ")} ${missing.length === 1 ? "is" : "are"} unset, empty or whitespace-only — it counts as absent: ` +
|
|
425
|
-
`refusing to start rather than silently
|
|
435
|
+
`refusing to start rather than silently running on another lane (#157; set ${missing.length === 1 ? "it" : "them"}, or declare REMOTE_EXEC=none if the agent's tools need no execution environment).`);
|
|
426
436
|
}
|
|
427
437
|
return lane;
|
|
428
438
|
}
|
|
@@ -563,9 +573,9 @@ function ownCredentialNameProblem(name, channel) {
|
|
|
563
573
|
}
|
|
564
574
|
const NAMES_IN_FORCE = {
|
|
565
575
|
LSP_ENV_ALLOW: (c) => c.lspEnvAllow,
|
|
566
|
-
E2B_SANDBOX_ENV: (c) => (c.remoteExec
|
|
567
|
-
K8S_SANDBOX_ENV: (c) => (c.remoteExec
|
|
568
|
-
DOCKER_SANDBOX_ENV: (c) => (c.remoteExec
|
|
576
|
+
E2B_SANDBOX_ENV: (c) => (c.remoteExec.provider === "e2b" ? Object.keys(sandboxForwardedEnvOf(c)) : []),
|
|
577
|
+
K8S_SANDBOX_ENV: (c) => (c.remoteExec.provider === "k8s" ? Object.keys(sandboxForwardedEnvOf(c)) : []),
|
|
578
|
+
DOCKER_SANDBOX_ENV: (c) => (c.remoteExec.provider === "local-docker" ? Object.keys(sandboxForwardedEnvOf(c)) : []),
|
|
569
579
|
};
|
|
570
580
|
const SERVER_ENV_NAME_ALLOWLIST_KNOBS = Object.keys(NAMES_IN_FORCE);
|
|
571
581
|
export function sandboxEnvNamesInForce(seats) {
|
|
@@ -1060,16 +1070,26 @@ function parseModelDomain() {
|
|
|
1060
1070
|
}
|
|
1061
1071
|
const extraBody = buildExtraBody();
|
|
1062
1072
|
const thinkingDefault = parseDefaultThinking(process.env.MODEL_DEFAULT_THINKING);
|
|
1063
|
-
const
|
|
1073
|
+
const envLaneWire = ((lane) => {
|
|
1074
|
+
switch (lane) {
|
|
1075
|
+
case "anthropic":
|
|
1076
|
+
return { api: "anthropic-messages", promptCacheFamily: "input-excludes-cached" };
|
|
1077
|
+
case "gateway":
|
|
1078
|
+
return { api: "openai-completions", promptCacheFamily: "input-includes-cached" };
|
|
1079
|
+
}
|
|
1080
|
+
})(catalogBrainLane(provider));
|
|
1081
|
+
const envApi = envLaneWire.api;
|
|
1082
|
+
const envCompatDeclared = buildModelCompat("openai-completions", {
|
|
1064
1083
|
reasoningEffortLevels: parseReasoningEffortLevels(csv("MODEL_REASONING_EFFORT_LEVELS")),
|
|
1065
1084
|
thinkingFormat: parseThinkingFormat(process.env.MODEL_THINKING_FORMAT),
|
|
1066
1085
|
});
|
|
1067
|
-
const envCompat =
|
|
1086
|
+
const envCompat = envApi === "openai-completions" ? envCompatDeclared : undefined;
|
|
1068
1087
|
const modelCapability = { reasoning: parseBoolWord("MODEL_REASONING", process.env.MODEL_REASONING), vision: parseBoolWord("MODEL_VISION", process.env.MODEL_VISION) };
|
|
1088
|
+
const contextWindow = numEnv("MODEL_CONTEXT_WINDOW", String(ASSUMED_CONTEXT_WINDOW));
|
|
1069
1089
|
const model = {
|
|
1070
1090
|
id: modelId,
|
|
1071
1091
|
name: modelId,
|
|
1072
|
-
api:
|
|
1092
|
+
api: envApi,
|
|
1073
1093
|
provider,
|
|
1074
1094
|
baseUrl: "",
|
|
1075
1095
|
...mintCapabilityKeys(modelCapability),
|
|
@@ -1079,12 +1099,12 @@ function parseModelDomain() {
|
|
|
1079
1099
|
cacheRead: costEnv("MODEL_COST_CACHE_READ", "unset"),
|
|
1080
1100
|
cacheWrite: costEnv("MODEL_COST_CACHE_WRITE", "unset"),
|
|
1081
1101
|
}, undefined)),
|
|
1082
|
-
contextWindow
|
|
1102
|
+
contextWindow,
|
|
1083
1103
|
maxTokens: process.env.MODEL_MAX_TOKENS !== undefined && process.env.MODEL_MAX_TOKENS !== ""
|
|
1084
1104
|
? parseNumOrFail("MODEL_MAX_TOKENS", process.env.MODEL_MAX_TOKENS)
|
|
1085
|
-
: Math.min(32000,
|
|
1105
|
+
: Math.min(32000, contextWindow),
|
|
1086
1106
|
...(optFinitePositiveEnv("MODEL_CHARS_PER_TOKEN") !== undefined ? { charsPerToken: optFinitePositiveEnv("MODEL_CHARS_PER_TOKEN") } : {}),
|
|
1087
|
-
params: { promptCacheFamily:
|
|
1107
|
+
params: { promptCacheFamily: envLaneWire.promptCacheFamily },
|
|
1088
1108
|
...(thinkingDefault ? { defaultThinking: thinkingDefault } : {}),
|
|
1089
1109
|
...(envCompat ? { compat: envCompat } : {}),
|
|
1090
1110
|
...(extraBody ? { extraBody } : {}),
|
|
@@ -1247,11 +1267,9 @@ function parseDefaultThinking(raw) {
|
|
|
1247
1267
|
const v = raw?.trim();
|
|
1248
1268
|
if (v === undefined || v === "")
|
|
1249
1269
|
return undefined;
|
|
1250
|
-
if (v
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
throw new Error(`env MODEL_DEFAULT_THINKING="${v}" is not a thinking tier — valid: ${THINKING_LEVELS.join(" | ")} | off ` +
|
|
1254
|
-
`("off" = no model-level default). A typo used to be dropped SILENTLY, leaving the deployment on no default at all (#210 A 档).`);
|
|
1270
|
+
if (!isModelThinkingLevel(v)) {
|
|
1271
|
+
throw new Error(`env MODEL_DEFAULT_THINKING="${v}" is not a model thinking tier — valid: ${MODEL_THINKING_LEVELS.join(" | ")} ` +
|
|
1272
|
+
`("off" = the model's requests default to thinking off; leave it unset for no model-level default). A typo used to be dropped SILENTLY, leaving the deployment on no default at all (#210 A 档).`);
|
|
1255
1273
|
}
|
|
1256
1274
|
return v;
|
|
1257
1275
|
}
|
|
@@ -1261,7 +1279,7 @@ function parseReasoningEffortLevels(words) {
|
|
|
1261
1279
|
const bad = words.filter((w) => !isThinkingTier(w));
|
|
1262
1280
|
if (bad.length > 0) {
|
|
1263
1281
|
throw new Error(`env MODEL_REASONING_EFFORT_LEVELS has unknown tier(s): ${bad.join(", ")} (valid: ${THINKING_LEVELS.join(" | ")})` +
|
|
1264
|
-
`${bad.includes("off") ? ' — "off" belongs to MODEL_DEFAULT_THINKING (
|
|
1282
|
+
`${bad.includes("off") ? ' — "off" belongs to MODEL_DEFAULT_THINKING (the model default tier), it is not an effort tier an endpoint can accept' : ""}. ` +
|
|
1265
1283
|
`Bad words used to be dropped SILENTLY, narrowing the declared ladder without a word (#210 A 档).`);
|
|
1266
1284
|
}
|
|
1267
1285
|
return words.filter(isThinkingTier);
|
|
@@ -1299,7 +1317,7 @@ function uncompilableRuleGuidance(name, behavior, pathBases) {
|
|
|
1299
1317
|
const issue = issues[0];
|
|
1300
1318
|
if (issue === undefined)
|
|
1301
1319
|
return undefined;
|
|
1302
|
-
return
|
|
1320
|
+
return deploymentRuleRefusal(issue);
|
|
1303
1321
|
}
|
|
1304
1322
|
function findUnmatchableToolNames(names, opts) {
|
|
1305
1323
|
const out = [];
|
|
@@ -1312,7 +1330,8 @@ function findUnmatchableToolNames(names, opts) {
|
|
|
1312
1330
|
}
|
|
1313
1331
|
}
|
|
1314
1332
|
const subject = opts.consumer === "tool-name-table" ? name : ruleEntryToolName(name);
|
|
1315
|
-
const
|
|
1333
|
+
const judged = unmatchableRuleNameOf(subject, opts.behavior);
|
|
1334
|
+
const verdict = opts.noticeSeat !== undefined && isRetiredLeftOut(name) ? undefined : judged;
|
|
1316
1335
|
if (verdict?.kind === "retired") {
|
|
1317
1336
|
out.push({ name, guidance: describeUnmatchableRuleName(verdict, subject), reason: verdict.kind });
|
|
1318
1337
|
continue;
|
|
@@ -1418,16 +1437,28 @@ function parseApprovalDomain(ctx) {
|
|
|
1418
1437
|
windowMsSource: streamAskWindowMsSource,
|
|
1419
1438
|
onPostureYield: (facts) => {
|
|
1420
1439
|
streamAskWindowMsEffectiveSource = "engine-default";
|
|
1421
|
-
|
|
1440
|
+
writeLogText("stderr", `[config] stream_ask_window_posture_yielded: the single-user posture default STREAM_ASK_WINDOW_MS=${facts.windowMs} would violate the explicit STREAM_APPROVAL_ORPHAN_TTL_MS=${facts.orphanTtlMs} (window + ADHOC_GRACE ${facts.adhocGraceMs} must be strictly less) — falling back to 300000; set STREAM_ASK_WINDOW_MS explicitly to choose`);
|
|
1422
1441
|
},
|
|
1423
1442
|
});
|
|
1424
1443
|
const directApprovalDoor = boolEnv("DIRECT_APPROVAL_DOOR", false);
|
|
1425
1444
|
const dgHmacKeys = parseApprovalHmacKeys(process.env.APPROVAL_HMAC_KEYS, announceKeySetRejection("APPROVAL_HMAC_KEYS"));
|
|
1426
1445
|
const durableApproval = postureOn("DURABLE_APPROVAL", infraReady);
|
|
1427
1446
|
const rejectUnmatchableToolNames = (envName, names) => {
|
|
1428
|
-
const unmatchable = unmatchableToolNamesRefusal(envName, names, { consumer: "tool-name-table", behavior: NAME_TABLE_BEHAVIOR });
|
|
1447
|
+
const unmatchable = unmatchableToolNamesRefusal(envName, names, { consumer: "tool-name-table", behavior: NAME_TABLE_BEHAVIOR, noticeSeat: "server" });
|
|
1429
1448
|
if (unmatchable !== undefined)
|
|
1430
1449
|
throw new Error(unmatchable.message);
|
|
1450
|
+
const skipped = retiredLeftOutEntries(envName, names);
|
|
1451
|
+
if (skipped.length > 0) {
|
|
1452
|
+
CONFIG_NOTICES.push({
|
|
1453
|
+
level: "warn",
|
|
1454
|
+
event: "approval_list_legacy_tool_name",
|
|
1455
|
+
fields: {
|
|
1456
|
+
env: envName,
|
|
1457
|
+
entries: JSON.stringify(skipped.map((s) => s.entry)),
|
|
1458
|
+
note: `${skipped.map((s) => `${displayListEntry(s.entry)} (${s.guidance})`).join("; ")} — ${skipped.length === 1 ? "a tool name" : "tool names"} the engine retired with no successor: ${skipped.length === 1 ? "it reaches" : "they reach"} no tool this server knows, so ${skipped.length === 1 ? "the entry guards" : "the entries guard"} nothing (kept as written: a tool of that exact name mounted by an embedder is still matched) and the server starts. Remove ${skipped.length === 1 ? "it" : "them"} from ${envName} if written for the retired tool.`,
|
|
1459
|
+
},
|
|
1460
|
+
});
|
|
1461
|
+
}
|
|
1431
1462
|
return names;
|
|
1432
1463
|
};
|
|
1433
1464
|
return {
|
|
@@ -1659,6 +1690,7 @@ function parseMemoryEmbedder(ctx) {
|
|
|
1659
1690
|
const dimRaw = process.env.MEMORY_EMBEDDER_DIM || undefined;
|
|
1660
1691
|
const apiKey = process.env.MEMORY_EMBEDDER_API_KEY || undefined;
|
|
1661
1692
|
const timeoutRaw = process.env.MEMORY_EMBEDDER_TIMEOUT_MS || undefined;
|
|
1693
|
+
const reembedRaw = process.env.MEMORY_EMBEDDER_REEMBED || undefined;
|
|
1662
1694
|
const trio = [
|
|
1663
1695
|
["MEMORY_EMBEDDER_ENDPOINT", endpoint],
|
|
1664
1696
|
["MEMORY_EMBEDDER_MODEL", model],
|
|
@@ -1666,8 +1698,11 @@ function parseMemoryEmbedder(ctx) {
|
|
|
1666
1698
|
];
|
|
1667
1699
|
const missing = trio.filter(([, v]) => v === undefined).map(([name]) => name);
|
|
1668
1700
|
if (missing.length === 3) {
|
|
1669
|
-
|
|
1670
|
-
|
|
1701
|
+
const dependents = [["MEMORY_EMBEDDER_TIMEOUT_MS", timeoutRaw], ["MEMORY_EMBEDDER_API_KEY", apiKey], ["MEMORY_EMBEDDER_REEMBED", reembedRaw]]
|
|
1702
|
+
.filter(([, v]) => v !== undefined)
|
|
1703
|
+
.map(([name]) => name);
|
|
1704
|
+
if (dependents.length > 0) {
|
|
1705
|
+
throw new Error(`${dependents.join("/")} ${dependents.length === 1 ? "is" : "are"} set but the embedder itself is not configured — refusing to start half-configured (set MEMORY_EMBEDDER_ENDPOINT, MEMORY_EMBEDDER_MODEL and MEMORY_EMBEDDER_DIM to enable the memory vector plane, or unset the other MEMORY_EMBEDDER_* keys)`);
|
|
1671
1706
|
}
|
|
1672
1707
|
return undefined;
|
|
1673
1708
|
}
|
|
@@ -1690,12 +1725,26 @@ function parseMemoryEmbedder(ctx) {
|
|
|
1690
1725
|
if (!ctx.memoryEngineEnabled) {
|
|
1691
1726
|
throw new Error("MEMORY_EMBEDDER_* is set but MEMORY_ENGINE=off — the memory engine is not wired at all, so the embedder would never be called; unset one of the two (#228)");
|
|
1692
1727
|
}
|
|
1728
|
+
if (reembedRaw !== undefined) {
|
|
1729
|
+
const configured = formatEmbedderIdentityToken({ model, dimensions });
|
|
1730
|
+
const confirmed = parseEmbedderIdentityToken(reembedRaw);
|
|
1731
|
+
if (confirmed === undefined) {
|
|
1732
|
+
throw new Error(`MEMORY_EMBEDDER_REEMBED=${JSON.stringify(reembedRaw.length > 200 ? `${reembedRaw.slice(0, 200)}…` : reembedRaw)} is not a re-embed confirmation — the value must name the embedder identity being confirmed as <model>/<dimensions> ` +
|
|
1733
|
+
`(for this configuration: ${formatReembedAssignment({ model, dimensions })}). It confirms that the memory vector column may be cleared and re-embedded into that identity when the recorded identity does not match; ` +
|
|
1734
|
+
"an on/off value is refused because it would also confirm the NEXT model change. Fix the value or unset it.");
|
|
1735
|
+
}
|
|
1736
|
+
if (confirmed.model !== model || confirmed.dimensions !== dimensions) {
|
|
1737
|
+
throw new Error(`MEMORY_EMBEDDER_REEMBED=${formatEmbedderIdentityToken(confirmed)} confirms re-embedding into a different identity than the configured embedder ${configured} ` +
|
|
1738
|
+
`(MEMORY_EMBEDDER_MODEL / MEMORY_EMBEDDER_DIM) — a stale confirmation never clears vectors for another model. Set ${formatReembedAssignment({ model, dimensions })} to confirm this change, or unset it.`);
|
|
1739
|
+
}
|
|
1740
|
+
}
|
|
1693
1741
|
return {
|
|
1694
1742
|
endpoint,
|
|
1695
1743
|
model,
|
|
1696
1744
|
dimensions,
|
|
1697
1745
|
timeoutMs: numEnvBounded("MEMORY_EMBEDDER_TIMEOUT_MS", "30000", 1000, 300_000),
|
|
1698
1746
|
...(apiKey !== undefined ? { apiKey } : {}),
|
|
1747
|
+
...(reembedRaw !== undefined ? { reembedConfirmed: true } : {}),
|
|
1699
1748
|
};
|
|
1700
1749
|
}
|
|
1701
1750
|
function parseMemoryConsolidationDriver() {
|
|
@@ -1959,8 +2008,14 @@ function parseAuthDomain(ctx) {
|
|
|
1959
2008
|
principalJwtMaxTtlSec,
|
|
1960
2009
|
};
|
|
1961
2010
|
}
|
|
2011
|
+
export const BG_AGENT_SILENCE_FLOOR_MS = 10 * 60_000;
|
|
2012
|
+
export function backgroundAgentStallFloorMs(f) {
|
|
2013
|
+
const personWaitMs = Math.max(f.streamApproval.windowMs, f.streamApproval.unreachedTtlMs, (f.questionThrottle ?? DEFAULT_QUESTION_THROTTLE).ttlMs, f.mcpElicitation.throttle.ttlMs);
|
|
2014
|
+
return Math.max(BG_AGENT_SILENCE_FLOOR_MS, personWaitMs + f.commandCeilingMs);
|
|
2015
|
+
}
|
|
1962
2016
|
function parseOrchestrationDomain(ctx) {
|
|
1963
2017
|
const { postureOn, singleUserTurnkey } = ctx;
|
|
2018
|
+
const backgroundAgentStallFloor = backgroundAgentStallFloorMs({ ...ctx.personGates, commandCeilingMs: resolveBashTimeoutCaps().maxMs });
|
|
1964
2019
|
const workflowSizeGuidelineRaw = process.env.WORKFLOW_SIZE_GUIDELINE;
|
|
1965
2020
|
if (workflowSizeGuidelineRaw !== undefined && !["small", "medium", "large", "unrestricted"].includes(workflowSizeGuidelineRaw)) {
|
|
1966
2021
|
throw new Error(`WORKFLOW_SIZE_GUIDELINE must be small|medium|large|unrestricted, got "${workflowSizeGuidelineRaw}"`);
|
|
@@ -1970,20 +2025,14 @@ function parseOrchestrationDomain(ctx) {
|
|
|
1970
2025
|
const bakeRunnerPrincipal = env("BAKE_RUNNER_PRINCIPAL", "system:bake-runner");
|
|
1971
2026
|
hostBackgroundShellEnabled();
|
|
1972
2027
|
hostExecSpoolEnabled();
|
|
1973
|
-
const lspHostEnabled = (
|
|
1974
|
-
|
|
1975
|
-
throw new Error("LSP_ENABLED=false no longer drives the HOST lane (removed in server 3.0.0) — set LSP_HOST_ENABLED=false " +
|
|
1976
|
-
"for the host lane; LSP_ENABLED remains the SANDBOX-lane opt-in only (migration table in USAGE.md)");
|
|
1977
|
-
}
|
|
1978
|
-
return boolEnv("LSP_HOST_ENABLED", true);
|
|
1979
|
-
})();
|
|
2028
|
+
const lspHostEnabled = boolEnv("LSP_HOST_ENABLED", true);
|
|
2029
|
+
const autoBackgroundOnTimeout = boolEnv("AUTO_BACKGROUND_ON_TIMEOUT", true);
|
|
1980
2030
|
const lspEnvAllow = parseEnvNameAllowlist("LSP_ENV_ALLOW", singleUserTurnkey) ?? [];
|
|
1981
2031
|
const declaredLane = declaredExecutionLane(process.env.REMOTE_EXEC);
|
|
1982
2032
|
const readFaceFacts = process.env.READ_FACE !== undefined
|
|
1983
2033
|
? { readFace: enumEnv("READ_FACE", "roots", ["open", "roots"]), readFaceSource: "env" }
|
|
1984
2034
|
: { readFaceSource: "engine-default" };
|
|
1985
2035
|
return {
|
|
1986
|
-
requireExecutionLane: boolEnv("REQUIRE_EXECUTION_LANE", false),
|
|
1987
2036
|
...readFaceFacts,
|
|
1988
2037
|
...optionalEnumKey("taskWriteFaceEscalation", "TASK_WRITE_FACE_ESCALATION", process.env.TASK_WRITE_FACE_ESCALATION, TASK_WRITE_FACE_ESCALATIONS),
|
|
1989
2038
|
...(process.env.READ_DENY_PATTERNS !== undefined ? { readDenyPatterns: parseReadDenyPatternsEnv(process.env.READ_DENY_PATTERNS) } : {}),
|
|
@@ -2064,12 +2113,8 @@ function parseOrchestrationDomain(ctx) {
|
|
|
2064
2113
|
...(process.env.ADB_MOUNT_PATH ? { mountPath: process.env.ADB_MOUNT_PATH } : {}),
|
|
2065
2114
|
}
|
|
2066
2115
|
:
|
|
2067
|
-
declaredLane === "host"
|
|
2068
|
-
?
|
|
2069
|
-
provider: "host",
|
|
2070
|
-
...(process.env.HOST_WORKSPACE_BASE ? { workspaceBase: process.env.HOST_WORKSPACE_BASE } : {}),
|
|
2071
|
-
...((n) => (n !== undefined ? { commandTimeoutMs: n } : {}))(optNumEnvStrict("HOST_COMMAND_TIMEOUT_MS")),
|
|
2072
|
-
}
|
|
2116
|
+
declaredLane === "host" || declaredLane === "none"
|
|
2117
|
+
? entryDeclarableRemoteExec(declaredLane)
|
|
2073
2118
|
:
|
|
2074
2119
|
declaredLane === "local-docker" && process.env.DOCKER_IMAGE
|
|
2075
2120
|
? {
|
|
@@ -2087,6 +2132,7 @@ function parseOrchestrationDomain(ctx) {
|
|
|
2087
2132
|
: {}),
|
|
2088
2133
|
...((n) => (n !== undefined ? { commandTimeoutMs: n } : {}))(optNumEnvStrict("DOCKER_COMMAND_TIMEOUT_MS")),
|
|
2089
2134
|
...((names) => (names !== undefined ? { env: allowlistedEnv(names, process.env) } : {}))(parseEnvNameAllowlist("DOCKER_SANDBOX_ENV", singleUserTurnkey)),
|
|
2135
|
+
...((capacity) => (capacity !== undefined ? { capacity } : {}))(parseLocalDockerCapacityEnv()),
|
|
2090
2136
|
}
|
|
2091
2137
|
:
|
|
2092
2138
|
declaredLane === "device"
|
|
@@ -2103,9 +2149,7 @@ function parseOrchestrationDomain(ctx) {
|
|
|
2103
2149
|
...(process.env.DEVICE_SUPERSEDE ? { supersede: enumEnv("DEVICE_SUPERSEDE", "stale_only", ["stale_only", "deny"]) } : {}),
|
|
2104
2150
|
}
|
|
2105
2151
|
:
|
|
2106
|
-
|
|
2107
|
-
? { provider: "host", singleMachineDefault: true }
|
|
2108
|
-
: undefined,
|
|
2152
|
+
undefined,
|
|
2109
2153
|
worktreeIsolation: boolEnv("WORKTREE_ISOLATION_ENABLED", false) && process.env.WORKTREE_REPO_ROOT
|
|
2110
2154
|
? {
|
|
2111
2155
|
repoRoot: process.env.WORKTREE_REPO_ROOT,
|
|
@@ -2136,7 +2180,8 @@ function parseOrchestrationDomain(ctx) {
|
|
|
2136
2180
|
workflowRunRetentionMs: clampEnvWithWarn("WORKFLOW_RUN_RETENTION_MS", String(30 * 24 * 60 * 60 * 1000), 60_000),
|
|
2137
2181
|
...(usageWindows ? { usageWindows } : {}),
|
|
2138
2182
|
backgroundAgentRetentionMs: clampEnvWithWarn("BG_AGENT_RETENTION_MS", String(7 * 24 * 60 * 60 * 1000), 60_000),
|
|
2139
|
-
backgroundAgentStaleRunningMs: clampEnvWithWarn("BG_AGENT_STALE_RUNNING_MS", String(15 * 60_000),
|
|
2183
|
+
backgroundAgentStaleRunningMs: clampEnvWithWarn("BG_AGENT_STALE_RUNNING_MS", String(15 * 60_000), BG_AGENT_SILENCE_FLOOR_MS),
|
|
2184
|
+
backgroundAgentStallMs: clampEnvWithWarn("BG_AGENT_STALL_MS", String(backgroundAgentStallFloor), backgroundAgentStallFloor),
|
|
2140
2185
|
backgroundAgentParkClaimStaleMs: clampEnvWithWarn("BG_AGENT_PARK_CLAIM_STALE_MS", String(60 * 60_000), 60_000),
|
|
2141
2186
|
rosterRetentionMs: clampEnvWithWarn("ROSTER_RETENTION_MS", String(30 * 24 * 60 * 60 * 1000), 60_000),
|
|
2142
2187
|
leaderRunStaleMs: clampEnvWithWarn("LEADER_RUN_STALE_MS", String(26 * 60 * 60 * 1000), 60_000),
|
|
@@ -2155,8 +2200,8 @@ function parseOrchestrationDomain(ctx) {
|
|
|
2155
2200
|
selectEnvironmentTool: boolEnv("SELECT_ENVIRONMENT_TOOL", true),
|
|
2156
2201
|
envFactsEnabled: boolEnv("SANDBOX_ENV_FACTS", true),
|
|
2157
2202
|
toolDeferLongtail: boolEnv("TOOL_DEFER_LONGTAIL", false),
|
|
2158
|
-
lspEnabled: boolEnv("LSP_ENABLED", false),
|
|
2159
2203
|
lspHostEnabled,
|
|
2204
|
+
autoBackgroundOnTimeout,
|
|
2160
2205
|
lspEnvAllow,
|
|
2161
2206
|
workflowAgentsReadOnly: boolEnv("WORKFLOW_AGENTS_READONLY", false),
|
|
2162
2207
|
imageBakes: {
|
|
@@ -2241,7 +2286,7 @@ function parseLimitsHttpDomain() {
|
|
|
2241
2286
|
return sec;
|
|
2242
2287
|
})(),
|
|
2243
2288
|
reapIntervalSec: numEnv("REAP_INTERVAL_SEC", "60"),
|
|
2244
|
-
runStaleSec: numEnv("REAP_RUN_STALE_SEC",
|
|
2289
|
+
runStaleSec: numEnv("REAP_RUN_STALE_SEC", String(RUN_STALE_SEC_DEFAULT)),
|
|
2245
2290
|
toolResultTtlSec: (() => {
|
|
2246
2291
|
const ttl = numEnv("TOOL_RESULT_TTL_SEC", "86400");
|
|
2247
2292
|
if (ttl <= 0) {
|
|
@@ -2282,7 +2327,11 @@ function parseGitApiKind(raw, baseUrl) {
|
|
|
2282
2327
|
throw new Error(`GIT_API_BASEURL="${buildDisplaySafeUrl(baseUrl)}" is not a valid URL (expected e.g. https://git.example.com)`);
|
|
2283
2328
|
}
|
|
2284
2329
|
const u = new URL(baseUrl);
|
|
2285
|
-
const
|
|
2330
|
+
const reading = hostOfUrl(baseUrl);
|
|
2331
|
+
if ("unreadable" in reading) {
|
|
2332
|
+
throw new Error(`GIT_API_BASEURL names no host — ${HOST_UNREADABLE_SENTENCE[reading.unreadable]} (expected e.g. https://git.example.com; the token goes in GIT_API_TOKEN)`);
|
|
2333
|
+
}
|
|
2334
|
+
const host = reading.host;
|
|
2286
2335
|
const githubFamily = host === "github.com" || host === "api.github.com" || host.endsWith(".github.com");
|
|
2287
2336
|
if (kind === "gitea" && githubFamily) {
|
|
2288
2337
|
throw new Error(`GIT_API_BASEURL points at ${host} but GIT_API_KIND is "gitea" — the Gitea API shapes 404 on GitHub. Set GIT_API_KIND=github (base url should be https://api.github.com, or your GHE /api/v3 root).`);
|
|
@@ -2471,6 +2520,11 @@ function parseA2aServe() {
|
|
|
2471
2520
|
blockingWaitMs: numEnvBounded("A2A_SERVE_BLOCKING_WAIT_MS", "45000", 0, 300_000),
|
|
2472
2521
|
};
|
|
2473
2522
|
}
|
|
2523
|
+
const A2A_SERVE_SKILLS_VERSION = 2;
|
|
2524
|
+
const A2A_SERVE_SKILL_KEYS = ["id", "name", "description", "scenario", "audience"];
|
|
2525
|
+
const A2A_SERVE_SKILL_ENTRY_SHAPE = "{id, name?, description?, scenario, audience?}";
|
|
2526
|
+
const A2A_SERVE_SKILLS_SHAPE = `{"version":${A2A_SERVE_SKILLS_VERSION},"skills":[${A2A_SERVE_SKILL_ENTRY_SHAPE}, …]}`;
|
|
2527
|
+
const A2A_SERVE_MAX_AUDIENCE = 64;
|
|
2474
2528
|
function parseA2aServeSkills(raw) {
|
|
2475
2529
|
if (raw === undefined || raw.trim() === "")
|
|
2476
2530
|
return [];
|
|
@@ -2479,18 +2533,38 @@ function parseA2aServeSkills(raw) {
|
|
|
2479
2533
|
parsed = JSON.parse(raw);
|
|
2480
2534
|
}
|
|
2481
2535
|
catch (e) {
|
|
2482
|
-
throw new Error(`A2A_SERVE_SKILLS must be a JSON
|
|
2483
|
-
}
|
|
2484
|
-
if (
|
|
2485
|
-
throw new Error(`A2A_SERVE_SKILLS
|
|
2486
|
-
|
|
2487
|
-
|
|
2536
|
+
throw new Error(`A2A_SERVE_SKILLS must be a JSON object ${A2A_SERVE_SKILLS_SHAPE} — it did not parse as JSON (${e.message})`);
|
|
2537
|
+
}
|
|
2538
|
+
if (Array.isArray(parsed)) {
|
|
2539
|
+
throw new Error(`A2A_SERVE_SKILLS is a bare JSON array — that form is retired: the value is now a versioned envelope ${A2A_SERVE_SKILLS_SHAPE}. ` +
|
|
2540
|
+
`Migrate by wrapping the old value unchanged: {"version":${A2A_SERVE_SKILLS_VERSION},"skills":<the old array>} (an \`audience\` member is only read inside the envelope).`);
|
|
2541
|
+
}
|
|
2542
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
2543
|
+
throw new Error(`A2A_SERVE_SKILLS must be a JSON object ${A2A_SERVE_SKILLS_SHAPE}; got ${parsed === null ? "null" : typeof parsed}`);
|
|
2544
|
+
const envelope = parsed;
|
|
2545
|
+
for (const key of Object.keys(envelope)) {
|
|
2546
|
+
if (key !== "version" && key !== "skills")
|
|
2547
|
+
throw new Error(`A2A_SERVE_SKILLS carries an unknown key ${JSON.stringify(key.slice(0, 64))} — the envelope's keys are exactly "version" and "skills"`);
|
|
2548
|
+
}
|
|
2549
|
+
if (envelope.version !== A2A_SERVE_SKILLS_VERSION) {
|
|
2550
|
+
throw new Error(`A2A_SERVE_SKILLS.version must be the number ${A2A_SERVE_SKILLS_VERSION} — this build reads exactly that envelope version (a different or missing version is refused rather than guessed: the version is what keeps a build from misreading a shape it does not know)`);
|
|
2551
|
+
}
|
|
2552
|
+
const skills = envelope.skills;
|
|
2553
|
+
if (!Array.isArray(skills))
|
|
2554
|
+
throw new Error(`A2A_SERVE_SKILLS.skills must be a JSON array of ${A2A_SERVE_SKILL_ENTRY_SHAPE} objects`);
|
|
2555
|
+
if (skills.length > A2A_SERVE_MAX_SKILLS)
|
|
2556
|
+
throw new Error(`A2A_SERVE_SKILLS declares ${skills.length} skills — at most ${A2A_SERVE_MAX_SKILLS} are accepted (the card is a public document fetched by anonymous callers)`);
|
|
2488
2557
|
const seen = new Set();
|
|
2489
|
-
return
|
|
2490
|
-
const at = `A2A_SERVE_SKILLS[${i}]`;
|
|
2558
|
+
return skills.map((entry, i) => {
|
|
2559
|
+
const at = `A2A_SERVE_SKILLS.skills[${i}]`;
|
|
2491
2560
|
if (typeof entry !== "object" || entry === null || Array.isArray(entry))
|
|
2492
|
-
throw new Error(`${at} must be an object {
|
|
2561
|
+
throw new Error(`${at} must be an object ${A2A_SERVE_SKILL_ENTRY_SHAPE}`);
|
|
2493
2562
|
const e = entry;
|
|
2563
|
+
for (const key of Object.keys(e)) {
|
|
2564
|
+
if (!A2A_SERVE_SKILL_KEYS.includes(key)) {
|
|
2565
|
+
throw new Error(`${at} carries an unknown key ${JSON.stringify(key.slice(0, 64))} — an entry's keys are exactly ${A2A_SERVE_SKILL_KEYS.map((k) => JSON.stringify(k)).join(", ")} (an unknown key is refused, never dropped: a misspelt "audience" would otherwise publish the skill to everyone)`);
|
|
2566
|
+
}
|
|
2567
|
+
}
|
|
2494
2568
|
const str = (key, required, max) => {
|
|
2495
2569
|
const v = e[key];
|
|
2496
2570
|
if (v === undefined) {
|
|
@@ -2511,7 +2585,36 @@ function parseA2aServeSkills(raw) {
|
|
|
2511
2585
|
const name = str("name", false, A2A_SERVE_MAX_TEXT_CHARS);
|
|
2512
2586
|
const description = str("description", false, A2A_SERVE_MAX_TEXT_CHARS);
|
|
2513
2587
|
const scenario = str("scenario", true, A2A_SERVE_MAX_ID_CHARS);
|
|
2514
|
-
|
|
2588
|
+
const audience = parseA2aServeAudience(e.audience, at);
|
|
2589
|
+
return { id, ...(name !== undefined ? { name } : {}), ...(description !== undefined ? { description } : {}), scenario, ...(audience !== undefined ? { audience } : {}) };
|
|
2590
|
+
});
|
|
2591
|
+
}
|
|
2592
|
+
function parseA2aServeAudience(v, at) {
|
|
2593
|
+
if (v === undefined)
|
|
2594
|
+
return undefined;
|
|
2595
|
+
const rule = `must be a non-empty JSON array of at most ${A2A_SERVE_MAX_AUDIENCE} principal names (omit the key to publish the skill to every caller)`;
|
|
2596
|
+
if (!Array.isArray(v) || v.length === 0)
|
|
2597
|
+
throw new Error(`${at}.audience ${rule}`);
|
|
2598
|
+
if (v.length > A2A_SERVE_MAX_AUDIENCE)
|
|
2599
|
+
throw new Error(`${at}.audience lists ${v.length} principals — it ${rule}`);
|
|
2600
|
+
return v.map((item, j) => {
|
|
2601
|
+
if (typeof item !== "string")
|
|
2602
|
+
throw new Error(`${at}.audience[${j}] must be a string (a principal name)`);
|
|
2603
|
+
const problem = principalShapeProblem(item);
|
|
2604
|
+
switch (problem) {
|
|
2605
|
+
case undefined:
|
|
2606
|
+
return item;
|
|
2607
|
+
case "not_a_name":
|
|
2608
|
+
throw new Error(`${at}.audience[${j}] is not a principal name (empty, or carries characters no verified identity can have) — list the exact principal names this skill is published to`);
|
|
2609
|
+
case "reserved":
|
|
2610
|
+
throw new Error(`${at}.audience[${j}] is a reserved internal identifier (an internal scope sentinel or a reserved prefix), which no caller can authenticate as — list real principal names`);
|
|
2611
|
+
case "too_long":
|
|
2612
|
+
throw new Error(`${at}.audience[${j}] exceeds ${PRINCIPAL_MAX_BYTES} UTF-8 bytes, longer than any principal a caller can authenticate as`);
|
|
2613
|
+
default: {
|
|
2614
|
+
const unknownProblem = problem;
|
|
2615
|
+
throw new Error(`${at}.audience[${j}]: unknown principal-shape verdict ${String(unknownProblem)}`);
|
|
2616
|
+
}
|
|
2617
|
+
}
|
|
2515
2618
|
});
|
|
2516
2619
|
}
|
|
2517
2620
|
const STORE_GROUP_KEYS = [
|
|
@@ -2541,13 +2644,13 @@ const AUTH_GROUP_KEYS = [
|
|
|
2541
2644
|
"principalJwtMaxTtlSec", "authBridgeIssuer", "bindHost", "bindHostSource",
|
|
2542
2645
|
];
|
|
2543
2646
|
const ORCHESTRATION_GROUP_KEYS = [
|
|
2544
|
-
"sandboxGit", "remoteExec", "remoteExecHomeDir", "
|
|
2647
|
+
"sandboxGit", "remoteExec", "remoteExecHomeDir", "worktreeIsolation", "leaderEnabled", "leaderFanoutEnabled", "routerEnabled", "selfOrchestrationEnabled",
|
|
2545
2648
|
"selfOrchestrationModels", "selfOrchestrationWorkerIsolation", "forkEnabled", "experimentalObserverAgents",
|
|
2546
2649
|
"schedulerEnabled", "schedulerSessionWakeup", "schedulerSessionLifetime", "schedulerStorePath", "planModeEnabled", "hooksTimeoutMs", "workflowRunStoreBackend",
|
|
2547
2650
|
"workflowOrphanGraceMs", "workflowJournalRetentionMs", "workflowRunRetentionMs", "usageWindows", "workflowAgentsReadOnly",
|
|
2548
|
-
"workflowSizeGuideline", "backgroundAgentRetentionMs", "backgroundAgentStaleRunningMs",
|
|
2651
|
+
"workflowSizeGuideline", "backgroundAgentRetentionMs", "backgroundAgentStaleRunningMs", "backgroundAgentStallMs",
|
|
2549
2652
|
"backgroundAgentParkClaimStaleMs", "delegationEntryCaps", "rosterRetentionMs", "leaderRunStaleMs", "scratchpadSweepTtlMs", "sandboxPkgSource", "sandboxPkgSourceCustom",
|
|
2550
|
-
"sessionAutoTitle", "sessionAutoTitleSource", "selectEnvironmentTool", "envFactsEnabled", "toolDeferLongtail", "
|
|
2653
|
+
"sessionAutoTitle", "sessionAutoTitleSource", "selectEnvironmentTool", "envFactsEnabled", "toolDeferLongtail", "lspHostEnabled", "lspEnvAllow", "autoBackgroundOnTimeout",
|
|
2551
2654
|
"imageBakes", "readFace", "readFaceSource", "taskWriteFaceEscalation", "readDenyPatterns", "readDenyBuiltinTiers", "readDenyBuiltinExclude", "readDenyFloorRequired", "sandboxReadFloor",
|
|
2552
2655
|
"agentConfigDir", "configLkgPath", "configLkgEnabled",
|
|
2553
2656
|
];
|
|
@@ -2599,6 +2702,9 @@ export function attachConfigGroups(flat) {
|
|
|
2599
2702
|
}
|
|
2600
2703
|
return flat;
|
|
2601
2704
|
}
|
|
2705
|
+
function attachLoadedConfigGroups(flat) {
|
|
2706
|
+
return attachConfigGroups(flat);
|
|
2707
|
+
}
|
|
2602
2708
|
function k8sWorkspaceStore() {
|
|
2603
2709
|
const workspacePersist = enumEnv("WORKSPACE_PERSIST", WORKSPACE_PERSIST_DEFAULT, WORKSPACE_PERSIST_WORDS);
|
|
2604
2710
|
const workspaceSnapshotKeep = numEnvBounded("WORKSPACE_SNAPSHOT_KEEP", String(WORKSPACE_SNAPSHOT_KEEP_DEFAULT), WORKSPACE_SNAPSHOT_KEEP_RANGE.min, WORKSPACE_SNAPSHOT_KEEP_RANGE.max);
|
|
@@ -2669,7 +2775,9 @@ function k8sWorkspaceCache() {
|
|
|
2669
2775
|
return { mount, size };
|
|
2670
2776
|
}
|
|
2671
2777
|
export function loadConfig() {
|
|
2672
|
-
|
|
2778
|
+
const undeclared = ownCredentialDeclarationRefusal();
|
|
2779
|
+
if (undeclared !== undefined)
|
|
2780
|
+
throw new Error(undeclared);
|
|
2673
2781
|
rejectRetiredEnvs();
|
|
2674
2782
|
CONFIG_WARNINGS.length = 0;
|
|
2675
2783
|
CONFIG_NOTICES.length = 0;
|
|
@@ -2689,11 +2797,7 @@ export function loadConfig() {
|
|
|
2689
2797
|
const approval = parseApprovalDomain({ postureOn, singleUserTurnkey, infraReady: durableStoreReady });
|
|
2690
2798
|
const memory = parseMemoryDomain({ requirePrincipal });
|
|
2691
2799
|
const auth = parseAuthDomain({ requirePrincipal });
|
|
2692
|
-
const orchestration = parseOrchestrationDomain({ postureOn, singleUserTurnkey,
|
|
2693
|
-
settleDerivedReadFace(orchestration, singleUserTurnkey);
|
|
2694
|
-
const readFaceNotice = buildReadFacePostureNotice(orchestration);
|
|
2695
|
-
if (readFaceNotice !== undefined)
|
|
2696
|
-
CONFIG_NOTICES.push({ level: "info", ...readFaceNotice });
|
|
2800
|
+
const orchestration = parseOrchestrationDomain({ postureOn, singleUserTurnkey, personGates: approval });
|
|
2697
2801
|
const limitsHttp = parseLimitsHttpDomain();
|
|
2698
2802
|
const observability = parseObservabilityDomain();
|
|
2699
2803
|
const integrations = parseIntegrationsDomain({ requirePrincipal, configProvider });
|
|
@@ -2755,12 +2859,7 @@ export function loadConfig() {
|
|
|
2755
2859
|
if (parkDecisionDomainRefusal !== undefined) {
|
|
2756
2860
|
throw new Error(parkDecisionDomainRefusal);
|
|
2757
2861
|
}
|
|
2758
|
-
|
|
2759
|
-
if (laneRequiredRefusal !== undefined) {
|
|
2760
|
-
throw new Error(laneRequiredRefusal);
|
|
2761
|
-
}
|
|
2762
|
-
EXEC_LANE_NOTICE = buildExecLaneNotice(orchestration.remoteExec);
|
|
2763
|
-
return attachConfigGroups({
|
|
2862
|
+
return attachLoadedConfigGroups({
|
|
2764
2863
|
...store,
|
|
2765
2864
|
...modelPlane,
|
|
2766
2865
|
...approval,
|
|
@@ -2790,11 +2889,4 @@ export function splitLocalRoots(a) {
|
|
|
2790
2889
|
return undefined;
|
|
2791
2890
|
return { dataRoot: a.localDataRoot, configRoot };
|
|
2792
2891
|
}
|
|
2793
|
-
export function resolveBindHost(config) {
|
|
2794
|
-
const anyServiceAuth = Boolean(config.authToken) || Object.keys(config.authTokens ?? {}).length > 0;
|
|
2795
|
-
const mustNarrow = Boolean(config.allowUnauthedWrites) && !anyServiceAuth;
|
|
2796
|
-
if (config.bindHost && !(mustNarrow && config.bindHostSource === "HOST"))
|
|
2797
|
-
return config.bindHost;
|
|
2798
|
-
return mustNarrow ? "127.0.0.1" : undefined;
|
|
2799
|
-
}
|
|
2800
2892
|
//# sourceMappingURL=config.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { failureCodeOf } from "./terminal.js";
|
|
2
2
|
import { StoredSession } from "@sema-agent/core";
|
|
3
|
-
import { TiDBSessionStorage } from "./
|
|
3
|
+
import { TiDBSessionStorage } from "./stores-sql/tidb-session-storage.js";
|
|
4
4
|
const SUBSTANTIVE_CHARS = 200;
|
|
5
5
|
const REP_WINDOW = 8192;
|
|
6
6
|
const MIN_REPEATS = 3;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
import type { SessionPlacement } from "@sema-agent/core";
|
|
30
30
|
import type { SessionFace } from "./session-incarnation.js";
|
|
31
31
|
import type { SqlDialect } from "./plugins/sql-driver.js";
|
|
32
|
-
/** 孤行哨兵属主的前缀(保留主体前缀:`
|
|
32
|
+
/** 孤行哨兵属主的前缀(保留主体前缀:`principal-shape.ts` 的 `RESERVED_PRINCIPAL_PREFIXES` 登记它,任何身份来源报出带它的主体都在鉴权边界被拒)。 */
|
|
33
33
|
export declare const ORPHAN_SESSION_OWNER_PREFIX = "_orphan:";
|
|
34
34
|
/** 一只推不出属主的子代会话的哨兵属主(每只会话一个值:即便哪天有谁误配出这个串,也只够得着这一只)。 */
|
|
35
35
|
export declare function orphanSessionOwner(sessionId: string): string;
|