@sema-agent/server 7.149.0 → 7.151.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 +307 -9
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/USAGE.md +92 -40
- package/deploy/sema-up/README.md +7 -1
- package/deploy/sema-up/chart/Chart.yaml +1 -1
- package/deploy/sema-up/chart/templates/NOTES.txt +5 -0
- package/deploy/sema-up/chart/templates/_helpers.tpl +15 -16
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -3
- package/deploy/sema-up/chart/templates/server.yaml +5 -3
- package/deploy/sema-up/chart/values-full-single.yaml +3 -1
- package/deploy/sema-up/chart/values.yaml +8 -1
- package/deploy/sema-up/cluster-up.sh +1 -0
- package/deploy/sema-up/kube-up.sh +1 -1
- package/deploy/sema-up/lib/flagshape.sh +1 -1
- package/deploy/sema-up/lib/helm-values-cluster.py +2 -0
- package/deploy/sema-up/lib/helm-values-kube.py +2 -0
- package/dist/adoption/import.js +3 -3
- package/dist/approval-ask-machine.d.ts +1 -1
- package/dist/approval-card.d.ts +3 -3
- package/dist/approval-gate-currency.d.ts +2 -2
- package/dist/audit.d.ts +1 -1
- package/dist/audit.js +2 -2
- package/dist/auth-bridge.d.ts +20 -0
- package/dist/auth-bridge.js +9 -0
- package/dist/background-session-reap.d.ts +2 -2
- package/dist/bake-runner/main.d.ts +4 -2
- package/dist/bind-host.d.ts +2 -3
- package/dist/bind-host.js +2 -4
- package/dist/boot/budget-tracing.js +1 -1
- package/dist/boot/deferred-sandbox-path-env.d.ts +5 -3
- package/dist/boot/deferred-sandbox-path-env.js +1 -2
- package/dist/boot/engine-lease.d.ts +5 -0
- package/dist/boot/engine-lease.js +1 -0
- package/dist/boot/execution-env.d.ts +8 -14
- package/dist/boot/execution-env.js +54 -17
- package/dist/boot/execution-lane.js +32 -5
- package/dist/boot/late-binds.d.ts +8 -4
- package/dist/boot/late-binds.js +7 -1
- package/dist/boot/memory-consolidation.d.ts +3 -2
- package/dist/boot/memory-consolidation.js +6 -6
- package/dist/boot/parked-revive-gate.d.ts +5 -5
- package/dist/boot/parked-revive-gate.js +2 -3
- package/dist/boot/reapers.d.ts +5 -0
- package/dist/boot/reapers.js +12 -1
- package/dist/boot/resolve-spec.d.ts +7 -8
- package/dist/boot/resolve-spec.js +80 -35
- package/dist/boot/retention-lane.d.ts +1 -1
- package/dist/boot/runner-deps.d.ts +9 -2
- package/dist/boot/runner-deps.js +3 -3
- package/dist/boot/session-age-out.d.ts +36 -0
- package/dist/boot/session-age-out.js +101 -0
- package/dist/boot/session-faces.d.ts +5 -14
- package/dist/boot/session-faces.js +28 -24
- package/dist/boot/stage-01-config.js +2 -0
- package/dist/boot/stage-03-store-backend.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +5 -3
- package/dist/boot/stage-05-execution-env.js +2 -2
- package/dist/boot/stage-06-runners.d.ts +7 -4
- package/dist/boot/stage-06-runners.js +16 -8
- package/dist/boot/stage-07-capability-layer.d.ts +7 -4
- package/dist/boot/stage-07-capability-layer.js +3 -2
- package/dist/boot/stage-08-reapers.d.ts +7 -4
- package/dist/boot/stage-08-reapers.js +4 -2
- package/dist/boot/stage-09-leader.d.ts +11 -5
- package/dist/boot/stage-09-leader.js +12 -3
- package/dist/boot/stage-10-http-server.d.ts +44 -6
- package/dist/boot/stage-10-http-server.js +12 -10
- package/dist/boot/web-admin.d.ts +1 -1
- package/dist/boot/web-admin.js +3 -1
- package/dist/boot/workflow-orchestration.d.ts +7 -2
- package/dist/boot/workflow-orchestration.js +24 -7
- package/dist/bounded-rotation.d.ts +29 -0
- package/dist/bounded-rotation.js +24 -0
- package/dist/capability-facts.d.ts +84 -66
- package/dist/capability-facts.js +58 -41
- package/dist/center-credential.d.ts +25 -6
- package/dist/center-credential.js +25 -5
- package/dist/config-catalog.d.ts +26 -7
- package/dist/config-catalog.js +15 -12
- package/dist/config-invariants.d.ts +2 -1
- package/dist/config-invariants.js +4 -4
- package/dist/config-types.d.ts +22 -15
- package/dist/config.d.ts +51 -2
- package/dist/config.js +35 -24
- package/dist/deployment-governance.d.ts +7 -28
- package/dist/deployment-governance.js +1 -14
- package/dist/deployment-shape.d.ts +9 -1
- package/dist/deployment-shape.js +2 -1
- package/dist/device-protocol.d.ts +5 -4
- package/dist/device-protocol.js +1 -1
- package/dist/device-ws-hub.d.ts +1 -0
- package/dist/device-ws-hub.js +66 -29
- package/dist/device-ws-protocol.d.ts +79 -12
- package/dist/device-ws-protocol.js +64 -26
- package/dist/engine-identity.d.ts +23 -5
- package/dist/engine-identity.js +13 -0
- package/dist/entry-mode-clamp-notice.d.ts +2 -1
- package/dist/execution-env-refusal.d.ts +23 -0
- package/dist/execution-env-refusal.js +5 -0
- package/dist/execution-lane-caps.d.ts +3 -1
- package/dist/field-conflict.d.ts +3 -3
- package/dist/file-history-capture.d.ts +11 -4
- package/dist/file-history-capture.js +9 -6
- package/dist/file-history-disclosure.d.ts +7 -5
- package/dist/file-history-disclosure.js +7 -5
- package/dist/fleet/drain-entry.d.ts +4 -0
- package/dist/fleet/engine-signal.d.ts +14 -1
- package/dist/fleet/engine-signal.js +5 -1
- package/dist/fleet/fleet-reconciler.d.ts +1 -1
- package/dist/fleet/serving-lease.d.ts +18 -3
- package/dist/fleet/serving-lease.js +81 -35
- package/dist/fleet-client.d.ts +13 -11
- package/dist/fleet-client.js +53 -33
- package/dist/history-anchor.js +1 -1
- package/dist/hitl-delivery.d.ts +1 -3
- package/dist/hitl-delivery.js +1 -1
- package/dist/hooks/hook-runner.js +2 -2
- package/dist/host-lsp-manager.d.ts +2 -2
- package/dist/http/active-run-conflict.d.ts +3 -7
- package/dist/http/active-run-conflict.js +2 -2
- package/dist/http/admission.js +19 -4
- package/dist/http/approval-sweeps.js +7 -6
- package/dist/http/caller-trust.d.ts +2 -2
- package/dist/http/caller-trust.js +3 -3
- package/dist/http/checkpoint-ctx.d.ts +20 -63
- package/dist/http/checkpoint-ctx.js +2 -24
- package/dist/http/claim-heartbeat.d.ts +4 -4
- package/dist/http/claim-heartbeat.js +3 -3
- package/dist/http/dispatch.d.ts +2 -1
- package/dist/http/dispatch.js +36 -29
- package/dist/http/durable-run-leg.js +17 -17
- package/dist/http/health-self-report.d.ts +9 -1
- package/dist/http/health-self-report.js +2 -0
- package/dist/http/owner-access.d.ts +264 -20
- package/dist/http/owner-access.js +215 -5
- package/dist/http/readiness.d.ts +4 -2
- package/dist/http/resume-ctx-read.js +38 -1
- package/dist/http/resume-legs.d.ts +2 -1
- package/dist/http/resume-legs.js +273 -89
- package/dist/http/route-ctx.d.ts +41 -19
- package/dist/http/route-table.d.ts +1 -1
- package/dist/http/routes/a2a-serve.js +15 -14
- package/dist/http/routes/admin-memory-optout.d.ts +1 -1
- package/dist/http/routes/agents-roster.js +2 -3
- package/dist/http/routes/approvals-assistant.d.ts +3 -2
- package/dist/http/routes/approvals-assistant.js +12 -12
- package/dist/http/routes/background.d.ts +3 -3
- package/dist/http/routes/capabilities.js +10 -6
- package/dist/http/routes/config-catalog.d.ts +1 -1
- package/dist/http/routes/fleet.js +10 -8
- package/dist/http/routes/mcp-reconnect.js +2 -2
- package/dist/http/routes/memory-origin.d.ts +1 -1
- package/dist/http/routes/notify-wake.js +2 -3
- package/dist/http/routes/projects.d.ts +4 -2
- package/dist/http/routes/projects.js +7 -6
- package/dist/http/routes/retention-ops.d.ts +1 -1
- package/dist/http/routes/run-permission-mode.d.ts +1 -1
- package/dist/http/routes/run-permission-mode.js +2 -2
- package/dist/http/routes/runs.d.ts +1 -1
- package/dist/http/routes/runs.js +125 -66
- package/dist/http/routes/session-memory-sync.js +4 -5
- package/dist/http/routes/session-sync.d.ts +4 -3
- package/dist/http/routes/session-sync.js +174 -83
- package/dist/http/routes/sessions-list.js +13 -7
- package/dist/http/routes/sessions.d.ts +1 -1
- package/dist/http/routes/sessions.js +26 -48
- package/dist/http/routes/tasks.js +38 -23
- package/dist/http/routes/trace-usage.js +14 -14
- package/dist/http/routes/workflows.d.ts +1 -0
- package/dist/http/routes/workflows.js +20 -38
- package/dist/http/server.d.ts +28 -30
- package/dist/http/server.js +7 -3
- package/dist/http/stored-body-replay.d.ts +3 -24
- package/dist/http/stored-body-replay.js +2 -12
- package/dist/http/submit-ctx.d.ts +1 -2
- package/dist/http/submit-ctx.js +8 -6
- package/dist/http/submit-replay.d.ts +15 -2
- package/dist/http/submit-replay.js +10 -4
- package/dist/http/wire-types.d.ts +19 -6
- package/dist/identity-source.d.ts +20 -3
- package/dist/identity-source.js +14 -0
- package/dist/index.d.ts +4 -0
- package/dist/lane-home-probe.d.ts +3 -7
- package/dist/lane-home-probe.js +0 -1
- package/dist/leader/endpoint.js +9 -8
- package/dist/leader/leader.d.ts +2 -1
- package/dist/leg-facts.d.ts +19 -5
- package/dist/leg-facts.js +3 -1
- package/dist/mcp-authorization-face.d.ts +18 -14
- package/dist/mcp-authorization-face.js +3 -2
- package/dist/memory-scope.d.ts +5 -4
- package/dist/memory-scope.js +4 -4
- package/dist/memory-store-refusal.d.ts +1 -1
- package/dist/memory-sync-client.d.ts +30 -2
- package/dist/memory-sync-client.js +16 -9
- package/dist/observability/corrupt-read-seat.d.ts +1 -1
- package/dist/observability/err-text.d.ts +7 -0
- package/dist/observability/err-text.js +5 -0
- package/dist/observability/fail-open.d.ts +12 -8
- package/dist/observability/fail-open.js +12 -8
- package/dist/observability/logger.d.ts +7 -0
- package/dist/observability/logger.js +3 -1
- package/dist/observability/metrics.js +1 -0
- package/dist/observability/run-terminal.d.ts +1 -1
- package/dist/orchestration/workflow-notify-journal.d.ts +18 -1
- package/dist/orchestration/workflow-notify-journal.js +12 -1
- package/dist/orchestration/workflow-park-decision.d.ts +70 -18
- package/dist/orchestration/workflow-park-decision.js +49 -10
- package/dist/orchestration/workflow-park-holder.d.ts +65 -0
- package/dist/orchestration/workflow-park-holder.js +98 -0
- package/dist/orchestration/workflow-record-fence.d.ts +36 -0
- package/dist/orchestration/workflow-record-fence.js +42 -0
- package/dist/owner-faces.d.ts +28 -4
- package/dist/owner-faces.js +2 -0
- package/dist/parked-decide.d.ts +104 -53
- package/dist/parked-decide.js +153 -117
- package/dist/peer-directory.d.ts +2 -2
- package/dist/peer-inbound-face.d.ts +2 -6
- package/dist/peer-inbound-face.js +0 -3
- package/dist/peer-seat.d.ts +1 -1
- package/dist/peer-seat.js +52 -59
- package/dist/permission-mode-admission.d.ts +41 -5
- package/dist/permission-mode-admission.js +29 -3
- package/dist/plugins/adoption-log-sql.d.ts +3 -1
- package/dist/plugins/adoption-log-sql.js +7 -1
- package/dist/plugins/approval-ask-store-file.d.ts +10 -2
- package/dist/plugins/approval-ask-store-file.js +8 -0
- package/dist/plugins/approval-ask-store-memory.d.ts +6 -1
- package/dist/plugins/approval-ask-store-memory.js +28 -9
- package/dist/plugins/approval-ask-store-sql.d.ts +43 -2
- package/dist/plugins/approval-ask-store-sql.js +34 -5
- package/dist/plugins/approval-exemption-store.js +3 -0
- package/dist/plugins/approval-nonce-store.js +2 -0
- package/dist/plugins/breaker-state-sql.js +2 -0
- package/dist/plugins/caching-session-store.d.ts +9 -15
- package/dist/plugins/caching-session-store.js +6 -0
- package/dist/plugins/device-store-sql.js +6 -0
- package/dist/plugins/error-origin.d.ts +18 -0
- package/dist/plugins/error-origin.js +10 -0
- package/dist/plugins/exec-path-law.d.ts +34 -0
- package/dist/plugins/exec-path-law.js +13 -0
- package/dist/plugins/execution-placement-sql.js +6 -6
- package/dist/plugins/file-run-store.js +1 -1
- package/dist/plugins/image-bake-store-sql.js +6 -0
- package/dist/plugins/image-index-sql.js +4 -0
- package/dist/plugins/landed-attendants.d.ts +212 -0
- package/dist/plugins/landed-attendants.js +161 -0
- package/dist/plugins/leader-run-store-sql.js +4 -0
- package/dist/plugins/local-checkpoint-store.d.ts +4 -1
- package/dist/plugins/local-checkpoint-store.js +3 -0
- package/dist/plugins/local-session-live-reference.d.ts +40 -0
- package/dist/plugins/local-session-live-reference.js +39 -0
- package/dist/plugins/local-session-store.d.ts +71 -33
- package/dist/plugins/local-session-store.js +129 -27
- package/dist/plugins/memory-engine-pg.js +4 -0
- package/dist/plugins/memory-engine-sql-apply.js +5 -2
- package/dist/plugins/memory-engine-tidb.js +4 -0
- package/dist/plugins/memory-optout-grant-store-sql.js +4 -0
- package/dist/plugins/memory-run-store.js +1 -1
- package/dist/plugins/memory-sync-store-pg.js +5 -0
- package/dist/plugins/memory-sync-store-tidb.js +5 -0
- package/dist/plugins/one-time-migrations.d.ts +80 -61
- package/dist/plugins/one-time-migrations.js +241 -104
- package/dist/plugins/org-delivery-quota-store.js +4 -1
- package/dist/plugins/outcome-ledger-sql.js +2 -0
- package/dist/plugins/permission-rule-store-sql.js +11 -4
- package/dist/plugins/pg-cost-quota.js +4 -0
- package/dist/plugins/pg-pool.js +28 -1
- package/dist/plugins/pg-rate-limiter.js +2 -0
- package/dist/plugins/posix-shell-fs.d.ts +6 -1
- package/dist/plugins/posix-shell-fs.js +8 -3
- package/dist/plugins/remote-env-adb.d.ts +19 -15
- package/dist/plugins/remote-env-adb.js +44 -17
- package/dist/plugins/remote-env-connect-seat.d.ts +105 -0
- package/dist/plugins/remote-env-connect-seat.js +72 -0
- package/dist/plugins/remote-env-device.d.ts +22 -5
- package/dist/plugins/remote-env-device.js +114 -14
- package/dist/plugins/remote-env-e2b.d.ts +18 -7
- package/dist/plugins/remote-env-e2b.js +53 -40
- package/dist/plugins/remote-env-file-error.js +6 -2
- package/dist/plugins/remote-env-host.d.ts +18 -1
- package/dist/plugins/remote-env-host.js +48 -47
- package/dist/plugins/remote-env-k8s.d.ts +41 -39
- package/dist/plugins/remote-env-k8s.js +56 -32
- package/dist/plugins/remote-env-local-docker.d.ts +13 -8
- package/dist/plugins/remote-env-local-docker.js +37 -43
- package/dist/plugins/remote-env-ssh.d.ts +18 -12
- package/dist/plugins/remote-env-ssh.js +64 -62
- package/dist/plugins/remote-shell.d.ts +101 -2
- package/dist/plugins/remote-shell.js +221 -3
- package/dist/plugins/replica-registration.d.ts +35 -0
- package/dist/plugins/replica-registration.js +48 -0
- package/dist/plugins/resume-anchor-store-sql.d.ts +11 -2
- package/dist/plugins/resume-anchor-store-sql.js +12 -5
- package/dist/plugins/retention-lane-store-sql.d.ts +1 -1
- package/dist/plugins/retention-lane-store-sql.js +4 -0
- package/dist/plugins/retention-sql.d.ts +20 -2
- package/dist/plugins/retention-sql.js +11 -0
- package/dist/plugins/run-store-sql.d.ts +22 -3
- package/dist/plugins/run-store-sql.js +33 -9
- package/dist/plugins/scenario-prefix-switch-m42.d.ts +6 -12
- package/dist/plugins/scenario-prefix-switch-m42.js +7 -5
- package/dist/plugins/schema-consistency.d.ts +9 -5
- package/dist/plugins/schema-consistency.js +48 -18
- package/dist/plugins/schema-drift-sentence.js +1 -1
- package/dist/plugins/send-file-ledger.js +3 -0
- package/dist/plugins/serving-requirement.d.ts +68 -0
- package/dist/plugins/serving-requirement.js +60 -0
- package/dist/plugins/session-birth.d.ts +6 -2
- package/dist/plugins/session-capture-record-store-sql.js +2 -0
- package/dist/plugins/session-ext-table.d.ts +14 -1
- package/dist/plugins/session-ext-table.js +5 -1
- package/dist/plugins/session-row-sql.d.ts +49 -2
- package/dist/plugins/session-row-sql.js +56 -13
- package/dist/plugins/session-store-sql.d.ts +34 -18
- package/dist/plugins/session-store-sql.js +98 -17
- package/dist/plugins/shared-memory-store-sql.d.ts +1 -0
- package/dist/plugins/shared-memory-store-sql.js +6 -2
- package/dist/plugins/sql-driver.d.ts +2 -1
- package/dist/plugins/sql-driver.js +18 -3
- package/dist/plugins/sql-errors.d.ts +11 -6
- package/dist/plugins/sql-errors.js +5 -6
- package/dist/plugins/stop-then-start-sentence.d.ts +48 -3
- package/dist/plugins/stop-then-start-sentence.js +48 -0
- package/dist/plugins/stop-then-start.d.ts +109 -0
- package/dist/plugins/stop-then-start.js +104 -0
- package/dist/plugins/store-backend.d.ts +40 -13
- package/dist/plugins/store-backend.js +169 -27
- package/dist/plugins/store-boundary.d.ts +57 -0
- package/dist/plugins/store-boundary.js +139 -0
- package/dist/plugins/store-contracts.d.ts +29 -2
- package/dist/plugins/store-contracts.js +3 -0
- package/dist/plugins/store-fault-sentence-m53.d.ts +7 -0
- package/dist/plugins/store-fault-sentence-m53.js +25 -0
- package/dist/plugins/store-fault.d.ts +26 -7
- package/dist/plugins/store-fault.js +18 -2
- package/dist/plugins/task-attachment-store.js +9 -0
- package/dist/plugins/task-list-store-sql.d.ts +2 -2
- package/dist/plugins/task-list-store-sql.js +10 -8
- package/dist/plugins/tidb-cost-quota.js +4 -0
- package/dist/plugins/tidb-pool.js +6 -1
- package/dist/plugins/tidb-rate-limiter.js +4 -0
- package/dist/plugins/user-input-ledger-sql.js +4 -0
- package/dist/plugins/workflow-run-store-sql.d.ts +28 -10
- package/dist/plugins/workflow-run-store-sql.js +64 -4
- package/dist/plugins/workspace-fill.d.ts +4 -7
- package/dist/plugins/workspace-fill.js +2 -1
- package/dist/plugins/write-behind-counter.js +5 -0
- package/dist/process-instance.d.ts +3 -0
- package/dist/process-instance.js +7 -0
- package/dist/project-context.d.ts +64 -0
- package/dist/project-context.js +66 -0
- package/dist/project-registry.d.ts +46 -0
- package/dist/project-registry.js +44 -0
- package/dist/question.d.ts +9 -21
- package/dist/question.js +28 -19
- package/dist/request-key-closure.js +1 -1
- package/dist/request-value-closure.d.ts +4 -0
- package/dist/request-value-closure.js +10 -0
- package/dist/run-acceptance.d.ts +3 -2
- package/dist/run-acceptance.js +4 -6
- package/dist/run-cancel-card.d.ts +1 -1
- package/dist/run-cancel-card.js +2 -1
- package/dist/run-local.js +1 -0
- package/dist/runs.d.ts +37 -8
- package/dist/runs.js +53 -12
- package/dist/runtime-governance.d.ts +5 -4
- package/dist/security.d.ts +31 -33
- package/dist/security.js +41 -7
- package/dist/server-secret-env.d.ts +12 -10
- package/dist/server-secret-env.js +24 -15
- package/dist/session-agent.d.ts +1 -10
- package/dist/session-agent.js +0 -6
- package/dist/session-bindings.d.ts +82 -0
- package/dist/session-bindings.js +18 -0
- package/dist/session-children-retire.d.ts +2 -2
- package/dist/session-children-retire.js +2 -6
- package/dist/session-deletion.d.ts +16 -1
- package/dist/session-error-wire.d.ts +3 -3
- package/dist/session-error-wire.js +3 -3
- package/dist/session-incarnation.d.ts +28 -4
- package/dist/session-incarnation.js +14 -2
- package/dist/session-kind.d.ts +57 -0
- package/dist/session-kind.js +22 -0
- package/dist/session-notify-door.d.ts +4 -4
- package/dist/session-notify-door.js +5 -6
- package/dist/session-row.d.ts +21 -1
- package/dist/session-row.js +7 -1
- package/dist/session-rules-seat.d.ts +4 -3
- package/dist/session-rules-seat.js +3 -11
- package/dist/session-sync-kernel.d.ts +24 -14
- package/dist/session-sync-kernel.js +3 -6
- package/dist/session-sync.d.ts +4 -98
- package/dist/session-sync.js +4 -74
- package/dist/session-titler.d.ts +10 -3
- package/dist/session-titler.js +19 -6
- package/dist/ssh-host-key.d.ts +5 -0
- package/dist/ssh-host-key.js +3 -0
- package/dist/stores-sql/checkpoint-store-sql.d.ts +21 -2
- package/dist/stores-sql/checkpoint-store-sql.js +106 -18
- package/dist/stores-sql/file-history-store-sql.d.ts +52 -2
- package/dist/stores-sql/file-history-store-sql.js +108 -70
- package/dist/stores-sql/pg-session-storage.d.ts +34 -7
- package/dist/stores-sql/pg-session-storage.js +37 -13
- package/dist/stores-sql/retention-store-sql.d.ts +2 -10
- package/dist/stores-sql/retention-store-sql.js +2 -10
- package/dist/stores-sql/session-policy-store-sql.d.ts +30 -7
- package/dist/stores-sql/session-policy-store-sql.js +61 -44
- package/dist/stores-sql/session-write-hooks.d.ts +11 -0
- package/dist/stores-sql/tidb-session-store.d.ts +58 -7
- package/dist/stores-sql/tidb-session-store.js +37 -13
- package/dist/submission-exit.d.ts +3 -2
- package/dist/submission-exit.js +9 -1
- package/dist/task-cwd.d.ts +6 -5
- package/dist/task-settings.d.ts +19 -5
- package/dist/task-settings.js +13 -7
- package/dist/terminal.d.ts +33 -2
- package/dist/terminal.js +139 -9
- package/dist/tool-approval.d.ts +147 -12
- package/dist/tool-approval.js +206 -109
- package/dist/trace/engine-notice-wire.d.ts +14 -0
- package/dist/trace/engine-notice-wire.js +18 -1
- package/dist/trace/project.d.ts +4 -3
- package/dist/trace/project.js +3 -2
- package/dist/trace/projection-table.d.ts +33 -2
- package/dist/trace/self-minted-wire.d.ts +422 -26
- package/dist/trace/self-minted-wire.js +149 -23
- package/dist/trace/tool-card.d.ts +3 -0
- package/dist/trace/tool-card.js +24 -0
- package/dist/trace/tool-output-media.d.ts +2 -1
- package/dist/unattended-permission-mode.d.ts +1 -1
- package/dist/web-admin-client/apply-effective.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/skills-mcp.d.ts +1 -1
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +120 -41
- package/package.json +3 -3
- package/wire-changes/server@7.150.0.json +335 -0
- package/wire-changes/server@7.151.0.json +762 -0
- package/dist/http/session-inherit-env.d.ts +0 -36
- package/dist/http/session-inherit-env.js +0 -6
|
@@ -302,7 +302,7 @@ export class MemoryRunStore {
|
|
|
302
302
|
if (this.active.get(sessionId) !== taskId || r === undefined || r.status !== "running")
|
|
303
303
|
return false;
|
|
304
304
|
r.updatedAt = new Date();
|
|
305
|
-
write({ instanceId: r.instanceId });
|
|
305
|
+
write({ instanceId: r.instanceId, legId: r.legId });
|
|
306
306
|
return true;
|
|
307
307
|
}
|
|
308
308
|
async getRun(taskId) {
|
|
@@ -3,6 +3,7 @@ import { ensureIndexes } from "./ensure-index.js";
|
|
|
3
3
|
import { pgSafeJsonStringify, pgProtocolJsonStringify } from "./pg-safe-json.js";
|
|
4
4
|
import { assertMemoryScopeWidth } from "./memory-key-guards.js";
|
|
5
5
|
import { decodeJsonColumn, decodeNullableJsonColumn, foldJsonColumn, jsonColumnText, readNonNullJsonValueColumn, readOpaqueJsonValueColumn, readStringRecordColumn, } from "./sql-json-column.js";
|
|
6
|
+
import { sealStoreClass } from "./store-boundary.js";
|
|
6
7
|
export const PG_MEMORY_SYNC_TABLES = {
|
|
7
8
|
syncCursor: "agent_memory_engine_sync_cursor",
|
|
8
9
|
syncPartition: "agent_memory_engine_sync_partition",
|
|
@@ -128,6 +129,9 @@ export class PgMemorySyncStore {
|
|
|
128
129
|
WHERE id = $1`, [id, error, nextAttemptAtMs]);
|
|
129
130
|
}
|
|
130
131
|
}
|
|
132
|
+
sealStoreClass(PgMemorySyncStore, "pg-memory-sync-store", {
|
|
133
|
+
partitionIncarnation: "exit", getCursor: "exit", putCursor: "exit", enqueue: "exit", claimDue: "exit", complete: "exit", fail: "exit",
|
|
134
|
+
});
|
|
131
135
|
export const MEMORY_HISTORY_INDEXES = [
|
|
132
136
|
{ table: `${PG_MEMORY_SYNC_TABLES.history}`, name: `idx_${PG_MEMORY_SYNC_TABLES.history}_scope`, columns: ["scope"] },
|
|
133
137
|
];
|
|
@@ -174,6 +178,7 @@ export class PgMemoryHistoryStore {
|
|
|
174
178
|
return toMs(res.rows[0]?.n ?? 0);
|
|
175
179
|
}
|
|
176
180
|
}
|
|
181
|
+
sealStoreClass(PgMemoryHistoryStore, "pg-memory-history-store", { appendHistory: "exit", historyOf: "exit", countByScope: "exit" });
|
|
177
182
|
export function historyRowFrom(r) {
|
|
178
183
|
return {
|
|
179
184
|
id: String(r.id),
|
|
@@ -3,6 +3,7 @@ import { decodeJsonColumn, jsonColumnText, readOpaqueJsonValueColumn, readString
|
|
|
3
3
|
import { ensureIndexes } from "./ensure-index.js";
|
|
4
4
|
import { MEMORY_SYNC_INDEXES, MEMORY_HISTORY_INDEXES, PG_MEMORY_SYNC_TABLES } from "./memory-sync-store-pg.js";
|
|
5
5
|
import { assertMemoryScopeWidth } from "./memory-key-guards.js";
|
|
6
|
+
import { sealStoreClass } from "./store-boundary.js";
|
|
6
7
|
export const TIDB_MEMORY_SYNC_TABLES = {
|
|
7
8
|
syncCursor: "agent_memory_engine_sync_cursor",
|
|
8
9
|
syncPartition: "agent_memory_engine_sync_partition",
|
|
@@ -117,6 +118,9 @@ export class TiDBMemorySyncStore {
|
|
|
117
118
|
WHERE id = ?`, [error, nextAttemptAtMs, id]);
|
|
118
119
|
}
|
|
119
120
|
}
|
|
121
|
+
sealStoreClass(TiDBMemorySyncStore, "tidb-memory-sync-store", {
|
|
122
|
+
partitionIncarnation: "exit", getCursor: "exit", putCursor: "exit", enqueue: "exit", claimDue: "exit", complete: "exit", fail: "exit",
|
|
123
|
+
});
|
|
120
124
|
export async function ensureTiDBMemoryHistorySchema(pool) {
|
|
121
125
|
await pool.query(`CREATE TABLE IF NOT EXISTS ${TIDB_MEMORY_SYNC_TABLES.history} (
|
|
122
126
|
id CHAR(36) NOT NULL,
|
|
@@ -160,4 +164,5 @@ export class TiDBMemoryHistoryStore {
|
|
|
160
164
|
return toMs(rows[0]?.n ?? 0);
|
|
161
165
|
}
|
|
162
166
|
}
|
|
167
|
+
sealStoreClass(TiDBMemoryHistoryStore, "tidb-memory-history-store", { appendHistory: "exit", historyOf: "exit", countByScope: "exit" });
|
|
163
168
|
//# sourceMappingURL=memory-sync-store-tidb.js.map
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* **≥** 某条未发布形的 `introducedIn` 而两格仍是 `null` ⇒ 红(发布准备提交就是回填时刻,忘了就当场红;版本更低 = 还在开发,不红)。
|
|
13
13
|
* 最后一条删掉时,整个文件连同 `StoreBackend.runOneTimeMigrations()`(npm 公面上的接口成员)、`NO_SQL_MIGRATIONS`、
|
|
14
14
|
* `logOneTimeMigrations` / `runAndLogOneTimeMigrations`、三只后端与两只测试夹具上的实现、`boot/stores.ts` 的调用点一起删 —— 零例外:本文件里只有带窗的迁移与它们自己的
|
|
15
|
-
* 帮手(两只在场探针、锁腿、方言适配器)
|
|
15
|
+
* 帮手(两只在场探针、锁腿、方言适配器)与迁移段的**段头**两步(副本能力登记、起服准入 —— 常设,码在 `replica-registration.ts` / `serving-requirement.ts`)与锁内的**守卫段**(停-迁-起,常设,码在 `stop-then-start.ts`;本文件只在 {@link runSqlOneTimeMigrations}
|
|
16
|
+
* 里排它们的序;最后一条迁移删码时,段头与守卫段连同锁腿搬进起服序列,不随文件删);没有窗的东西(跳版升级的库的拒启臂)住在起服对账一族(`schema-consistency.ts`、`approval-exemption-skill-cutoff.ts`、local 的
|
|
16
17
|
* `local-data-root-admission.ts`),不在这里 —— 那条迁移还在时臂只判、不拒,读本文件的 {@link migrationCarried}(行随码同删 ⇒ 删码那一版起臂恒判)。
|
|
17
18
|
* 其余文件一律只写「窗口见本文件登记表」,不各写一个日期或版本 —— [ref] 之前本文件头写死了一个删除版本号(7.75.0),
|
|
18
19
|
* 连同 11 个文件里的复述共 23 行;那一版过去了 28 个 minor 也没删,7.93.5 反倒往本文件里又加了一条迁移。
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
* ⇒ 换成本段:**升一次级把存量字节改完,兼容臂当场删干净**。代价是每一条在它的窗内每次启动都要跑一遍(第二次起全是
|
|
26
27
|
* 零命中的空转);收益是窗关之后可以把那一条连同它的 SQL 一起删,而读腿从引入那一版起就只有**一种**读法。
|
|
27
28
|
*
|
|
28
|
-
* ## 已退役的 M1–
|
|
29
|
+
* ## 已退役的 M1–M12 与 M14
|
|
29
30
|
* 退役的整树快照索引表(M1)、退役的单座 steering 列(M2)、被上游改了名的闭集词 `unresolvable` → `ancestor_marked`(M3)三条的改写、计数与读数
|
|
30
31
|
* 窗关后已全部删码,登记行一并删。跳过了它们直接升的库由起服对账一族的拒启臂接住(`schema-consistency.ts` 头注「第二道对账」一节:两件退役 schema
|
|
31
32
|
* 任一在场 ⇒ 拒启、点名出路;先于一切建表)—— 那一道没有窗,所以不在本文件里。本段入口({@link runSqlOneTimeMigrations})不问这一问。
|
|
@@ -64,12 +65,14 @@
|
|
|
64
65
|
* 那一行不参与任何检查,但撤销口删不动它(引擎的写臂对这种 scope 同样拒)。出路 = 运维在库里把那只桶的那一行删掉(整桶 OCC 回写,指纹按 `buildRuleBucketChecksum` 重算)。
|
|
65
66
|
* 起服不再逐桶扫描、也不再有逐行 / 逐桶的删除告警;读腿整桶拒的桶照旧整桶拒(出路是人)。local 车道的持久规则在引擎自己的 File 分区里,这一半对它本来就是空转。
|
|
66
67
|
*
|
|
68
|
+
* M12(停驻行模式词读法记号的拒臂;不写库;7.150.0 删,窗 2026-11-08 关,发版日前已关)同样已删码,登记行一并删:判据、拒臂与答复、两处记号写点与 ctx 上的记号位都没有了,续跑重放不再问「行上有没有记号」。逐条写跳过了它直接升的库由谁接住:
|
|
69
|
+
* ⑦ 停驻行模式词读法记号的拒臂(M12):没有响亮臂 —— 7.121.x 及以前写下、此刻仍停驻的行(把 `APPROVAL_TERMINAL_BACKSTOP_MS` 调长的部署,或跳过了带本条的版本直接升的库)体里是请求原词、没有记号;
|
|
70
|
+
* 在设了 `AUTONOMY=plan` 的部署上不再被拒,由续跑口接住:重放之前体的词过**现**入口地板(`permission-mode-admission.ts` `stampReplayEntryMode`,与提交口同一只入口一步)——
|
|
71
|
+
* `bypassPermissions` / `auto` / `dontAsk` / 无词钳成 `plan`;`default` / `acceptEdits` 与 plan 地板的出口词(`plan_review` 批准写下的词)同字、读不出是谁写的,原样重放。
|
|
72
|
+
* 存量行上的那只记号键原样留着、无人读。出路(要那两个词也不按原词续跑)= 升级前把这些停驻的 run 决掉 / 取消,或升级窗内设 `AUTONOMY=read-only`(按段的只读围栏)。
|
|
73
|
+
*
|
|
67
74
|
* ## 窗内的迁移(逐条的失败方向刻意不同)
|
|
68
|
-
* · **
|
|
69
|
-
* 一个源(提交入口盖运维 `AUTONOMY=plan` 的地板一次),更早的行体里是请求原词、运维的 plan 由治理层每段重钳。续跑重放之前:本部署此刻有入口地板 ∧
|
|
70
|
-
* ctx 上没有当前记号 `"entry_word"` ∧ 体的生效词被地板钳会变 ⇒ 认领之前 409、行字节不动。规则、拒句与写点在 `http/checkpoint-ctx.ts` 顶注第三问。
|
|
71
|
-
* 没有读数键(它不写库)。
|
|
72
|
-
* · **M13 盘上 LKG 信封 formatVersion 2 → 3**(7.123.0)—— 不在店里(配置候选的盘上缓存,与 M12 同为非店迁移):被丢目录条目收成一份载体
|
|
75
|
+
* · **M13 盘上 LKG 信封 formatVersion 2 → 3**(7.123.0)—— 不在店里(配置候选的盘上缓存):被丢目录条目收成一份载体
|
|
73
76
|
* (`models.droppedCatalogEntries`,每条被丢的目录条目一行),7.122.0 及以前写的 2 只记了有名且启用的行、记在旧键 `droppedIdentities`。
|
|
74
77
|
* `config-lkg.ts` `loadLkg` 读回 2 时在内存里迁一次(旧载体搬成新载体、去掉 etag ⇒ 中心可达后第一拍整拉、重铸完整载体),启动日志
|
|
75
78
|
* `config_lkg_migrated` 一行;写盘一律写 3。规则与判形在 `config-lkg.ts` 顶注与 `migrateV2Lkg`。没有读数键(它不写库)。
|
|
@@ -353,11 +356,11 @@
|
|
|
353
356
|
* 逐目录点名进 warn `local_data_dir_mode_refused`(经不可缺席的披露口,窗内每次起服再报)。幂等:第二次起服零命中零写。没有读数键(它不写库)。local 独有;SQL 车道没有这些目录。
|
|
354
357
|
* · **M40 没有执行环境的车道的存词 `in-process` → `none`**(7.147.0)—— 本版起每个部署都声明车道(`REMOTE_EXEC`),没有执行环境的那一条叫 `none`;本版之前没声明车道的部署在
|
|
355
358
|
* 出处 / 放置格里存下的词是它的旧名,本版的车道闭集里没有它(读口一律响亮拒,补句点名本条,`execution-lane-rename-m40.ts`)。改值不丢信息,四处:SQL 两方言的
|
|
356
|
-
* `approval_ask.execution_lane` 与会话的 `execution_lane`(`session_meta` 上;M41 搬过之后在 `session_ext` 上 —— 三张表逐张读形,列在哪张改哪张)(
|
|
359
|
+
* `approval_ask.execution_lane` 与会话的 `execution_lane`(`session_meta` 上;M41 搬过之后在 `session_ext` 上 —— 三张表逐张读形,列在哪张改哪张)(列不在 ⇒ 那一张零动作 —— 跳版升上来的库由 M32 加列、按声明车道回填,不会再铸旧词);
|
|
357
360
|
* local 的会话元数据边档(`session-incarnations.json` 的 `[会话].execution.lane`,**排在严格边档对账之前** —— `LocalBackend.ensureSchema()` 第一步,否则旧词先撞严格拒)
|
|
358
361
|
* 与问账日志(排在 M32 的 local 问回填之前,一次压实重写整本)。**版本围栏(停-迁-起)**:旧副本不认 `none`、新读者不认旧词,列形不变 ⇒ 混跑没有列检查拦得住。
|
|
359
|
-
* SQL:还有旧词行要改 ∧
|
|
360
|
-
* (`config.execution_lane_rename_refused`,一行没改;拒句给最新心跳时刻与「全停之后何时再起」)
|
|
362
|
+
* SQL:还有旧词行要改 ∧ 有停-迁-起证据(守卫段,`stop-then-start.ts` 的 `readOlderReplicaEvidence`:`task_run` 的 `running` 行在 `REAP_RUN_STALE_SEC` 之内更新过 —— 收割器判活的同一只谓词构造 —— 且持有者没有登记为知道 M40)⇒ 拒启
|
|
363
|
+
* (`config.execution_lane_rename_refused`,一行没改;拒句给最新心跳时刻与「全停之后何时再起」);放行 ⇒ 改名之前记起服要求 `(M40, in_force)`;没有旧词行 ⇒ 零动作、可滚动。local:数据根的起服锁(core `FileStorageBackend` 的 `LOCK`)
|
|
361
364
|
* 本来就只许一个进程 ⇒ 不另设守卫。读数 `executionLaneWordsRenamed`(四处合计)。幂等:第二次起服零命中零写。
|
|
362
365
|
* · **M41 会话的部署格搬出引擎座表**(7.147.0)—— 引擎座表 `session_meta` 只带引擎的列;本服务记在会话上的十二格(标题 / 置顶 / 换源通告基线 / 位置与项目 / 执行放置七列 / fork 键)
|
|
363
366
|
* 自本版起住旁表 `session_ext`(一会话一行,外键 `ON DELETE CASCADE` 随会话行走;建表、列定义、补行与级联能力探针的唯一属主 `session-ext-table.ts`,起服在本段之前已建表并证过级联)。
|
|
@@ -365,7 +368,8 @@
|
|
|
365
368
|
* (`ON DUPLICATE KEY UPDATE` / `ON CONFLICT DO UPDATE`:旁表那一行的这几格 = 根行上的值;中断后重跑同一句同一结果);② 逐行核对(每一列 null 安全相等,旁表行不在 = 缺省)——
|
|
366
369
|
* 有一行不等 ⇒ 拒启 `config.session_ext_move_refused`(`copy_mismatch`,点名那只会话;一列没删,下一次起服重搬);③ **一句** `ALTER TABLE session_meta DROP COLUMN …` 删掉在场的全部部署格列
|
|
367
370
|
* (按后置条件收敛:那几列都不在)。旁表形的库(本版新建、或已搬过)⇒ 零动作。**版本围栏(停-迁-起)**:旧副本对这十二格的每一笔写在删列之后都撞未知列,
|
|
368
|
-
* 搬与删之间落下的写会丢 ⇒ 还有列要搬 ∧
|
|
371
|
+
* 搬与删之间落下的写会丢 ⇒ 还有列要搬 ∧ 有停-迁-起证据(与 M40 同一只读法,守卫段里判)⇒ 拒启(`older_replica`,一字节没写);放行 ⇒ ① 的第一句 upsert 之前记起服要求 `(M41, in_force)`。
|
|
372
|
+
* 如实的边(7.147.0 起已披露,不改):① 搬 → ② 核对 → ③ 删列三步之间一只没被看见的旧副本落下的写会丢 —— 删列让旧写在 ③ 之后响亮失败,却挡不住 ② 与 ③ 之间那一笔。
|
|
369
373
|
* **M32 × M41 的序与读表**:迁移段里 M32 先、M41 后。M32 读两种形 —— 八列在 `session_meta` 上(7.139–7.146 形:M32 全程写根行,随后 M41 连同别的格一起搬进旁表)
|
|
370
374
|
* 或部署格已在旁表(本条之后 / 新库)。旁表形里 M32 的加列 / 回填 / 收尾标记(② ④ ④b ⑥)都不跑(切换早已收尾;回填前提的拒随之不判),剩 ⓪(旧版副本建回的空退役表删掉)、围栏,
|
|
371
375
|
* 与围栏拒句「采旧」造出的中途表 ③ ⑤ —— ③ 写执行格当下的家(旁表:先补行、再覆盖,`migrateDeviceBindingsOntoSideTableStatements`)。删码不改语义:本条删码时 M32 若还在,改成恒旁表形(见登记行)。
|
|
@@ -373,19 +377,19 @@
|
|
|
373
377
|
* · **M42 场景前缀的切换检查**(7.148.0)—— 本版起以 `_scn:` 开头的身份读作「某个人的某个场景」(恢复管线 `owner-brands.ts` 的 `partsOf`);更早的版本不保留这一前缀,
|
|
374
378
|
* 自称 `_scn:<x>:<y>` 的调用方写下的行在本版会被读成另一个人的场景。**持久数据「响亮拒」那一半,不改写**:库里没有本条的标记 ⇒ 只读扫存量身份(本树建表句里名字以
|
|
375
379
|
* owner / scope / principal / subject 结尾、且库里在的每一列;local = run / 会话 / 问 / 附件四处 File 店的属主),一处命中 ⇒ 拒启 `config.scenario_prefix_switch_refused`(点名来源与行数,
|
|
376
|
-
* 一字节没写);零命中 ⇒
|
|
377
|
-
*
|
|
378
|
-
*
|
|
380
|
+
* 一字节没写);零命中 ⇒ 记起服要求 `(M42, in_force)`、写标记;有标记 ⇒ 不扫(本版自己写下的合法 `_scn:` 行不让第二次起服拒启)。**停-迁-起(SQL)**:标记不在而有停-迁-起证据(与 M40 / M41 同一只
|
|
381
|
+
* 读法,守卫段里判 —— 先于扫描)⇒ 同码拒启(`older_replica`),标记不写 —— 更早版本的副本不保留前缀,扫描之后它还会收下这类身份(同时有存量命中与证据的库先看到的是 `older_replica`)。标记随库(SQL:本条自己建的标记表一行;local:数据根里一只文件),
|
|
382
|
+
* 不随进程。先于任何写(拒了就是一字节没动)。律、扫描面、拒句的唯一属主 = `scenario-prefix-switch-m42.ts`。读数 `scenarioPrefixSourcesScanned`(0 = 标记在场)。
|
|
379
383
|
* · **M43 撤回出口的启用标记**(7.148.0)—— 不改任何存量行。提交出口撤回一只「受理之前就被拒」的提交铸下的会话之前,读旁表的客户端写计数 `client_writes`
|
|
380
384
|
* (四个客户端写者在锁住根行之后同一事务 +1,`plugins/session-ext-table.ts`);更早版本的副本的写者不计数 ⇒ 混跑窗里它刚给这只会话改了标题,撤回却读到 0,会把人写过的会话删掉。
|
|
381
385
|
* ⇒ 撤回出口只在本库的**标记行**落下之后启用(标记表与 M42 同一张,属主 `one-time-migration-marker.ts`;读者 = 撤回事务里的部署判据 `plugins/session-withdraw-sql.ts`,标记未落 ⇒ 答 `upgrade_pending` = 留,
|
|
382
|
-
* 幽灵会话照旧)。标记由本步落:标记不在 ∧
|
|
386
|
+
* 幽灵会话照旧)。标记由本步落:标记不在 ∧ 没有停-迁-起证据(与 M40 同一只读法;登记为知道 M43 的副本持有的 run 不算)⇒ 落;有 ⇒ 不落、**不拒启**,下一次起服再判(M42 的停-迁-起守卫在同一版里先拒过一次)。
|
|
383
387
|
* 读数 `withdrawMarkWritten`。local 车道:数据根独占、没有混跑窗,版本位在会话元数据格上(`clientWrites`,本版铸的格都带),恒零。
|
|
384
388
|
* · **M51 会话在删态的切换**(7.148.0)—— 不改任何存量行。本版起删会话按会话三态走(活 → 在删 → 没了,律在 `src/session-deletion.ts`):围栏写旁表 `session_ext.deleting_token`,
|
|
385
389
|
* 认领点(规则 L)读它、删除路只在围栏判一次认领。更早版本的副本不读在删态 ⇒ 混跑时它会在一只在删的会话上收下提交、建 run,而本版删除路的账本腿已不再判认领 ——
|
|
386
|
-
* 比修前更坏。⇒ **停-迁-起**,没有运行期开关:标记表(与 M42 同一张)无 `M51` 行 ∧
|
|
387
|
-
* ⇒ 拒启 `config.session_deleting_switch_refused`(`
|
|
388
|
-
* 看不见的边与 M43
|
|
390
|
+
* 比修前更坏。⇒ **停-迁-起**,没有运行期开关:标记表(与 M42 同一张)无 `M51` 行 ∧ 有停-迁-起证据(与 M40 / M41 / M42 同一只读法,守卫段里判)
|
|
391
|
+
* ⇒ 拒启 `config.session_deleting_switch_refused`(`older_replica`,一字节不写,拒句给可再起的时刻);没有 ⇒ 记起服要求 `(M51, in_force)`、落标记(之后不再判)。
|
|
392
|
+
* 看不见的边与 M43 同:空闲的、早于副本登记的旧副本(零 `running` run)没有证据 —— MIGRATION 写「全部旧副本停下再起」。读数 `sessionDeletingSwitchMarked`(0 或 1)。
|
|
389
393
|
* local 车道:数据根独占、没有混跑窗 ⇒ 恒零。
|
|
390
394
|
* · **M44 run 的 `errorCode` 只读列**(7.148.0)—— 码的唯一读法是 `task_run.error_code` 列;写 `result` 的三个写口同写这一列(停驻两口此前不写)。**改写半场**:
|
|
391
395
|
* 按 `task_id` 键集分批扫 `result IS NOT NULL` 的行,目标 = 「这条行在稳定、非到期时修前 `GET` 会答的码」= 结果投影的码(`persistedPlaneOf`,读盘面认两代形并折码)?? 列原值;
|
|
@@ -446,6 +450,26 @@
|
|
|
446
450
|
* (删 `taskId` 名下的问与批 —— 今天删会话级联的一个子集,语义不丢,`InMemoryApprovalAskStore.deleteByTaskM50`)并算删行记录,构造器末段的起服压实把整本重写成存活行的快照、记录离盘
|
|
447
451
|
* (压实失败 ⇒ 位留着,下一次写或下一次窗内起服再压;重放幂等),恰一行 stderr 点名条数与账本;窗关之后 ⇒ 同一条记录拒启(`StoreBootRefusalError`,拒因点名本条、
|
|
448
452
|
* 窗的最后一天与出路:用早于本条的版本起服一次 —— 它认得这只词,起服即压实删行记录),删码因此是零行为变化。没有起服读数键(它不经迁移段跑,读数是那一行 stderr)。只 local(SQL 两方言从来没有这只词)。
|
|
453
|
+
* · **M53 存量子代失败句换成对外句**(7.151.0)—— 店边界换句(SQL 店的出口只带原码 + 稳定句,`terminal.ts` 的 `storeBoundaryFault`)之前落盘的子代失败句可能逐字带库驱动的原句
|
|
454
|
+
* (库账号 / 内网地址 / 表名)。只改**有结构标记**的两格(判据与新值唯一一份 `store-fault-sentence-m53.ts`,新值 = 出口同一只读法 `outwardStoreMessageOf`):
|
|
455
|
+
* `background_agent.record_json` 的 `error`(`errorCode` 出了本仓词法;`summary` 里逐字含旧句的那一段同换)与 `task_event` 里 `tool_end` 卡的 `structured.errorMessage`
|
|
456
|
+
* (卡 `errorCode` 出了词法)。自由文本面(父转录、卡外的 `output` 报告行、workflow 节点句)没有结构标记 —— 不改,MIGRATION 披露。键集分批读、逐行写(后台行按 `rev` CAS、照本表写律把 `rev` 抬 1 —— 拿着改写之前那一读的写者 CAS 落空、重读,不会把旧句写回;
|
|
457
|
+
* 打空留给下一次起服);幂等:改过的格已是对外句。不是停-迁-起:旧副本写下的新行仍是旧句,窗内每次起服再扫。读数 `storeFaultSentencesRewritten`;local 恒 0(本地数据根上没有 SQL 驱动)。
|
|
458
|
+
*
|
|
459
|
+
* ## 停-迁-起(常设,码不在本文件)
|
|
460
|
+
* 登记行的 `stopThenStart` 一格是声明(围栏类 · 欠不欠 · 有证据时的拒;每一行显式写,`null` = 不声明),律、型、唯一判官、守卫段与证据读法住 `stop-then-start.ts`(常设,不带窗)。
|
|
461
|
+
* 本文件只在 {@link runSqlOneTimeMigrations} 的锁内排守卫段的序(准入复核之后、第一步迁移之前:任一条拒 ⇒ 迁移段一字节没写),各条停-迁-起步在**自己的**第一笔
|
|
462
|
+
* 不兼容写之前记起服要求(`serving-requirement.ts` 的 `recordServingRequirement`)。证据读法没有窗:早于副本登记的副本只经它们持有的 run 心跳可见,而这样的进程在任何日期之后
|
|
463
|
+
* 都可能还在(回滚到早于副本登记的构建、跳过公开序列的嵌入方、登记行过了留存视界的长寿进程)—— 它曾登记为窗行 M52(7.150.0),7.151.0 起改为常设:删掉它,此后引入的
|
|
464
|
+
* 每一条停-迁-起迁移的守卫就零证据、静默放行。M43 的启用判同读它(不拒启,只决定标记落不落)。
|
|
465
|
+
*
|
|
466
|
+
* ## 新迁移的书写序(先满足的赢;登记行注写明前一形为什么不行)
|
|
467
|
+
* ① 不动存量字节:新事实进新表或新列(中央建表语句;`shapeChanges: add`)—— 不要一次性迁移、不要守卫;
|
|
468
|
+
* ② 滚动形(`stopThenStart: null`):迁移函数体里把存量字节改一次,改完之后更早副本还能写出的旧形必须是二者之一 ——(a)写不出(库让它失败);(b)本条在窗内每次起服再改一次,
|
|
469
|
+
* 且其间每个读者对旧形响亮拒。**认旧形与新形的双读只许在迁移函数体里**:新迁移不得在迁移函数体之外读旧形(不写双写窗、不写窗内才生效的读侧行为臂 —— 下面 M19 / M20 / M38 / M44 / M50
|
|
470
|
+
* 等既有窗行的读侧半场照留、随窗删,不作新迁移的先例);按证据推迟启用一项新行为(M43 形)也不是滚动形;
|
|
471
|
+
* ③ 停-迁-起 `structural`(先围后搬:第一笔改动就是围栏 DDL,搬运只从围过的对象读;M34 ① 的就地改名是先例)> `per-write`(写句读起服要求,早至少一版发出)> `accepted`(成文的残余)。
|
|
472
|
+
* 能两版滚动的不许声明停-迁-起。三类的判据与残余见 `stop-then-start.ts`。
|
|
449
473
|
*
|
|
450
474
|
* ## 收据账(一次起服一只,每一条迁移同一只)
|
|
451
475
|
* 每一步把它**已提交**的改写 / 删除与点名读数当场记进同一只收据账({@link MigrationReceipts}):计数随每次提交累加、行随每次提交追加、形读数在那一步落定时写。走完 ⇒
|
|
@@ -471,6 +495,9 @@ import type { ExecutionLane } from "../execution-lane-caps.js";
|
|
|
471
495
|
import { type ImportedLayerRootAllowRetired, type ImportedLayerRootBucketSkipped, type ImportedLayerRootRetirementSource } from "./imported-layer-root-retirement.js";
|
|
472
496
|
import { type LocalPlacementBackfillSeat, type UnusableArchiveWord } from "../execution-placement.js";
|
|
473
497
|
import type { PendingShapeChange } from "./schema-consistency.js";
|
|
498
|
+
import { type OlderReplicaEvidence } from "./stop-then-start-sentence.js";
|
|
499
|
+
import { type ReplicaRegistration } from "./replica-registration.js";
|
|
500
|
+
import { type LiveRunWindowInput, type StopThenStartEntry, type StopThenStartRow } from "./stop-then-start.js";
|
|
474
501
|
/** 迁移读数(启动日志一行写全;测试按它断言,不靠日志文本)。 */
|
|
475
502
|
export interface OneTimeMigrationReport {
|
|
476
503
|
/** M17:`session_policy` 装规则的那一列 —— `renamed` = 本次把 `rules` 改名成 `rule_entries`;`current` = 早已是新名(新库 / 第二跑);
|
|
@@ -547,6 +574,9 @@ export interface OneTimeMigrationReport {
|
|
|
547
574
|
readonly withdrawMarkWritten: number;
|
|
548
575
|
/** M51:本次落下会话在删态切换标记的行数(0 或 1;已落 ⇒ 0;别的副本还在心跳 ⇒ 拒启,不进读数)。SQL 独有;local 恒 0(数据根独占,没有混跑窗)。非零 = 真写了标记。 */
|
|
549
576
|
readonly sessionDeletingSwitchMarked: number;
|
|
577
|
+
/** M53:本次把存量子代失败句换成对外句的格数(SQL `background_agent.record_json` 的 `error` / `summary` 一行算一格 + `task_event` 的 `tool_end` 卡 `errorMessage` 一行算一格)。
|
|
578
|
+
* local 恒 0(本地数据根上没有 SQL 驱动,存量行不可能带驱动原句)。非零 = 真写了存量行。 */
|
|
579
|
+
readonly storeFaultSentencesRewritten: number;
|
|
550
580
|
/** M44:本次改写了 `errorCode` 码列的 run 行数(SQL `task_run` / local `run.json`;结果投影的码 ≠ 列,或 `running` 行带码)。非零 = 真写了存量行。 */
|
|
551
581
|
readonly runErrorCodeColumnRewritten: number;
|
|
552
582
|
/** M45:本次改写了预览列的 run 行数(SQL `task_run` / local `run.json`;以闭集注入块开标签起头的旧形剥到不动点)。非零 = 真写了存量行。 */
|
|
@@ -693,7 +723,7 @@ export declare class OneTimeMigrationInterruptedError extends Error {
|
|
|
693
723
|
* 规则(窗长 30 天、窗关后的第一个 minor 删码、门怎么判)在本文件头注「窗」一节,只写那一次。
|
|
694
724
|
*/
|
|
695
725
|
export interface OneTimeMigrationWindow {
|
|
696
|
-
/** 本文件里的条目名(头注「窗内的迁移」的
|
|
726
|
+
/** 本文件里的条目名(头注「窗内的迁移」的 M13…)。 */
|
|
697
727
|
readonly id: string;
|
|
698
728
|
/** 引入这条迁移的版本 = 第一只含其代码的发布 tag(取证:`git log -S '<该条的常量名>' -- src/plugins/one-time-migrations.ts`
|
|
699
729
|
* 找引入提交 → `git tag --contains <提交> --sort=creatordate` 取最早)。 */
|
|
@@ -719,11 +749,13 @@ export interface OneTimeMigrationWindow {
|
|
|
719
749
|
*/
|
|
720
750
|
readonly shapeChanges?: readonly PendingShapeChange[];
|
|
721
751
|
/**
|
|
722
|
-
*
|
|
723
|
-
*
|
|
724
|
-
*
|
|
752
|
+
* 本条是不是**停-迁-起**迁移 —— **每一行显式写**(缺键 = tsc 红;形门 `test/one-time-migration-window-gate.test.ts` 再核一次「每行自有这一键」)。
|
|
753
|
+
* 一份声明({@link StopThenStartRow}:缘由句 · 这只库还欠不欠 · 有证据时本条的拒 · 围栏类)⇒ 起服时守卫段在任何写之前判证据(有 ⇒ 拒启、一字节不写),
|
|
754
|
+
* 本条放行之后在自己的第一笔不兼容写之前记一行起服要求;起服列册对账的升级清单只列这只库还欠的行、把缘由句原样列给运维。律、型与唯一判官在 `stop-then-start.ts`。
|
|
755
|
+
* `null` = 本条**不声明**停-迁-起(不拒启、不进清单的停-迁-起一步)—— 只是声明,不是混跑安全的证明;新迁移写 `null` 只许两形:改完之后更早副本写不出旧形
|
|
756
|
+
* (库让它失败),或本条在窗内每次起服再改一次、其间每个读者对旧形响亮拒(头注「新迁移的书写序」一节)。读者 = {@link stopThenStartMigrations}。
|
|
725
757
|
*/
|
|
726
|
-
readonly stopThenStart
|
|
758
|
+
readonly stopThenStart: StopThenStartRow | null;
|
|
727
759
|
}
|
|
728
760
|
/**
|
|
729
761
|
* 🔴 [ref] —— 一次性迁移登记表,本文件各条的窗的**唯一属主**。别处(接口 JSDoc、调用点、DDL 注、部署文档)只写「窗口见
|
|
@@ -749,13 +781,11 @@ export declare function migrationWindowEnd(id: string): string;
|
|
|
749
781
|
*/
|
|
750
782
|
export declare function migrationCarried(id: string): boolean;
|
|
751
783
|
/**
|
|
752
|
-
* 本构建带的**停-迁-起**迁移(登记行的 `stopThenStart`
|
|
753
|
-
*
|
|
784
|
+
* 本构建带的**停-迁-起**迁移(登记行的 `stopThenStart` 不是 `null`;行在 ⇔ 码在 ⇒ 起服会在这一条上判证据),按登记表顺序,连同判官要读的 `introducedIn` / `shapeChanges`。
|
|
785
|
+
* 读者 = 守卫段(`stop-then-start.ts` 的 `guardOwedStopThenStart`,{@link runSqlOneTimeMigrations} 的锁内)与起服列册对账的升级清单(逐行问 `owedOn`,只把这只库还欠的列给运维)。
|
|
786
|
+
* 登记表里再没有这样的行时返回空数组 —— 守卫段的循环为空、清单的这一步随之不出。
|
|
754
787
|
*/
|
|
755
|
-
export declare function stopThenStartMigrations(registry?: readonly Pick<OneTimeMigrationWindow, "id" | "stopThenStart">[]): readonly
|
|
756
|
-
readonly id: string;
|
|
757
|
-
readonly reason: string;
|
|
758
|
-
}[];
|
|
788
|
+
export declare function stopThenStartMigrations(registry?: readonly Pick<OneTimeMigrationWindow, "id" | "introducedIn" | "shapeChanges" | "stopThenStart">[]): readonly StopThenStartEntry[];
|
|
759
789
|
/** local 车道上 SQL 独有的几条(M17 / M18 / M21 / M23 / M24 / M26 / M27 / M29)的读数(M32 的回填两车道都有、M33 只在 local,local 腿的读数由 `LocalBackend.runOneTimeMigrations` 现算):那几张表 / 列在文件底座上从来不存在 ⇒ 如实答 absent / 0。 */
|
|
760
790
|
export declare const NO_SQL_MIGRATIONS: Omit<OneTimeMigrationReport, "runErrorCodeColumnRewritten" | "runObjectivePreviewRewritten" | "shellSentinelOwnersCleared" | "shellSentinelOwnerRowsRetained" | "checkpointHostSessionsBackfilled" | "legacySkillExemptionsDropped" | "executionPlacementsBackfilled" | "askExecutionLanesBackfilled" | "executionLaneWordsRenamed" | "scenarioPrefixSourcesScanned" | "executionPlacementSessionsUnreadable" | "localArchiveRowFactsBackfilled" | "localArchivesAnonymized" | "localArchivesKeptStamped" | "localArchivesUnreadable" | "localArchiveSnapshotsRecovered" | "localArchiveTokensAdopted" | "localArchiveTokensMinted" | "askJournalRecordsUpgraded" | "importedLayerRootAllowsRetired" | "importedLayerRootBucketsSkipped" | "importedLayerRootBucketsUnnamed">;
|
|
761
791
|
/** 启动期的日志口(logger 的子集)。两级各有其用,见 {@link logOneTimeMigrations}。 */
|
|
@@ -795,7 +825,14 @@ export interface MigrationDb {
|
|
|
795
825
|
* 判官不在两处各写一份。
|
|
796
826
|
*/
|
|
797
827
|
export declare function createSqlImportedLayerRootSource(exec: Parameters<typeof listRuleBucketOwners>[0]): ImportedLayerRootRetirementSource;
|
|
798
|
-
|
|
828
|
+
/**
|
|
829
|
+
* 取连接之前:本构建的停-迁-起声明过唯一判官(`stop-then-start.ts` 的 `assertStopThenStartDeclarations`;自相矛盾 = 构建缺陷 ⇒ 抛,一句库语句都没发)。
|
|
830
|
+
* **段头**(常设两步,不带窗;只在这里排序;与迁移步同一条连接):两张表在(不在 ⇒ 拒,点名公开序列)→ 本进程登记(`replica-registration.ts`)→ 起服准入**锁外预读**(`serving-requirement.ts`)
|
|
831
|
+
* → 取迁移锁 → **锁内复核**(同一判据;本进程等锁期间握锁的那一只写下的要求在这里读得到)→ **守卫段**(`stop-then-start.ts`:本构建全部还欠的停-迁-起迁移先一起判证据,
|
|
832
|
+
* 任一有 ⇒ 抛那一条自己的拒,迁移段一字节没写)→ 各迁移步(各停-迁-起步在自己的第一笔不兼容写之前记起服要求)。准入拒 / 守卫拒 ⇒ 一步迁移都不跑。
|
|
833
|
+
* 登记在任何守卫读证据之前、本进程能持有任何 run 之前落下;跳过 `ensureSchema()` 的嵌入方走同一段。`me` 缺省 = 本进程的登记行;真库钉传别的构建(能力名单不同的起服者)。
|
|
834
|
+
*/
|
|
835
|
+
export declare function runSqlOneTimeMigrations(dialect: SqlDialect, pool: MysqlPool | PgPool, input: SqlOneTimeMigrationInput, me?: ReplicaRegistration): Promise<OneTimeMigrationReport>;
|
|
799
836
|
/** M48 的那一步(见头注 M48 段):输入显式说「没有身份边界」⇒ 改写 —— 改写面里的每张表一句按值的 `UPDATE`(表不在 ⇒ 跳过);写后不再有哨兵值 ⇒ 第二跑零命中。
|
|
800
837
|
* 其余一切(有身份边界,或绕过类型缺这一格 / 不是布尔 ⇒ fail-closed,不静默放宽)零改写,但对同一批表用**同一句 WHERE**({@link shellSentinelOwnerWhereM48})数一遍留着的行,
|
|
801
838
|
* 非零的面记进 `shellSentinelOwnerRowsRetained`(起服日志一行 warn;见头注)。值**逐字节**比的理由在 {@link shellSentinelOwnerWhereM48}。 */
|
|
@@ -815,12 +852,12 @@ export declare function dropLegacySkillExemptionsM46(db: MigrationDb, dialect: S
|
|
|
815
852
|
export declare const SESSION_DELETING_MARK_ID = "M51";
|
|
816
853
|
/** M51 起服拒的机读码(确定的拒启表态:全停之后再起才有另一个答案)。 */
|
|
817
854
|
export declare const SESSION_DELETING_SWITCH_REFUSED_CODE = "config.session_deleting_switch_refused";
|
|
818
|
-
/** M51
|
|
855
|
+
/** M51 起服拒:标记还没落,而有停-迁-起证据(拒因闭集只有 `older_replica`)。 */
|
|
819
856
|
export declare class SessionDeletingSwitchRefusedError extends StoreBootRefusalError {
|
|
820
857
|
readonly code = "config.session_deleting_switch_refused";
|
|
821
|
-
readonly reason: "
|
|
858
|
+
readonly reason: "older_replica";
|
|
822
859
|
/** `tail` = 库此刻还差的列(`describeUpgradeDriftTail`;列齐 ⇒ 空串):一次起服读全,不必补一句再试。 */
|
|
823
|
-
constructor(
|
|
860
|
+
constructor(evidence: OlderReplicaEvidence, tail?: string);
|
|
824
861
|
}
|
|
825
862
|
/**
|
|
826
863
|
* M42 的扫描面:本树建表句(两方言各自的录制,与起服列册对账同一份)里名字合 {@link IDENTITY_COLUMN_NAME}、类型是字符 / 字节串的列,与库里实际在的列取交(条件建的表不在库里 ⇒ 不扫)。
|
|
@@ -832,12 +869,12 @@ export declare function scannedIdentityColumnsM42(db: Pick<MigrationDb, "rows">,
|
|
|
832
869
|
}[]>;
|
|
833
870
|
/**
|
|
834
871
|
* 🔴 M42 的 SQL 腿:标记在场 ⇒ 返回(零扫描);否则逐列只读计数 `LIKE '<前缀>%'`,一处命中 ⇒ {@link ScenarioPrefixSwitchRefusedError}(`stored_prefix`;一字节没写,标记不写);
|
|
835
|
-
*
|
|
872
|
+
* 零命中 ⇒ 记起服要求 `(M42, in_force)`、再写标记(停-迁-起证据已在守卫段里判过:有证据的库在扫描之前就以 `older_replica` 拒了)。
|
|
836
873
|
* 握着迁移段的那一把锁、在那一条连接上:两只副本同时起服时第二只读到第一只写下的标记(写标记用 `INSERT IGNORE` / `ON CONFLICT DO NOTHING`,收敛)。
|
|
837
874
|
*/
|
|
838
875
|
export declare function switchScenarioPrefixM42(db: MigrationDb, dialect: SqlDialect, receipts: {
|
|
839
876
|
scenarioPrefixSourcesScanned: number;
|
|
840
|
-
}
|
|
877
|
+
}): Promise<void>;
|
|
841
878
|
/** M40 的拒启码(停-迁-起守卫)。 */
|
|
842
879
|
export declare const EXECUTION_LANE_RENAME_REFUSED_CODE = "config.execution_lane_rename_refused";
|
|
843
880
|
/**
|
|
@@ -847,7 +884,7 @@ export declare const EXECUTION_LANE_RENAME_REFUSED_CODE = "config.execution_lane
|
|
|
847
884
|
export declare class ExecutionLaneRenameRefusedError extends StoreBootRefusalError {
|
|
848
885
|
/** 带旧词的行数(两张表合计)。 */
|
|
849
886
|
readonly pendingRows: number;
|
|
850
|
-
/**
|
|
887
|
+
/** 停-迁-起证据里的 `running` run 数(持有者没有登记为知道 M40)。 */
|
|
851
888
|
readonly liveRuns: number;
|
|
852
889
|
/** 全停之后可以再起的最早时刻(ISO;= 最新心跳 + 判活窗 —— 那时收割谓词也判它们为死)。 */
|
|
853
890
|
readonly restartAfter: string;
|
|
@@ -855,7 +892,7 @@ export declare class ExecutionLaneRenameRefusedError extends StoreBootRefusalErr
|
|
|
855
892
|
constructor(
|
|
856
893
|
/** 带旧词的行数(两张表合计)。 */
|
|
857
894
|
pendingRows: number,
|
|
858
|
-
/**
|
|
895
|
+
/** 停-迁-起证据里的 `running` run 数(持有者没有登记为知道 M40)。 */
|
|
859
896
|
liveRuns: number,
|
|
860
897
|
/** 全停之后可以再起的最早时刻(ISO;= 最新心跳 + 判活窗 —— 那时收割谓词也判它们为死)。 */
|
|
861
898
|
restartAfter: string, detail: string);
|
|
@@ -875,48 +912,30 @@ export declare class ExecutionLaneRenameWriteRefusedError extends StoreBootRefus
|
|
|
875
912
|
/** 落不了盘的那只文件(绝对路径)。 */
|
|
876
913
|
file: string, cause: unknown);
|
|
877
914
|
}
|
|
878
|
-
/** M40 的输入:判活窗(毫秒)= 本部署的 `REAP_RUN_STALE_SEC` —— 收割器判「这条 run 的持有者还活着」用的同一个窗。 */
|
|
879
|
-
export interface ExecutionLaneRenameInput {
|
|
880
|
-
readonly liveRunWindowMs: number;
|
|
881
|
-
}
|
|
882
915
|
/** M48 的输入:本部署有没有身份边界 = 部署形表 `DEPLOYMENT_SHAPE_PREDICATES.identityBoundary` 那一行的读数(只读配置;调用方读表交来,迁移步不另读配置)。
|
|
883
916
|
* SQL 腿 `clearShellSentinelOwnersM48` 读它;local 腿(`LocalBackend.runOneTimeMigrations` 里 M48 那一格)读同一行,由后端构造时读一次;dev-open 判据(`devOpenDeployment`)读同一行。 */
|
|
884
917
|
export interface ShellSentinelOwnerInput {
|
|
885
918
|
readonly identityBoundary: boolean;
|
|
886
919
|
}
|
|
887
|
-
/** SQL 一次性迁移段的输入(
|
|
888
|
-
export type SqlOneTimeMigrationInput = ExecutionPlacementSwitchInput &
|
|
920
|
+
/** SQL 一次性迁移段的输入(各条目自己的那一半;删码车删掉它那一半。判活窗那一半 `LiveRunWindowInput` 归常设的守卫段 / 证据读法,`stop-then-start.ts`)。 */
|
|
921
|
+
export type SqlOneTimeMigrationInput = ExecutionPlacementSwitchInput & LiveRunWindowInput & ShellSentinelOwnerInput;
|
|
889
922
|
/**
|
|
890
923
|
* M40 ⓪ —— 带 `execution_lane` 列的表上的旧词改成新名(问行表 + 会话的那一列所在的表:M41 搬之前在 `session_meta`、之后在 `session_ext`;一句 UPDATE 一张表;幂等:第二跑零命中)。列不在的表零动作(跳版升上来的库:M32 稍后加列、按声明车道回填,不会再铸旧词)。
|
|
891
|
-
* 还有旧词行 ⇒
|
|
924
|
+
* 还有旧词行 ⇒(守卫段已判过证据、放行)记起服要求 `(M40, in_force)`、再改名;没有 ⇒ 零写(没跑过无车道部署的库可滚动升级)。
|
|
892
925
|
*/
|
|
893
926
|
export declare function renameRetiredExecutionLaneWordsM40(db: MigrationDb, dialect: SqlDialect, receipts: {
|
|
894
927
|
executionLaneWordsRenamed: number;
|
|
895
|
-
}
|
|
896
|
-
/** 判活窗内的 `running` run 心跳(停-迁-起守卫的读数;M40 / M41 同读):没有 ⇒ `undefined`。 */
|
|
897
|
-
interface LiveRunHeartbeat {
|
|
898
|
-
readonly liveRuns: number;
|
|
899
|
-
readonly windowSec: number;
|
|
900
|
-
/** 全停之后可以再起的最早时刻(ISO;= 最新心跳 + 判活窗;读不出最新心跳 ⇒ 现在 + 窗,上界)。 */
|
|
901
|
-
readonly restartAfter: string;
|
|
902
|
-
/** 同一时刻的人读形(带「离现在还有几秒」)。 */
|
|
903
|
-
readonly after: string;
|
|
904
|
-
}
|
|
928
|
+
}): Promise<void>;
|
|
905
929
|
/** M41 的拒启码(确定的拒启表态;与 `config.schema_mismatch` 同一族)。 */
|
|
906
930
|
export declare const SESSION_EXT_MOVE_REFUSED_CODE = "config.session_ext_move_refused";
|
|
907
|
-
/** 拒因闭集:`
|
|
908
|
-
export type SessionExtMoveRefusalReason = "
|
|
931
|
+
/** 拒因闭集:`older_replica` = 还有列要搬而有停-迁-起证据;`copy_mismatch` = 搬完核对有一行不等(一列没删)。 */
|
|
932
|
+
export type SessionExtMoveRefusalReason = "older_replica" | "copy_mismatch";
|
|
909
933
|
/** M41 的起服拒。具名类型 + 机读码 + 拒因;继承 {@link StoreBootRefusalError}:SQL 开库的等待窗不重试它。 */
|
|
910
934
|
export declare class SessionExtMoveRefusedError extends StoreBootRefusalError {
|
|
911
935
|
readonly reason: SessionExtMoveRefusalReason;
|
|
912
936
|
readonly code = "config.session_ext_move_refused";
|
|
913
937
|
constructor(reason: SessionExtMoveRefusalReason, detail: string);
|
|
914
938
|
}
|
|
915
|
-
/**
|
|
916
|
-
* M41 ⓪′ —— 停-迁-起守卫(紧随 M40 的守卫,先于任何别的写):还有部署格列要搬 ∧ 本库上仍有 run 在心跳 ⇒ 拒 `live_runs`,一字节没写。
|
|
917
|
-
* 旁表形 ⇒ 零动作(不读 run 表)。
|
|
918
|
-
*/
|
|
919
|
-
export declare function refuseSessionExtMoveWhileRunsHeartbeat(db: MigrationDb, dialect: SqlDialect, input: ExecutionLaneRenameInput): Promise<void>;
|
|
920
939
|
/**
|
|
921
940
|
* M41(规则与理由见头注 M41 段):① 搬(键集分页 upsert)→ ② 逐行核对 → ③ 一句删列。旁表形 ⇒ 零动作。中断 ⇒ 下一次起服从头重跑:① 的 upsert 是「旁表这几格 = 根行上的值」,
|
|
922
941
|
* 重跑同一结果;② 只读;③ 按后置条件收敛(那几列都不在)。排在迁移段最后(M32 之后:M32 读 / 写 `session_meta` 上的八列;M23 改的是引擎列)。导出给真库钉驱动「中断后续跑」。
|