@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
|
@@ -26,36 +26,43 @@ export function judgeCatalogEntry(m, ctx) {
|
|
|
26
26
|
const shape = ModelEntry.safeParse(m);
|
|
27
27
|
if (!shape.success) {
|
|
28
28
|
const fields = describeSchemaIssueFields(shape.error);
|
|
29
|
-
return entryInvalidRefusal(typeof m.id === "string" ? m.id : "", typeof m.provider === "string" ? m.provider : "", fields, describeSchemaIssues(shape.error) ?? fields.join(", "));
|
|
29
|
+
return { ok: false, refusal: entryInvalidRefusal(typeof m.id === "string" ? m.id : "", typeof m.provider === "string" ? m.provider : "", fields, describeSchemaIssues(shape.error) ?? fields.join(", ")) };
|
|
30
30
|
}
|
|
31
|
-
const
|
|
31
|
+
const e = shape.data;
|
|
32
|
+
const headers = readCatalogEntryHeaders(e.headers, e.api);
|
|
32
33
|
if (!headers.ok)
|
|
33
|
-
return entryInvalidRefusal(
|
|
34
|
-
if (
|
|
34
|
+
return { ok: false, refusal: entryInvalidRefusal(e.id, e.provider, headers.fields, headers.issue) };
|
|
35
|
+
if (e.promptGuidance !== undefined && e.promptGuidance.length > 0) {
|
|
35
36
|
return {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
37
|
+
ok: false,
|
|
38
|
+
refusal: {
|
|
39
|
+
...refusalCause("config.model_entry_invalid"),
|
|
40
|
+
id: e.id,
|
|
41
|
+
provider: e.provider,
|
|
42
|
+
fields: ["promptGuidance"],
|
|
43
|
+
detail: "the catalog entry carries per-model guidance sentences (promptGuidance), which the engine no longer delivers — the entry is not served here " +
|
|
44
|
+
"rather than served with its sentences silently dropped; move each sentence into a center or deployment prompt overlay on the behavior band " +
|
|
45
|
+
"and remove promptGuidance from the entry to bring it back",
|
|
46
|
+
},
|
|
43
47
|
};
|
|
44
48
|
}
|
|
45
|
-
const lane = catalogBrainLane(
|
|
49
|
+
const lane = catalogBrainLane(e.provider);
|
|
46
50
|
const mount = laneMount(lane, ctx);
|
|
47
51
|
if (!mount.mounted) {
|
|
48
52
|
return {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
ok: false,
|
|
54
|
+
refusal: {
|
|
55
|
+
...refusalCause("config.model_no_brain"),
|
|
56
|
+
id: e.id,
|
|
57
|
+
provider: e.provider,
|
|
58
|
+
fields: [],
|
|
59
|
+
detail: `provider "${e.provider}" rides the ${lane} brain, which is not mounted on this deployment — the entry is not served here ` +
|
|
60
|
+
`(it is never routed to another brain with its own key); set ${mount.how}, ` +
|
|
61
|
+
'or change the entry\'s provider to an OpenAI-compatible route ("gateway" / "vllm") with its own baseUrl',
|
|
62
|
+
},
|
|
56
63
|
};
|
|
57
64
|
}
|
|
58
|
-
return
|
|
65
|
+
return { ok: true, entry: e };
|
|
59
66
|
}
|
|
60
67
|
function entryInvalidRefusal(id, provider, fields, issues) {
|
|
61
68
|
return {
|
|
@@ -67,6 +74,9 @@ function entryInvalidRefusal(id, provider, fields, issues) {
|
|
|
67
74
|
"deployment's catalog on its own (the other entries keep serving) instead of being served with a value nothing validated; fix the entry to bring it back",
|
|
68
75
|
};
|
|
69
76
|
}
|
|
77
|
+
function droppedRowEnabled(row) {
|
|
78
|
+
return row.identity?.enabled !== false;
|
|
79
|
+
}
|
|
70
80
|
const MALFORMED_CARRIER_NOT_A_LIST = "(droppedCatalogEntries is not a list)";
|
|
71
81
|
export function judgeCatalogEntries(enabled, ctx, dropped) {
|
|
72
82
|
const usable = [];
|
|
@@ -75,15 +85,15 @@ export function judgeCatalogEntries(enabled, ctx, dropped) {
|
|
|
75
85
|
Object.defineProperty(refused, name, { value: r, enumerable: true, writable: true, configurable: true });
|
|
76
86
|
};
|
|
77
87
|
for (const m of enabled) {
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
80
|
-
usable.push(
|
|
88
|
+
const v = judgeCatalogEntry(m, ctx);
|
|
89
|
+
if (v.ok)
|
|
90
|
+
usable.push(v.entry);
|
|
81
91
|
else
|
|
82
|
-
mint(String(m.name),
|
|
92
|
+
mint(String(m.name), v.refusal);
|
|
83
93
|
}
|
|
84
94
|
const rows = dropped === undefined ? [] : Array.isArray(dropped) ? dropped : undefined;
|
|
85
95
|
if (rows === undefined)
|
|
86
|
-
return { usable, refused, malformed: [MALFORMED_CARRIER_NOT_A_LIST], dropped: [] };
|
|
96
|
+
return { usable, refused, malformed: [MALFORMED_CARRIER_NOT_A_LIST], dropped: [], manages: true };
|
|
87
97
|
const malformed = [];
|
|
88
98
|
const carried = [];
|
|
89
99
|
for (const d of rows) {
|
|
@@ -95,13 +105,13 @@ export function judgeCatalogEntries(enabled, ctx, dropped) {
|
|
|
95
105
|
}
|
|
96
106
|
carried.push(row.data);
|
|
97
107
|
const { identity } = row.data;
|
|
98
|
-
if (identity?.name === undefined
|
|
108
|
+
if (!droppedRowEnabled(row.data) || identity?.name === undefined)
|
|
99
109
|
continue;
|
|
100
110
|
if (Object.hasOwn(refused, identity.name))
|
|
101
111
|
continue;
|
|
102
112
|
mint(identity.name, entryInvalidRefusal(identity.id ?? "", "", row.data.fields, row.data.issues));
|
|
103
113
|
}
|
|
104
|
-
return { usable, refused, malformed, dropped: carried };
|
|
114
|
+
return { usable, refused, malformed, dropped: carried, manages: enabled.length > 0 || malformed.length > 0 || carried.some(droppedRowEnabled) };
|
|
105
115
|
}
|
|
106
116
|
export function buildModelRefusalsSignal(v) {
|
|
107
117
|
if (v === undefined)
|
|
@@ -152,6 +162,15 @@ export function modelUnavailableMessage(field, requested, name, r) {
|
|
|
152
162
|
const alias = requested === name ? "" : ` (catalog entry "${name}")`;
|
|
153
163
|
return `${field} "${echoModelRef(requested)}"${alias} is published in the catalog but unavailable on this deployment [${r.code}] — ${r.detail}`;
|
|
154
164
|
}
|
|
165
|
+
export function modelNotAllowedMessage(field, requested, resolved) {
|
|
166
|
+
return `${field} "${echoModelRef(requested)}" is not @-mentionable on this deployment (it resolves to catalog model "${resolved}") — which models can be @-mentioned is configured by the operator (models.atMention)`;
|
|
167
|
+
}
|
|
168
|
+
function candidateFellBackClause(notes) {
|
|
169
|
+
if (notes === undefined || notes.length === 0)
|
|
170
|
+
return "";
|
|
171
|
+
const rows = notes.map((n) => `"${n.document}" [${n.code}] ${n.cause}${n.path !== undefined ? `: ${n.path}` : ""}`);
|
|
172
|
+
return ` (the config candidate was rejected whole and none of its domains applied, so its catalog is not in this table; fix or remove the named document(s) — the config_candidate_rejected warn line has the full diagnostics — rejected: ${rows.join(" | ")})`;
|
|
173
|
+
}
|
|
155
174
|
export function defaultModelRefusal(view, leg) {
|
|
156
175
|
if (Object.hasOwn(view.models, DEFAULT_MODEL_REF) && view.models[DEFAULT_MODEL_REF] !== undefined)
|
|
157
176
|
return undefined;
|
|
@@ -161,6 +180,7 @@ export function defaultModelRefusal(view, leg) {
|
|
|
161
180
|
case "env":
|
|
162
181
|
return (`MODEL_ID is required when no catalog default resolves [${DEFAULT_MODEL_MISSING_CODE}] — this model table has no default model` +
|
|
163
182
|
unavailable +
|
|
183
|
+
candidateFellBackClause(view.candidateRejectionNotes) +
|
|
164
184
|
". Set MODEL_ID=<model name your gateway serves>, or enable at least one model this host can serve in the catalog " +
|
|
165
185
|
"(config.d/models.json, or the web-admin) — either one is enough (a web-admin that answers after the boot budget " +
|
|
166
186
|
"counts as absent at boot: raise CONFIG_BOOT_FETCH_BUDGET_MS to wait for it).");
|
|
@@ -23,13 +23,18 @@
|
|
|
23
23
|
* · `refusalCode` / `gap` —— **起服路由判官对当前 config 的判决**:`judgeServedModelRoute` 同一只函数(装配第 2 段与 `run-local` 调的就是它),通过 ⇒ 两键缺席。
|
|
24
24
|
* 进程既然起来了,正常是缺席;测试夹具 / 自建装配 / 不拒启的入口可能在场 —— 如实投,不替它们编造通过。**不带句子**(拒因句只走日志与起服错误)。
|
|
25
25
|
*
|
|
26
|
-
* ##
|
|
27
|
-
*
|
|
26
|
+
* ## 两条读路,一只读口
|
|
27
|
+
* 判官必须在目录应用之后调(`judgeServedModelRoute` 头注):「将要服务的表」在装配第 2 段末才定形。读这一格的只有 {@link readModelPlaneFace} 一只,两条读路各调一次:
|
|
28
|
+
* · 起服后 —— `GET /v1/models` 的 `modelPlane`(`http/routes/capabilities.ts`;座经 `ServiceDeps` 的两只取值口转到 web-admin 运行时);
|
|
29
|
+
* · 起服前 —— 无监听探针 `model-plane-probe.ts`:跑**同一对**装配段(`runStage01` → `runStage02`)到模型表定形即停,同一只读口读同一个运行时的座,stdout 一行。
|
|
30
|
+
* 两路读同一批事实、同一只铸点 ⇒ 同一份部署配置、同一时点(第 2 段末;起服拉取超窗时那一份迟到的候选两路都还没采纳)两路的 JSON 字节同;
|
|
31
|
+
* 壳不再需要起服前的第二份判官。
|
|
28
32
|
*/
|
|
29
33
|
import type { ModelPlaneRefusalCode } from "@sema-agent/settings-schema";
|
|
30
34
|
import { type ModelRouteEndpointVerdict, type ModelRouteGap, type ServedModelRouteView } from "./model-route-endpoint.js";
|
|
31
35
|
import { type ModelTableLeg } from "./model-select.js";
|
|
32
36
|
import type { CandidateRejection } from "./web-admin-client/candidate-gate.js";
|
|
37
|
+
import { type ServiceConfig } from "./config.js";
|
|
33
38
|
/** `modelPlane.catalog` 的闭集(消费方用穷举 switch —— 加一词不补臂 ⇒ 编译红)。 */
|
|
34
39
|
export declare const CATALOG_STANCES: readonly ["absent", "adopted", "refused"];
|
|
35
40
|
export type CatalogStance = (typeof CATALOG_STANCES)[number];
|
|
@@ -44,14 +49,17 @@ export interface ModelPlaneFace {
|
|
|
44
49
|
/** 最新到达的目录候选被模型面组拒的码(见文件头;缺席 ⇔ 最新到达的候选没有被模型面组拒)。 */
|
|
45
50
|
readonly planeRefusalCode?: ModelPlaneRefusalCode;
|
|
46
51
|
}
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
readonly
|
|
53
|
-
|
|
54
|
-
readonly latestPlaneRefusal: ModelPlaneRefusalCode | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* 模型面读数取事实的两只座 —— 结构上就是 web-admin 运行时(`WebAdminRuntime`)的同名两只取值口:起服前探针递运行时本身,`GET /v1/models` 递 `ServiceDeps`
|
|
54
|
+
* (装配第 10 段把这两只接成 `() => webAdmin.<同名>()`)。没有配置管道的装配(纯 env 夹具 / 自建装配)两只都缺席 ⇒ 读作「没有整拒」。
|
|
55
|
+
*/
|
|
56
|
+
export interface ModelPlaneSeats {
|
|
57
|
+
readonly candidateRejectionState?: () => CandidateRejection | undefined;
|
|
58
|
+
readonly latestPlaneRefusalState?: () => ModelPlaneRefusalCode | undefined;
|
|
55
59
|
}
|
|
56
|
-
|
|
60
|
+
/**
|
|
61
|
+
* `modelPlane` 的**唯一读口**(起服后的 HTTP 路由与起服前的探针各调一次,见文件头「两条读路,一只读口」):进程事实只在这里取齐 ——
|
|
62
|
+
* 名册布防读 `isRosterGateArmed(config.webAdmin)`(装配第 2 段的路由判官传的同一只谓词),两只座读调用方递来的运行时取值口 —— 再交铸点。
|
|
63
|
+
*/
|
|
64
|
+
export declare function readModelPlaneFace(config: ServedModelRouteView & Pick<ServiceConfig, "webAdmin">, seats: ModelPlaneSeats): ModelPlaneFace;
|
|
57
65
|
//# sourceMappingURL=model-plane-face.d.ts.map
|
package/dist/model-plane-face.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { judgeServedModelRoute } from "./model-route-endpoint.js";
|
|
2
2
|
import { servedModelTableLeg } from "./model-select.js";
|
|
3
|
+
import { isRosterGateArmed } from "./config.js";
|
|
3
4
|
export const CATALOG_STANCES = ["absent", "adopted", "refused"];
|
|
4
5
|
function catalogStanceOf(served, wholeRefused) {
|
|
5
6
|
if (wholeRefused)
|
|
@@ -11,7 +12,14 @@ function catalogStanceOf(served, wholeRefused) {
|
|
|
11
12
|
return "absent";
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
|
-
export function
|
|
15
|
+
export function readModelPlaneFace(config, seats) {
|
|
16
|
+
return buildModelPlaneFace(config, {
|
|
17
|
+
envTableIsPlaceholder: isRosterGateArmed(config.webAdmin),
|
|
18
|
+
candidateRejection: seats.candidateRejectionState?.(),
|
|
19
|
+
latestPlaneRefusal: seats.latestPlaneRefusalState?.(),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function buildModelPlaneFace(config, facts) {
|
|
15
23
|
const servedTable = servedModelTableLeg(config);
|
|
16
24
|
const wholeRefused = facts.candidateRejection !== undefined || facts.latestPlaneRefusal !== undefined;
|
|
17
25
|
const verdict = judgeServedModelRoute(config, { envTableIsPlaceholder: facts.envTableIsPlaceholder });
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { fatalExit } from "./boot/fatal-exit.js";
|
|
2
|
+
import { runStage01 } from "./boot/stage-01-config.js";
|
|
3
|
+
import { runStage02 } from "./boot/stage-02-web-admin-pull.js";
|
|
4
|
+
import { readModelPlaneFace } from "./model-plane-face.js";
|
|
5
|
+
import { reserveStdoutForAnswer, writeCliResult } from "./observability/logger.js";
|
|
6
|
+
async function probe() {
|
|
7
|
+
reserveStdoutForAnswer();
|
|
8
|
+
const s02 = await runStage02(runStage01());
|
|
9
|
+
const answer = JSON.stringify(readModelPlaneFace(s02.config, s02.webAdmin));
|
|
10
|
+
await s02.webAdmin.stopRefreshLoop();
|
|
11
|
+
await writeCliResult(answer);
|
|
12
|
+
process.exit(0);
|
|
13
|
+
}
|
|
14
|
+
void probe().catch((err) => {
|
|
15
|
+
fatalExit(err);
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=model-plane-probe.js.map
|
package/dist/model-provider.d.ts
CHANGED
|
@@ -120,9 +120,9 @@ export declare function routeTableOf<R extends object>(view: {
|
|
|
120
120
|
* 所以答案映到本仓两词闭集:`"anthropic"` ⇒ anthropic 腿,`undefined` ⇒ 网关腿;别的名字结构上不可能(表里没有那个键),真撞上 ⇒ **响亮抛**([ref]:运行期
|
|
121
121
|
* miss 臂必须说出来,不静默折网关)。
|
|
122
122
|
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
123
|
+
* 「词想要的腿」({@link catalogBrainLane})与本判词的答案不是同一条的那一格(anthropic 词、路由没装)**不被服务**:目录条目在模型面 stage 的逐条判据里判成
|
|
124
|
+
* 不可用(`config.model_no_brain`);env 表在起服路由判官那里整表拒(`model-route-endpoint.ts`,缺口 `lane_credential_missing`,网关在不在都拒)。
|
|
125
|
+
* 所以到得了派发面的条目,词与本判词恒同一条;这里把 `undefined` 读成网关腿,是引擎路由器 fallback 的逐字转写,不是对那一格的放行。
|
|
126
126
|
*/
|
|
127
127
|
export declare function brainLaneFor(provider: string | undefined, routes: Readonly<Record<string, unknown>>): ModelBrainLane;
|
|
128
128
|
//# sourceMappingURL=model-provider.d.ts.map
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
* **`MODEL_GATEWAY_BASEURL` 没有出厂缺省;配置能派发到的每一条 openai 兼容路由,都必须解析到一个显式配置的
|
|
14
14
|
* base URL(路由自己的 `baseUrl`,或显式设了的网关),否则拒。** 附带一条同类:备用网关
|
|
15
15
|
* (`MODEL_GATEWAY_FALLBACK_URLS`)是主网关的镜像,没有主就没有镜像 ⇒ 拒。
|
|
16
|
+
* 同一只判官的第二条:**一条条目的 provider 词想要的腿(`catalogBrainLane`)与引擎路由器对本部署路由表的答案(`brainLaneFor`)不是同一条 ⇒ 拒**
|
|
17
|
+
* (今天只有一形:`anthropic` 词而 anthropic 路由没装)—— 词与实际线路只许一种说法:不把它交给网关腿冒名服务(网关拿自己的钥匙、自己的线路格式与
|
|
18
|
+
* 缓存口径答它,而条目行上的 `api` / 缓存族仍按词写),网关在不在都一样。
|
|
16
19
|
*
|
|
17
20
|
* ## 执法点(判据只在这里,执法点在调用处 —— 与 [ref] `gateway-url-userinfo` 同形)
|
|
18
21
|
* **判官只判「将要服务的那张表」,拒因句按视图说真话**(视图词 = {@link ModelTableLeg} 两词,进判据入参,不靠调用方拼句):
|
|
@@ -21,7 +24,7 @@
|
|
|
21
24
|
* 严格名册布防(`isRosterGateArmed`)时 env 表是占位、从不被派发 ⇒ 不判它(备用网关那一条与表无关,照判)。
|
|
22
25
|
* 不在 `loadConfig()`:那是目录应用**之前**,env 表还不知道会不会服务(目录一旦采纳就整张换掉它);
|
|
23
26
|
* · 壳 / 包问「这台引擎服务哪张表、起服判官怎么说」读 `GET /v1/models` 的 `modelPlane`(`model-plane-face.ts`,同一只 {@link judgeServedModelRoute});
|
|
24
|
-
*
|
|
27
|
+
* 引擎起来之前读无监听探针(`model-plane-probe.ts`:跑同一对装配段到模型表定形即停,同一只读口)—— 不另设起服前的第二判官;
|
|
25
28
|
* · 热路径:`web-admin-client/apply-effective.ts` 的模型面 stage ⇒ 模型面组拒(opus 腿 O3:同候选其余组照落)、上一代模型面继续服务(目录视图);
|
|
26
29
|
* · run-local:配置源解析完之后按真要派发的表判(`run-local.ts`)—— 本入口没有名册门,不豁免占位;
|
|
27
30
|
* · 登记:`config-invariants.ts` 的 `model-route-endpoint` 条(表的「不许有表外不变量」职责);
|
|
@@ -49,8 +52,8 @@ export declare const GATEWAY_FALLBACK_WITHOUT_PRIMARY_CODE = "config.gateway_fal
|
|
|
49
52
|
* · `endpoint_missing` —— 缺的是网关端点:openai 兼容腿上的条目解析不到 base URL(或备用网关设了、主网关没设);
|
|
50
53
|
* 出路 = 设 `MODEL_GATEWAY_BASEURL`,或(目录视图)给条目自己的 `baseUrl` / (env 视图)挂 anthropic 路由、或不设 `MODEL_ID` 让目录缺省服务;
|
|
51
54
|
* · `lane_credential_missing` —— 缺的是**车道凭据**:条目的 provider 词是 `anthropic`(用户选的是 anthropic 车道),
|
|
52
|
-
* 却因 `ANTHROPIC_API_KEY` / `ANTHROPIC_AUTH_TOKEN` 都没有而没装上 anthropic
|
|
53
|
-
* 出路 =
|
|
55
|
+
* 却因 `ANTHROPIC_API_KEY` / `ANTHROPIC_AUTH_TOKEN` 都没有而没装上 anthropic 路由 —— 词想要的腿与路由器会给的腿不是同一条,网关在不在都拒;
|
|
56
|
+
* 出路 = 补那两把钥匙之一,或把词改成 openai 兼容腿的词(env 视图:`MODEL_PROVIDER=gateway`;目录视图:条目的 provider),拒因句一并给。
|
|
54
57
|
*
|
|
55
58
|
* **声明序 = 语义序**;加一词 ⇒ 所有穷举 switch 当场编译红。
|
|
56
59
|
*/
|
|
@@ -94,8 +97,9 @@ export interface ModelRouteEndpointView {
|
|
|
94
97
|
*
|
|
95
98
|
* 判序即语义:
|
|
96
99
|
* ① 备用网关设了、主网关没设 ⇒ `config.gateway_fallback_without_primary`(备用是主的镜像,这一条与条目无关,先说);
|
|
97
|
-
* ②
|
|
98
|
-
*
|
|
100
|
+
* ② 逐条目:词想要的腿({@link catalogBrainLane})≠ 引擎路由器对本部署路由表的答案({@link brainLaneFor})⇒ 收进「车道没装」一组;
|
|
101
|
+
* 其余落 openai 腿、且 {@link openaiRouteBaseUrl} 解析不到 ⇒ 收进「端点缺」一组。两组一句话**全部点名**(运维一次改完,而不是改一个撞下一个),
|
|
102
|
+
* 车道没装的一组在前(缺口词 `lane_credential_missing`)。
|
|
99
103
|
*
|
|
100
104
|
* `default` 键是目录里另一条的别名(env 腿 `{default: m, [m.id]: m}`、center 腿 `models.default = models[picked]`),
|
|
101
105
|
* 与别的键指同一只对象时不重复点名;只有它一个键时(手搓夹具)照样点名 `default`。
|
|
@@ -31,21 +31,43 @@ export function judgeModelRouteEndpoint(view, leg) {
|
|
|
31
31
|
}
|
|
32
32
|
const routes = routeTableOf(view);
|
|
33
33
|
const entries = Object.entries(view.models ?? {});
|
|
34
|
+
const laneUnmounted = [];
|
|
34
35
|
const unresolved = [];
|
|
35
|
-
let laneCredentialMissing = false;
|
|
36
36
|
for (const [name, m] of entries) {
|
|
37
37
|
if (name === DEFAULT_MODEL_REF && entries.some(([k, other]) => k !== name && other === m))
|
|
38
38
|
continue;
|
|
39
|
-
|
|
39
|
+
const lane = brainLaneFor(m.provider, routes);
|
|
40
|
+
if (catalogBrainLane(m.provider) !== lane) {
|
|
41
|
+
laneUnmounted.push(`"${name}"`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (lane !== "gateway")
|
|
40
45
|
continue;
|
|
41
46
|
if (openaiRouteBaseUrl(m.baseUrl, gateway) !== undefined)
|
|
42
47
|
continue;
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
unresolved.push(`"${name}"`);
|
|
49
|
+
}
|
|
50
|
+
const endpointMissing = unresolved.length > 0 ? routeEndpointMissingRefusal(unresolved, leg) : undefined;
|
|
51
|
+
if (laneUnmounted.length > 0) {
|
|
52
|
+
const reason = laneUnmountedRefusal(laneUnmounted, leg) + (endpointMissing !== undefined ? ` Also: ${endpointMissing}` : "");
|
|
53
|
+
return { code: MODEL_ROUTE_ENDPOINT_MISSING_CODE, gap: "lane_credential_missing", reason };
|
|
54
|
+
}
|
|
55
|
+
return endpointMissing === undefined ? undefined : { code: MODEL_ROUTE_ENDPOINT_MISSING_CODE, gap: "endpoint_missing", reason: endpointMissing };
|
|
56
|
+
}
|
|
57
|
+
function laneUnmountedRefusal(quotedNames, leg) {
|
|
58
|
+
const one = quotedNames.length === 1;
|
|
59
|
+
const head = `${one ? `model ${quotedNames[0]} asks` : `models ${quotedNames.join(", ")} ask`} for the anthropic lane (provider "anthropic"), but no Anthropic route is mounted on this ` +
|
|
60
|
+
`deployment — ANTHROPIC_API_KEY and ANTHROPIC_AUTH_TOKEN are both unset [${MODEL_ROUTE_ENDPOINT_MISSING_CODE}]. ${one ? "It is" : "They are"} not served rather than ` +
|
|
61
|
+
"handed to the openai-compatible gateway under an anthropic label (that lane would answer with its own key, its own wire format and its own cache accounting). ";
|
|
62
|
+
switch (leg) {
|
|
63
|
+
case "env":
|
|
64
|
+
return (head +
|
|
65
|
+
"Pick one way out: (1) set ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN (plus ANTHROPIC_BASE_URL for a non-default endpoint); " +
|
|
66
|
+
"(2) set MODEL_PROVIDER=gateway (or vllm) to serve the env model on the openai-compatible gateway; " +
|
|
67
|
+
"(3) leave MODEL_ID unset and let the default entry of a catalog (config.d/models.json, or the web-admin) serve — a catalog in force replaces the env model table.");
|
|
68
|
+
case "catalog":
|
|
69
|
+
return head + `Set ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN in this service's env, or change ${one ? "the entry's" : "each named entry's"} provider to an OpenAI-compatible route ("gateway" / "vllm") with its own baseUrl.`;
|
|
45
70
|
}
|
|
46
|
-
if (unresolved.length === 0)
|
|
47
|
-
return undefined;
|
|
48
|
-
return { code: MODEL_ROUTE_ENDPOINT_MISSING_CODE, gap: laneCredentialMissing ? "lane_credential_missing" : "endpoint_missing", reason: routeEndpointMissingRefusal(unresolved, leg) };
|
|
49
71
|
}
|
|
50
72
|
function routeEndpointMissingRefusal(quotedNames, leg) {
|
|
51
73
|
const one = quotedNames.length === 1;
|
package/dist/model-select.d.ts
CHANGED
|
@@ -84,6 +84,22 @@ export declare function resolveTaskModel(bodyModel: unknown, objective: string,
|
|
|
84
84
|
notAllowed?: ModelNotAllowed;
|
|
85
85
|
unavailable?: ModelUnavailable;
|
|
86
86
|
};
|
|
87
|
+
/** 用户选择被判的那一份模型面(`ServiceConfig` 结构上满足):目录、档位绑定、不可用条目、本代 `atMention` —— 四件出自同一份配置。 */
|
|
88
|
+
export interface UserModelPlane<M> {
|
|
89
|
+
readonly models: Record<string, M>;
|
|
90
|
+
readonly tiers: Record<string, string> | undefined;
|
|
91
|
+
readonly modelRefusals: Readonly<Record<string, ModelEntryRefusal>> | undefined;
|
|
92
|
+
readonly atMention: AtMention;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 🔴 **用户选择的唯一入口**(请求面 `body.model` / `settings.model`、objective 内联 `@name`,每一条提交腿同调):在**可选目录**({@link selectableCatalog})上解析、
|
|
96
|
+
* 用本代 `atMention` 判许可({@link resolveTaskModel} → {@link isAtMentionable})。可选目录随结果交回(调用方其余显式选择通道 —— `compactionModel` /
|
|
97
|
+
* `agents[].model` / 未知模型拒体的 `available` —— 判的是同一张,不另铸)。哪张目录、哪份许可只在这里取,任何一条腿都没有「取契约缺省」的第二读法。
|
|
98
|
+
*/
|
|
99
|
+
export declare function pickUserModel<M>(plane: UserModelPlane<M>, bodyModel: unknown, objective: string): {
|
|
100
|
+
selectable: Record<string, M>;
|
|
101
|
+
picked: ReturnType<typeof resolveTaskModel>;
|
|
102
|
+
};
|
|
87
103
|
/**
|
|
88
104
|
* [ref] 判别式拒因:这次**用户选择**点中的是一条已发布、但本部署不可用的目录条目(`config.modelRefusals`)。
|
|
89
105
|
* 与 {@link ModelNotAllowed} 同一种处置口:本函数不 throw,调用点按 leg 分流(fresh 400 `request.model_unavailable` /
|
package/dist/model-select.js
CHANGED
|
@@ -57,6 +57,10 @@ export function resolveTaskModel(bodyModel, objective, catalog, atMention, refus
|
|
|
57
57
|
...(unavailable ? { unavailable } : {}),
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
+
export function pickUserModel(plane, bodyModel, objective) {
|
|
61
|
+
const selectable = selectableCatalog(plane.models, plane.tiers, plane.modelRefusals);
|
|
62
|
+
return { selectable, picked: resolveTaskModel(bodyModel, objective, selectable, plane.atMention, plane.modelRefusals) };
|
|
63
|
+
}
|
|
60
64
|
export function selectableCatalog(models, tiers, refusals) {
|
|
61
65
|
const expanded = (expandTiers(models, tiers ?? {}) ?? models);
|
|
62
66
|
const reserved = Object.keys(refusals ?? {}).filter((n) => Object.hasOwn(expanded, n) && !Object.hasOwn(models, n));
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** mountinfo 的一行里两位消费者要的几格。 */
|
|
2
|
+
export interface MountRow {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly parent: string;
|
|
5
|
+
/** 这只挂载的文件系统(`主:次` 设备号;同一个超级块的挂载同号)。 */
|
|
6
|
+
readonly dev: string;
|
|
7
|
+
/** 这只挂载在源文件系统里的根路径(第 4 格;整只文件系统挂上来时是 `/`,绑定挂载一只子目录时是那只子目录)。 */
|
|
8
|
+
readonly root: string;
|
|
9
|
+
readonly mountPoint: string;
|
|
10
|
+
readonly options: readonly string[];
|
|
11
|
+
/** `-` 之后第 1 格(`ext4` / `overlay` / `tmpfs` / `nfs4` …)。 */
|
|
12
|
+
readonly fsType: string;
|
|
13
|
+
/** `-` 之后第 2 格(块设备 `/dev/…`、网络盘的 `主机:/导出`、伪文件系统的名字)。 */
|
|
14
|
+
readonly source: string;
|
|
15
|
+
}
|
|
16
|
+
/** 一份挂载表的解析结果:成形的行 + 读不懂的行数(非空却缺格的行;`-` 之后三格 —— fs 类型 / 挂载源 / 超级块选项 —— 缺任一格或为空串的行照样进表,同时计一行)。 */
|
|
17
|
+
export interface MountTable {
|
|
18
|
+
readonly rows: readonly MountRow[];
|
|
19
|
+
readonly malformed: number;
|
|
20
|
+
}
|
|
21
|
+
/** `ancestor` 是不是 `p` 本身或它的祖先(按路径段比:`/etc/semaX` 不是 `/etc/sema` 的后代)。 */
|
|
22
|
+
export declare const coversPath: (ancestor: string, p: string) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 逐行解析(纯函数)。空行不计;前 6 格缺席或为空、或 `-` 分隔缺席的行不进表、计一行读不懂;`-` 之后三格(内核恒写这三格,没有挂载源时写 `none`)
|
|
25
|
+
* 缺任一格或为空串的行进表(配置根信任判只看行,行为不变)、同时计一行读不懂 —— 持久性判者见到读不懂就整表不判(看见的那一只可能正是读丢的那一行)。
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseMountinfo(text: string): MountTable;
|
|
28
|
+
/**
|
|
29
|
+
* 走路径时**真正看见的**那一只挂载(按拓扑,不按行序 —— 挂载被 move 过去时 mountinfo 的行序不变):从这个视图的顶(parent 不在表里的行)起,
|
|
30
|
+
* 每一层在当前挂载的子挂载里找盖住 `dir` 的、挂载点最短的那一只(沿路径先跨进的那一只;同一挂载点叠挂时上层的 parent 是下层,下一层接着找),直到没有子挂载盖住它。
|
|
31
|
+
* 同一层里挂载点最短的有两只以上(传播出来的影子挂载:同父同点,内核按自己的哈希链查,mountinfo 判不出谁可见)⇒ `"ambiguous"` —— 判不出就不认,不靠行序猜。
|
|
32
|
+
* 没有任何一只盖住 `dir`(表里没有视图的顶)⇒ `undefined`。
|
|
33
|
+
*/
|
|
34
|
+
export declare function visibleMountOf(rows: readonly MountRow[], dir: string): MountRow | "ambiguous" | undefined;
|
|
35
|
+
/** 生产的挂载表:Linux 上读本进程的 mountinfo(读不出 ⇒ 抛,调用方各自处置);别的平台没有 procfs 挂载表 ⇒ `null`。 */
|
|
36
|
+
export declare function readProcessMountinfo(): Promise<string | null>;
|
|
37
|
+
//# sourceMappingURL=mountinfo.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { HOST_PLATFORM } from "./plugins/host-platform.js";
|
|
3
|
+
const unescapeMountinfoPath = (field) => field.replace(/\\([0-7]{3})/g, (_m, oct) => String.fromCharCode(Number.parseInt(oct, 8)));
|
|
4
|
+
export const coversPath = (ancestor, p) => ancestor === p || ancestor === "/" || p.startsWith(`${ancestor}/`);
|
|
5
|
+
export function parseMountinfo(text) {
|
|
6
|
+
const rows = [];
|
|
7
|
+
let malformed = 0;
|
|
8
|
+
for (const line of text.split("\n")) {
|
|
9
|
+
if (line === "")
|
|
10
|
+
continue;
|
|
11
|
+
const f = line.split(" ");
|
|
12
|
+
const [id, parent, dev, root, mountPoint, options] = f;
|
|
13
|
+
const sep = f.indexOf("-", 6);
|
|
14
|
+
if (sep === -1 || !id || !parent || !dev || !root || !mountPoint || !options) {
|
|
15
|
+
malformed++;
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const fsType = f[sep + 1];
|
|
19
|
+
const source = f[sep + 2];
|
|
20
|
+
if (!fsType || !source || !f[sep + 3])
|
|
21
|
+
malformed++;
|
|
22
|
+
rows.push({ id, parent, dev, root: unescapeMountinfoPath(root), mountPoint: unescapeMountinfoPath(mountPoint), options: options.split(","), fsType: fsType ?? "", source: unescapeMountinfoPath(source ?? "") });
|
|
23
|
+
}
|
|
24
|
+
return { rows, malformed };
|
|
25
|
+
}
|
|
26
|
+
export function visibleMountOf(rows, dir) {
|
|
27
|
+
const ids = new Set(rows.map((r) => r.id));
|
|
28
|
+
let level = rows.filter((r) => !ids.has(r.parent) || r.parent === r.id);
|
|
29
|
+
let visible;
|
|
30
|
+
for (let depth = 0; depth <= rows.length; depth++) {
|
|
31
|
+
const covering = level.filter((r) => coversPath(r.mountPoint, dir));
|
|
32
|
+
if (covering.length === 0)
|
|
33
|
+
break;
|
|
34
|
+
const shortest = Math.min(...covering.map((r) => r.mountPoint.length));
|
|
35
|
+
const first = covering.filter((r) => r.mountPoint.length === shortest);
|
|
36
|
+
if (first.length !== 1)
|
|
37
|
+
return "ambiguous";
|
|
38
|
+
const next = first[0];
|
|
39
|
+
visible = next;
|
|
40
|
+
level = rows.filter((r) => r.parent === next.id && r.id !== next.id);
|
|
41
|
+
}
|
|
42
|
+
return visible;
|
|
43
|
+
}
|
|
44
|
+
export async function readProcessMountinfo() {
|
|
45
|
+
return HOST_PLATFORM === "linux" ? readFile("/proc/self/mountinfo", "utf8") : null;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=mountinfo.js.map
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* (本文件那只判与它在会话规则写口、SQL 店写口、四张条目表上的调用)退役,零双读。
|
|
8
8
|
*
|
|
9
9
|
* **调它的面**(点名,不是「每个面」):运维三张名表(`APPROVAL_REQUIRE` / `DENY` / `NEVER_AUTO`)与中心下发的同名表、请求
|
|
10
|
-
* `settings.permissions.{ask,deny}`(经 `config.ts` 的 `unmatchableToolNamesRefusal`)
|
|
10
|
+
* `settings.permissions.{ask,deny,neverAuto}`(经 `config.ts` 的 `unmatchableToolNamesRefusal`)。这些面上退役且无后继的名字在**有通告席**的表上不拒、行原样留着(唯一读法 = 引擎的账 {@link retiredLeftOutAccount};
|
|
11
|
+
* 通告席见 `UnmatchableToolNameJudgment.noticeSeat`;core 7.66.0 [ref] 起请求体 `neverAuto` 也有席 —— 本服务据同一本账铸通告)。会话规则写口直接调 core 的 `assertSessionRuleNamesCurrent`
|
|
11
12
|
* (同一只判官的店形);引擎 allow 层的条目表(请求 `settings.permissions.allow`、运维 `APPROVAL_GRANT`、技能两只清单)交引擎 `compileAllowList`
|
|
12
13
|
* (名册 = {@link TOOL_NAME_ROSTER};判官判非现役的条目读成 `tool_name`,名册里有的只差大小写读成 `near_miss`)。
|
|
13
14
|
* **不调它的面**:`/v1/rules` 的持久规则写口与 `cc-import` 导入口(`http/routes/rules.ts`、`rules-consent.ts` 与两只持久规则店零判官调用)—— 如实未接,
|
|
@@ -18,7 +19,7 @@
|
|
|
18
19
|
*
|
|
19
20
|
* 规则文本里「工具名那一段」怎么取也只有一种读法:{@link ruleEntryToolName}(配置表读它)。
|
|
20
21
|
*/
|
|
21
|
-
import { type PermissionRule, type RuleToolNameVerdict } from "@sema-agent/core";
|
|
22
|
+
import { retiredToolNameAccount, type PermissionRule, type RuleToolNameVerdict } from "@sema-agent/core";
|
|
22
23
|
/**
|
|
23
24
|
* 一条**规则文本**里的工具名那一段(判官与旧名判据的主语)= core 包根 `parsePermissionRule` 的 `toolName`,原样 —— 引擎的技能编译器
|
|
24
25
|
* (`compileSkillGrant`)与规则编译器读条目用的就是这一只:`Bash(npm:*)` ⇒ `Bash`;`mcp__srv(*)` / `mcp__srv()` / 带首尾空格的 `mcp__srv ` ⇒ 光杆名 `mcp__srv`。
|
|
@@ -51,6 +52,31 @@ export declare const NAME_TABLE_BEHAVIOR: "deny";
|
|
|
51
52
|
* (core 7.55.0 [ref]:`mcp__*` 在 deny / ask 里是这一协议的每一只工具、在 allow 里什么也不是),漏传态度的调用点是编译错,不是一条静默的「不带态度」读法。
|
|
52
53
|
*/
|
|
53
54
|
export declare function unmatchableRuleNameOf(name: string, behavior: PermissionRule["behavior"]): UnmatchableRuleName | undefined;
|
|
55
|
+
/** core 7.66.0 [ref] `retiredToolNameAccount` 的答形(包根不导出具名型 ⇒ 从返回型取,不手抄)。 */
|
|
56
|
+
export type RetiredToolNameAccount = NonNullable<ReturnType<typeof retiredToolNameAccount>>;
|
|
57
|
+
/**
|
|
58
|
+
* **限制表上跳过的那几行**,唯一一只读法 = **引擎的账**(core 7.66.0 [ref] `retiredToolNameAccount`):引擎自己的条目读法(`compileAllowList`)读每一条,
|
|
59
|
+
* 再问引擎自己的那一问 `isRetiredLeftOut` —— 退役且**无后继**(退役表那一行写 `removed` / `folded into`,不是 `renamed`),且名册里没有它的另一种大小写
|
|
60
|
+
* (`TEAMCREATE` 旁边挂着 `TeamCreate` ⇒ 那一条是写给那只工具的,照拒)。引擎的工具策略 `deny` / `ask`、任务的工具名清单、技能的 `disallowed-tools` 问的
|
|
61
|
+
* 就是这一问(core 7.65.0 [ref] / 7.66.0 [ref]);本服务的表问同一本账,不另写判官。7.147.0 及更早本仓按判词自判(`retired` ∧ 无 `currentName`),
|
|
62
|
+
* 少问名册孪生那一问 —— 同一事实的第二种读法,随 7.66.0 退役(零双读)。
|
|
63
|
+
* 这样一行够不着任何工具,也没有可以改写成的现名:**不拒、不改写表**(行原样留着 —— 与引擎同:引擎只把它排出拒判,编出的策略里那一行照在,名册里真有同名工具时
|
|
64
|
+
* 它照管);不拒必须配恰一句话 —— 谁读这张表谁说:引擎读的表(请求体 `settings.permissions` 的规则桶、选择器清单、技能表)由引擎铸 `config.legacy_tool_name`;
|
|
65
|
+
* 只有本服务读的表(运维 `APPROVAL_REQUIRE` / `DENY` / `NEVER_AUTO`、中心下发的 `approvalRequire`)由读它的那一处在起服 / 落配日志里点名;
|
|
66
|
+
* 请求体 `settings.permissions.neverAuto`(引擎不读、请求面无日志)由本服务按这本账铸那一条通告(`retired-name-host-notice.ts`)。
|
|
67
|
+
* 本服务的名册看不到嵌入方自挂的工具,所以「够不着」只对本服务知道的工具成立 —— 去掉这一行会让嵌入方自挂的同名工具失去这条限制(静默放宽),留着它最坏是一条死行。
|
|
68
|
+
* 有后继的改名(`Task` ⇒ `Agent`、`KillShell` ⇒ `TaskStop`)、无前缀短名、铸不出的对端段不在账里:照拒并给现名 / 出路。
|
|
69
|
+
* 名册 = {@link TOOL_NAME_ROSTER}(引擎拿这一 run 真挂的名册问;受理口只读得到这一张)。`source` = 这张表的名字(进句子与每条的 `source`,非空)。
|
|
70
|
+
* `deny` / `ask` 读名同(引擎:两者都收紧)。没有这种行 ⇒ `undefined`。账列至多 32 条(`total` 数全部)。
|
|
71
|
+
*/
|
|
72
|
+
export declare function retiredLeftOutAccount(field: "deny" | "ask", source: string, entries: readonly string[]): RetiredToolNameAccount | undefined;
|
|
73
|
+
/** 一条条目是不是账里那种行(逐条问同一本账;限制表的拒判跳过它)。 */
|
|
74
|
+
export declare function isRetiredLeftOut(entry: string): boolean;
|
|
75
|
+
/** 一张**只有本服务读**的限制名表(运维 `APPROVAL_REQUIRE` / `DENY` / `NEVER_AUTO`、中心下发的 `approvalRequire`)里账上的那几行(带退役表自己那一行),供读表处点名;表本身不动。 */
|
|
76
|
+
export declare function retiredLeftOutEntries(source: string, names: readonly string[]): readonly {
|
|
77
|
+
readonly entry: string;
|
|
78
|
+
readonly guidance: string;
|
|
79
|
+
}[];
|
|
54
80
|
/**
|
|
55
81
|
* 判词 → 「为什么永远匹配不到 + 怎么写」(不复述条目本身 —— 调用方的句子已点名它)。引擎判词的 `guidance` 原样带出,是改法指引的**唯一**一句
|
|
56
82
|
* (本仓不在后面追加 1:1 现名:通配名上那个现名是摘要名或更窄的写法,照写不生效;现名过境给机器读的位,如会话规则拒体顶层的 `currentName`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PROTOCOL_TABLE, catalogToolNames, judgeRuleToolName, parsePermissionRule } from "@sema-agent/core";
|
|
1
|
+
import { PROTOCOL_TABLE, catalogToolNames, judgeRuleToolName, parsePermissionRule, retiredToolNameAccount } from "@sema-agent/core";
|
|
2
2
|
import { HOST_TOOL_NAMES } from "./capabilities/host-tool-names.js";
|
|
3
3
|
import { displayListEntry } from "./list-entry-display.js";
|
|
4
4
|
export function ruleEntryToolName(entry) {
|
|
@@ -10,6 +10,15 @@ export function unmatchableRuleNameOf(name, behavior) {
|
|
|
10
10
|
const verdict = judgeRuleToolName(name, TOOL_NAME_ROSTER, behavior);
|
|
11
11
|
return verdict.kind === "current" ? undefined : verdict;
|
|
12
12
|
}
|
|
13
|
+
export function retiredLeftOutAccount(field, source, entries) {
|
|
14
|
+
return retiredToolNameAccount({ field, source, entries }, TOOL_NAME_ROSTER);
|
|
15
|
+
}
|
|
16
|
+
export function isRetiredLeftOut(entry) {
|
|
17
|
+
return retiredLeftOutAccount(NAME_TABLE_BEHAVIOR, "entry", [entry]) !== undefined;
|
|
18
|
+
}
|
|
19
|
+
export function retiredLeftOutEntries(source, names) {
|
|
20
|
+
return retiredLeftOutAccount(NAME_TABLE_BEHAVIOR, source, names)?.detail.entries.map((e) => ({ entry: e.entry, guidance: e.guidance })) ?? [];
|
|
21
|
+
}
|
|
13
22
|
export function describeUnmatchableRuleName(v, name) {
|
|
14
23
|
switch (v.kind) {
|
|
15
24
|
case "retired":
|
package/dist/net-address.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export declare function createCidrSet(cidrs: readonly ParsedCidr[]): CidrSet;
|
|
|
45
45
|
/** 可信代理名单(已由配置层逐项校验过的文本)⇒ 集合。坏项 = 装配缝(配置层已先拒),当场抛,不跳过。 */
|
|
46
46
|
export declare function createTrustedProxySet(items: readonly string[]): CidrSet;
|
|
47
47
|
/**
|
|
48
|
-
* 地址的规范形(
|
|
48
|
+
* 地址的规范形(帽键 / 限流键 / 本机判 / 出网回环判的唯一拼法):IPv4 原样(`isIP` 已保证点分十进制、无前导零);IPv6 取 WHATWG 的压缩小写形;
|
|
49
49
|
* IPv4-mapped IPv6(`::ffff:1.2.3.4` / `::ffff:102:304`)⇒ 点分 IPv4 —— 同一台主机经 IPv4 栈与双栈来时是同一个键。
|
|
50
50
|
* 非地址、带 zone id、带端口、带方括号 ⇒ `undefined`(端口 / 方括号由调用方按自己的文法先剥)。
|
|
51
51
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FileStorageCorruptReadInfo } from "@sema-agent/core";
|
|
2
2
|
import { type FailOpenTag } from "./fail-open.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type Logger } from "./logger.js";
|
|
4
4
|
/**
|
|
5
5
|
* 铸一只腐读披露座。
|
|
6
6
|
*
|
|
@@ -39,10 +39,10 @@ export declare function createCorruptReadFailOpenSeat(tag: FailOpenTag, leg?: (i
|
|
|
39
39
|
*
|
|
40
40
|
* ## 逐命中响亮不降级
|
|
41
41
|
* 这一座里有安全轴的脸(session-policy),所以每命中一行 warn 保留(降成「每进程一次」是降级,[ref] 的裁定);**在此之上**,认出的脸另记账:
|
|
42
|
-
* · session-policy 脸 ⇒
|
|
42
|
+
* · session-policy 脸 ⇒ R 类 tag(`server.session-policy.corrupt-read-fail-open`)—— 计数逐次 + 探针行 + 一次性 warn。core 7.39.2 起按键读拒;
|
|
43
43
|
* core 7.41.0 [ref] 起本会话的枚举拒、别的会话的抹除不动它、重绑带走它 —— 但只对**有归属**的坏行(行里的 `__sid`,否则同名高水位标记的 `__sid`);
|
|
44
|
-
*
|
|
45
|
-
* 抹除扫走无归属坏行那一形 core
|
|
44
|
+
* 无从归属的坏行仍按「无规则」(core 已知限制 KL-1299-a 接受:无从归属 ≠ 本会话);座上分不出读法 ⇒ 这一脸每一发都计(含已拒的)。
|
|
45
|
+
* 抹除扫走无归属坏行那一形 core 是否披露、座上数不数得到,未亲核。放行是 core 的裁定、本仓不包层(源头修复纪律),所以**只记账、不改放行**(R 类:有界放行,计数长期保留);
|
|
46
46
|
* · 其余脸 ⇒ 不计(见 {@link DurableAbsenceFace})。
|
|
47
47
|
* 记账**先于** warn:记账是总函数,warn 可能抛(core 的 guard 会吞掉那个抛),一次日志故障不许吃掉计数。
|
|
48
48
|
*
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { join, sep } from "node:path";
|
|
2
2
|
import { readJsonlRecords, resolveDataRoot } from "@sema-agent/core";
|
|
3
3
|
import { recordFailOpen } from "./fail-open.js";
|
|
4
|
+
import { createLogger } from "./logger.js";
|
|
4
5
|
export function createCorruptReadSeat(warn, event, note) {
|
|
5
6
|
return (info) => {
|
|
6
7
|
return warn(event, {
|
|
@@ -180,10 +181,11 @@ export class JsonlStoreGate {
|
|
|
180
181
|
throw new JsonlStoreCorruptError(this.seat, this.path, this.reason);
|
|
181
182
|
}
|
|
182
183
|
}
|
|
183
|
-
const
|
|
184
|
+
const seamLogger = createLogger();
|
|
185
|
+
const warnToLogSeam = (event, fields) => seamLogger.warn(event, fields);
|
|
184
186
|
const isThenable = (v) => typeof v === "object" && v !== null && typeof v.then === "function";
|
|
185
187
|
function guardDisclosure(disclose, event) {
|
|
186
|
-
const reportSinkFailure = (info, err) =>
|
|
188
|
+
const reportSinkFailure = (info, err) => warnToLogSeam(`${event}_sink_failed`, { kind: info.kind, path: info.path, reason: info.reason, sinkError: err instanceof Error ? err.name : typeof err });
|
|
187
189
|
return (info) => {
|
|
188
190
|
let out;
|
|
189
191
|
try {
|
|
@@ -224,7 +226,7 @@ function replayJsonl(path, seat, shape, onSkipped, disclose) {
|
|
|
224
226
|
export function replayJsonlGuarded(path, seat, shape, warn) {
|
|
225
227
|
const entry = JSONL_REPLAY_SEATS[seat];
|
|
226
228
|
const gate = new JsonlStoreGate(seat, path);
|
|
227
|
-
const disclose = guardDisclosure(createCorruptReadSeat(warn ??
|
|
229
|
+
const disclose = guardDisclosure(createCorruptReadSeat(warn ?? warnToLogSeam, entry.event, entry.note), entry.event);
|
|
228
230
|
const records = replayJsonl(path, seat, shape, (info) => gate.trip(info.reason), disclose);
|
|
229
231
|
return { records, gate };
|
|
230
232
|
}
|