@sema-agent/server 7.146.0 → 7.148.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATION.md +1423 -24
- package/README.md +21 -8
- package/README.zh-CN.md +15 -9
- package/USAGE.md +537 -216
- package/deploy/facts/lanes.json +7 -0
- package/deploy/sema-up/README.md +18 -7
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
- package/deploy/sema-up/chart/templates/server.yaml +5 -4
- package/deploy/sema-up/chart/values.yaml +4 -3
- package/deploy/sema-up/cluster-up.sh +75 -176
- package/deploy/sema-up/kube-up.sh +29 -49
- package/deploy/sema-up/lib/chart-run.sh +23 -0
- package/deploy/sema-up/lib/dataroot.sh +3 -3
- package/deploy/sema-up/lib/flagshape.sh +4 -0
- package/deploy/sema-up/lib/health.sh +62 -13
- package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
- package/deploy/sema-up/lib/helm-values-kube.py +35 -0
- package/deploy/sema-up/lib/lanes.json +2 -5
- package/deploy/sema-up/lib/regcred.py +8 -0
- package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
- package/deploy/sema-up/lib/remote/image-import.sh +6 -0
- package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
- package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
- package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
- package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
- package/deploy/sema-up/lib/render-stack.py +17 -0
- package/deploy/sema-up/lib/shell-text.sh +87 -0
- package/deploy/sema-up/lib/usage-flags.txt +10 -0
- package/deploy/sema-up/lib/usage-head.txt +1 -0
- package/deploy/sema-up/lib/usage-tail.txt +13 -0
- package/deploy/sema-up/preflight.sh +10 -8
- package/deploy/sema-up/sema-up.sh +26 -48
- package/deploy/sema-up/smoke.sh +7 -6
- package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
- package/deploy/sema-up/stack/compose.yaml +18 -5
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
- package/dist/adoption/plan.d.ts +24 -0
- package/dist/adoption/plan.js +53 -1
- package/dist/adoption/runner.d.ts +10 -1
- package/dist/adoption/runner.js +36 -16
- package/dist/adoption/wire.d.ts +3 -3
- package/dist/approval-card.d.ts +32 -34
- package/dist/approval-gate-currency.js +3 -2
- package/dist/approval-reconciler.d.ts +4 -13
- package/dist/approval-reconciler.js +2 -2
- package/dist/approval.d.ts +16 -14
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +17 -9
- package/dist/auth-bridge.d.ts +0 -14
- package/dist/auth-bridge.js +0 -7
- package/dist/auto-mode-face.d.ts +10 -7
- package/dist/auto-mode-face.js +7 -4
- package/dist/background-agent-name.d.ts +19 -1
- package/dist/background-agent-name.js +12 -2
- package/dist/background-session-reap.d.ts +1 -1
- package/dist/bake-runner/main.js +9 -6
- package/dist/bench/s1/arms.js +6 -5
- package/dist/bench/s1/live-deps.js +8 -3
- package/dist/bench/s1/run-firm.js +6 -5
- package/dist/bind-host.d.ts +25 -0
- package/dist/bind-host.js +25 -0
- package/dist/boot/adoption.d.ts +3 -0
- package/dist/boot/adoption.js +1 -0
- package/dist/boot/crash-last.js +2 -1
- package/dist/boot/deployment-mods.d.ts +1 -1
- package/dist/boot/device-lane.js +5 -5
- package/dist/boot/engine-lease.d.ts +12 -11
- package/dist/boot/execution-env.d.ts +19 -8
- package/dist/boot/execution-env.js +80 -62
- package/dist/boot/execution-lane.d.ts +37 -9
- package/dist/boot/execution-lane.js +74 -20
- package/dist/boot/exit-boundary.d.ts +3 -3
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/exit-last.js +2 -1
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/governance-seams.d.ts +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +18 -16
- package/dist/boot/memory-boundary.d.ts +11 -11
- package/dist/boot/memory-boundary.js +3 -3
- package/dist/boot/memory-consolidation.d.ts +50 -53
- package/dist/boot/memory-consolidation.js +11 -18
- package/dist/boot/org-memory.js +4 -3
- package/dist/boot/parked-revive-gate.d.ts +1 -1
- package/dist/boot/parked-revive-gate.js +3 -3
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +20 -17
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +133 -165
- package/dist/boot/retention-lane.d.ts +7 -45
- package/dist/boot/retention-lane.js +2 -2
- package/dist/boot/runner-deps.d.ts +28 -7
- package/dist/boot/runner-deps.js +11 -4
- package/dist/boot/runtime-caps.d.ts +2 -2
- package/dist/boot/runtime-caps.js +16 -2
- package/dist/boot/session-faces.d.ts +17 -7
- package/dist/boot/session-faces.js +122 -96
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.d.ts +1 -1
- package/dist/boot/stage-01-config.js +14 -2
- package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
- package/dist/boot/stage-02-web-admin-pull.js +15 -8
- package/dist/boot/stage-03-store-backend.d.ts +4 -1
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +3 -1
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +9 -5
- package/dist/boot/stage-05-execution-env.js +5 -5
- package/dist/boot/stage-06-runners.d.ts +13 -15
- package/dist/boot/stage-06-runners.js +24 -18
- package/dist/boot/stage-07-capability-layer.d.ts +14 -11
- package/dist/boot/stage-07-capability-layer.js +9 -12
- package/dist/boot/stage-08-reapers.d.ts +14 -11
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +16 -18
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +16 -18
- package/dist/boot/stage-10-http-server.js +9 -5
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +12 -0
- package/dist/boot/stores.js +39 -17
- package/dist/boot/task-list-lane.d.ts +4 -4
- package/dist/boot/web-admin.d.ts +4 -2
- package/dist/boot/web-admin.js +58 -38
- package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
- package/dist/boot-reclaim.d.ts +3 -1
- package/dist/boot-reclaim.js +1 -1
- package/dist/brain.d.ts +7 -18
- package/dist/brain.js +5 -17
- package/dist/budget.js +6 -6
- package/dist/capabilities/center-plugins.d.ts +9 -1
- package/dist/capabilities/center-plugins.js +37 -11
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +3 -2
- package/dist/capabilities/composite-members.js +3 -2
- package/dist/capabilities/execution-lane.d.ts +7 -7
- package/dist/capabilities/execution-lane.js +2 -2
- package/dist/capabilities/hands-lane.d.ts +1 -1
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +38 -33
- package/dist/capabilities/scenarios.js +24 -25
- package/dist/capabilities/settings-contract.d.ts +29 -0
- package/dist/capabilities/settings-contract.js +14 -0
- package/dist/capabilities/skills.d.ts +6 -6
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +69 -4
- package/dist/capability-facts.js +77 -5
- package/dist/card-void.d.ts +4 -4
- package/dist/card-void.js +1 -1
- package/dist/center-credential-renewer.d.ts +6 -2
- package/dist/center-credential-renewer.js +10 -5
- package/dist/config-catalog.d.ts +16 -1
- package/dist/config-catalog.js +68 -61
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +58 -4
- package/dist/config-invariants.js +104 -23
- package/dist/config-lkg.d.ts +24 -2
- package/dist/config-lkg.js +22 -9
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -108
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +215 -202
- package/dist/config.d.ts +69 -14
- package/dist/config.js +188 -96
- package/dist/degenerate-instrument.js +1 -1
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deploy-facts.js +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +51 -16
- package/dist/deployment-shape.js +31 -6
- package/dist/egress-redirect.d.ts +25 -7
- package/dist/egress-redirect.js +20 -2
- package/dist/elicitation.d.ts +6 -5
- package/dist/elicitation.js +23 -22
- package/dist/engine-identity.d.ts +28 -0
- package/dist/engine-identity.js +10 -0
- package/dist/entry-problems.d.ts +5 -7
- package/dist/entry-problems.js +1 -1
- package/dist/env-facts.d.ts +7 -5
- package/dist/env-facts.js +12 -7
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-config-root.d.ts +5 -5
- package/dist/execution-config-root.js +5 -5
- package/dist/execution-env-purpose.d.ts +14 -0
- package/dist/execution-env-purpose.js +29 -0
- package/dist/execution-lane-caps.d.ts +53 -103
- package/dist/execution-lane-caps.js +51 -83
- package/dist/execution-placement.d.ts +65 -9
- package/dist/execution-placement.js +58 -0
- package/dist/field-conflict.d.ts +7 -11
- package/dist/field-conflict.js +3 -3
- package/dist/file-history-capture.d.ts +3 -3
- package/dist/file-history-disclosure.d.ts +2 -2
- package/dist/file-history-disclosure.js +1 -0
- package/dist/fleet/drain-entry.d.ts +17 -10
- package/dist/fleet/drain-entry.js +1 -1
- package/dist/fleet/fleet-bus.d.ts +21 -3
- package/dist/fleet/fleet-bus.js +35 -25
- package/dist/fleet/fleet-reconciler.js +2 -2
- package/dist/fleet/serving-lease.js +6 -7
- package/dist/fleet-client.js +3 -3
- package/dist/fleet-lease.d.ts +0 -1
- package/dist/fleet-lease.js +4 -5
- package/dist/history-anchor.d.ts +42 -0
- package/dist/history-anchor.js +34 -0
- package/dist/hitl-delivery.d.ts +90 -0
- package/dist/hitl-delivery.js +98 -0
- package/dist/hooks/classic-stations.d.ts +8 -11
- package/dist/hooks/classic-stations.js +0 -7
- package/dist/hooks/command-spawn.d.ts +1 -4
- package/dist/hooks/command-spawn.js +0 -11
- package/dist/hooks/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +119 -65
- package/dist/hooks/hook-runner.js +415 -217
- package/dist/host-lsp-manager.d.ts +22 -8
- package/dist/host-lsp-manager.js +4 -1
- package/dist/http/active-run-conflict.d.ts +2 -43
- package/dist/http/active-run-conflict.js +3 -7
- package/dist/http/admission.d.ts +4 -18
- package/dist/http/admission.js +75 -78
- package/dist/http/approval-sweeps.d.ts +5 -8
- package/dist/http/approval-sweeps.js +55 -30
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/checkpoint-ctx.d.ts +17 -0
- package/dist/http/checkpoint-ctx.js +6 -0
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claim-latency.d.ts +10 -0
- package/dist/http/claim-latency.js +12 -0
- package/dist/http/claimed-run.d.ts +4 -3
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +77 -31
- package/dist/http/durable-run-leg.d.ts +3 -3
- package/dist/http/durable-run-leg.js +18 -12
- package/dist/http/execution-context.d.ts +18 -42
- package/dist/http/execution-context.js +11 -5
- package/dist/http/health-reader.d.ts +36 -0
- package/dist/http/health-reader.js +21 -0
- package/dist/http/health-self-report.d.ts +9 -9
- package/dist/http/health-self-report.js +4 -4
- package/dist/http/idempotency.d.ts +9 -5
- package/dist/http/idempotency.js +4 -4
- package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
- package/dist/http/memory-compliance-failure-reply.js +7 -2
- package/dist/http/memory-face-fault-reply.d.ts +67 -0
- package/dist/http/memory-face-fault-reply.js +71 -0
- package/dist/http/memory-store-refusal-reply.d.ts +3 -3
- package/dist/http/memory-store-refusal-reply.js +6 -0
- package/dist/http/owner-access.d.ts +391 -56
- package/dist/http/owner-access.js +372 -33
- package/dist/http/principal-gate.d.ts +26 -94
- package/dist/http/principal-gate.js +24 -81
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +10 -14
- package/dist/http/request-guards.js +34 -68
- package/dist/http/resume-composition.d.ts +37 -0
- package/dist/http/resume-composition.js +18 -0
- package/dist/http/resume-ctx-read.d.ts +35 -12
- package/dist/http/resume-ctx-read.js +25 -6
- package/dist/http/resume-legs.d.ts +24 -24
- package/dist/http/resume-legs.js +260 -171
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/rewind-files-reply.d.ts +34 -0
- package/dist/http/rewind-files-reply.js +36 -0
- package/dist/http/route-ctx.d.ts +56 -47
- package/dist/http/route-table.js +2 -0
- package/dist/http/routes/a2a-serve.d.ts +43 -5
- package/dist/http/routes/a2a-serve.js +58 -37
- package/dist/http/routes/admin-config-refresh.js +2 -2
- package/dist/http/routes/admin-drain.js +2 -2
- package/dist/http/routes/admin-memory-optout.js +4 -3
- package/dist/http/routes/adoption.d.ts +3 -0
- package/dist/http/routes/adoption.js +17 -10
- package/dist/http/routes/agents-roster.js +13 -7
- package/dist/http/routes/approvals-assistant.js +73 -88
- package/dist/http/routes/attachments.js +2 -2
- package/dist/http/routes/background.d.ts +3 -3
- package/dist/http/routes/background.js +9 -17
- package/dist/http/routes/capabilities.js +23 -20
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +5 -5
- package/dist/http/routes/diagnostics.d.ts +27 -3
- package/dist/http/routes/diagnostics.js +27 -21
- package/dist/http/routes/engine.js +2 -2
- package/dist/http/routes/fleet.js +5 -3
- package/dist/http/routes/images.js +10 -6
- package/dist/http/routes/leader.d.ts +7 -2
- package/dist/http/routes/leader.js +12 -3
- package/dist/http/routes/mcp-reconnect.d.ts +1 -1
- package/dist/http/routes/mcp-reconnect.js +7 -15
- package/dist/http/routes/memory-bundle.js +4 -7
- package/dist/http/routes/memory-compliance.js +4 -4
- package/dist/http/routes/memory-consolidation.js +6 -9
- package/dist/http/routes/memory-origin.d.ts +3 -1
- package/dist/http/routes/memory-origin.js +7 -8
- package/dist/http/routes/memory-policy.js +17 -12
- package/dist/http/routes/notify-wake.js +12 -20
- package/dist/http/routes/observability.js +3 -3
- package/dist/http/routes/principal-inbox.d.ts +1 -1
- package/dist/http/routes/principal-inbox.js +2 -2
- package/dist/http/routes/projects.d.ts +70 -0
- package/dist/http/routes/projects.js +87 -0
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +50 -7
- package/dist/http/routes/run-memory-capture.d.ts +2 -2
- package/dist/http/routes/run-memory-capture.js +6 -12
- package/dist/http/routes/run-permission-mode.d.ts +2 -2
- package/dist/http/routes/run-permission-mode.js +10 -17
- package/dist/http/routes/runs.js +148 -233
- package/dist/http/routes/session-memory-sync.d.ts +2 -2
- package/dist/http/routes/session-memory-sync.js +7 -13
- package/dist/http/routes/session-sync.d.ts +4 -2
- package/dist/http/routes/session-sync.js +48 -30
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.d.ts +7 -1
- package/dist/http/routes/sessions.js +177 -112
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +144 -122
- package/dist/http/routes/trace-usage.d.ts +0 -12
- package/dist/http/routes/trace-usage.js +40 -46
- package/dist/http/routes/workflows.d.ts +39 -4
- package/dist/http/routes/workflows.js +42 -14
- package/dist/http/run-concurrency-cap.d.ts +20 -12
- package/dist/http/run-concurrency-cap.js +39 -26
- package/dist/http/run-read-face.d.ts +3 -5
- package/dist/http/run-read-face.js +8 -13
- package/dist/http/send.d.ts +12 -3
- package/dist/http/send.js +42 -6
- package/dist/http/server.d.ts +63 -50
- package/dist/http/server.js +52 -16
- package/dist/http/sse-log.d.ts +17 -10
- package/dist/http/sse-log.js +7 -7
- package/dist/http/stored-body-replay.d.ts +17 -3
- package/dist/http/stored-body-replay.js +11 -2
- package/dist/http/submit-ctx.d.ts +16 -8
- package/dist/http/submit-ctx.js +6 -2
- package/dist/http/submit-replay.d.ts +19 -6
- package/dist/http/submit-replay.js +18 -6
- package/dist/http/sync-submit-body.d.ts +3 -4
- package/dist/http/sync-submit-body.js +4 -5
- package/dist/http/wire-types.d.ts +23 -13
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -1
- package/dist/instruction-source-notice.d.ts +1 -1
- package/dist/key-resolver.d.ts +32 -0
- package/dist/key-resolver.js +23 -9
- package/dist/leader/diffup.js +2 -1
- package/dist/leader/endpoint.d.ts +26 -5
- package/dist/leader/endpoint.js +154 -14
- package/dist/leader/fanout.d.ts +3 -0
- package/dist/leader/fanout.js +78 -63
- package/dist/leader/leader.d.ts +16 -0
- package/dist/leader/leader.js +43 -3
- package/dist/leader/merge.d.ts +9 -1
- package/dist/leader/merge.js +16 -1
- package/dist/leader/repair-wire.js +1 -1
- package/dist/leader/wire.d.ts +36 -3
- package/dist/leader/wire.js +59 -18
- package/dist/lsp-evict.d.ts +6 -4
- package/dist/lsp-evict.js +2 -3
- package/dist/memory-embedder-reembed.d.ts +38 -0
- package/dist/memory-embedder-reembed.js +20 -0
- package/dist/memory-incident-sink.d.ts +0 -28
- package/dist/memory-incident-sink.js +5 -0
- package/dist/memory-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-scope.d.ts +31 -4
- package/dist/memory-scope.js +65 -16
- package/dist/memory-store-refusal.d.ts +20 -4
- package/dist/memory-store-refusal.js +1 -1
- package/dist/memory-sync-client.d.ts +5 -2
- package/dist/memory-sync-client.js +19 -14
- package/dist/memory-sync.js +1 -1
- package/dist/model-compat.d.ts +51 -28
- package/dist/model-compat.js +55 -23
- package/dist/model-context-window.d.ts +18 -0
- package/dist/model-context-window.js +2 -0
- package/dist/model-entry-headers.d.ts +46 -4
- package/dist/model-entry-headers.js +2 -2
- package/dist/model-entry-refusal.d.ts +46 -17
- package/dist/model-entry-refusal.js +47 -27
- package/dist/model-plane-face.d.ts +19 -11
- package/dist/model-plane-face.js +9 -1
- package/dist/model-plane-probe.d.ts +2 -0
- package/dist/model-plane-probe.js +17 -0
- package/dist/model-provider.d.ts +3 -3
- package/dist/model-route-endpoint.d.ts +9 -5
- package/dist/model-route-endpoint.js +29 -7
- package/dist/model-select.d.ts +16 -0
- package/dist/model-select.js +4 -0
- package/dist/mountinfo.d.ts +37 -0
- package/dist/mountinfo.js +47 -0
- package/dist/namespaced-rule-name.d.ts +28 -2
- package/dist/namespaced-rule-name.js +10 -1
- package/dist/net-address.d.ts +1 -1
- package/dist/observability/corrupt-read-seat.d.ts +4 -4
- package/dist/observability/corrupt-read-seat.js +5 -3
- package/dist/observability/fail-open.d.ts +75 -47
- package/dist/observability/fail-open.js +77 -47
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.d.ts +2 -0
- package/dist/observability/metrics.js +5 -4
- package/dist/observability/otel-exporter.js +2 -1
- package/dist/observability/principal-context.d.ts +14 -7
- package/dist/observability/principal-context.js +8 -3
- package/dist/observability/run-terminal.d.ts +7 -1
- package/dist/observability/run-terminal.js +5 -2
- package/dist/observability/secret-env-scrub.d.ts +30 -4
- package/dist/observability/secret-env-scrub.js +15 -3
- package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
- package/dist/orchestration/hardened-vm-runner.js +11 -5
- package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
- package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
- package/dist/orchestration/hardened-vm-worker.js +2 -1
- package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
- package/dist/orchestration/workflow-agent-session-index.js +1 -6
- package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
- package/dist/orchestration/workflow-completion-inbox.js +65 -46
- package/dist/org-delivery-gate.d.ts +5 -4
- package/dist/org-delivery-gate.js +7 -6
- package/dist/org-memory-admission.d.ts +5 -2
- package/dist/org-memory-admission.js +25 -10
- package/dist/outbound-dispatcher.d.ts +1 -1
- package/dist/outbound-dispatcher.js +6 -12
- package/dist/owner-brands.d.ts +81 -0
- package/dist/owner-brands.js +42 -0
- package/dist/owner-faces.d.ts +531 -0
- package/dist/owner-faces.js +126 -0
- package/dist/parked-decide.d.ts +100 -31
- package/dist/parked-decide.js +162 -48
- package/dist/parked-revive-surface.d.ts +14 -4
- package/dist/parked-revive-surface.js +5 -4
- package/dist/peer-directory.d.ts +6 -8
- package/dist/peer-directory.js +3 -2
- package/dist/permission-rule-vocab.d.ts +53 -8
- package/dist/permission-rule-vocab.js +30 -2
- package/dist/plugins/adoption-log-sql.d.ts +0 -22
- package/dist/plugins/adoption-log-sql.js +5 -3
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
- package/dist/plugins/approval-ask-store-file.d.ts +28 -9
- package/dist/plugins/approval-ask-store-file.js +74 -18
- package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
- package/dist/plugins/approval-ask-store-memory.js +35 -12
- package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
- package/dist/plugins/approval-ask-store-sql.js +44 -11
- package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
- package/dist/plugins/approval-exemption-skill-m46.js +25 -0
- package/dist/plugins/approval-exemption-store.d.ts +6 -1
- package/dist/plugins/approval-exemption-store.js +14 -0
- package/dist/plugins/approval-nonce-store.d.ts +39 -12
- package/dist/plugins/approval-nonce-store.js +72 -23
- package/dist/plugins/blob-backend.d.ts +40 -195
- package/dist/plugins/blob-backend.js +41 -234
- package/dist/plugins/caching-session-store.d.ts +22 -5
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
- package/dist/plugins/checkpoint-index-columns.js +39 -3
- package/dist/plugins/checkpoint-store-face.d.ts +84 -11
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.d.ts +2 -2
- package/dist/plugins/device-store-sql.js +6 -10
- package/dist/plugins/ensure-index.d.ts +13 -1
- package/dist/plugins/ensure-index.js +154 -21
- package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
- package/dist/plugins/ensure-schema-lock-policy.js +3 -2
- package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
- package/dist/plugins/execution-lane-rename-m40.js +10 -0
- package/dist/plugins/execution-placement-sql.d.ts +63 -88
- package/dist/plugins/execution-placement-sql.js +94 -54
- package/dist/plugins/file-run-store.d.ts +89 -35
- package/dist/plugins/file-run-store.js +197 -142
- package/dist/plugins/host-platform.d.ts +24 -3
- package/dist/plugins/host-platform.js +15 -1
- package/dist/plugins/image-bake-store-sql.js +2 -0
- package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
- package/dist/plugins/imported-layer-root-retirement.js +4 -8
- package/dist/plugins/inbox-payload-column.d.ts +14 -0
- package/dist/plugins/inbox-payload-column.js +13 -0
- package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
- package/dist/plugins/k8s-pod-reaper.js +0 -1
- package/dist/plugins/leader-run-store-sql.d.ts +22 -0
- package/dist/plugins/leader-run-store-sql.js +34 -4
- package/dist/plugins/local-checkpoint-store.d.ts +63 -23
- package/dist/plugins/local-checkpoint-store.js +204 -81
- package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
- package/dist/plugins/local-data-dir-modes-m39.js +183 -0
- package/dist/plugins/local-docker-capacity.d.ts +93 -0
- package/dist/plugins/local-docker-capacity.js +194 -0
- package/dist/plugins/local-docker-reaper.d.ts +92 -0
- package/dist/plugins/local-docker-reaper.js +102 -0
- package/dist/plugins/local-engine-high-water.d.ts +13 -0
- package/dist/plugins/local-engine-high-water.js +62 -0
- package/dist/plugins/local-session-store.d.ts +442 -143
- package/dist/plugins/local-session-store.js +941 -289
- package/dist/plugins/local-session-window.d.ts +3 -2
- package/dist/plugins/local-session-window.js +3 -2
- package/dist/plugins/local-sidecar-quarantine.js +3 -2
- package/dist/plugins/local-task-attachment-store.d.ts +20 -1
- package/dist/plugins/local-task-attachment-store.js +32 -12
- package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
- package/dist/plugins/memory-embedder-fingerprint.js +52 -12
- package/dist/plugins/memory-embedder.d.ts +1 -1
- package/dist/plugins/memory-embedder.js +11 -9
- package/dist/plugins/memory-engine-pg.d.ts +7 -5
- package/dist/plugins/memory-engine-pg.js +18 -9
- package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
- package/dist/plugins/memory-engine-sql-apply.js +7 -9
- package/dist/plugins/memory-engine-tidb.d.ts +12 -7
- package/dist/plugins/memory-engine-tidb.js +18 -10
- package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
- package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
- package/dist/plugins/memory-run-store.d.ts +39 -27
- package/dist/plugins/memory-run-store.js +72 -70
- package/dist/plugins/one-time-migration-marker.d.ts +10 -0
- package/dist/plugins/one-time-migration-marker.js +7 -0
- package/dist/plugins/one-time-migrations.d.ts +325 -74
- package/dist/plugins/one-time-migrations.js +705 -230
- package/dist/plugins/org-delivery-quota-store.js +2 -1
- package/dist/plugins/owner-only-file-mode.d.ts +29 -0
- package/dist/plugins/owner-only-file-mode.js +141 -0
- package/dist/plugins/permission-rule-store-file.d.ts +11 -11
- package/dist/plugins/permission-rule-store-file.js +14 -2
- package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
- package/dist/plugins/permission-rule-store-sql.js +6 -86
- package/dist/plugins/pg-pool.d.ts +3 -32
- package/dist/plugins/pg-pool.js +27 -11
- package/dist/plugins/release-version.d.ts +20 -0
- package/dist/plugins/release-version.js +28 -0
- package/dist/plugins/remote-env-adb.d.ts +20 -4
- package/dist/plugins/remote-env-adb.js +39 -11
- package/dist/plugins/remote-env-e2b.d.ts +19 -28
- package/dist/plugins/remote-env-e2b.js +40 -29
- package/dist/plugins/remote-env-host.d.ts +11 -10
- package/dist/plugins/remote-env-host.js +40 -27
- package/dist/plugins/remote-env-k8s.d.ts +45 -47
- package/dist/plugins/remote-env-k8s.js +122 -62
- package/dist/plugins/remote-env-local-docker.d.ts +152 -15
- package/dist/plugins/remote-env-local-docker.js +370 -75
- package/dist/plugins/remote-env-ssh.d.ts +8 -2
- package/dist/plugins/remote-env-ssh.js +26 -24
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/remote-shell.d.ts +59 -30
- package/dist/plugins/remote-shell.js +175 -62
- package/dist/plugins/retention-declaration.d.ts +37 -0
- package/dist/plugins/retention-declaration.js +9 -0
- package/dist/plugins/retention-deployment.d.ts +158 -0
- package/dist/plugins/retention-deployment.js +119 -0
- package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
- package/dist/plugins/retention-lane-store-sql.js +103 -1
- package/dist/plugins/retention-sql.d.ts +29 -0
- package/dist/plugins/retention-sql.js +8 -0
- package/dist/plugins/run-preview-m45.d.ts +11 -0
- package/dist/plugins/run-preview-m45.js +19 -0
- package/dist/plugins/run-store-sql.d.ts +56 -68
- package/dist/plugins/run-store-sql.js +127 -116
- package/dist/plugins/s3-answer.d.ts +2 -1
- package/dist/plugins/sandbox-reaper.d.ts +26 -0
- package/dist/plugins/sandbox-reaper.js +2 -0
- package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
- package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
- package/dist/plugins/scheduler-support.d.ts +16 -1
- package/dist/plugins/scheduler-support.js +22 -2
- package/dist/plugins/schema-consistency.d.ts +42 -15
- package/dist/plugins/schema-consistency.js +213 -13
- package/dist/plugins/schema-drift-sentence.d.ts +4 -1
- package/dist/plugins/schema-drift-sentence.js +4 -4
- package/dist/plugins/schema-ensure-legs.d.ts +10 -1
- package/dist/plugins/schema-ensure-legs.js +12 -2
- package/dist/plugins/schema-indexes.js +3 -0
- package/dist/plugins/schema-live-columns.d.ts +14 -5
- package/dist/plugins/schema-live-columns.js +10 -10
- package/dist/plugins/send-user-file.js +2 -1
- package/dist/plugins/session-birth.d.ts +37 -0
- package/dist/plugins/session-birth.js +38 -0
- package/dist/plugins/session-epoch-anchor.d.ts +40 -12
- package/dist/plugins/session-epoch-anchor.js +33 -11
- package/dist/plugins/session-ext-table.d.ts +98 -0
- package/dist/plugins/session-ext-table.js +134 -0
- package/dist/plugins/session-fork.d.ts +16 -2
- package/dist/plugins/session-fork.js +3 -0
- package/dist/plugins/session-ownership.d.ts +1 -1
- package/dist/plugins/session-placement.d.ts +22 -16
- package/dist/plugins/session-placement.js +15 -12
- package/dist/plugins/session-row-sql.d.ts +20 -7
- package/dist/plugins/session-row-sql.js +16 -8
- package/dist/plugins/session-run-rollup.d.ts +29 -0
- package/dist/plugins/session-run-rollup.js +40 -0
- package/dist/plugins/session-store-sql.d.ts +157 -0
- package/dist/plugins/session-store-sql.js +398 -0
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/session-workspace-cell.d.ts +2 -2
- package/dist/plugins/session-workspace-cell.js +2 -2
- package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
- package/dist/plugins/shared-memory-store-sql.js +15 -14
- package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
- package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
- package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
- package/dist/plugins/snapshot-bucket-presence.js +1 -1
- package/dist/plugins/sql-driver.d.ts +24 -8
- package/dist/plugins/sql-driver.js +43 -9
- package/dist/plugins/sql-errors.d.ts +35 -5
- package/dist/plugins/sql-errors.js +55 -3
- package/dist/plugins/sql-json-column.d.ts +8 -7
- package/dist/plugins/sql-json-column.js +10 -6
- package/dist/plugins/store-backend.d.ts +114 -18
- package/dist/plugins/store-backend.js +340 -87
- package/dist/plugins/store-contracts.d.ts +97 -30
- package/dist/plugins/store-contracts.js +23 -1
- package/dist/plugins/store-fault.d.ts +28 -2
- package/dist/plugins/store-fault.js +20 -2
- package/dist/plugins/task-attachment-store.d.ts +21 -11
- package/dist/plugins/task-attachment-store.js +37 -19
- package/dist/plugins/task-list-store-sql.d.ts +1 -1
- package/dist/plugins/text-column-capacity.d.ts +21 -0
- package/dist/plugins/text-column-capacity.js +5 -0
- package/dist/plugins/tidb-pool.d.ts +3 -2
- package/dist/plugins/tidb-pool.js +42 -39
- package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
- package/dist/plugins/web-search.js +5 -3
- package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
- package/dist/plugins/workflow-run-store-sql.js +11 -5
- package/dist/principal-jwt.d.ts +4 -4
- package/dist/principal-jwt.js +20 -5
- package/dist/principal-shape.d.ts +41 -0
- package/dist/principal-shape.js +19 -0
- package/dist/question.d.ts +13 -23
- package/dist/question.js +21 -39
- package/dist/read-face-posture.d.ts +6 -6
- package/dist/read-face-posture.js +2 -2
- package/dist/request-declaration-refusal.d.ts +35 -12
- package/dist/request-declaration-refusal.js +21 -9
- package/dist/request-form.d.ts +58 -0
- package/dist/request-form.js +72 -0
- package/dist/request-image-urls.d.ts +8 -2
- package/dist/request-image-urls.js +2 -1
- package/dist/request-images.d.ts +20 -0
- package/dist/request-images.js +59 -0
- package/dist/request-key-closure.d.ts +6 -7
- package/dist/request-key-closure.js +15 -2
- package/dist/request-value-closure.d.ts +5 -5
- package/dist/request-value-closure.js +1 -1
- package/dist/resource-suspend.d.ts +7 -16
- package/dist/resource-suspend.js +1 -1
- package/dist/retired-name-host-notice.d.ts +21 -0
- package/dist/retired-name-host-notice.js +12 -0
- package/dist/rule-entry-list.d.ts +2 -2
- package/dist/rule-entry-list.js +3 -4
- package/dist/rule-issue-reading.d.ts +58 -0
- package/dist/rule-issue-reading.js +14 -0
- package/dist/rules-consent.d.ts +46 -16
- package/dist/rules-consent.js +102 -53
- package/dist/run-acceptance.d.ts +3 -1
- package/dist/run-acceptance.js +3 -0
- package/dist/run-local.d.ts +14 -6
- package/dist/run-local.js +109 -93
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +73 -44
- package/dist/runs.js +65 -43
- package/dist/runtime-caps-resolver.d.ts +36 -14
- package/dist/runtime-caps-resolver.js +31 -14
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -6
- package/dist/sealed-key-layout.js +5 -1
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +116 -26
- package/dist/security.d.ts +133 -161
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +27 -2
- package/dist/server-secret-env.d.ts +23 -5
- package/dist/server-secret-env.js +14 -4
- package/dist/service-version.d.ts +2 -1
- package/dist/service-version.js +2 -2
- package/dist/session-children-retire.d.ts +7 -5
- package/dist/session-children-retire.js +7 -2
- package/dist/session-deletion.d.ts +88 -0
- package/dist/session-deletion.js +8 -0
- package/dist/session-erase.d.ts +145 -0
- package/dist/session-erase.js +115 -0
- package/dist/session-error-wire.d.ts +6 -6
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +60 -10
- package/dist/session-incarnation.js +19 -2
- package/dist/session-policy-wire.d.ts +6 -3
- package/dist/session-policy-wire.js +11 -1
- package/dist/session-resident-background.d.ts +29 -47
- package/dist/session-resident-background.js +77 -8
- package/dist/session-row.d.ts +3 -2
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-sync-kernel.d.ts +1 -1
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/session-workspace.d.ts +11 -2
- package/dist/session-workspace.js +5 -0
- package/dist/sighup-idle.d.ts +1 -1
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-posture.d.ts +138 -21
- package/dist/store-posture.js +188 -3
- package/dist/stored-request-hooks-m20.d.ts +3 -2
- package/dist/stored-request-hooks-m20.js +21 -16
- package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
- package/dist/stores-sql/background-agent-store-sql.js +73 -20
- package/dist/stores-sql/blob-index-sql.d.ts +148 -0
- package/dist/stores-sql/blob-index-sql.js +154 -0
- package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
- package/dist/stores-sql/checkpoint-store-sql.js +86 -71
- package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
- package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
- package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
- package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
- package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
- package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
- package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
- package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +65 -0
- package/dist/stores-sql/session-write-hooks.js +2 -0
- package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
- package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
- package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
- package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
- package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
- package/dist/stores-sql/tool-result-store-sql.js +1 -1
- package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
- package/dist/stores-sql/windowed-session-storage.js +70 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +7 -1
- package/dist/task-a2a.js +18 -17
- package/dist/task-cwd.d.ts +31 -3
- package/dist/task-cwd.js +25 -1
- package/dist/task-mcp.d.ts +11 -3
- package/dist/task-mcp.js +16 -19
- package/dist/task-settings.d.ts +23 -14
- package/dist/task-settings.js +35 -13
- package/dist/terminal.d.ts +25 -43
- package/dist/terminal.js +31 -11
- package/dist/tool-approval.d.ts +152 -137
- package/dist/tool-approval.js +199 -199
- package/dist/trace/core-keyset-guard.d.ts +22 -9
- package/dist/trace/core-vocab-wire.d.ts +95 -0
- package/dist/trace/core-vocab-wire.js +15 -0
- package/dist/trace/engine-notice-wire.d.ts +1 -1
- package/dist/trace/engine-notice-wire.js +2 -0
- package/dist/trace/exit-seat.d.ts +52 -4
- package/dist/trace/exit-seat.js +43 -36
- package/dist/trace/extension-call-face.d.ts +3 -2
- package/dist/trace/extension-call-face.js +3 -1
- package/dist/trace/ledger-events.d.ts +4 -7
- package/dist/trace/ledger-sink.d.ts +1 -30
- package/dist/trace/ledger-sink.js +0 -11
- package/dist/trace/model-segment.d.ts +5 -5
- package/dist/trace/model-segment.js +5 -5
- package/dist/trace/project.d.ts +88 -58
- package/dist/trace/project.js +64 -28
- package/dist/trace/redact.d.ts +124 -28
- package/dist/trace/redact.js +936 -328
- package/dist/trace/self-minted-wire.d.ts +750 -29
- package/dist/trace/self-minted-wire.js +262 -25
- package/dist/trace/sema-provenance.d.ts +45 -41
- package/dist/trace/sema-provenance.js +81 -10
- package/dist/trace/task-notification-facets.d.ts +70 -2
- package/dist/trace/task-notification-facets.js +71 -1
- package/dist/trace/wire-projection-faces.d.ts +43 -8
- package/dist/trace/wire-projection-faces.js +28 -3
- package/dist/unread-request-members.d.ts +66 -0
- package/dist/unread-request-members.js +41 -0
- package/dist/upstream-body.d.ts +23 -0
- package/dist/upstream-body.js +16 -0
- package/dist/url-refusal.d.ts +3 -3
- package/dist/url-refusal.js +11 -4
- package/dist/user-authored-text.d.ts +1 -1
- package/dist/user-input-ledger.d.ts +7 -8
- package/dist/user-input-ledger.js +1 -1
- package/dist/web-admin-client/apply-effective.d.ts +6 -3
- package/dist/web-admin-client/apply-effective.js +33 -40
- package/dist/web-admin-client/apply-ledger.d.ts +16 -7
- package/dist/web-admin-client/apply-ledger.js +5 -2
- package/dist/web-admin-client/candidate-gate.d.ts +35 -3
- package/dist/web-admin-client/candidate-gate.js +53 -5
- package/dist/web-admin-client/center-request.d.ts +6 -3
- package/dist/web-admin-client/center-request.js +17 -16
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -2
- package/dist/web-admin-client/entry-metadata.d.ts +8 -0
- package/dist/web-admin-client/entry-metadata.js +13 -0
- package/dist/web-admin-client/facade.d.ts +1 -1
- package/dist/web-admin-client/http-client.d.ts +2 -1
- package/dist/web-admin-client/http-client.js +40 -13
- package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
- package/dist/web-admin-client/mcp-revocation.js +2 -1
- package/dist/web-admin-client/read-warnings.d.ts +1 -0
- package/dist/web-admin-client/read-warnings.js +1 -0
- package/dist/web-admin-client/restart-signal.js +13 -6
- package/dist/web-admin-client/skills-mcp.d.ts +22 -8
- package/dist/web-admin-client/skills-mcp.js +26 -21
- package/dist/web-admin-client/types.d.ts +35 -51
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/package.json +16 -12
- package/scripts/drain-check-local.mjs +118 -173
- package/scripts/drain-check.mysql.sql +20 -16
- package/scripts/drain-check.pg.sql +20 -16
- package/wire-changes/server@7.147.0.json +813 -0
- package/wire-changes/server@7.148.0.json +1517 -0
- package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
- package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
- package/dist/http/memory-layer-reply.d.ts +0 -30
- package/dist/http/memory-layer-reply.js +0 -24
- package/dist/lsp/e2b-bridge.d.ts +0 -57
- package/dist/lsp/e2b-bridge.js +0 -139
- package/dist/lsp/e2b-manager.d.ts +0 -93
- package/dist/lsp/e2b-manager.js +0 -178
- package/dist/lsp/lsp-frames.d.ts +0 -14
- package/dist/lsp/lsp-frames.js +0 -25
- package/dist/lsp/manager.d.ts +0 -129
- package/dist/lsp/manager.js +0 -127
- package/dist/lsp/types.d.ts +0 -12
- package/dist/lsp/types.js +0 -2
- package/dist/lsp/ws-transport.d.ts +0 -40
- package/dist/lsp/ws-transport.js +0 -210
package/dist/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,25 +1,13 @@
|
|
|
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
|
-
* · `local_unwritable` —— **缺省推导**的 local
|
|
9
|
+
* · `local_unwritable` —— **缺省推导**的 local 文件店在**空 / 不存在**的数据根上构造期失败(mkdir / 权限 / 只读挂载 / 磁盘满)。
|
|
10
|
+
* 数据根上已有东西时开不了(含另一实例持锁)是拒启,不是降级(判据见 `openStoreBackendWithFallback`)。
|
|
23
11
|
*
|
|
24
12
|
* 🔴 SQL 族**没有**降级词:配了 DSN 的库当下打不开 ⇒ 窗内重试、到窗拒启(`plugins/store-open-wait.ts` / `openStoreBackendWithFallback`),
|
|
25
13
|
* 从来不退成内存 —— 修前这里有第二个词 `db_unreachable`(`SESSION_BACKEND=auto` 下 SQL 族打不开 ⇒ 内存 + 本位置位),那是 [ref] P 类的静默 fail-open,随降级臂一并退役。
|
|
@@ -29,28 +17,137 @@ export type StoreDegradedReason = (typeof STORE_DEGRADED_REASONS)[number];
|
|
|
29
17
|
/** 降级臂按后端族定词(穷举 switch:词表加员 ⇒ 编译红)。只有缺省推导的 `local` 走得到降级臂;`mysql` / `pg` / `memory` 走到这里 = 装配缺陷,响亮抛。 */
|
|
30
18
|
export declare function storeDegradedReasonFor(declared: StoreBackendWord): StoreDegradedReason;
|
|
31
19
|
/**
|
|
32
|
-
* `/health.sessionBackend` 与 `listening` 日志 `session` 位的**唯一读法**:装配后的 `config.sessionBackend`(`memory` | `tidb`;`tidb` =
|
|
33
|
-
* + 装配出的后端 kind ⇒
|
|
34
|
-
* 不替它编一个后端名(那是装配缺陷,`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` 会先拒)。
|
|
35
23
|
*/
|
|
36
24
|
export declare function sessionStoreLabelOf(sessionBackend: ServiceConfig["sessionBackend"], backendKind: StoreBackend["kind"] | undefined): string;
|
|
37
|
-
/**
|
|
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 / 诊断 / 布线审计同读)。 */
|
|
38
119
|
export interface StorePosture {
|
|
39
120
|
readonly declared: StoreBackendWord;
|
|
40
121
|
readonly backend: StoreBackendWord;
|
|
41
122
|
readonly degradedReason?: StoreDegradedReason;
|
|
123
|
+
/** 三根取最弱({@link weakestDurability})。 */
|
|
124
|
+
readonly durability: StoreDurability;
|
|
125
|
+
/** 逐根明细:恒以数据根开头;有起服证据时再接封签钥匙目录与(接线时的)file 记忆根。 */
|
|
126
|
+
readonly roots: readonly StoreRootDurability[];
|
|
42
127
|
}
|
|
43
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* `build*`(纯数据)。`assembled` = 装配出的 `StoreBackend.kind`;缺席 = 没装出后端 ⇒ `memory`。`evidence` 缺席 = 这个宿主没有起服证据(测试夹具 / 桩):
|
|
130
|
+
* 只判数据根、且只按后端规则判(local 无证据即抛)。`memoryRootWired` = file 记忆引擎在本部署上真接了线(配了才算;没接线的记忆根不进最弱律)。
|
|
131
|
+
*/
|
|
44
132
|
export declare function buildStorePosture(a: {
|
|
45
133
|
readonly declared: StoreBackendWord;
|
|
46
134
|
readonly assembled: StoreBackend["kind"] | undefined;
|
|
47
135
|
readonly degradedReason: StoreDegradedReason | undefined;
|
|
136
|
+
readonly evidence: StoreEvidence | undefined;
|
|
137
|
+
readonly memoryRootWired: boolean;
|
|
48
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;
|
|
49
146
|
/** caps `store` 的形。 */
|
|
50
147
|
export interface StoreCapability {
|
|
51
148
|
readonly declared: StoreBackendWord;
|
|
52
149
|
readonly backend: StoreBackendWord;
|
|
53
|
-
readonly
|
|
150
|
+
readonly durability: StoreDurability;
|
|
54
151
|
readonly degradedReason?: StoreDegradedReason;
|
|
55
152
|
/** 7.105.0 及以前的顶层 `sql` 对象,原样搬入(`{engine, isolation, txnMode}`)。present-iff `backend ∈ {mysql, pg}` ∧ 驱动此刻给得出
|
|
56
153
|
* 回读复核过的事实 —— 最近一次连接初始化被拒([ref] ④)时驱动交 `null`,本键随之缺席(此前是顶层 `sql:null`)。 */
|
|
@@ -58,4 +155,24 @@ export interface StoreCapability {
|
|
|
58
155
|
}
|
|
59
156
|
/** 装配值 → caps 投影(纯函数)。 */
|
|
60
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 {};
|
|
61
178
|
//# sourceMappingURL=store-posture.d.ts.map
|
package/dist/store-posture.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { readdirSync } from "node:fs";
|
|
1
2
|
import { projectSqlEngineCapability } from "./sql-engine-posture.js";
|
|
3
|
+
import { parseMountinfo, readProcessMountinfo, visibleMountOf } from "./mountinfo.js";
|
|
4
|
+
import { recordFailOpen } from "./observability/fail-open.js";
|
|
2
5
|
export const STORE_DEGRADED_REASONS = ["local_unwritable"];
|
|
3
6
|
export function storeDegradedReasonFor(declared) {
|
|
4
7
|
switch (declared) {
|
|
@@ -16,19 +19,201 @@ export function storeDegradedReasonFor(declared) {
|
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
export function sessionStoreLabelOf(sessionBackend, backendKind) {
|
|
19
|
-
return sessionBackend === "tidb" && backendKind !== undefined ?
|
|
22
|
+
return sessionBackend === "tidb" && backendKind !== undefined ? backendKind : sessionBackend;
|
|
23
|
+
}
|
|
24
|
+
export const STORE_DURABILITIES = ["durable", "ephemeral", "unknown"];
|
|
25
|
+
export const STORE_ROOTS = ["data", "sealed_key", "memory"];
|
|
26
|
+
export const STORE_DURABILITY_RULES = [
|
|
27
|
+
"backend_memory",
|
|
28
|
+
"backend_sql",
|
|
29
|
+
"fs_volatile",
|
|
30
|
+
"k8s_empty_dir",
|
|
31
|
+
"k8s_persistent_volume",
|
|
32
|
+
"network_fs",
|
|
33
|
+
"block_device",
|
|
34
|
+
"unrecognized_mount",
|
|
35
|
+
"mount_unresolved",
|
|
36
|
+
"mountinfo_unreadable",
|
|
37
|
+
"mountinfo_malformed",
|
|
38
|
+
"path_unresolvable",
|
|
39
|
+
"not_linux",
|
|
40
|
+
];
|
|
41
|
+
export function durabilityOfRule(rule) {
|
|
42
|
+
switch (rule) {
|
|
43
|
+
case "backend_sql":
|
|
44
|
+
case "k8s_persistent_volume":
|
|
45
|
+
case "network_fs":
|
|
46
|
+
case "block_device":
|
|
47
|
+
return "durable";
|
|
48
|
+
case "backend_memory":
|
|
49
|
+
case "fs_volatile":
|
|
50
|
+
case "k8s_empty_dir":
|
|
51
|
+
return "ephemeral";
|
|
52
|
+
case "unrecognized_mount":
|
|
53
|
+
case "mount_unresolved":
|
|
54
|
+
case "mountinfo_unreadable":
|
|
55
|
+
case "mountinfo_malformed":
|
|
56
|
+
case "path_unresolvable":
|
|
57
|
+
case "not_linux":
|
|
58
|
+
return "unknown";
|
|
59
|
+
default: {
|
|
60
|
+
const unhandled = rule;
|
|
61
|
+
throw new Error(`store posture: no ruling for durability rule ${String(unhandled)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const VOLATILE_FS_TYPES = new Set(["overlay", "tmpfs", "ramfs"]);
|
|
66
|
+
const NETWORK_FS_TYPES = new Set(["cifs", "smb3", "ceph", "glusterfs", "fuse.glusterfs", "9p"]);
|
|
67
|
+
export const STORE_MOUNT_RULES = [
|
|
68
|
+
{ rule: "fs_volatile", holds: (m) => VOLATILE_FS_TYPES.has(m.fsType) },
|
|
69
|
+
{ rule: "k8s_empty_dir", holds: (m) => m.root.includes("kubernetes.io~empty-dir") },
|
|
70
|
+
{ rule: "k8s_persistent_volume", holds: (m) => m.root.includes("kubernetes.io~csi") || m.root.includes("kubernetes.io~local-volume") },
|
|
71
|
+
{ rule: "network_fs", holds: (m) => (m.fsType.startsWith("nfs") || NETWORK_FS_TYPES.has(m.fsType)) && !(m.fsType === "9p" && m.mountPoint === "/") },
|
|
72
|
+
{ rule: "block_device", holds: (m) => m.source.startsWith("/dev/") && m.root === "/" },
|
|
73
|
+
];
|
|
74
|
+
export function classifyStoreMount(m) {
|
|
75
|
+
return STORE_MOUNT_RULES.find((r) => r.holds(m))?.rule ?? "unrecognized_mount";
|
|
76
|
+
}
|
|
77
|
+
const readingWithoutMount = (path, rule) => ({ path, mountPoint: null, mountSource: null, fsType: null, rule, verdict: durabilityOfRule(rule) });
|
|
78
|
+
export function judgeStoreRootPath(physicalPath, reading) {
|
|
79
|
+
switch (reading.kind) {
|
|
80
|
+
case "not_linux":
|
|
81
|
+
return readingWithoutMount(physicalPath, "not_linux");
|
|
82
|
+
case "unreadable":
|
|
83
|
+
return readingWithoutMount(physicalPath, "mountinfo_unreadable");
|
|
84
|
+
case "read": {
|
|
85
|
+
if (reading.table.malformed > 0)
|
|
86
|
+
return readingWithoutMount(physicalPath, "mountinfo_malformed");
|
|
87
|
+
const visible = visibleMountOf(reading.table.rows, physicalPath);
|
|
88
|
+
if (typeof visible !== "object")
|
|
89
|
+
return readingWithoutMount(physicalPath, "mount_unresolved");
|
|
90
|
+
const rule = classifyStoreMount(visible);
|
|
91
|
+
return { path: physicalPath, mountPoint: visible.mountPoint, mountSource: visible.source, fsType: visible.fsType, rule, verdict: durabilityOfRule(rule) };
|
|
92
|
+
}
|
|
93
|
+
default: {
|
|
94
|
+
const unhandled = reading;
|
|
95
|
+
throw new Error(`store posture: unknown mount table reading ${JSON.stringify(unhandled)}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const DURABILITY_RANK = { ephemeral: 0, unknown: 1, durable: 2 };
|
|
100
|
+
export function weakestDurability(verdicts) {
|
|
101
|
+
return verdicts.reduce((w, v) => (w === undefined || DURABILITY_RANK[v] < DURABILITY_RANK[w] ? v : w), undefined) ?? "unknown";
|
|
102
|
+
}
|
|
103
|
+
export function localDataRootHoldsData(root) {
|
|
104
|
+
try {
|
|
105
|
+
return readdirSync(root).length > 0;
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
const code = e.code;
|
|
109
|
+
return code !== "ENOENT" && code !== "ENOTDIR";
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const EVIDENCE_TAG = "server.store-durability.evidence-unreadable";
|
|
113
|
+
const errnoOf = (e) => (e instanceof Error && "code" in e && typeof e.code === "string" ? e.code : e instanceof Error ? e.name : "unknown");
|
|
114
|
+
export async function captureStoreEvidence(paths, host) {
|
|
115
|
+
let reading;
|
|
116
|
+
try {
|
|
117
|
+
const text = await (host.mountinfo ?? readProcessMountinfo)();
|
|
118
|
+
reading = text === null ? { kind: "not_linux" } : { kind: "read", table: parseMountinfo(text) };
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
recordFailOpen(EVIDENCE_TAG, `why=mountinfo_unreadable err=${errnoOf(err)}`);
|
|
122
|
+
reading = { kind: "unreadable" };
|
|
123
|
+
}
|
|
124
|
+
if (reading.kind === "read" && reading.table.malformed > 0)
|
|
125
|
+
recordFailOpen(EVIDENCE_TAG, `why=mountinfo_malformed lines=${reading.table.malformed}`);
|
|
126
|
+
const judge = (p) => {
|
|
127
|
+
let physical;
|
|
128
|
+
try {
|
|
129
|
+
physical = host.canonical(p);
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
recordFailOpen(EVIDENCE_TAG, `why=path_unresolvable err=${errnoOf(err)} path=${p}`);
|
|
133
|
+
return readingWithoutMount(p, "path_unresolvable");
|
|
134
|
+
}
|
|
135
|
+
const judged = judgeStoreRootPath(physical, reading);
|
|
136
|
+
if (judged.rule === "mount_unresolved")
|
|
137
|
+
recordFailOpen(EVIDENCE_TAG, `why=mount_unresolved path=${physical}`);
|
|
138
|
+
return judged;
|
|
139
|
+
};
|
|
140
|
+
return {
|
|
141
|
+
dataRootHeldData: (host.holdsData ?? localDataRootHoldsData)(paths.dataRoot),
|
|
142
|
+
dataRoot: judge(paths.dataRoot),
|
|
143
|
+
sealedKey: judge(paths.sealedKeyDir),
|
|
144
|
+
...(paths.memoryRoot !== undefined ? { memory: judge(paths.memoryRoot) } : {}),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function dataRootReadingOf(backend, evidence) {
|
|
148
|
+
switch (backend) {
|
|
149
|
+
case "memory":
|
|
150
|
+
return readingWithoutMount(null, "backend_memory");
|
|
151
|
+
case "mysql":
|
|
152
|
+
case "pg":
|
|
153
|
+
return readingWithoutMount(null, "backend_sql");
|
|
154
|
+
case "local":
|
|
155
|
+
if (evidence === undefined)
|
|
156
|
+
throw new Error("store posture: a local backend was assembled without boot evidence of its data root's mount — wiring defect (stage 2 captures it before the key directory is written)");
|
|
157
|
+
return evidence.dataRoot;
|
|
158
|
+
default: {
|
|
159
|
+
const unhandled = backend;
|
|
160
|
+
throw new Error(`store posture: unknown backend kind ${String(unhandled)}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
20
163
|
}
|
|
21
164
|
export function buildStorePosture(a) {
|
|
22
|
-
|
|
165
|
+
const backend = a.assembled ?? "memory";
|
|
166
|
+
const ev = a.evidence;
|
|
167
|
+
const memory = a.memoryRootWired ? ev?.memory : undefined;
|
|
168
|
+
const roots = [
|
|
169
|
+
{ root: "data", ...dataRootReadingOf(backend, ev) },
|
|
170
|
+
...(ev !== undefined ? [{ root: "sealed_key", ...ev.sealedKey }] : []),
|
|
171
|
+
...(memory !== undefined ? [{ root: "memory", ...memory }] : []),
|
|
172
|
+
];
|
|
173
|
+
return {
|
|
174
|
+
declared: a.declared,
|
|
175
|
+
backend,
|
|
176
|
+
...(a.degradedReason !== undefined ? { degradedReason: a.degradedReason } : {}),
|
|
177
|
+
durability: weakestDurability(roots.map((r) => r.verdict)),
|
|
178
|
+
roots,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export function unwiredStorePosture(declared) {
|
|
182
|
+
return buildStorePosture({ declared, assembled: undefined, degradedReason: undefined, evidence: undefined, memoryRootWired: false });
|
|
183
|
+
}
|
|
184
|
+
export function buildStoreFreshStartLine(posture, evidence) {
|
|
185
|
+
if (posture.backend !== "local" || evidence.dataRootHeldData)
|
|
186
|
+
return undefined;
|
|
187
|
+
return {
|
|
188
|
+
dataRoot: evidence.dataRoot.path,
|
|
189
|
+
durability: posture.durability,
|
|
190
|
+
roots: posture.roots.map((r) => ({ root: r.root, verdict: r.verdict, rule: r.rule })),
|
|
191
|
+
note: "this boot initialized an empty local store (the data root held nothing before startup wrote to it); a first start, a lost volume and a wrong mount all look like this — if this deployment had data before, check the volume mounted at the data root",
|
|
192
|
+
};
|
|
23
193
|
}
|
|
24
194
|
export function projectStoreCapability(posture, sqlFacts) {
|
|
25
195
|
const sql = posture.backend === "mysql" || posture.backend === "pg" ? projectSqlEngineCapability(sqlFacts) : null;
|
|
26
196
|
return {
|
|
27
197
|
declared: posture.declared,
|
|
28
198
|
backend: posture.backend,
|
|
29
|
-
|
|
199
|
+
durability: posture.durability,
|
|
30
200
|
...(posture.degradedReason !== undefined ? { degradedReason: posture.degradedReason } : {}),
|
|
31
201
|
...(sql !== null ? { sql } : {}),
|
|
32
202
|
};
|
|
33
203
|
}
|
|
204
|
+
export function projectHealthStoreSection(posture) {
|
|
205
|
+
return { durability: posture.durability };
|
|
206
|
+
}
|
|
207
|
+
export function projectStoreDurabilityWiring(posture) {
|
|
208
|
+
return { durability: posture.durability, roots: posture.roots };
|
|
209
|
+
}
|
|
210
|
+
export function describeStoreRoot(r) {
|
|
211
|
+
const where = r.path ?? (r.rule === "backend_sql" ? "(rows held by the database)" : "(no store backend)");
|
|
212
|
+
const mount = r.fsType !== null ? ` (${r.fsType} ${r.mountSource ?? "?"} at ${r.mountPoint ?? "?"})` : "";
|
|
213
|
+
return `${r.root} ${where}${mount} ⇒ ${r.verdict} [${r.rule}]`;
|
|
214
|
+
}
|
|
215
|
+
export const STORE_NOT_DURABLE_CODE = "config.store_not_durable";
|
|
216
|
+
export class StoreNotDurableError extends Error {
|
|
217
|
+
code = STORE_NOT_DURABLE_CODE;
|
|
218
|
+
}
|
|
34
219
|
//# sourceMappingURL=store-posture.js.map
|
|
@@ -9,10 +9,11 @@ export type StoredHooksRereadM20 = (raw: unknown) => StoredHooksRereadM20Result
|
|
|
9
9
|
/** 读者(= `parseHooksConfig`);作形参只为让「读者交回什么拒因」可被替身喂(默认值就是生产读者)。 */
|
|
10
10
|
export type HooksReader = (raw: unknown) => ParseHooksConfigResult;
|
|
11
11
|
/**
|
|
12
|
-
* 重读一份存体 hooks:读者拒因全部属于两形 ⇒
|
|
12
|
+
* 重读一份存体 hooks:读者拒因全部属于两形 ⇒ 剥掉被点名的块里该剥的键(全部未知键 + 被点名的不透明列)、再问读者,**剥到读者受理为止**,过了就交回产物 + 被剥坐标;否则 `undefined`(原臂:整份不采纳)。
|
|
13
13
|
* 调用方只在读者**已经拒过**这份原值之后才来问;读者一开始就受理的值不进这里(进来也返回 `undefined`:没有可迁移的东西)。
|
|
14
14
|
*
|
|
15
|
-
* 终止:循环体以一次读开头(最后一次剥键之后必有一次读);继续下一轮的条件是本轮真从文档里剥掉了至少一个对象键,文档只减不增 ⇒
|
|
15
|
+
* 终止:循环体以一次读开头(最后一次剥键之后必有一次读);继续下一轮的条件是本轮真从文档里剥掉了至少一个对象键,文档只减不增 ⇒ 必停;
|
|
16
|
+
* 同一块至多被点名 1 + 它的不透明列数次 ⇒ 轮数 ≤ Σ 被点名的块(1 + 不透明列数)+ `__proto__` 键数。
|
|
16
17
|
*/
|
|
17
18
|
export declare function rereadStoredHooksM20(raw: unknown, read?: HooksReader): StoredHooksRereadM20Result | undefined;
|
|
18
19
|
/**
|