@sema-agent/server 7.147.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 +1039 -24
- package/README.md +20 -7
- package/README.zh-CN.md +14 -8
- package/USAGE.md +380 -163
- package/deploy/sema-up/README.md +16 -5
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +20 -4
- package/deploy/sema-up/chart/values.yaml +3 -2
- package/deploy/sema-up/cluster-up.sh +74 -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/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/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 +14 -39
- 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 +13 -1
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +21 -0
- 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 +28 -30
- 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 +13 -11
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +15 -7
- 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 +5 -2
- 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/deployment-mods.d.ts +1 -1
- package/dist/boot/execution-env.d.ts +17 -7
- package/dist/boot/execution-env.js +37 -31
- package/dist/boot/exit-boundary.d.ts +2 -2
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +17 -15
- package/dist/boot/memory-consolidation.d.ts +37 -29
- package/dist/boot/memory-consolidation.js +11 -5
- package/dist/boot/org-memory.js +1 -1
- package/dist/boot/parked-revive-gate.js +2 -2
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +19 -16
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +55 -67
- package/dist/boot/retention-lane.d.ts +4 -4
- 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 +16 -7
- package/dist/boot/session-faces.js +114 -94
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.js +9 -1
- package/dist/boot/stage-02-web-admin-pull.d.ts +1 -0
- package/dist/boot/stage-02-web-admin-pull.js +6 -1
- package/dist/boot/stage-03-store-backend.d.ts +3 -0
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +2 -0
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +7 -3
- package/dist/boot/stage-05-execution-env.js +2 -2
- package/dist/boot/stage-06-runners.d.ts +10 -12
- package/dist/boot/stage-06-runners.js +23 -15
- package/dist/boot/stage-07-capability-layer.d.ts +11 -8
- package/dist/boot/stage-07-capability-layer.js +5 -3
- package/dist/boot/stage-08-reapers.d.ts +11 -8
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +12 -15
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +12 -15
- package/dist/boot/stage-10-http-server.js +7 -4
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +3 -0
- package/dist/boot/stores.js +21 -10
- 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 +55 -35
- 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 +7 -1
- package/dist/capabilities/center-plugins.js +32 -10
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +2 -2
- package/dist/capabilities/composite-members.js +2 -2
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +6 -15
- package/dist/capabilities/scenarios.js +11 -16
- package/dist/capabilities/skills.d.ts +1 -1
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +38 -11
- package/dist/capability-facts.js +47 -8
- 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 +7 -3
- package/dist/config-catalog.d.ts +16 -1
- package/dist/config-catalog.js +62 -56
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +42 -3
- package/dist/config-invariants.js +69 -5
- package/dist/config-lkg.d.ts +23 -1
- package/dist/config-lkg.js +17 -3
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -110
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +26 -17
- package/dist/config.d.ts +8 -16
- package/dist/config.js +113 -47
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +30 -4
- package/dist/deployment-shape.js +7 -0
- 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.js +2 -1
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-lane-caps.d.ts +5 -18
- package/dist/execution-lane-caps.js +0 -22
- package/dist/execution-placement.d.ts +58 -18
- package/dist/execution-placement.js +41 -2
- 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.js +1 -0
- 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 +3 -3
- 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 +23 -3
- package/dist/history-anchor.js +24 -4
- 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/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +67 -57
- package/dist/hooks/hook-runner.js +260 -186
- 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 +3 -3
- package/dist/http/approval-sweeps.js +54 -30
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claimed-run.d.ts +4 -3
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +76 -30
- package/dist/http/durable-run-leg.d.ts +3 -3
- package/dist/http/durable-run-leg.js +17 -12
- package/dist/http/execution-context.d.ts +17 -43
- package/dist/http/execution-context.js +7 -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 +4 -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 +1 -1
- package/dist/http/memory-store-refusal-reply.js +3 -0
- package/dist/http/owner-access.d.ts +391 -67
- package/dist/http/owner-access.js +371 -35
- package/dist/http/principal-gate.d.ts +24 -81
- package/dist/http/principal-gate.js +24 -68
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +9 -13
- 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 +21 -18
- package/dist/http/resume-legs.js +189 -129
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/route-ctx.d.ts +25 -32
- 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 +70 -65
- 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 +15 -18
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +4 -4
- 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 +2 -0
- 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 +10 -19
- 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 +1 -1
- package/dist/http/routes/projects.js +3 -2
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +20 -5
- 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 +146 -231
- 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 +21 -20
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.js +87 -124
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +136 -120
- 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 +39 -40
- package/dist/http/server.js +36 -11
- 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 +12 -0
- package/dist/http/stored-body-replay.js +2 -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 +4 -3
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- 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-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-scope.d.ts +29 -2
- package/dist/memory-scope.js +64 -15
- package/dist/memory-store-refusal.d.ts +5 -2
- package/dist/memory-sync-client.d.ts +3 -2
- package/dist/memory-sync-client.js +6 -3
- package/dist/model-compat.d.ts +17 -8
- package/dist/model-compat.js +6 -2
- 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 +35 -16
- package/dist/model-entry-refusal.js +40 -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 +23 -14
- package/dist/namespaced-rule-name.js +8 -11
- 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 +58 -38
- package/dist/observability/fail-open.js +60 -38
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.js +3 -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/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-completion-inbox.d.ts +3 -3
- package/dist/orchestration/workflow-completion-inbox.js +3 -2
- package/dist/org-delivery-gate.d.ts +5 -4
- package/dist/org-delivery-gate.js +7 -6
- 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 +67 -5
- package/dist/parked-decide.js +127 -5
- 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 +18 -7
- package/dist/plugins/approval-ask-store-file.js +37 -14
- package/dist/plugins/approval-ask-store-memory.d.ts +12 -4
- package/dist/plugins/approval-ask-store-memory.js +24 -10
- package/dist/plugins/approval-ask-store-sql.d.ts +39 -20
- package/dist/plugins/approval-ask-store-sql.js +41 -10
- 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 +2 -0
- package/dist/plugins/blob-backend.js +9 -6
- package/dist/plugins/caching-session-store.d.ts +13 -1
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +32 -5
- package/dist/plugins/checkpoint-index-columns.js +36 -1
- package/dist/plugins/checkpoint-store-face.d.ts +83 -10
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.js +1 -0
- 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/file-run-store.d.ts +63 -23
- package/dist/plugins/file-run-store.js +138 -83
- 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 +2 -2
- 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 +58 -23
- package/dist/plugins/local-checkpoint-store.js +195 -76
- package/dist/plugins/local-data-dir-modes-m39.js +2 -1
- 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 +4 -2
- package/dist/plugins/local-engine-high-water.js +4 -1
- package/dist/plugins/local-session-store.d.ts +358 -125
- package/dist/plugins/local-session-store.js +824 -251
- 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 +18 -1
- package/dist/plugins/local-task-attachment-store.js +22 -1
- package/dist/plugins/memory-embedder.js +9 -7
- package/dist/plugins/memory-engine-pg.d.ts +3 -2
- package/dist/plugins/memory-engine-pg.js +14 -5
- package/dist/plugins/memory-engine-sql-apply.d.ts +8 -4
- package/dist/plugins/memory-engine-sql-apply.js +6 -8
- package/dist/plugins/memory-engine-tidb.d.ts +4 -2
- package/dist/plugins/memory-engine-tidb.js +11 -2
- 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 +186 -45
- package/dist/plugins/one-time-migrations.js +442 -119
- package/dist/plugins/org-delivery-quota-store.js +2 -1
- package/dist/plugins/permission-rule-store-file.d.ts +3 -3
- 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 +1 -31
- package/dist/plugins/pg-pool.js +16 -7
- package/dist/plugins/remote-env-e2b.d.ts +7 -25
- package/dist/plugins/remote-env-e2b.js +34 -25
- package/dist/plugins/remote-env-host.d.ts +2 -9
- package/dist/plugins/remote-env-host.js +34 -22
- package/dist/plugins/remote-env-k8s.d.ts +40 -45
- package/dist/plugins/remote-env-k8s.js +107 -58
- package/dist/plugins/remote-env-local-docker.d.ts +148 -14
- package/dist/plugins/remote-env-local-docker.js +367 -72
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/retention-deployment.d.ts +49 -17
- package/dist/plugins/retention-deployment.js +39 -8
- 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 -9
- package/dist/plugins/schema-consistency.js +212 -11
- 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 +9 -0
- package/dist/plugins/schema-ensure-legs.js +1 -1
- 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 +27 -3
- package/dist/plugins/session-ext-table.js +19 -6
- package/dist/plugins/session-fork.d.ts +15 -1
- 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 +12 -0
- package/dist/plugins/session-row-sql.js +3 -3
- 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 +38 -12
- package/dist/plugins/session-store-sql.js +130 -30
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/shared-memory-store-sql.d.ts +0 -69
- package/dist/plugins/shared-memory-store-sql.js +2 -1
- 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/sql-driver.d.ts +1 -1
- package/dist/plugins/sql-driver.js +2 -1
- package/dist/plugins/sql-errors.d.ts +32 -5
- package/dist/plugins/sql-errors.js +55 -7
- 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 +84 -15
- package/dist/plugins/store-backend.js +186 -55
- package/dist/plugins/store-contracts.d.ts +90 -30
- package/dist/plugins/store-contracts.js +22 -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 +15 -3
- package/dist/plugins/task-attachment-store.js +22 -9
- package/dist/plugins/tidb-pool.js +23 -8
- 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/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/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 +5 -3
- package/dist/rules-consent.js +1 -0
- 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 +92 -80
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +26 -15
- package/dist/runs.js +39 -27
- package/dist/runtime-caps-resolver.d.ts +21 -6
- package/dist/runtime-caps-resolver.js +17 -4
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -5
- package/dist/sealed-key-layout.js +5 -0
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +115 -27
- package/dist/security.d.ts +128 -158
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +25 -0
- package/dist/server-secret-env.d.ts +21 -5
- package/dist/server-secret-env.js +14 -4
- 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 +5 -5
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +52 -5
- 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 +0 -71
- package/dist/session-resident-background.js +4 -3
- package/dist/session-row.d.ts +2 -1
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-posture.d.ts +136 -20
- package/dist/store-posture.js +188 -3
- package/dist/stored-request-hooks-m20.js +2 -2
- 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/checkpoint-store-sql.d.ts +33 -28
- package/dist/stores-sql/checkpoint-store-sql.js +75 -44
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/stores-sql/pg-session-storage.d.ts +7 -5
- package/dist/stores-sql/pg-session-storage.js +54 -46
- package/dist/stores-sql/retention-store-sql.d.ts +87 -19
- package/dist/stores-sql/retention-store-sql.js +92 -27
- package/dist/stores-sql/session-policy-store-sql.d.ts +32 -10
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +12 -6
- package/dist/stores-sql/tidb-session-storage.d.ts +4 -4
- package/dist/stores-sql/tidb-session-storage.js +13 -8
- package/dist/stores-sql/tidb-session-store.d.ts +36 -17
- package/dist/stores-sql/tidb-session-store.js +69 -39
- package/dist/stores-sql/windowed-session-storage.d.ts +5 -0
- package/dist/stores-sql/windowed-session-storage.js +9 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +1 -1
- package/dist/task-a2a.js +3 -3
- package/dist/task-cwd.d.ts +20 -0
- package/dist/task-cwd.js +8 -0
- package/dist/task-mcp.d.ts +1 -1
- package/dist/task-mcp.js +3 -3
- package/dist/task-settings.d.ts +14 -10
- package/dist/task-settings.js +18 -7
- package/dist/terminal.d.ts +25 -43
- package/dist/terminal.js +31 -11
- package/dist/tool-approval.d.ts +131 -129
- package/dist/tool-approval.js +189 -193
- package/dist/trace/core-keyset-guard.d.ts +13 -6
- package/dist/trace/core-vocab-wire.d.ts +95 -0
- package/dist/trace/core-vocab-wire.js +15 -0
- package/dist/trace/exit-seat.d.ts +30 -4
- package/dist/trace/exit-seat.js +40 -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 +55 -42
- package/dist/trace/project.js +52 -19
- package/dist/trace/redact.d.ts +123 -27
- package/dist/trace/redact.js +880 -260
- package/dist/trace/self-minted-wire.d.ts +487 -19
- package/dist/trace/self-minted-wire.js +172 -23
- package/dist/trace/wire-projection-faces.d.ts +5 -6
- package/dist/trace/wire-projection-faces.js +2 -2
- 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 +13 -16
- 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/center-request.d.ts +2 -2
- package/dist/web-admin-client/center-request.js +15 -15
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -1
- 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/http-client.d.ts +1 -1
- package/dist/web-admin-client/http-client.js +23 -4
- 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 +8 -4
- package/dist/web-admin-client/skills-mcp.d.ts +2 -2
- package/dist/web-admin-client/types.d.ts +1 -2
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/package.json +6 -3
- package/scripts/drain-check-local.mjs +118 -147
- package/scripts/drain-check.mysql.sql +22 -2
- package/scripts/drain-check.pg.sql +22 -2
- 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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { personOf } from "./owner-brands.js";
|
|
2
|
+
import { recoveredSubject } from "./owner-faces.js";
|
|
3
|
+
export function createEngineSessionRulesSeat(store, headOf) {
|
|
4
|
+
const keyFor = async (sessionId, principal) => {
|
|
5
|
+
if (principal === undefined || headOf === undefined)
|
|
6
|
+
return principal;
|
|
7
|
+
const owner = (await headOf(sessionId))?.owner;
|
|
8
|
+
if (owner === undefined || owner === null)
|
|
9
|
+
return principal;
|
|
10
|
+
return personOf(recoveredSubject(owner)) === principal ? owner : principal;
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
getRules: async (sessionId, principal) => store.getRules(sessionId, await keyFor(sessionId, principal)),
|
|
14
|
+
putRules: async (sessionId, principal, rules, opts) => store.putRules(sessionId, await keyFor(sessionId, principal), rules, opts),
|
|
15
|
+
...(store.listBySession !== undefined ? { listBySession: store.listBySession.bind(store) } : {}),
|
|
16
|
+
...(store.deleteBySession !== undefined ? { deleteBySession: store.deleteBySession.bind(store) } : {}),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=session-rules-seat.js.map
|
package/dist/session-titler.d.ts
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* "Has it a title?" is read from the column on every submit (one point read) — the process keeps NO "already titled"
|
|
12
12
|
* memo, because such a memo would be a second answer to that question that a clear turns stale. Generation = one
|
|
13
13
|
* cheap-model one-liner via the deployment's hookLlm face (summarize role → MODEL_CHEAP_ID when configured, else the
|
|
14
|
-
* main model; bounded + timed out)
|
|
14
|
+
* main model; bounded + timed out), asked at the LOWEST REASONING SEAT (`reasoningSeat: "lowest"`: a one-line title is
|
|
15
|
+
* not worth a thinking pass — thinking off where the model's wire can spell it, `low` where it cannot; the keys come from
|
|
16
|
+
* core's one dialect table and the output cap is sized for the answer plus that tier's thinking, both owned by the llm face).
|
|
15
17
|
*
|
|
16
18
|
* WRITE-AFTER NOTICE: the title that lands is announced to the run that triggered it — `maybeTitle`'s `onTitled` hands the
|
|
17
19
|
* seat (`run-acceptance.ts`) the one `session_titled` frame (`session-titled-frame.ts`, contract §4a-ttl) built from the
|
|
@@ -24,7 +26,7 @@
|
|
|
24
26
|
* session; the store's IS NULL guard closes the cross-replica race (double generation costs one extra cheap
|
|
25
27
|
* call at worst, and exactly one title lands).
|
|
26
28
|
*/
|
|
27
|
-
import type {
|
|
29
|
+
import type { HookLlmCall } from "./hooks/hook-runner.js";
|
|
28
30
|
import { type SessionTitledFrame } from "./session-titled-frame.js";
|
|
29
31
|
export interface SessionTitlerDeps {
|
|
30
32
|
/** Write-once store leg (SQL twins / local sidecar). Resolves false when a title already existed. */
|
|
@@ -35,19 +37,9 @@ export interface SessionTitlerDeps {
|
|
|
35
37
|
* and if still absent, release the seen slot so the NEXT submit retries (never a permanently-untitled
|
|
36
38
|
* session via a swallowed early UPDATE-0). Local lane has no row-existence dimension → never "none". */
|
|
37
39
|
probeTitle(sessionId: string): Promise<"none" | "untitled" | "titled">;
|
|
38
|
-
/** The deployment's cheap one-shot LLM face (main.ts hookLlm — summarize role default).
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
timeoutMs: number;
|
|
42
|
-
model?: string;
|
|
43
|
-
}): Promise<{
|
|
44
|
-
ok: true;
|
|
45
|
-
text: string;
|
|
46
|
-
} | {
|
|
47
|
-
ok: false;
|
|
48
|
-
error: string;
|
|
49
|
-
code?: HookLlmFailureCode;
|
|
50
|
-
}>;
|
|
40
|
+
/** The deployment's cheap one-shot LLM face (main.ts hookLlm — summarize role default). The face's own type, not a
|
|
41
|
+
* second spelling of it: the titler declares its reasoning seat (`reasoningSeat`) on this call and the face honors it. */
|
|
42
|
+
llm: HookLlmCall;
|
|
51
43
|
logger?: {
|
|
52
44
|
debug?(msg: string, meta?: unknown): void;
|
|
53
45
|
info?(msg: string, meta?: unknown): void;
|
package/dist/session-titler.js
CHANGED
|
@@ -79,7 +79,7 @@ export function createSessionTitler(deps) {
|
|
|
79
79
|
deps.metrics?.inc("session_title_total", { outcome: "already_titled" });
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
const r = await deps.llm({ prompt: buildTitlePrompt(objective), timeoutMs: LLM_TIMEOUT_MS, model });
|
|
82
|
+
const r = await deps.llm({ prompt: buildTitlePrompt(objective), timeoutMs: LLM_TIMEOUT_MS, model, reasoningSeat: "lowest" });
|
|
83
83
|
if (!r.ok) {
|
|
84
84
|
deps.metrics?.inc("session_title_total", { outcome: "llm_failed" });
|
|
85
85
|
logFailure(sessionId, r.error, r.code);
|
package/dist/spec-fields.d.ts
CHANGED
|
@@ -78,12 +78,60 @@ export declare const MAX_TASK_AGENTS = 32;
|
|
|
78
78
|
* `ruleEntryListShapeOk`):引擎直接 `for (const entry of list)` —— 一个裸字符串 `"Bash"` 会被逐字符迭代成 `B` / `a` / `s` / `h` 四条
|
|
79
79
|
* (deny 侧 = 意图静默落空,安全轴上的放宽方向)。条目的**文法与名字**是引擎的读法:允侧读不出的条目(`*` / 写路径 / 域名 / 退役名 …)引擎在开跑时发
|
|
80
80
|
* `permission.allowed_tool_not_granted`(受众 = 用户);拒侧读成空的条目(文法或名字层)在 `resolveSpec` 拒(提交 400 / 续跑 409,`rule-entry-list.ts` 的
|
|
81
|
-
* `inertToolListEntryOf`,判据 = 引擎的条目读法;同一只函数也拒请求的工具名选择器清单里的近似名 /
|
|
81
|
+
* `inertToolListEntryOf`,判据 = 引擎的条目读法;同一只函数也拒请求的工具名选择器清单里的近似名 / 有后继的退役名;限制侧**没有后继**的退役名 core 7.66.0 起不拒,引擎保留这一行并发 `config.legacy_tool_name`)。
|
|
82
82
|
* **条数帽**是全部工具名清单的同一只判(`rule-entry-list.ts` 的 `skillToolListsOverCap`;句子与机读位 `field` 点体内坐标 `skills[1].allowedTools` /
|
|
83
83
|
* `agents[0].skills[2].disallowedTools`):顶层 `validateUserSkills` 与子代 {@link validateTaskAgents} 两道门都逐条先形、后帽(与 7.131.0 的拒点与判序同);
|
|
84
84
|
* 拒点 `resolveSpec` 两腿同经的 `inertToolListEntryOf` 先过同一只判;无长度帽([ref])。
|
|
85
85
|
*/
|
|
86
86
|
export declare const skillToolListOk: (v: unknown) => v is readonly string[];
|
|
87
|
+
/**
|
|
88
|
+
* = core `SKILL_CONTENT_MAX_CHARS`(1 MiB 加载门;core 1.293 起 invoke 全文零截断、超 1 MiB 整拒;常量在 `dist/core/runner/synthetic-tools.js`,
|
|
89
|
+
* 未从 core 包根导出,故钉本地孪生 + 本出处注记)。两道技能门(顶层 `body.skills[i]` 与子代 `agents[a].skills[j]`)读这**一只**:同值两名就是第二个会漂的域。
|
|
90
|
+
* 🔴 这是技能面**唯一**剩下的尺寸门,而且它不是超集帽:引擎在装配期对超 1 MiB 的技能本就整拒,门上先答只是把同一个判决搬到调用方看得懂的地方
|
|
91
|
+
* ([ref] 退役的三条帽 —— 条数 / description / name 长度 —— 都没有这个性质)。
|
|
92
|
+
*/
|
|
93
|
+
export declare const MAX_SKILL_CONTENT_CHARS = 1048576;
|
|
94
|
+
/**
|
|
95
|
+
* 请求面技能上**有名而不收**的键:每只一句句尾,两道门同字节(拒句 = 体内坐标 + 句尾)。本表只给**话**;键在不在由 {@link namedRefusalOf} 答。
|
|
96
|
+
* · `manifest` —— core 7.41.0 [ref] 退役(硬破坏,零别名);出路只点本服务上真存在的旋钮:两只清单、deny 规则 / 子代 `allowTools`、会话规则 `allowDirs`。
|
|
97
|
+
* 任何值都拒(`null` / 空对象同样是「我带了 manifest」),不翻译成 `allowedTools`(那是放宽方向);
|
|
98
|
+
* · `mods` —— core 7.56.0 [ref] 的技能座扩展注册(带 `register` 函数的代码对象),不是请求数据(JSON 带不过函数);任何值都拒。
|
|
99
|
+
*/
|
|
100
|
+
export declare const SKILL_NAMED_REFUSALS: {
|
|
101
|
+
readonly manifest: "was retired in core 7.41.0 — a skill's tools are its allowedTools / disallowedTools now (an allow-rule and a deny-rule source for the run the skill is activated in, never a fence); move manifest.allowTools to allowedTools. To fence tools use deny rules (settings.permissions.deny) or a delegated agent's allowTools; to fence write paths use the session rules' allowDirs";
|
|
102
|
+
readonly mods: "is not a request key — skill registrations are code the deployment mounts, not request data (this server does not compile skill hooks: GET /v1/capabilities answers mods.skill_seat: false)";
|
|
103
|
+
};
|
|
104
|
+
/** 一键的撞帽读数(形对、只是超了帽;量纲 / 送来的量 / 帽)。形错不是撞帽 —— 那一形只有句子。 */
|
|
105
|
+
interface SkillFieldLimit {
|
|
106
|
+
readonly measure: LimitMeasure;
|
|
107
|
+
readonly count: number;
|
|
108
|
+
readonly cap: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 一条技能的问题 —— **数据,不带坐标**:`key` = 出问题的那一键(缺席 = 这条技能本身不是对象)、`words` = 这一键的话(句尾)、撞帽另带读数。
|
|
112
|
+
* 坐标由调用方给({@link skillRefusalAt} 一处铸句子与机读位),所以两道门的句尾逐字节同。
|
|
113
|
+
*/
|
|
114
|
+
export interface SkillItemIssue {
|
|
115
|
+
readonly key?: string;
|
|
116
|
+
readonly words: string;
|
|
117
|
+
readonly limit?: SkillFieldLimit;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* **一条技能的唯一判官**(顶层 `validateUserSkills` 与子代 {@link taskAgentIssue} 都只调它):合形 ⇒ `null`;否则第一处问题({@link SkillItemIssue})。
|
|
121
|
+
* 判序:不是对象 ⇒ 整条;点名拒的两只({@link namedRefusalOf})→ 键序逐键过闭集(未知键);再按键表序判必填与形(撞帽的形对键带读数)。
|
|
122
|
+
* 键判断用 `Object.hasOwn`:`in` 走原型链,JSON 里的 "toString" / "constructor" 键会被误判成白名单字段(与 {@link taskAgentIssue} 同一条教训)。
|
|
123
|
+
* 调用方写的键名过唯一回显口径(有界、剥控制 / 双向字符)再进句子与坐标。
|
|
124
|
+
*/
|
|
125
|
+
export declare function skillItemIssue(skill: unknown): SkillItemIssue | null;
|
|
126
|
+
/** 一条技能的拒(两道门同形):句子 = `<坐标> <这一键的话>`;机读位 `field` = 那一键的体内坐标,撞帽另带 `reason` / `count` / `cap`。 */
|
|
127
|
+
export interface SkillItemRefusal {
|
|
128
|
+
readonly message: string;
|
|
129
|
+
readonly facts: {
|
|
130
|
+
readonly field: string;
|
|
131
|
+
} | LimitFacts;
|
|
132
|
+
}
|
|
133
|
+
/** 把 {@link skillItemIssue} 的问题铸成坐标 `at`(`skills[0]` / `agents[1].skills[2]`)上的拒 —— 句子与机读位的唯一铸点。 */
|
|
134
|
+
export declare function skillRefusalAt(at: string, issue: SkillItemIssue): SkillItemRefusal;
|
|
87
135
|
/**
|
|
88
136
|
* 一条子代定义的裁决:`message` = 一句可 400 的英文(不带下标,调用方加);撞帽时另带 `limit`(`rel` = 相对这条定义的坐标 `allowTools[3]` / `name`),
|
|
89
137
|
* 句子是撞帽的头一句(`agent.allowTools[3] has 129 characters — at most 128 are accepted`:撞了哪一条帽、送来多少、帽多少),
|
|
@@ -97,11 +145,16 @@ export interface TaskAgentIssue {
|
|
|
97
145
|
readonly count: number;
|
|
98
146
|
readonly cap: number;
|
|
99
147
|
};
|
|
148
|
+
/** 问题在这条定义的第 `index` 条技能上(技能判官的问题,不带坐标)—— {@link validateTaskAgents} 以体内坐标 `agents[i].skills[index]` 铸拒({@link skillRefusalAt})。 */
|
|
149
|
+
readonly skill?: {
|
|
150
|
+
readonly index: number;
|
|
151
|
+
readonly issue: SkillItemIssue;
|
|
152
|
+
};
|
|
100
153
|
}
|
|
101
|
-
/** 提交体 `agents` 的拒:句子(带下标)+
|
|
154
|
+
/** 提交体 `agents` 的拒:句子(带下标)+ 机读位(撞帽:`field` / `reason` / `count` / `cap`,`limit-refusal.ts` 一处铸;技能那一层的每一只拒带 `field`,{@link skillRefusalAt})。 */
|
|
102
155
|
export interface TaskAgentsRefusal {
|
|
103
156
|
readonly message: string;
|
|
104
|
-
readonly facts?:
|
|
157
|
+
readonly facts?: SkillItemRefusal["facts"];
|
|
105
158
|
}
|
|
106
159
|
/** [ref] 单条 agent 定义的形状裁决:null=合法;否则一句可 400 的英文错误(不带索引,调用方自己加)。
|
|
107
160
|
* 白名单外键 fail-loud —— 与 resilience/limits 的「容忍未知键」相反:agents 是能力定义,静默丢字段 =
|
|
@@ -262,4 +315,5 @@ export declare function normalizeApproachNotice(raw: unknown): false | {
|
|
|
262
315
|
* 全空 ⇒ undefined(spec 不挂 limits 键,byte-compat)。
|
|
263
316
|
*/
|
|
264
317
|
export declare function resolveTaskLimits(bodyLimits: unknown, caps: TaskLimitCaps, envTimeoutSec: number, requirePrincipal: boolean | undefined, warn?: (event: string, fields: Record<string, unknown>) => void): TaskSpec["limits"];
|
|
318
|
+
export {};
|
|
265
319
|
//# sourceMappingURL=spec-fields.d.ts.map
|
package/dist/spec-fields.js
CHANGED
|
@@ -3,7 +3,8 @@ import { taskWallClockSec } from "./task-workflow.js";
|
|
|
3
3
|
import { ABSOLUTE_HOST_PATH_MAX, isAbsoluteHostPath } from "@sema-agent/settings-schema";
|
|
4
4
|
import { ruleEntryListShapeOk, skillToolListsOverCap } from "./rule-entry-list.js";
|
|
5
5
|
import { describeLimit, limitFacts, limitRefusal } from "./limit-refusal.js";
|
|
6
|
-
import { quotedCallerText } from "./caller-text-echo.js";
|
|
6
|
+
import { echoCallerText, quotedCallerText } from "./caller-text-echo.js";
|
|
7
|
+
import { skillCarriesRetiredManifest } from "./http/retired-skill-manifest.js";
|
|
7
8
|
export function normalizeSuggestNextPrompts(v) {
|
|
8
9
|
if (v === true)
|
|
9
10
|
return true;
|
|
@@ -77,7 +78,6 @@ const MAX_AGENT_TEXT_CHARS = 4_096;
|
|
|
77
78
|
const MAX_AGENT_SYSTEM_PROMPT_CHARS = 65_536;
|
|
78
79
|
const MAX_AGENT_TOOLS = 64;
|
|
79
80
|
const MAX_AGENT_TOOL_NAME_CHARS = 128;
|
|
80
|
-
const MAX_AGENT_SKILL_CONTENT_CHARS = 1_048_576;
|
|
81
81
|
const MAX_AGENT_MAX_TURNS = 1_000;
|
|
82
82
|
const boundedString = (max) => (v) => typeof v === "string" && v.length <= max;
|
|
83
83
|
const toolList = (v) => Array.isArray(v) &&
|
|
@@ -96,54 +96,69 @@ const toolListLimit = (v) => {
|
|
|
96
96
|
};
|
|
97
97
|
const plainObject = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
|
|
98
98
|
export const skillToolListOk = ruleEntryListShapeOk;
|
|
99
|
-
const
|
|
100
|
-
|
|
99
|
+
const SKILL_TOOL_LIST_DESC = "an array of strings (permission-rule spellings: a tool name, mcp__<server> / mcp__<server>__*, Bash(<prefix>:*), Read(//<dir>/**))";
|
|
100
|
+
export const MAX_SKILL_CONTENT_CHARS = 1_048_576;
|
|
101
|
+
export const SKILL_NAMED_REFUSALS = {
|
|
102
|
+
manifest: "was retired in core 7.41.0 — a skill's tools are its allowedTools / disallowedTools now (an allow-rule and a deny-rule source for the run the skill is activated in, never a fence); move manifest.allowTools to allowedTools. To fence tools use deny rules (settings.permissions.deny) or a delegated agent's allowTools; to fence write paths use the session rules' allowDirs",
|
|
103
|
+
mods: "is not a request key — skill registrations are code the deployment mounts, not request data (this server does not compile skill hooks: GET /v1/capabilities answers mods.skill_seat: false)",
|
|
104
|
+
};
|
|
105
|
+
const skillCharLimit = (max) => (v) => typeof v === "string" && v.length > max ? { measure: "characters", count: v.length, cap: max } : undefined;
|
|
101
106
|
const SKILL_FIELD_SHAPES = {
|
|
102
|
-
name: { required: true, ok: (v) => typeof v === "string" && v.length > 0 },
|
|
103
|
-
description: { required: true, ok: (v) => typeof v === "string" },
|
|
104
|
-
content: {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
name: { required: true, desc: "a non-empty string", ok: (v) => typeof v === "string" && v.length > 0 },
|
|
108
|
+
description: { required: true, desc: "a string", ok: (v) => typeof v === "string" },
|
|
109
|
+
content: {
|
|
110
|
+
required: true,
|
|
111
|
+
desc: `a non-empty string of at most ${MAX_SKILL_CONTENT_CHARS} characters (the engine rejects skills over this size outright at load time)`,
|
|
112
|
+
ok: (v) => typeof v === "string" && v.length > 0 && v.length <= MAX_SKILL_CONTENT_CHARS,
|
|
113
|
+
limit: skillCharLimit(MAX_SKILL_CONTENT_CHARS),
|
|
114
|
+
},
|
|
115
|
+
allowedTools: { required: false, desc: SKILL_TOOL_LIST_DESC, ok: skillToolListOk },
|
|
116
|
+
disallowedTools: { required: false, desc: SKILL_TOOL_LIST_DESC, ok: skillToolListOk },
|
|
117
|
+
files: {
|
|
118
|
+
required: false,
|
|
119
|
+
desc: "an array of { path, content } entries (path a non-empty string, content a string)",
|
|
120
|
+
ok: (v) => Array.isArray(v) && v.every((f) => plainObject(f) && typeof f.path === "string" && f.path.length > 0 && typeof f.content === "string"),
|
|
121
|
+
},
|
|
122
|
+
baseDir: {
|
|
123
|
+
required: false,
|
|
124
|
+
desc: `an absolute path string of at most ${ABSOLUTE_HOST_PATH_MAX} characters with no ".." segment and no NUL byte (it is not resolved or read here — the engine only substitutes it into the skill's own text)`,
|
|
125
|
+
ok: isAbsoluteHostPath,
|
|
126
|
+
limit: skillCharLimit(ABSOLUTE_HOST_PATH_MAX),
|
|
127
|
+
},
|
|
110
128
|
};
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
129
|
+
const SKILL_UNKNOWN_KEY_TAIL = `is not a skill key — a skill carries ${Object.keys(SKILL_FIELD_SHAPES)
|
|
130
|
+
.filter((k) => SKILL_FIELD_SHAPES[k].required)
|
|
131
|
+
.join(", ")} and optionally ${Object.keys(SKILL_FIELD_SHAPES)
|
|
132
|
+
.filter((k) => !SKILL_FIELD_SHAPES[k].required)
|
|
133
|
+
.join(", ")}`;
|
|
134
|
+
function namedRefusalOf(skill) {
|
|
135
|
+
if (skillCarriesRetiredManifest(skill))
|
|
136
|
+
return "manifest";
|
|
137
|
+
return Object.hasOwn(skill, "mods") ? "mods" : undefined;
|
|
138
|
+
}
|
|
139
|
+
export function skillItemIssue(skill) {
|
|
140
|
+
if (!plainObject(skill))
|
|
141
|
+
return { words: "must be an object { name, description, content }" };
|
|
142
|
+
const named = namedRefusalOf(skill);
|
|
143
|
+
if (named !== undefined)
|
|
144
|
+
return { key: named, words: SKILL_NAMED_REFUSALS[named] };
|
|
145
|
+
for (const key of Object.keys(skill)) {
|
|
146
|
+
if (!Object.hasOwn(SKILL_FIELD_SHAPES, key))
|
|
147
|
+
return { key: echoCallerText(key), words: SKILL_UNKNOWN_KEY_TAIL };
|
|
117
148
|
}
|
|
118
|
-
for (const [
|
|
119
|
-
const v =
|
|
120
|
-
if (v === undefined)
|
|
121
|
-
if (shape.required)
|
|
122
|
-
return false;
|
|
149
|
+
for (const [key, shape] of Object.entries(SKILL_FIELD_SHAPES)) {
|
|
150
|
+
const v = skill[key];
|
|
151
|
+
if (v === undefined ? !shape.required : shape.ok(v))
|
|
123
152
|
continue;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
return true;
|
|
129
|
-
};
|
|
130
|
-
const skillsLimit = (v) => {
|
|
131
|
-
if (!Array.isArray(v))
|
|
132
|
-
return undefined;
|
|
133
|
-
const j = v.findIndex((s) => !skillOk(s));
|
|
134
|
-
const s = j < 0 ? undefined : v[j];
|
|
135
|
-
if (!plainObject(s))
|
|
136
|
-
return undefined;
|
|
137
|
-
const content = s["content"];
|
|
138
|
-
const baseDir = s["baseDir"];
|
|
139
|
-
if (typeof content === "string" && content.length > MAX_AGENT_SKILL_CONTENT_CHARS) {
|
|
140
|
-
return { sub: `[${j}].content`, measure: "characters", count: content.length, cap: MAX_AGENT_SKILL_CONTENT_CHARS, keepShapeSentence: true };
|
|
153
|
+
const limit = v === undefined ? undefined : shape.limit?.(v);
|
|
154
|
+
return { key, words: `must be ${shape.desc}`, ...(limit === undefined ? {} : { limit }) };
|
|
141
155
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
};
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
export function skillRefusalAt(at, issue) {
|
|
159
|
+
const field = issue.key === undefined ? at : `${at}.${issue.key}`;
|
|
160
|
+
return { message: `${field} ${issue.words}`, facts: issue.limit === undefined ? { field } : limitFacts(field, issue.limit.measure, issue.limit.count, issue.limit.cap) };
|
|
161
|
+
}
|
|
147
162
|
const memoryOk = (v) => {
|
|
148
163
|
if (!plainObject(v))
|
|
149
164
|
return false;
|
|
@@ -171,11 +186,7 @@ const TASK_AGENT_FIELD_SHAPES = {
|
|
|
171
186
|
whenToUseLean: { desc: `a string of at most ${MAX_AGENT_TEXT_CHARS} characters`, ok: boundedString(MAX_AGENT_TEXT_CHARS), limit: charLimit(MAX_AGENT_TEXT_CHARS) },
|
|
172
187
|
allowTools: { desc: `an array of at most ${MAX_AGENT_TOOLS} non-empty strings of at most ${MAX_AGENT_TOOL_NAME_CHARS} characters each`, ok: toolList, limit: toolListLimit },
|
|
173
188
|
denyTools: { desc: `an array of at most ${MAX_AGENT_TOOLS} non-empty strings of at most ${MAX_AGENT_TOOL_NAME_CHARS} characters each`, ok: toolList, limit: toolListLimit },
|
|
174
|
-
skills: {
|
|
175
|
-
desc: "an array of { name, description, content } skill objects (optional allowedTools/disallowedTools/files/baseDir; allowedTools/disallowedTools are arrays of strings; files entries need { path, content }; baseDir must be an absolute path with no \"..\" segment) — no count cap; the engine renders the listing within its own byte budget",
|
|
176
|
-
ok: (v) => Array.isArray(v) && v.every(skillOk),
|
|
177
|
-
limit: skillsLimit,
|
|
178
|
-
},
|
|
189
|
+
skills: { desc: "an array of skill objects — no count cap; the engine renders the listing within its own byte budget", ok: (v) => Array.isArray(v) },
|
|
179
190
|
background: { desc: "a boolean", ok: (v) => typeof v === "boolean" },
|
|
180
191
|
isolation: { desc: '"worktree"', ok: (v) => v === "worktree" },
|
|
181
192
|
model: {
|
|
@@ -216,7 +227,15 @@ export function taskAgentIssue(item) {
|
|
|
216
227
|
return { message: `agent.${k} must be ${shape.desc}` };
|
|
217
228
|
const rel = `${k}${hit.sub}`;
|
|
218
229
|
const limit = { rel, measure: hit.measure, count: hit.count, cap: hit.cap };
|
|
219
|
-
return
|
|
230
|
+
return { message: describeLimit(`agent.${rel}`, hit.measure, hit.count, hit.cap), limit };
|
|
231
|
+
}
|
|
232
|
+
const skills = rec.skills;
|
|
233
|
+
if (Array.isArray(skills)) {
|
|
234
|
+
for (let j = 0; j < skills.length; j++) {
|
|
235
|
+
const issue = skillItemIssue(skills[j]);
|
|
236
|
+
if (issue !== null)
|
|
237
|
+
return { message: skillRefusalAt(`agent.skills[${j}]`, issue).message, skill: { index: j, issue } };
|
|
238
|
+
}
|
|
220
239
|
}
|
|
221
240
|
return null;
|
|
222
241
|
}
|
|
@@ -228,6 +247,8 @@ export function validateTaskAgents(v) {
|
|
|
228
247
|
const names = new Set();
|
|
229
248
|
for (let i = 0; i < v.length; i++) {
|
|
230
249
|
const issue = taskAgentIssue(v[i]);
|
|
250
|
+
if (issue?.skill !== undefined)
|
|
251
|
+
return skillRefusalAt(`agents[${i}].skills[${issue.skill.index}]`, issue.skill.issue);
|
|
231
252
|
if (issue) {
|
|
232
253
|
const message = `agents[${i}]: ${issue.message}`;
|
|
233
254
|
return issue.limit === undefined ? { message } : { message, facts: limitFacts(`agents[${i}].${issue.limit.rel}`, issue.limit.measure, issue.limit.count, issue.limit.cap) };
|
package/dist/store-posture.d.ts
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* [ref] ①(设计稿 v1.1 §2①)—— 「这台副本**真的在持久化吗**」的单一推导点:caps `store`、`/health.storeDegraded` / `durable:false`、
|
|
3
|
-
* gauge `store_backend_degraded` 三面读**同一只装配值**({@link StorePosture},`boot/stores.ts` 铸一次)。
|
|
4
|
-
*
|
|
5
|
-
* ## 病
|
|
6
|
-
* 7.105.0 及以前,店降级的痕迹是 gauge + `/health` 两位 + caps `sql:null` —— 而 `sql:null` 同时是「本来就没配 SQL」「local 文件店」
|
|
7
|
-
* 「降级到内存」「最近一次连接初始化被拒」四件事;调用方分不清「以为在持久化,其实在内存」这最坏的一形。
|
|
8
|
-
*
|
|
9
|
-
* ## 形
|
|
10
|
-
* `declared` = 运维的声明(`DB_BACKEND` 词,含缺省推导);`backend` = **装配出的**后端 kind(没装出后端 = `memory`);两者不等是合法的
|
|
11
|
-
* 形(`DB_BACKEND=pg` + 坐标在场 + `SESSION_BACKEND=memory` = 声明 pg、刻意不持久 —— 坐标缺席的声明在配置期拒启,见 `sql-engine-coordinates.ts`;缺省推导 local 起不来)—— 两位都上 wire,
|
|
12
|
-
* 由调用方自己读出落差。`degradedReason` present-iff 降级臂走过(按后端族定词,{@link storeDegradedReasonFor})。
|
|
13
|
-
* 顶层 `sql` 并入 `store.sql`(硬 breaking,零别名;对象逐字同形)。
|
|
14
|
-
*/
|
|
15
1
|
import type { StoreBackend as StoreBackendWord } from "@sema-agent/settings-schema/execution-lanes";
|
|
16
2
|
import type { ServiceConfig } from "./config-types.js";
|
|
17
3
|
import type { StoreBackend } from "./plugins/store-backend.js";
|
|
18
4
|
import type { SqlEngineFacts } from "./plugins/sql-driver.js";
|
|
19
5
|
import { type SqlEngineCapability } from "./sql-engine-posture.js";
|
|
6
|
+
import { type MountRow, type MountTable } from "./mountinfo.js";
|
|
20
7
|
/**
|
|
21
8
|
* 降级词闭集(**按后端族**,不按失败发生在哪一步):
|
|
22
9
|
* · `local_unwritable` —— **缺省推导**的 local 文件店在**空 / 不存在**的数据根上构造期失败(mkdir / 权限 / 只读挂载 / 磁盘满)。
|
|
@@ -30,28 +17,137 @@ export type StoreDegradedReason = (typeof STORE_DEGRADED_REASONS)[number];
|
|
|
30
17
|
/** 降级臂按后端族定词(穷举 switch:词表加员 ⇒ 编译红)。只有缺省推导的 `local` 走得到降级臂;`mysql` / `pg` / `memory` 走到这里 = 装配缺陷,响亮抛。 */
|
|
31
18
|
export declare function storeDegradedReasonFor(declared: StoreBackendWord): StoreDegradedReason;
|
|
32
19
|
/**
|
|
33
|
-
* `/health.sessionBackend` 与 `listening` 日志 `session` 位的**唯一读法**:装配后的 `config.sessionBackend`(`memory` | `tidb`;`tidb` =
|
|
34
|
-
* + 装配出的后端 kind ⇒
|
|
35
|
-
* 不替它编一个后端名(那是装配缺陷,`createSessionStore` 会先拒)
|
|
20
|
+
* `/health.sessionBackend` 与 `listening` 日志 `session` 位的**唯一读法**:装配后的 `config.sessionBackend`(`memory` | `tidb`;`tidb` = 「后端自己的店」的泛指标签)
|
|
21
|
+
* + 装配出的后端 kind ⇒ 会话店落在哪种后端上 —— `pg` / `mysql` / `local` / `memory`。**只说种类,不说持久**:持久性是另一个读数(`/health.store.durability`,
|
|
22
|
+
* 与 caps 同一只装配值)。`sessionBackend` 缺 backend 的 `tidb` 不替它编一个后端名(那是装配缺陷,`createSessionStore` 会先拒)。
|
|
36
23
|
*/
|
|
37
24
|
export declare function sessionStoreLabelOf(sessionBackend: ServiceConfig["sessionBackend"], backendKind: StoreBackend["kind"] | undefined): string;
|
|
38
|
-
/**
|
|
25
|
+
/** 持久性三态(闭集;wire 词)。`unknown` = 判不出(证据缺 / 读不懂 / 介质形不在规则表里),从不折成 `durable`。 */
|
|
26
|
+
export declare const STORE_DURABILITIES: readonly ["durable", "ephemeral", "unknown"];
|
|
27
|
+
export type StoreDurability = (typeof STORE_DURABILITIES)[number];
|
|
28
|
+
/** 三根(闭集;诊断面 `storeDurability.roots[].root` 的词)。 */
|
|
29
|
+
export declare const STORE_ROOTS: readonly ["data", "sealed_key", "memory"];
|
|
30
|
+
export type StoreRoot = (typeof STORE_ROOTS)[number];
|
|
31
|
+
/**
|
|
32
|
+
* 判定依据词(闭集;诊断面 `roots[].rule` 的词)—— 每一根的判定是哪一条规则给的。三态由 {@link durabilityOfRule} 的穷举 switch 从它派生(加词 ⇒ 编译红,
|
|
33
|
+
* 由人显式判它属于哪一态)。
|
|
34
|
+
*/
|
|
35
|
+
export declare const STORE_DURABILITY_RULES: readonly ["backend_memory", "backend_sql", "fs_volatile", "k8s_empty_dir", "k8s_persistent_volume", "network_fs", "block_device", "unrecognized_mount", "mount_unresolved", "mountinfo_unreadable", "mountinfo_malformed", "path_unresolvable", "not_linux"];
|
|
36
|
+
export type StoreDurabilityRule = (typeof STORE_DURABILITY_RULES)[number];
|
|
37
|
+
/** 规则词 → 三态(穷举 switch)。 */
|
|
38
|
+
export declare function durabilityOfRule(rule: StoreDurabilityRule): StoreDurability;
|
|
39
|
+
/** 规则表里的词(挂载形那一半)。 */
|
|
40
|
+
type StoreMountRule = Extract<StoreDurabilityRule, "fs_volatile" | "k8s_empty_dir" | "k8s_persistent_volume" | "network_fs" | "block_device">;
|
|
41
|
+
/**
|
|
42
|
+
* 挂载形的规则表(闭集常量表,先中先判;一行都不中 ⇒ `unrecognized_mount` = `unknown`)。读的是走路径看见的那一只挂载:
|
|
43
|
+
* · `fs_volatile` —— fs 类型 `overlay` / `tmpfs` / `ramfs`(容器根的可写层、内存盘):随容器 / Pod 删;
|
|
44
|
+
* · `k8s_empty_dir` —— 根路径含 `kubernetes.io~empty-dir`(磁盘介质的 emptyDir;内存介质的是 tmpfs,上一行已中):随 Pod 删;
|
|
45
|
+
* · `k8s_persistent_volume` —— 根路径含 `kubernetes.io~csi` / `kubernetes.io~local-volume`(PV 经 kubelet 挂进来);
|
|
46
|
+
* · `network_fs` —— `nfs*` / `cifs` / `ceph` / `glusterfs` / `9p`(`9p` 挂在 `/` 上是沙箱运行时的容器根,不算);
|
|
47
|
+
* · `block_device` —— 挂载源是块设备(`/dev/…`)且**整只文件系统**挂上来(根路径 `/`):虚机 / 裸机的盘、块形 PV。
|
|
48
|
+
* 绑定挂载一只子目录(根路径不是 `/`:hostPath、docker 卷 / 绑定、btrfs 子卷)不中这一行 —— 那只目录跟着谁走看不出来,归 `unknown`。
|
|
49
|
+
*/
|
|
50
|
+
export declare const STORE_MOUNT_RULES: readonly {
|
|
51
|
+
readonly rule: StoreMountRule;
|
|
52
|
+
readonly holds: (m: MountRow) => boolean;
|
|
53
|
+
}[];
|
|
54
|
+
/** 一只挂载按规则表判出的依据词。 */
|
|
55
|
+
export declare function classifyStoreMount(m: MountRow): StoreDurabilityRule;
|
|
56
|
+
/** 一根的判定(逐根明细的形;诊断面 `storeDurability.roots[]` 原样出)。 */
|
|
57
|
+
export interface StoreRootDurability {
|
|
58
|
+
readonly root: StoreRoot;
|
|
59
|
+
/** 判的那条物理路径(符号链接已展平);SQL / memory 后端的数据根没有路径 ⇒ `null`。 */
|
|
60
|
+
readonly path: string | null;
|
|
61
|
+
/** 走那条路径看见的那一只挂载(判不出 ⇒ 三格 `null`)。 */
|
|
62
|
+
readonly mountPoint: string | null;
|
|
63
|
+
readonly mountSource: string | null;
|
|
64
|
+
readonly fsType: string | null;
|
|
65
|
+
readonly rule: StoreDurabilityRule;
|
|
66
|
+
readonly verdict: StoreDurability;
|
|
67
|
+
}
|
|
68
|
+
/** 一根的判定去掉根名(取证时还不知道它排在哪一行)。 */
|
|
69
|
+
export type StoreRootReading = Omit<StoreRootDurability, "root">;
|
|
70
|
+
/** 挂载表这一份证据的读数。 */
|
|
71
|
+
export type MountTableReading = {
|
|
72
|
+
readonly kind: "read";
|
|
73
|
+
readonly table: MountTable;
|
|
74
|
+
} | {
|
|
75
|
+
readonly kind: "unreadable";
|
|
76
|
+
} | {
|
|
77
|
+
readonly kind: "not_linux";
|
|
78
|
+
};
|
|
79
|
+
/** 一条物理路径落在什么介质上(纯函数)。挂载表里有读不懂的行 ⇒ 不判(看见的那一只可能正是被读丢的那一行)。 */
|
|
80
|
+
export declare function judgeStoreRootPath(physicalPath: string, reading: MountTableReading): StoreRootReading;
|
|
81
|
+
/** 最弱律:`ephemeral` < `unknown` < `durable`;空表 ⇒ `unknown`(没有证据永不答 `durable`)。 */
|
|
82
|
+
export declare function weakestDurability(verdicts: readonly StoreDurability[]): StoreDurability;
|
|
83
|
+
/**
|
|
84
|
+
* 数据根上**有没有东西**(开店之前读;开店本身会建根、落锁,读晚了恒答「有」)。两个调用点:起服第 2 段段首的取证(`store_fresh_start` 的判据),
|
|
85
|
+
* 与 `openStoreBackendWithFallback` 的降级判据。不存在(`ENOENT`)/ 路径上有一段不是目录(`ENOTDIR`)⇒ 没有;空目录 ⇒ 没有;有任何条目 ⇒ 有。
|
|
86
|
+
* 读不出(`EACCES` 等)⇒ 判不了 ⇒ 按「有」答(fail-closed:判不了的那一形不许把它当空根降级,也不许说「本次在空店上初始化」)。
|
|
87
|
+
*/
|
|
88
|
+
export declare function localDataRootHoldsData(root: string): boolean;
|
|
89
|
+
/** 起服证据(纯数据;第 2 段段首铸一次,随开店带到第 3 段)。 */
|
|
90
|
+
export interface StoreEvidence {
|
|
91
|
+
/** 第 2 段写任何东西之前,数据根上有没有东西({@link localDataRootHoldsData})。 */
|
|
92
|
+
readonly dataRootHeldData: boolean;
|
|
93
|
+
/** 数据根的介质(只在装配出 local 后端时进判定;别的后端按后端规则判)。 */
|
|
94
|
+
readonly dataRoot: StoreRootReading;
|
|
95
|
+
readonly sealedKey: StoreRootReading;
|
|
96
|
+
/** file 记忆根:`MEMORY_ENGINE_BACKEND=file` 时取证;进不进判定看引擎真接没接线(`buildStorePosture` 的 `memoryRootWired`)。 */
|
|
97
|
+
readonly memory?: StoreRootReading;
|
|
98
|
+
}
|
|
99
|
+
/** 取证要判的三条路径(按各自属主解析好的配置路径;`boot/store-evidence.ts` 递)。 */
|
|
100
|
+
export interface StoreEvidencePaths {
|
|
101
|
+
readonly dataRoot: string;
|
|
102
|
+
readonly sealedKeyDir: string;
|
|
103
|
+
readonly memoryRoot: string | undefined;
|
|
104
|
+
}
|
|
105
|
+
/** 取证的宿主座:`canonical` 由调用方给(符号链接展平的那一只生产实现在 `memory-scope.ts`);其余缺席 = 本进程实测。 */
|
|
106
|
+
export interface StoreEvidenceHost {
|
|
107
|
+
readonly canonical: (p: string) => string;
|
|
108
|
+
/** 挂载表全文;`null` = 本平台没有 procfs 挂载表。缺席 = {@link readProcessMountinfo}。 */
|
|
109
|
+
readonly mountinfo?: () => Promise<string | null>;
|
|
110
|
+
/** 缺席 = {@link localDataRootHoldsData}。 */
|
|
111
|
+
readonly holdsData?: (root: string) => boolean;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 起服证据:挂载表读一次,三条路径各展平成物理路径、各判一次;数据根空不空读一次。读不到 / 读不懂 / 路径展不平 / 找不到看见的那一只挂载 ⇒ 那几根判 `unknown`
|
|
115
|
+
* + 登记 F 类 fail-open(只影响自报)。
|
|
116
|
+
*/
|
|
117
|
+
export declare function captureStoreEvidence(paths: StoreEvidencePaths, host: StoreEvidenceHost): Promise<StoreEvidence>;
|
|
118
|
+
/** 装配值(纯数据;`boot/stores.ts` 铸一次,gauge / `/health` / caps / 诊断 / 布线审计同读)。 */
|
|
39
119
|
export interface StorePosture {
|
|
40
120
|
readonly declared: StoreBackendWord;
|
|
41
121
|
readonly backend: StoreBackendWord;
|
|
42
122
|
readonly degradedReason?: StoreDegradedReason;
|
|
123
|
+
/** 三根取最弱({@link weakestDurability})。 */
|
|
124
|
+
readonly durability: StoreDurability;
|
|
125
|
+
/** 逐根明细:恒以数据根开头;有起服证据时再接封签钥匙目录与(接线时的)file 记忆根。 */
|
|
126
|
+
readonly roots: readonly StoreRootDurability[];
|
|
43
127
|
}
|
|
44
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* `build*`(纯数据)。`assembled` = 装配出的 `StoreBackend.kind`;缺席 = 没装出后端 ⇒ `memory`。`evidence` 缺席 = 这个宿主没有起服证据(测试夹具 / 桩):
|
|
130
|
+
* 只判数据根、且只按后端规则判(local 无证据即抛)。`memoryRootWired` = file 记忆引擎在本部署上真接了线(配了才算;没接线的记忆根不进最弱律)。
|
|
131
|
+
*/
|
|
45
132
|
export declare function buildStorePosture(a: {
|
|
46
133
|
readonly declared: StoreBackendWord;
|
|
47
134
|
readonly assembled: StoreBackend["kind"] | undefined;
|
|
48
135
|
readonly degradedReason: StoreDegradedReason | undefined;
|
|
136
|
+
readonly evidence: StoreEvidence | undefined;
|
|
137
|
+
readonly memoryRootWired: boolean;
|
|
49
138
|
}): StorePosture;
|
|
139
|
+
/** 读面桩的诚实下限(没有装配值的宿主:声明 = 配置词,后端 = memory ⇒ `ephemeral`)。caps 与 `/health` 同调这一只。 */
|
|
140
|
+
export declare function unwiredStorePosture(declared: StoreBackendWord): StorePosture;
|
|
141
|
+
/**
|
|
142
|
+
* 起服账本一行 `store_fresh_start` 的字段(present-iff 装配出 local 后端 ∧ 第 2 段之前数据根上什么都没有)。只断言「本次起服在空店上初始化」+ 三根判定 ——
|
|
143
|
+
* **不**声称首启:首启、丢卷、挂错卷三者只看空不空分不开(分辨要店外的记录)。
|
|
144
|
+
*/
|
|
145
|
+
export declare function buildStoreFreshStartLine(posture: StorePosture, evidence: StoreEvidence): Readonly<Record<string, unknown>> | undefined;
|
|
50
146
|
/** caps `store` 的形。 */
|
|
51
147
|
export interface StoreCapability {
|
|
52
148
|
readonly declared: StoreBackendWord;
|
|
53
149
|
readonly backend: StoreBackendWord;
|
|
54
|
-
readonly
|
|
150
|
+
readonly durability: StoreDurability;
|
|
55
151
|
readonly degradedReason?: StoreDegradedReason;
|
|
56
152
|
/** 7.105.0 及以前的顶层 `sql` 对象,原样搬入(`{engine, isolation, txnMode}`)。present-iff `backend ∈ {mysql, pg}` ∧ 驱动此刻给得出
|
|
57
153
|
* 回读复核过的事实 —— 最近一次连接初始化被拒([ref] ④)时驱动交 `null`,本键随之缺席(此前是顶层 `sql:null`)。 */
|
|
@@ -59,4 +155,24 @@ export interface StoreCapability {
|
|
|
59
155
|
}
|
|
60
156
|
/** 装配值 → caps 投影(纯函数)。 */
|
|
61
157
|
export declare function projectStoreCapability(posture: StorePosture, sqlFacts: SqlEngineFacts | null | undefined): StoreCapability;
|
|
158
|
+
/** `/health.store` 的形(恒在场):与 caps `store.durability` 同一只装配值、同一拍铸。 */
|
|
159
|
+
export interface HealthStoreSection {
|
|
160
|
+
readonly durability: StoreDurability;
|
|
161
|
+
}
|
|
162
|
+
export declare function projectHealthStoreSection(posture: StorePosture): HealthStoreSection;
|
|
163
|
+
/** `GET /v1/diagnostics/wiring` 的 `storeDurability` 段(运维面):三态 + 逐根明细。 */
|
|
164
|
+
export interface StoreDurabilityWiring {
|
|
165
|
+
readonly durability: StoreDurability;
|
|
166
|
+
readonly roots: readonly StoreRootDurability[];
|
|
167
|
+
}
|
|
168
|
+
export declare function projectStoreDurabilityWiring(posture: StorePosture): StoreDurabilityWiring;
|
|
169
|
+
/** 一根的人读形(布线审计的拒句 / warn 行逐根列):`<根> <路径> (<fs 类型> <挂载源> at <挂载点>) ⇒ <三态> [<依据>]`。 */
|
|
170
|
+
export declare function describeStoreRoot(r: StoreRootDurability): string;
|
|
171
|
+
/** 布线审计拒启那一句的机器码(起服 fatal 标题 `[config.store_not_durable]`)。 */
|
|
172
|
+
export declare const STORE_NOT_DURABLE_CODE = "config.store_not_durable";
|
|
173
|
+
/** 起服布线审计因会话店落在易失介质上拒启时的抛出物:`code` = {@link STORE_NOT_DURABLE_CODE}(`boot/fatal-exit.ts` 把带码异常写成 `Error [<码>]: …` 标题)。 */
|
|
174
|
+
export declare class StoreNotDurableError extends Error {
|
|
175
|
+
readonly code = "config.store_not_durable";
|
|
176
|
+
}
|
|
177
|
+
export {};
|
|
62
178
|
//# sourceMappingURL=store-posture.d.ts.map
|