@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
|
@@ -6,25 +6,33 @@ import { HttpError } from "../../security.js";
|
|
|
6
6
|
import { idemCallerOf, idemIdentityOf, idemKeyOf, inflightKeyOf } from "../idempotency.js";
|
|
7
7
|
import { isRunExistsConflictBody, replayOfExistingRun } from "../submit-replay.js";
|
|
8
8
|
import { isActiveRunConflictBody } from "../active-run-conflict.js";
|
|
9
|
-
import { sendJson, sendError } from "../send.js";
|
|
9
|
+
import { sendJson, sendError, sendHttpError } from "../send.js";
|
|
10
10
|
import { admissionRefusalOf, readinessOf, sendBillableRefusal } from "../readiness.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { gatedPerson, gatedSubject, sendPrincipalRefusal, verifiedIdentitySource } from "../principal-gate.js";
|
|
12
|
+
import { callerOf, protocolEntry, readVisibleRun, runRowAt } from "../owner-access.js";
|
|
13
13
|
import { assertNever } from "../route-ctx.js";
|
|
14
14
|
import * as facts from "../../capability-facts.js";
|
|
15
15
|
import { createDurableRun } from "./runs.js";
|
|
16
16
|
export const A2A_PROTOCOL_VERSION = "1.0";
|
|
17
17
|
export const A2A_VERSION_HEADER = "a2a-version";
|
|
18
|
-
export function buildAgentCard(serve) {
|
|
18
|
+
export function buildAgentCard(serve, reader, methods) {
|
|
19
19
|
return {
|
|
20
20
|
name: serve.name,
|
|
21
21
|
...(serve.description !== undefined ? { description: serve.description } : {}),
|
|
22
22
|
protocolVersion: A2A_PROTOCOL_VERSION,
|
|
23
23
|
url: serve.url,
|
|
24
24
|
preferredTransport: "JSONRPC",
|
|
25
|
-
|
|
25
|
+
supportsAuthenticatedExtendedCard: methods.has(EXTENDED_CARD_METHOD),
|
|
26
|
+
skills: skillsOfferedTo(serve, reader).map((s) => ({ id: s.id, name: s.name ?? s.id, ...(s.description !== undefined ? { description: s.description } : {}) })),
|
|
26
27
|
};
|
|
27
28
|
}
|
|
29
|
+
export const EXTENDED_CARD_METHOD = "agent/getAuthenticatedExtendedCard";
|
|
30
|
+
export function skillsOfferedTo(serve, reader) {
|
|
31
|
+
return serve.skills.filter((s) => s.audience === undefined || (reader !== undefined && s.audience.includes(reader)));
|
|
32
|
+
}
|
|
33
|
+
function cardReaderOf(req, config) {
|
|
34
|
+
return verifiedIdentitySource(req, config) === undefined ? undefined : gatedPerson(req, config);
|
|
35
|
+
}
|
|
28
36
|
export async function handleA2aServe(req, res, match, ctx) {
|
|
29
37
|
const { deps } = ctx;
|
|
30
38
|
switch (match.decl.id) {
|
|
@@ -35,7 +43,7 @@ export async function handleA2aServe(req, res, match, ctx) {
|
|
|
35
43
|
return;
|
|
36
44
|
}
|
|
37
45
|
res.setHeader(A2A_VERSION_HEADER, A2A_PROTOCOL_VERSION);
|
|
38
|
-
sendJson(res, 200, buildAgentCard(peer.serve));
|
|
46
|
+
sendJson(res, 200, buildAgentCard(peer.serve, undefined, A2A_METHODS));
|
|
39
47
|
return;
|
|
40
48
|
}
|
|
41
49
|
default:
|
|
@@ -58,9 +66,7 @@ const A2A_STATE_BY_RUN_STATUS = {
|
|
|
58
66
|
suspended: null,
|
|
59
67
|
needs_review: null,
|
|
60
68
|
};
|
|
61
|
-
export function a2aStateForRun(run
|
|
62
|
-
if (stale)
|
|
63
|
-
return "failed";
|
|
69
|
+
export function a2aStateForRun(run) {
|
|
64
70
|
if (isParkedRunStatus(run.status))
|
|
65
71
|
return "input-required";
|
|
66
72
|
const mapped = A2A_STATE_BY_RUN_STATUS[run.status];
|
|
@@ -91,8 +97,8 @@ function statusTextForRun(run, state) {
|
|
|
91
97
|
return memo("errorMessage", runPlaneMessage);
|
|
92
98
|
return undefined;
|
|
93
99
|
}
|
|
94
|
-
function taskFromRun(run
|
|
95
|
-
const state = a2aStateForRun(run
|
|
100
|
+
function taskFromRun(run) {
|
|
101
|
+
const state = a2aStateForRun(run);
|
|
96
102
|
const text = statusTextForRun(run, state);
|
|
97
103
|
return {
|
|
98
104
|
kind: "task",
|
|
@@ -153,7 +159,8 @@ function objectiveFromParts(parts) {
|
|
|
153
159
|
return objective;
|
|
154
160
|
}
|
|
155
161
|
const SKILL_METADATA_KEY = "sema.skillId";
|
|
156
|
-
|
|
162
|
+
export const A2A_UNOFFERED_SKILL_MESSAGE = `unknown skill id — params.message.metadata["${SKILL_METADATA_KEY}"] does not name a skill offered to this caller; the skills a caller can name are the ones on the agent card it can read (the public card, or the authenticated extended card)`;
|
|
163
|
+
function skillFromMetadata(metadata, serve, reader) {
|
|
157
164
|
if (metadata === undefined || metadata === null)
|
|
158
165
|
return undefined;
|
|
159
166
|
const meta = asRecord(metadata, "params.message.metadata");
|
|
@@ -161,15 +168,14 @@ function skillFromMetadata(metadata, serve) {
|
|
|
161
168
|
if (raw === undefined)
|
|
162
169
|
return undefined;
|
|
163
170
|
const id = asNonEmptyString(raw, `params.message.metadata["${SKILL_METADATA_KEY}"]`, MAX_SKILL_ID_CHARS);
|
|
164
|
-
const skill = serve.
|
|
171
|
+
const skill = skillsOfferedTo(serve, reader).find((s) => s.id === id);
|
|
165
172
|
if (!skill)
|
|
166
|
-
throw new RpcError(JSONRPC_INVALID_PARAMS,
|
|
173
|
+
throw new RpcError(JSONRPC_INVALID_PARAMS, A2A_UNOFFERED_SKILL_MESSAGE);
|
|
167
174
|
return skill;
|
|
168
175
|
}
|
|
169
|
-
function rpcErrorFromTypedFailure(err
|
|
170
|
-
const where = skillId !== undefined ? `skill ${JSON.stringify(skillId)}` : "this request";
|
|
176
|
+
function rpcErrorFromTypedFailure(err) {
|
|
171
177
|
if (err.status >= 400 && err.status < 500) {
|
|
172
|
-
return new RpcError(JSONRPC_INVALID_PARAMS,
|
|
178
|
+
return new RpcError(JSONRPC_INVALID_PARAMS, "the serving deployment refused this request (its configuration does not currently admit it); the operator's logs carry the reason");
|
|
173
179
|
}
|
|
174
180
|
return new RpcError(JSONRPC_INTERNAL_ERROR, "internal error");
|
|
175
181
|
}
|
|
@@ -191,9 +197,6 @@ function readBlocking(params) {
|
|
|
191
197
|
throw new RpcError(JSONRPC_INVALID_PARAMS, "params.configuration.blocking must be a boolean");
|
|
192
198
|
return c.blocking;
|
|
193
199
|
}
|
|
194
|
-
function isStaleRun(run, runStaleSec) {
|
|
195
|
-
return run.status === "running" && Date.now() - new Date(run.updatedAt).getTime() > runStaleSec * 1000;
|
|
196
|
-
}
|
|
197
200
|
async function waitForRun(ctx, store, res, taskId, budgetMs) {
|
|
198
201
|
const { deps } = ctx;
|
|
199
202
|
const deadline = Date.now() + budgetMs;
|
|
@@ -201,14 +204,15 @@ async function waitForRun(ctx, store, res, taskId, budgetMs) {
|
|
|
201
204
|
for (;;) {
|
|
202
205
|
let run;
|
|
203
206
|
try {
|
|
204
|
-
|
|
207
|
+
const raw = await store.getRun(taskId);
|
|
208
|
+
run = raw ? await runRowAt("run.a2a", store, raw) : null;
|
|
205
209
|
}
|
|
206
210
|
catch (e) {
|
|
207
211
|
deps.logger?.warn?.("a2a_serve_wait_read_failed", { error: e?.message });
|
|
208
212
|
return last;
|
|
209
213
|
}
|
|
210
214
|
last = run ?? last;
|
|
211
|
-
if (run && a2aStateForRun(run
|
|
215
|
+
if (run && a2aStateForRun(run) !== "working")
|
|
212
216
|
return run;
|
|
213
217
|
const left = deadline - Date.now();
|
|
214
218
|
if (left <= 0)
|
|
@@ -231,7 +235,7 @@ async function handleMessageSend({ req, res, ctx, params, serve, runStore }) {
|
|
|
231
235
|
const objective = objectiveFromParts(message.parts);
|
|
232
236
|
const contextId = message.contextId === undefined ? undefined : asString(message.contextId, "params.message.contextId");
|
|
233
237
|
const messageId = asNonEmptyString(message.messageId, "params.message.messageId", MAX_MESSAGE_ID_CHARS);
|
|
234
|
-
const skill = skillFromMetadata(message.metadata, serve);
|
|
238
|
+
const skill = skillFromMetadata(message.metadata, serve, cardReaderOf(req, deps.config));
|
|
235
239
|
const skillId = skill?.id;
|
|
236
240
|
const scenario = skill?.scenario;
|
|
237
241
|
const blocking = readBlocking(params);
|
|
@@ -242,7 +246,7 @@ async function handleMessageSend({ req, res, ctx, params, serve, runStore }) {
|
|
|
242
246
|
.update(contextId ?? "").update("\x1f")
|
|
243
247
|
.update(skillId ?? "")
|
|
244
248
|
.digest("hex");
|
|
245
|
-
const submitter =
|
|
249
|
+
const submitter = gatedSubject(req, deps.config);
|
|
246
250
|
const idem = { key: idemKeyOf(fingerprint, caller, "run"), bodyFingerprint: fingerprint };
|
|
247
251
|
const body = {
|
|
248
252
|
objective,
|
|
@@ -251,9 +255,9 @@ async function handleMessageSend({ req, res, ctx, params, serve, runStore }) {
|
|
|
251
255
|
...(scenario !== undefined ? { scenario } : {}),
|
|
252
256
|
};
|
|
253
257
|
const keyed = (await runStore.getRunByIdem(idem.key).catch(() => undefined)) ?? (await runStore.getRun(body.taskId).catch(() => undefined));
|
|
254
|
-
const replay = keyed ? await replayOfExistingRun(keyed, {
|
|
258
|
+
const replay = keyed ? await replayOfExistingRun(keyed, { subject: submitter, clientTaskId: body.taskId, idem }, "durable", deps, runStore) : undefined;
|
|
255
259
|
if (keyed && replay?.status === 202) {
|
|
256
|
-
return taskFromRun(
|
|
260
|
+
return taskFromRun(await runRowAt("run.a2a", runStore, keyed));
|
|
257
261
|
}
|
|
258
262
|
const inflight = replay === undefined ? ctx.registry.idemCache.peek(inflightKeyOf(idem, "durable", body.taskId)) : undefined;
|
|
259
263
|
let receipt;
|
|
@@ -273,8 +277,10 @@ async function handleMessageSend({ req, res, ctx, params, serve, runStore }) {
|
|
|
273
277
|
typed = e;
|
|
274
278
|
});
|
|
275
279
|
if (!prepared) {
|
|
276
|
-
if (typed)
|
|
277
|
-
|
|
280
|
+
if (typed) {
|
|
281
|
+
deps.logger?.warn?.("a2a_serve_submission_refused", { status: typed.status, ...(typed.code !== undefined ? { errorCode: typed.code } : {}) });
|
|
282
|
+
throw rpcErrorFromTypedFailure(typed);
|
|
283
|
+
}
|
|
278
284
|
return undefined;
|
|
279
285
|
}
|
|
280
286
|
try {
|
|
@@ -294,7 +300,7 @@ async function handleMessageSend({ req, res, ctx, params, serve, runStore }) {
|
|
|
294
300
|
const sessionId = receiptBody.sessionId;
|
|
295
301
|
const run = await waitForRun(ctx, runStore, res, taskId, blocking ? serve.blockingWaitMs : 0);
|
|
296
302
|
if (run)
|
|
297
|
-
return taskFromRun(run
|
|
303
|
+
return taskFromRun(run);
|
|
298
304
|
return {
|
|
299
305
|
kind: "task",
|
|
300
306
|
id: taskId,
|
|
@@ -322,15 +328,19 @@ function durableIdempotencyTaskId(scope, messageId) {
|
|
|
322
328
|
async function handleTasksGet({ req, ctx, params, runStore }) {
|
|
323
329
|
const { deps } = ctx;
|
|
324
330
|
const id = asNonEmptyString(params.id, "params.id", MAX_TASK_ID_CHARS);
|
|
325
|
-
const run = await
|
|
331
|
+
const run = await readVisibleRun(protocolEntry(req, deps, "run.a2a", callerOf(req, deps)), runStore, id);
|
|
326
332
|
if (!run)
|
|
327
333
|
throw new RpcError(A2A_TASK_NOT_FOUND, A2A_TASK_NOT_FOUND_MESSAGE);
|
|
328
|
-
return taskFromRun(run
|
|
334
|
+
return taskFromRun(run);
|
|
329
335
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
336
|
+
async function handleExtendedCard({ req, ctx, serve }) {
|
|
337
|
+
return buildAgentCard(serve, cardReaderOf(req, ctx.deps.config), A2A_METHODS);
|
|
338
|
+
}
|
|
339
|
+
const A2A_METHODS = new Map([
|
|
340
|
+
["message/send", handleMessageSend],
|
|
341
|
+
["tasks/get", handleTasksGet],
|
|
342
|
+
[EXTENDED_CARD_METHOD, handleExtendedCard],
|
|
343
|
+
]);
|
|
334
344
|
export async function handleA2a(req, res, match, ctx) {
|
|
335
345
|
const { deps } = ctx;
|
|
336
346
|
switch (match.decl.id) {
|
|
@@ -347,7 +357,18 @@ export async function handleA2a(req, res, match, ctx) {
|
|
|
347
357
|
const { serve, runStore } = peer;
|
|
348
358
|
const requestedVersion = req.headers[A2A_VERSION_HEADER];
|
|
349
359
|
res.setHeader(A2A_VERSION_HEADER, A2A_PROTOCOL_VERSION);
|
|
350
|
-
|
|
360
|
+
let a2aSubject;
|
|
361
|
+
try {
|
|
362
|
+
a2aSubject = gatedSubject(req, deps.config);
|
|
363
|
+
}
|
|
364
|
+
catch (e) {
|
|
365
|
+
if (!(e instanceof HttpError))
|
|
366
|
+
throw e;
|
|
367
|
+
deps.metrics?.inc("a2a_serve_rejected_total", { reason: "identity_refused" });
|
|
368
|
+
sendHttpError(res, e);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
if (deps.config.requirePrincipal && !a2aSubject) {
|
|
351
372
|
deps.metrics?.inc("a2a_serve_rejected_total", { reason: "principal_required" });
|
|
352
373
|
sendPrincipalRefusal(res, req, deps.config);
|
|
353
374
|
return;
|
|
@@ -374,7 +395,7 @@ export async function handleA2a(req, res, match, ctx) {
|
|
|
374
395
|
return;
|
|
375
396
|
}
|
|
376
397
|
const method = rpc.method;
|
|
377
|
-
const handler = A2A_METHODS
|
|
398
|
+
const handler = A2A_METHODS.get(method);
|
|
378
399
|
if (!handler) {
|
|
379
400
|
deps.metrics?.inc("a2a_serve_rpc_total", { method: "(unknown)", outcome: "method_not_found" });
|
|
380
401
|
deps.metrics?.inc("a2a_serve_rejected_total", { reason: "method_not_found" });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sendJson, sendError } from "../send.js";
|
|
2
|
-
import {
|
|
2
|
+
import { gatedPerson, explicitOperatorOk, sendOperatorPrincipalsRequired, sendPrincipalRefusal } from "../principal-gate.js";
|
|
3
3
|
import * as facts from "../../capability-facts.js";
|
|
4
4
|
import { assertNever } from "../route-ctx.js";
|
|
5
5
|
export const ADMIN_CONFIG_REFRESH_PATH = "/v1/admin/config/refresh";
|
|
@@ -8,7 +8,7 @@ export async function handleAdminConfigRefresh(req, res, match, ctx) {
|
|
|
8
8
|
const { deps } = ctx;
|
|
9
9
|
switch (match.decl.id) {
|
|
10
10
|
case "admin-config-refresh": {
|
|
11
|
-
const principal =
|
|
11
|
+
const principal = gatedPerson(req, deps.config);
|
|
12
12
|
if (deps.config.requirePrincipal && !principal) {
|
|
13
13
|
sendPrincipalRefusal(res, req, deps.config);
|
|
14
14
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DRAIN_ACTION_ID, readDrainRequest } from "@sema-agent/settings-schema/fleet";
|
|
2
2
|
import { sendJson, sendError } from "../send.js";
|
|
3
|
-
import {
|
|
3
|
+
import { gatedPerson, explicitOperatorOk, sendOperatorPrincipalsRequired, sendPrincipalRefusal } from "../principal-gate.js";
|
|
4
4
|
import * as facts from "../../capability-facts.js";
|
|
5
5
|
import { fleetScopeOf } from "../../config-types.js";
|
|
6
6
|
import { drainIdentityMismatches } from "../../fleet/drain-entry.js";
|
|
@@ -12,7 +12,7 @@ export async function handleAdminDrain(req, res, match, ctx) {
|
|
|
12
12
|
const { deps } = ctx;
|
|
13
13
|
switch (match.decl.id) {
|
|
14
14
|
case "admin-drain": {
|
|
15
|
-
const principal =
|
|
15
|
+
const principal = gatedPerson(req, deps.config);
|
|
16
16
|
if (deps.config.requirePrincipal && !principal) {
|
|
17
17
|
sendPrincipalRefusal(res, req, deps.config);
|
|
18
18
|
return;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { sendJson, sendError } from "../send.js";
|
|
3
|
-
import {
|
|
3
|
+
import { gatedPerson, explicitOperatorOk, sendOperatorPrincipalsRequired, sendPrincipalRefusal } from "../principal-gate.js";
|
|
4
4
|
import { assertNever } from "../route-ctx.js";
|
|
5
5
|
import * as facts from "../../capability-facts.js";
|
|
6
6
|
import { memoryOptOutPrincipalShapeProblem } from "../../plugins/memory-optout-grant-store-sql.js";
|
|
7
|
+
import { PRINCIPAL_MAX_BYTES } from "../../principal-shape.js";
|
|
7
8
|
export const ADMIN_MEMORY_OPTOUT_PATH = "/v1/admin/memory-optout";
|
|
8
9
|
const PutBodySchema = z.object({ allow: z.boolean(), note: z.string().min(1).max(500).optional() }).strict();
|
|
9
10
|
export async function handleMemoryOptOut(req, res, match, ctx) {
|
|
@@ -11,7 +12,7 @@ export async function handleMemoryOptOut(req, res, match, ctx) {
|
|
|
11
12
|
const target = match.decl.id === "memory-optout-grants-list" || match.decl.id === "memory-optout-put-default"
|
|
12
13
|
? undefined
|
|
13
14
|
: ctx.helpers.safeDecode(match.params.principal);
|
|
14
|
-
const principal =
|
|
15
|
+
const principal = gatedPerson(req, deps.config);
|
|
15
16
|
if (deps.config.requirePrincipal && !principal) {
|
|
16
17
|
sendPrincipalRefusal(res, req, deps.config);
|
|
17
18
|
return;
|
|
@@ -40,7 +41,7 @@ export async function handleMemoryOptOut(req, res, match, ctx) {
|
|
|
40
41
|
}
|
|
41
42
|
const store = fact.store;
|
|
42
43
|
if (target !== undefined && (target === null || memoryOptOutPrincipalShapeProblem(target) !== undefined)) {
|
|
43
|
-
sendError(res, 400, "request.path_malformed",
|
|
44
|
+
sendError(res, 400, "request.path_malformed", `invalid memory opt-out grant principal — the path segment must percent-decode to a non-empty principal of at most ${PRINCIPAL_MAX_BYTES} UTF-8 bytes with no leading/trailing whitespace or control characters (the deployment default row is addressed by PUT on the collection root, not by a path segment)`);
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
46
47
|
switch (match.decl.id) {
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
* · `adoption.destination_unrepresentable` (409):目的地身份装不进这次收编会**派生**出来的某个键
|
|
13
13
|
* (典型:memory 的 `proj:` 键 = 新 tenant 段 + 原有项目段后缀,合起来越过列宽)。与上一条分家的理由:
|
|
14
14
|
* 运维的动作完全不同 —— 那条要去清理另一个 principal 的行,这条要换一个更短的目的地身份。
|
|
15
|
+
* · `adoption.table_missing` (409):这个部署**接线了**某个可选存储面(记忆引擎 DB 后端 / 对象存储上的附件店),库上却没有它的表(表被人删了、或 boot 的建表没跑过)。
|
|
16
|
+
* 与前两条分家:那两条是**数据**事实、落永久终态;这条是**部署**事实 —— 弧不落终态(行停在 INTENT、零 UPDATE),补好表(重启一个副本,boot 会建缺的表)后**重发同一请求**即续。
|
|
17
|
+
* **没接线的可选面不在此列**:缺省 file 记忆引擎 / 没配对象存储的部署上那些表本来就不存在,它们的腿不在回执里(`legs[]` 只列真跑的腿)。
|
|
15
18
|
* · `not_found.adoption` (404):operator 拿着一个不存在的 id 来读。
|
|
16
19
|
*
|
|
17
20
|
* 幂等:同参数重跑秒回**同一份** `AdoptionReceipt`(`immutableReport` 逐字节恒同 —— 它在 phase 6
|
|
@@ -4,7 +4,7 @@ import { checkAdoptionPrincipalShape, checkAdoptionWidths } from "../../adoption
|
|
|
4
4
|
import { judgeAdoptionImportBinding, readAdoptionImportBody, runAdoptionImport } from "../../adoption/import.js";
|
|
5
5
|
import { limitRefusal } from "../../limit-refusal.js";
|
|
6
6
|
import { sendJson, sendError } from "../send.js";
|
|
7
|
-
import {
|
|
7
|
+
import { gatedPerson, explicitOperatorOk, sendOperatorPrincipalsRequired, sendPrincipalRefusal } from "../principal-gate.js";
|
|
8
8
|
import { assertNever } from "../route-ctx.js";
|
|
9
9
|
import * as facts from "../../capability-facts.js";
|
|
10
10
|
function sendOutcome(res, out) {
|
|
@@ -19,19 +19,23 @@ function sendOutcome(res, out) {
|
|
|
19
19
|
boundTo: out.boundTo,
|
|
20
20
|
});
|
|
21
21
|
return;
|
|
22
|
+
case "tables_missing":
|
|
23
|
+
sendError(res, 409, "adoption.table_missing", `this deployment wires stores whose tables are absent from the database (${out.tables.join(", ")}): nothing was migrated — restart a replica so its boot creates the missing tables, then resend the same request`, {
|
|
24
|
+
adoptionId: out.adoptionId,
|
|
25
|
+
tables: out.tables,
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
22
28
|
case "rejected":
|
|
23
29
|
switch (out.code) {
|
|
24
30
|
case "adoption.destination_conflict":
|
|
25
|
-
sendError(res, 409, "adoption.destination_conflict",
|
|
31
|
+
sendError(res, 409, "adoption.destination_conflict", `the destination principal already holds rows sharing a logical key with the source: ${out.detail}`, {
|
|
26
32
|
adoptionId: out.adoptionId,
|
|
27
|
-
detail: out.detail,
|
|
28
33
|
conflicts: out.conflicts,
|
|
29
34
|
});
|
|
30
35
|
return;
|
|
31
36
|
case "adoption.destination_unrepresentable":
|
|
32
|
-
sendError(res, 409, "adoption.destination_unrepresentable",
|
|
37
|
+
sendError(res, 409, "adoption.destination_unrepresentable", `the destination principal does not fit every key this adoption would derive from it: ${out.detail}`, {
|
|
33
38
|
adoptionId: out.adoptionId,
|
|
34
|
-
detail: out.detail,
|
|
35
39
|
});
|
|
36
40
|
return;
|
|
37
41
|
}
|
|
@@ -58,7 +62,7 @@ export async function handleAdoption(req, res, match, ctx) {
|
|
|
58
62
|
async function operatorLane(req, res, id, params, ctx) {
|
|
59
63
|
const { deps } = ctx;
|
|
60
64
|
const { readJson } = ctx.helpers;
|
|
61
|
-
const principal =
|
|
65
|
+
const principal = gatedPerson(req, deps.config);
|
|
62
66
|
if (deps.config.requirePrincipal && !principal) {
|
|
63
67
|
sendPrincipalRefusal(res, req, deps.config);
|
|
64
68
|
return;
|
|
@@ -85,7 +89,8 @@ async function operatorLane(req, res, id, params, ctx) {
|
|
|
85
89
|
}
|
|
86
90
|
}
|
|
87
91
|
const store = fact.backend.adoptionLog();
|
|
88
|
-
const
|
|
92
|
+
const wiring = { memoryEngine: facts.memoryExport(deps).available, taskAttachment: deps.taskAttachmentStore !== undefined };
|
|
93
|
+
const runner = createAdoptionRunner({ store, dialect: deps.backend?.kind === "pg" ? "pg" : "mysql", now: Date.now, wiring, logger: deps.logger });
|
|
89
94
|
switch (id) {
|
|
90
95
|
case "adoption-detail": {
|
|
91
96
|
const adoptionId = ctx.helpers.safeDecode(params.id);
|
|
@@ -111,12 +116,12 @@ async function operatorLane(req, res, id, params, ctx) {
|
|
|
111
116
|
const { fromPrincipal, toPrincipal } = parsed.data;
|
|
112
117
|
const badShape = checkAdoptionPrincipalShape(fromPrincipal, toPrincipal);
|
|
113
118
|
if (badShape !== undefined) {
|
|
114
|
-
sendError(res, 400, "request.field_invalid",
|
|
119
|
+
sendError(res, 400, "request.field_invalid", `the adoption principals are not in a portable identity shape: ${badShape}`);
|
|
115
120
|
return;
|
|
116
121
|
}
|
|
117
122
|
const tooWide = checkAdoptionWidths(fromPrincipal, toPrincipal);
|
|
118
123
|
if (tooWide !== undefined) {
|
|
119
|
-
sendError(res, 400, "request.field_invalid",
|
|
124
|
+
sendError(res, 400, "request.field_invalid", `the adoption principals do not fit every identity column and derived key this adoption must write: ${tooWide}`);
|
|
120
125
|
return;
|
|
121
126
|
}
|
|
122
127
|
if (fromPrincipal === toPrincipal) {
|
|
@@ -124,6 +129,8 @@ async function operatorLane(req, res, id, params, ctx) {
|
|
|
124
129
|
return;
|
|
125
130
|
}
|
|
126
131
|
const out = await runner.start(fromPrincipal, toPrincipal);
|
|
132
|
+
if (out.kind === "receipt")
|
|
133
|
+
await deps.toolApproval?.followRowOwners();
|
|
127
134
|
sendOutcome(res, out);
|
|
128
135
|
return;
|
|
129
136
|
}
|
|
@@ -135,7 +142,7 @@ async function sourceLane(req, res, params, ctx) {
|
|
|
135
142
|
const { deps } = ctx;
|
|
136
143
|
if (ctx.helpers.rateLimited(req, res))
|
|
137
144
|
return;
|
|
138
|
-
const principal =
|
|
145
|
+
const principal = gatedPerson(req, deps.config);
|
|
139
146
|
if (principal === undefined) {
|
|
140
147
|
sendPrincipalRefusal(res, req, deps.config);
|
|
141
148
|
return;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { chosenAgentName } from "@sema-agent/core";
|
|
2
2
|
import { sendJson, sendError } from "../send.js";
|
|
3
|
-
import {
|
|
3
|
+
import { gatedSubject, sendUnauthorized } from "../principal-gate.js";
|
|
4
|
+
import { PRINCIPAL_MAX_BYTES } from "../../principal-shape.js";
|
|
5
|
+
import { partsOf } from "../../owner-brands.js";
|
|
6
|
+
import { taskSpecIdentityOf } from "../../engine-identity.js";
|
|
7
|
+
import { routeListFilter } from "../owner-access.js";
|
|
4
8
|
import { assertNever } from "../route-ctx.js";
|
|
5
9
|
import * as facts from "../../capability-facts.js";
|
|
6
10
|
import { backgroundAgentNameOf } from "../../background-agent-name.js";
|
|
@@ -63,7 +67,7 @@ export async function handleAgentRoster(req, res, match, ctx) {
|
|
|
63
67
|
const { deps } = ctx;
|
|
64
68
|
switch (match.decl.id) {
|
|
65
69
|
case "agents-roster": {
|
|
66
|
-
const { fleetWide, gateOwner } =
|
|
70
|
+
const { fleetWide, gateOwner } = routeListFilter(req, deps, match.decl.id);
|
|
67
71
|
if (!fleetWide && gateOwner === null) {
|
|
68
72
|
sendUnauthorized(res, "identity");
|
|
69
73
|
return;
|
|
@@ -84,7 +88,7 @@ export async function handleAgentRoster(req, res, match, ctx) {
|
|
|
84
88
|
const beforeRaw = q.get("before");
|
|
85
89
|
const decoded = beforeRaw === null ? undefined : decodeCursor(beforeRaw);
|
|
86
90
|
if (decoded !== undefined && !decoded.ok) {
|
|
87
|
-
sendError(res, 400, "request.query_invalid",
|
|
91
|
+
sendError(res, 400, "request.query_invalid", `before must be the opaque \`nextBefore\` cursor from a previous page of this endpoint: ${decoded.why}`);
|
|
88
92
|
return;
|
|
89
93
|
}
|
|
90
94
|
const cursor = decoded?.ok === true ? decoded.cursor : undefined;
|
|
@@ -94,19 +98,21 @@ export async function handleAgentRoster(req, res, match, ctx) {
|
|
|
94
98
|
return;
|
|
95
99
|
}
|
|
96
100
|
const status = statusRaw === null ? undefined : statusRaw;
|
|
101
|
+
const subject = gatedSubject(req, deps.config);
|
|
102
|
+
const ownScope = taskSpecIdentityOf(subject === undefined ? undefined : partsOf(subject)).principal ?? "default";
|
|
97
103
|
let scope;
|
|
98
104
|
if (gateOwner !== null) {
|
|
99
|
-
scope =
|
|
105
|
+
scope = ownScope;
|
|
100
106
|
}
|
|
101
107
|
else {
|
|
102
108
|
const raw = q.get("scope");
|
|
103
109
|
if (raw === null) {
|
|
104
|
-
scope =
|
|
110
|
+
scope = ownScope;
|
|
105
111
|
}
|
|
106
112
|
else {
|
|
107
113
|
const s = raw.trim();
|
|
108
|
-
if (s === "" || s
|
|
109
|
-
sendError(res, 400, "request.query_invalid",
|
|
114
|
+
if (s === "" || Buffer.byteLength(s, "utf8") > PRINCIPAL_MAX_BYTES) {
|
|
115
|
+
sendError(res, 400, "request.query_invalid", `scope must be a non-blank tenant principal of at most ${PRINCIPAL_MAX_BYTES} UTF-8 bytes (the principal length every identity column holds)`);
|
|
110
116
|
return;
|
|
111
117
|
}
|
|
112
118
|
scope = s;
|