@sema-agent/core 7.54.1 → 7.56.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/CHANGELOG.md +950 -0
- package/dist/agents/agent-transcript-tool.js +2 -1
- package/dist/agents/builtin-agents.d.ts +12 -14
- package/dist/agents/cascade.js +1 -1
- package/dist/agents/cc-peer-directory.d.ts +36 -0
- package/dist/agents/cc-peer-directory.js +139 -0
- package/dist/agents/cc-peer-wire.d.ts +105 -0
- package/dist/agents/cc-peer-wire.js +98 -0
- package/dist/agents/cc-uds-peer-channel.d.ts +40 -0
- package/dist/agents/cc-uds-peer-channel.js +457 -0
- package/dist/agents/child-model-seat.d.ts +0 -11
- package/dist/agents/child-model-seat.js +0 -3
- package/dist/agents/cross-session-envelope.d.ts +4 -1
- package/dist/agents/cross-session-envelope.js +8 -1
- package/dist/agents/cross-session-judge.d.ts +2 -2
- package/dist/agents/list-agents-tool.d.ts +3 -1
- package/dist/agents/list-agents-tool.js +9 -8
- package/dist/agents/observer.d.ts +4 -5
- package/dist/agents/observer.js +2 -1
- package/dist/agents/peer-admission.d.ts +6 -0
- package/dist/agents/peer-admission.js +4 -1
- package/dist/agents/peer-directory.d.ts +65 -13
- package/dist/agents/peer-directory.js +90 -25
- package/dist/agents/peer-notices.d.ts +1 -1
- package/dist/agents/peer-session-drain.d.ts +3 -1
- package/dist/agents/peer-session-drain.js +3 -2
- package/dist/agents/read-inbox-tool.js +2 -1
- package/dist/agents/repair-loop.js +2 -2
- package/dist/agents/retain-ledger.d.ts +1 -1
- package/dist/agents/roster-store.d.ts +1 -1
- package/dist/agents/send-message-tool.d.ts +10 -0
- package/dist/agents/send-message-tool.js +37 -8
- package/dist/agents/subagent.d.ts +39 -82
- package/dist/agents/subagent.js +109 -106
- package/dist/agents/tool-filter.d.ts +31 -46
- package/dist/agents/tool-filter.js +13 -33
- package/dist/agents/verify.d.ts +6 -5
- package/dist/agents/verify.js +3 -3
- package/dist/brain/anthropic.js +43 -81
- package/dist/brain/errors.d.ts +15 -0
- package/dist/brain/errors.js +10 -0
- package/dist/brain/media-degrade.d.ts +18 -7
- package/dist/brain/media-degrade.js +13 -2
- package/dist/brain/model-capability.d.ts +37 -0
- package/dist/brain/model-capability.js +34 -0
- package/dist/brain/model-presets.d.ts +6 -12
- package/dist/brain/model-presets.js +1 -6
- package/dist/brain/open-responses.js +27 -35
- package/dist/brain/openai.js +30 -98
- package/dist/brain/provider-dialect.d.ts +39 -3
- package/dist/brain/provider-dialect.js +28 -0
- package/dist/brain/reasoning-request.d.ts +96 -0
- package/dist/brain/reasoning-request.js +174 -0
- package/dist/brain/reasoning.d.ts +12 -12
- package/dist/brain/reasoning.js +4 -3
- package/dist/brain/request-params.d.ts +62 -9
- package/dist/brain/request-params.js +42 -7
- package/dist/brain/retry.d.ts +1 -1
- package/dist/brain/route-adjudicator.d.ts +15 -0
- package/dist/brain/route-adjudicator.js +15 -0
- package/dist/brain/status-sink.d.ts +20 -0
- package/dist/brain/status-sink.js +7 -0
- package/dist/brain/stream-engine.js +6 -5
- package/dist/brain/stream-shared.d.ts +1 -1
- package/dist/core/a2a.d.ts +2 -1
- package/dist/core/a2a.js +19 -13
- package/dist/core/advisor-verdict.d.ts +120 -0
- package/dist/core/advisor-verdict.js +92 -0
- package/dist/core/agent-definition.d.ts +17 -8
- package/dist/core/allow-entry.d.ts +69 -36
- package/dist/core/allow-entry.js +81 -52
- package/dist/core/allow-rule-shadow.d.ts +10 -3
- package/dist/core/approval-object.d.ts +2 -1
- package/dist/core/approval-object.js +6 -6
- package/dist/core/ask-origin.d.ts +127 -29
- package/dist/core/ask-origin.js +87 -25
- package/dist/core/ask-question.d.ts +51 -8
- package/dist/core/ask-question.js +12 -7
- package/dist/core/ask-unresolvable-notice.d.ts +8 -3
- package/dist/core/ask-unresolvable-notice.js +16 -2
- package/dist/core/auto-compaction.d.ts +11 -8
- package/dist/core/auto-compaction.js +4 -2
- package/dist/core/auto-mode-arming.d.ts +2 -2
- package/dist/core/auto-mode-defaults.d.ts +8 -8
- package/dist/core/auto-mode-prompt-assets.d.ts +3 -3
- package/dist/core/auto-mode-prompt.d.ts +1 -1
- package/dist/core/auto-mode.d.ts +17 -9
- package/dist/core/auto-mode.js +9 -6
- package/dist/core/background-agent-store.d.ts +3 -3
- package/dist/core/canonical-json.d.ts +1 -1
- package/dist/core/canonical-json.js +2 -2
- package/dist/core/checkpoint-generation.d.ts +53 -0
- package/dist/core/checkpoint-generation.js +35 -0
- package/dist/core/checkpoint-queries.d.ts +180 -0
- package/dist/core/checkpoint-queries.js +272 -0
- package/dist/core/checkpoint-requirements.d.ts +19 -4
- package/dist/core/checkpoint-requirements.js +8 -14
- package/dist/core/checkpoint-store.d.ts +165 -72
- package/dist/core/checkpoint-store.js +79 -82
- package/dist/core/child-clamp-seats.d.ts +6 -0
- package/dist/core/child-clamp-seats.js +3 -16
- package/dist/core/compliance.d.ts +2 -2
- package/dist/core/context-edit.d.ts +6 -7
- package/dist/core/cross-boundary-taint.d.ts +11 -4
- package/dist/core/cross-boundary-taint.js +3 -3
- package/dist/core/decision-receipt.d.ts +37 -3
- package/dist/core/decision-receipt.js +19 -19
- package/dist/core/delegation-not-started.d.ts +6 -0
- package/dist/core/delegation-not-started.js +17 -0
- package/dist/core/effective-path-target.d.ts +1 -1
- package/dist/core/engine-attestation.d.ts +93 -0
- package/dist/core/engine-attestation.js +70 -0
- package/dist/core/engine-capabilities.d.ts +4 -1
- package/dist/core/engine-capabilities.js +1 -1
- package/dist/core/engine-notice.d.ts +45 -12
- package/dist/core/exec-output-tail.d.ts +1 -1
- package/dist/core/file-history-retention.d.ts +1 -1
- package/dist/core/file-history-store.d.ts +147 -21
- package/dist/core/file-history-store.js +58 -32
- package/dist/core/gate-fold.d.ts +1 -1
- package/dist/core/gate-fold.js +24 -11
- package/dist/core/gate-lanes.js +81 -68
- package/dist/core/gate-outcome.d.ts +40 -6
- package/dist/core/gate-outcome.js +56 -0
- package/dist/core/governance-codes.d.ts +17 -3
- package/dist/core/governance-codes.js +16 -0
- package/dist/core/hands-band.d.ts +1 -1
- package/dist/core/hooks.d.ts +21 -20
- package/dist/core/hooks.js +3 -1
- package/dist/core/host-floor.d.ts +128 -0
- package/dist/core/host-floor.js +206 -0
- package/dist/core/host-target.d.ts +84 -0
- package/dist/core/host-target.js +92 -0
- package/dist/core/image-downsample.d.ts +1 -1
- package/dist/core/lsp-diagnostics.d.ts +4 -4
- package/dist/core/lsp.d.ts +3 -3
- package/dist/core/mailbox-store.d.ts +4 -0
- package/dist/core/mcp-connection-pool.d.ts +18 -2
- package/dist/core/mcp-connection-pool.js +53 -6
- package/dist/core/mcp-failure.d.ts +23 -4
- package/dist/core/mcp-failure.js +26 -11
- package/dist/core/mcp-listing-drift.d.ts +10 -0
- package/dist/core/mcp-listing-drift.js +6 -0
- package/dist/core/mcp-server-link.d.ts +173 -0
- package/dist/core/mcp-server-link.js +127 -0
- package/dist/core/mcp-server-spec.d.ts +4 -2
- package/dist/core/mcp-session-end.d.ts +26 -0
- package/dist/core/mcp-session-end.js +29 -0
- package/dist/core/mcp-startup-request.d.ts +17 -0
- package/dist/core/mcp-startup-request.js +17 -0
- package/dist/core/mcp.d.ts +17 -13
- package/dist/core/mcp.js +240 -189
- package/dist/core/media-byte-cap.d.ts +1 -1
- package/dist/core/memory-engine/delegation-settlement.js +15 -24
- package/dist/core/memory-engine/engine.d.ts +9 -9
- package/dist/core/memory-engine/engine.js +4 -4
- package/dist/core/memory-engine/layout.d.ts +60 -8
- package/dist/core/memory-engine/layout.js +65 -6
- package/dist/core/memory-engine/provenance-wording.d.ts +1 -1
- package/dist/core/memory-engine/tools.js +4 -1
- package/dist/core/mode-policy.d.ts +1 -1
- package/dist/core/model-seat.d.ts +10 -3
- package/dist/core/mods/classic-events.d.ts +67 -0
- package/dist/core/mods/classic-events.js +1 -0
- package/dist/core/mods/dollar.d.ts +13 -0
- package/dist/core/mods/extension-call.d.ts +31 -0
- package/dist/core/mods/extension-call.js +43 -0
- package/dist/core/mods/kernel/dispatch.d.ts +20 -3
- package/dist/core/mods/kernel/dispatch.js +140 -69
- package/dist/core/mods/kernel/events.d.ts +47 -11
- package/dist/core/mods/kernel/events.js +66 -42
- package/dist/core/mods/kernel/index.d.ts +4 -4
- package/dist/core/mods/kernel/index.js +2 -2
- package/dist/core/mods/kernel/receive.d.ts +39 -5
- package/dist/core/mods/kernel/receive.js +290 -17
- package/dist/core/mods/kernel/registration.d.ts +33 -2
- package/dist/core/mods/kernel/registration.js +6 -7
- package/dist/core/mods/kernel/site-rules.d.ts +44 -16
- package/dist/core/mods/kernel/site-rules.js +24 -42
- package/dist/core/mods/spec-seats.d.ts +69 -0
- package/dist/core/mods/spec-seats.js +114 -0
- package/dist/core/mods/stations.d.ts +28 -8
- package/dist/core/mods/stations.js +29 -13
- package/dist/core/mods/tool-call.d.ts +79 -0
- package/dist/core/mods/tool-call.js +152 -0
- package/dist/core/namespaced-rule-name.d.ts +44 -24
- package/dist/core/namespaced-rule-name.js +50 -43
- package/dist/core/output-style.d.ts +1 -1
- package/dist/core/param-rule-reach.d.ts +15 -0
- package/dist/core/param-rule-reach.js +30 -0
- package/dist/core/parent-spec-seat.d.ts +13 -1
- package/dist/core/parent-spec-seat.js +6 -0
- package/dist/core/park-selfcheck.js +1 -0
- package/dist/core/pause-registry.d.ts +16 -5
- package/dist/core/pause-registry.js +6 -2
- package/dist/core/peer-channel.d.ts +70 -0
- package/dist/core/peer-channel.js +1 -0
- package/dist/core/permission-rule-consent.d.ts +30 -5
- package/dist/core/permission-rule-consent.js +147 -50
- package/dist/core/permission-rule-model.d.ts +245 -65
- package/dist/core/permission-rule-model.js +421 -107
- package/dist/core/permission-rule-org.d.ts +6 -2
- package/dist/core/permission-rule-org.js +7 -3
- package/dist/core/permission-rule-provider.d.ts +6 -2
- package/dist/core/permission-rule-provider.js +41 -11
- package/dist/core/permission-rule-store.d.ts +22 -26
- package/dist/core/permission-rule-store.js +12 -6
- package/dist/core/permission-rule-sync.d.ts +11 -2
- package/dist/core/permission-rule-sync.js +11 -3
- package/dist/core/permission-rule-syntax.d.ts +5 -4
- package/dist/core/permission-rule-syntax.js +2 -2
- package/dist/core/permission-rules.d.ts +53 -15
- package/dist/core/permission-rules.js +125 -100
- package/dist/core/persisted-rule-arms.d.ts +6 -4
- package/dist/core/persisted-rule-arms.js +10 -12
- package/dist/core/present-plan-tool.js +3 -1
- package/dist/core/principal-name.d.ts +20 -0
- package/dist/core/principal-name.js +22 -0
- package/dist/core/prompt-section-seat.js +4 -6
- package/dist/core/protocol-http-auth.d.ts +26 -5
- package/dist/core/protocol-http-auth.js +137 -4
- package/dist/core/protocol-naming.d.ts +2 -2
- package/dist/core/read-only-shell-table.d.ts +1 -1
- package/dist/core/read-only-shell.d.ts +1 -1
- package/dist/core/retired-keys.d.ts +16 -0
- package/dist/core/retired-keys.js +16 -4
- package/dist/core/rewrite-rejudge.d.ts +60 -0
- package/dist/core/rewrite-rejudge.js +36 -0
- package/dist/core/roles.d.ts +34 -3
- package/dist/core/roles.js +66 -53
- package/dist/core/rule-lane-reads.d.ts +20 -15
- package/dist/core/rule-lane-reads.js +45 -17
- package/dist/core/rule-offer-read.d.ts +53 -0
- package/dist/core/rule-offer-read.js +146 -0
- package/dist/core/rule-owner.d.ts +46 -0
- package/dist/core/rule-owner.js +29 -0
- package/dist/core/runner/advisor-instructions.d.ts +70 -0
- package/dist/core/runner/advisor-instructions.js +61 -0
- package/dist/core/runner/advisor-tool.d.ts +33 -0
- package/dist/core/runner/advisor-tool.js +112 -0
- package/dist/core/runner/announce-once-ledger.d.ts +18 -26
- package/dist/core/runner/announce-once-ledger.js +19 -46
- package/dist/core/runner/approval-feedback.js +6 -3
- package/dist/core/runner/assemble-result.d.ts +2 -1
- package/dist/core/runner/assemble-result.js +1 -1
- package/dist/core/runner/call-hook-stations.d.ts +3 -2
- package/dist/core/runner/caller-roster.d.ts +21 -2
- package/dist/core/runner/caller-roster.js +38 -0
- package/dist/core/runner/capability-withheld-seat.d.ts +5 -0
- package/dist/core/runner/capability-withheld-seat.js +24 -0
- package/dist/core/runner/classifier-ladder.d.ts +33 -13
- package/dist/core/runner/classifier-ladder.js +15 -14
- package/dist/core/runner/compaction-restate.d.ts +10 -6
- package/dist/core/runner/compaction-restate.js +9 -3
- package/dist/core/runner/construction-doors.js +3 -0
- package/dist/core/runner/contracts.d.ts +40 -33
- package/dist/core/runner/conversation-segment.d.ts +28 -0
- package/dist/core/runner/conversation-segment.js +42 -0
- package/dist/core/runner/cross-boundary-lane.d.ts +21 -16
- package/dist/core/runner/cross-boundary-lane.js +58 -34
- package/dist/core/runner/decide-continuation.d.ts +7 -4
- package/dist/core/runner/decide-continuation.js +2 -2
- package/dist/core/runner/denial-limit-arms.d.ts +4 -4
- package/dist/core/runner/denial-limit-arms.js +1 -1
- package/dist/core/runner/derived-route-fallback.d.ts +24 -24
- package/dist/core/runner/derived-route-fallback.js +9 -7
- package/dist/core/runner/file-history-request.d.ts +18 -0
- package/dist/core/runner/file-history-request.js +21 -13
- package/dist/core/runner/file-history-restore.d.ts +45 -0
- package/dist/core/runner/file-history-restore.js +46 -0
- package/dist/core/runner/gate-exit.d.ts +9 -3
- package/dist/core/runner/gate-exit.js +11 -5
- package/dist/core/runner/image.d.ts +7 -17
- package/dist/core/runner/image.js +9 -60
- package/dist/core/runner/initial-run-state.js +1 -1
- package/dist/core/runner/permission-rule-lanes.d.ts +6 -6
- package/dist/core/runner/permission-rule-lanes.js +38 -15
- package/dist/core/runner/person-path-rows.d.ts +12 -9
- package/dist/core/runner/person-path-rows.js +19 -8
- package/dist/core/runner/prepare-advisor.d.ts +63 -0
- package/dist/core/runner/prepare-advisor.js +77 -0
- package/dist/core/runner/prepare-ask-lane.d.ts +2 -2
- package/dist/core/runner/prepare-ask-lane.js +5 -2
- package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -6
- package/dist/core/runner/prepare-caps-and-workflow.js +5 -4
- package/dist/core/runner/prepare-config-doors.d.ts +31 -38
- package/dist/core/runner/prepare-config-doors.js +57 -34
- package/dist/core/runner/prepare-defer-classify.d.ts +4 -3
- package/dist/core/runner/prepare-defer-classify.js +7 -8
- package/dist/core/runner/prepare-delegation-surface.d.ts +2 -2
- package/dist/core/runner/prepare-delegation-surface.js +1 -1
- package/dist/core/runner/prepare-file-history.d.ts +48 -8
- package/dist/core/runner/prepare-file-history.js +41 -73
- package/dist/core/runner/prepare-gate-stations.d.ts +2 -5
- package/dist/core/runner/prepare-gate-stations.js +12 -8
- package/dist/core/runner/prepare-hands-readface.d.ts +2 -8
- package/dist/core/runner/prepare-hands-readface.js +15 -14
- package/dist/core/runner/prepare-inherited-gate.d.ts +11 -7
- package/dist/core/runner/prepare-inherited-gate.js +8 -6
- package/dist/core/runner/prepare-memory-engine-session.js +1 -1
- package/dist/core/runner/prepare-park-ask.js +12 -12
- package/dist/core/runner/prepare-policy-chain.d.ts +7 -4
- package/dist/core/runner/prepare-policy-chain.js +68 -81
- package/dist/core/runner/prepare-project-context.d.ts +5 -2
- package/dist/core/runner/prepare-project-context.js +6 -3
- package/dist/core/runner/prepare-prompt-assembly.d.ts +5 -7
- package/dist/core/runner/prepare-prompt-assembly.js +10 -8
- package/dist/core/runner/prepare-prompt-inputs.d.ts +11 -9
- package/dist/core/runner/prepare-prompt-inputs.js +4 -6
- package/dist/core/runner/prepare-protocol-tools.d.ts +4 -2
- package/dist/core/runner/prepare-protocol-tools.js +5 -4
- package/dist/core/runner/prepare-safety-scan.d.ts +9 -12
- package/dist/core/runner/prepare-safety-scan.js +8 -23
- package/dist/core/runner/prepare-suspend-saga.d.ts +2 -0
- package/dist/core/runner/prepare-suspend-saga.js +5 -6
- package/dist/core/runner/prepare-task.d.ts +1 -1
- package/dist/core/runner/prepare-task.js +41 -35
- package/dist/core/runner/prepare-tool-disclosure-mount.d.ts +7 -4
- package/dist/core/runner/prepare-tool-disclosure-mount.js +24 -18
- package/dist/core/runner/prepare-turn-wiring.d.ts +0 -4
- package/dist/core/runner/prepare-turn-wiring.js +2 -7
- package/dist/core/runner/prepare-wiring-manifest.d.ts +11 -4
- package/dist/core/runner/prepare-wiring-manifest.js +3 -3
- package/dist/core/runner/resume-admission.js +1 -1
- package/dist/core/runner/resume-apply.js +11 -12
- package/dist/core/runner/resume-checkpoint-screen.js +3 -0
- package/dist/core/runner/resume-claim.d.ts +4 -2
- package/dist/core/runner/resume-claim.js +15 -8
- package/dist/core/runner/resume-policy-outcome.js +1 -1
- package/dist/core/runner/retired-runner-deps.js +2 -1
- package/dist/core/runner/rewind-files.d.ts +15 -0
- package/dist/core/runner/rewind-files.js +132 -0
- package/dist/core/runner/run-attachment-seats.js +2 -2
- package/dist/core/runner/run-brain-sinks.d.ts +4 -1
- package/dist/core/runner/run-brain-sinks.js +4 -2
- package/dist/core/runner/run-compaction-machinery.d.ts +1 -1
- package/dist/core/runner/run-compaction-machinery.js +2 -12
- package/dist/core/runner/run-git-lane.d.ts +1 -0
- package/dist/core/runner/run-harness-handlers.js +14 -7
- package/dist/core/runner/run-leg.d.ts +1 -1
- package/dist/core/runner/run-leg.js +43 -18
- package/dist/core/runner/run-settle-and-teardown.js +3 -2
- package/dist/core/runner/run-telemetry-and-budget-seats.js +1 -1
- package/dist/core/runner/run-turn-boundary.d.ts +1 -0
- package/dist/core/runner/run-turn-boundary.js +15 -22
- package/dist/core/runner/runtask.d.ts +3 -0
- package/dist/core/runner/runtask.js +8 -9
- package/dist/core/runner/session-read-file-states.d.ts +15 -0
- package/dist/core/runner/session-read-file-states.js +28 -0
- package/dist/core/runner/session-rule-policy.d.ts +22 -21
- package/dist/core/runner/session-rule-policy.js +17 -31
- package/dist/core/runner/shell-env-withheld.d.ts +33 -0
- package/dist/core/runner/shell-env-withheld.js +51 -0
- package/dist/core/runner/side-call-account.d.ts +32 -8
- package/dist/core/runner/side-call-account.js +23 -1
- package/dist/core/runner/skills-seat.js +6 -2
- package/dist/core/runner/stream-settle-backstop.js +1 -1
- package/dist/core/runner/strict-output-schema.d.ts +1 -1
- package/dist/core/runner/sub-agent-deny-lists.js +4 -6
- package/dist/core/runner/synthetic-tools.d.ts +16 -13
- package/dist/core/runner/synthetic-tools.js +8 -3
- package/dist/core/runner/tool-disclosure.d.ts +10 -12
- package/dist/core/runner/tool-disclosure.js +3 -4
- package/dist/core/runner/tool-end-body.d.ts +1 -1
- package/dist/core/runner/tool-end-body.js +10 -9
- package/dist/core/runner/tool-face-overlay.d.ts +2 -1
- package/dist/core/runner/tool-face-overlay.js +17 -1
- package/dist/core/runner/tool-not-executed.d.ts +5 -0
- package/dist/core/runner/tool-not-executed.js +11 -0
- package/dist/core/runner/tool-occurrence.d.ts +8 -0
- package/dist/core/runner/tool-occurrence.js +7 -0
- package/dist/core/runner/tool-progress-lane.d.ts +2 -2
- package/dist/core/runner/tool-turn-repair-seat.d.ts +3 -2
- package/dist/core/runner/turn-attachments.d.ts +91 -80
- package/dist/core/runner/turn-attachments.js +62 -37
- package/dist/core/runner-deps.d.ts +42 -42
- package/dist/core/runtime-caps.d.ts +4 -4
- package/dist/core/safety-axis-vocab.d.ts +6 -4
- package/dist/core/safety-axis-vocab.js +6 -5
- package/dist/core/safety-merge-corpus.js +26 -2
- package/dist/core/same-plain-value.d.ts +40 -0
- package/dist/core/same-plain-value.js +49 -0
- package/dist/core/scheduler.d.ts +1 -1
- package/dist/core/secret-env.d.ts +26 -3
- package/dist/core/secret-env.js +44 -8
- package/dist/core/select-model.js +3 -3
- package/dist/core/sensitive-path-policy.d.ts +1 -1
- package/dist/core/sensitive-path-policy.js +1 -1
- package/dist/core/session-policy-store.d.ts +102 -35
- package/dist/core/session-policy-store.js +210 -48
- package/dist/core/session-reconcile.d.ts +2 -2
- package/dist/core/session-store.d.ts +106 -37
- package/dist/core/session-store.js +165 -91
- package/dist/core/session.d.ts +101 -57
- package/dist/core/session.js +53 -0
- package/dist/core/shared-memory/tools.js +3 -1
- package/dist/core/shared-memory/types.d.ts +1 -1
- package/dist/core/shell-read-silence.d.ts +11 -12
- package/dist/core/shell-read-silence.js +9 -5
- package/dist/core/shell-run-candidates.js +3 -1
- package/dist/core/shell-wrapper-projection.js +1 -1
- package/dist/core/shell-wrapper-table.d.ts +14 -7
- package/dist/core/shell-wrapper-table.js +5 -4
- package/dist/core/side-query.d.ts +10 -0
- package/dist/core/side-query.js +15 -1
- package/dist/core/skill-grant.d.ts +7 -2
- package/dist/core/skill-grant.js +5 -0
- package/dist/core/skills-directory.js +6 -2
- package/dist/core/store-contracts/checkpoint-store-contract.d.ts +11 -1
- package/dist/core/store-contracts/checkpoint-store-contract.js +168 -3
- package/dist/core/store-contracts/file-history-store-contract.js +74 -4
- package/dist/core/store-contracts/peer-directory-contract.d.ts +7 -2
- package/dist/core/store-contracts/peer-directory-contract.js +14 -2
- package/dist/core/store-contracts/session-policy-store-contract.d.ts +7 -0
- package/dist/core/store-contracts/session-policy-store-contract.js +130 -0
- package/dist/core/store-contracts/session-repo-contract.js +176 -0
- package/dist/core/store-contracts/session-store-contract.d.ts +6 -8
- package/dist/core/store-contracts/session-store-contract.js +361 -51
- package/dist/core/store-contracts/workflow-journal-store-contract.js +26 -1
- package/dist/core/stub-env.d.ts +2 -0
- package/dist/core/stub-env.js +1 -0
- package/dist/core/surrogate-safe-slice.d.ts +3 -3
- package/dist/core/synthetic-read-verdict.js +3 -3
- package/dist/core/task-event.d.ts +42 -8
- package/dist/core/task-notification.d.ts +19 -15
- package/dist/core/task-registry-agent.d.ts +4 -4
- package/dist/core/task-registry-shared.d.ts +4 -4
- package/dist/core/task-registry-shared.js +1 -0
- package/dist/core/task-registry.d.ts +13 -4
- package/dist/core/task-registry.js +14 -2
- package/dist/core/task-result.d.ts +21 -3
- package/dist/core/task-spec.d.ts +69 -64
- package/dist/core/task-stream.d.ts +6 -6
- package/dist/core/task-tool-shape.d.ts +4 -4
- package/dist/core/tighten-task-spec.d.ts +1 -1
- package/dist/core/tighten-task-spec.js +2 -1
- package/dist/core/tool-catalog-entries.d.ts +36 -2
- package/dist/core/tool-catalog-entries.js +69 -43
- package/dist/core/tool-check-reading.d.ts +11 -0
- package/dist/core/tool-check-reading.js +11 -6
- package/dist/core/tool-conformance.js +1 -0
- package/dist/core/tool-errors.d.ts +2 -2
- package/dist/core/tool-face-reader.js +5 -3
- package/dist/core/tool-face.d.ts +21 -2
- package/dist/core/tool-face.js +1 -1
- package/dist/core/tool-model-gate.d.ts +5 -5
- package/dist/core/tool-name-aliases.d.ts +29 -8
- package/dist/core/tool-name-aliases.js +22 -4
- package/dist/core/tool-name-readings.d.ts +10 -43
- package/dist/core/tool-name-readings.js +2 -11
- package/dist/core/tool-policy.d.ts +85 -196
- package/dist/core/tool-policy.js +150 -175
- package/dist/core/tool-registry.d.ts +14 -7
- package/dist/core/tool-registry.js +17 -7
- package/dist/core/tool-result-store.js +5 -1
- package/dist/core/tool-roster.d.ts +57 -33
- package/dist/core/tool-roster.js +56 -68
- package/dist/core/tool-spec-members.js +8 -3
- package/dist/core/tool-spec.d.ts +53 -31
- package/dist/core/tools.js +51 -10
- package/dist/core/trace.d.ts +6 -2
- package/dist/core/types.d.ts +1 -1
- package/dist/core/untrusted-egress.d.ts +1 -1
- package/dist/core/untrusted-text.d.ts +1 -1
- package/dist/core/user-attachment.d.ts +8 -1
- package/dist/core/user-attachment.js +64 -4
- package/dist/core/warm-resume.d.ts +1 -1
- package/dist/core/wiring-manifest.d.ts +58 -0
- package/dist/core/wiring-manifest.js +14 -5
- package/dist/core/workflow-journal-store.d.ts +62 -0
- package/dist/core/workflow-journal-store.js +78 -2
- package/dist/core/workflow-run-store.d.ts +6 -0
- package/dist/core/workflow-run-store.js +2 -0
- package/dist/engine/compaction/compaction.d.ts +9 -9
- package/dist/engine/compaction/compaction.js +3 -2
- package/dist/engine/execution-env/node-execution-env.d.ts +26 -8
- package/dist/engine/execution-env/node-execution-env.js +54 -24
- package/dist/engine/harness/agent-harness.d.ts +39 -9
- package/dist/engine/harness/agent-harness.js +87 -33
- package/dist/engine/harness/types.d.ts +58 -9
- package/dist/engine/harness/types.js +12 -1
- package/dist/engine/llm/types.d.ts +36 -19
- package/dist/engine/llm/validation.d.ts +4 -1
- package/dist/engine/llm/validation.js +13 -1
- package/dist/engine/loop/agent-loop.d.ts +23 -1
- package/dist/engine/loop/agent-loop.js +26 -34
- package/dist/engine/loop/types.d.ts +31 -19
- package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
- package/dist/engine/session/memory-repo.d.ts +18 -12
- package/dist/engine/session/memory-repo.js +24 -9
- package/dist/engine/session/parent-chain-guard.d.ts +3 -2
- package/dist/engine/session/parent-chain-guard.js +1 -1
- package/dist/engine/session/repo-utils.d.ts +32 -3
- package/dist/engine/session/repo-utils.js +50 -5
- package/dist/index.d.ts +47 -23
- package/dist/index.js +35 -17
- package/dist/internal/harness-types.d.ts +1 -1
- package/dist/internal/harness.d.ts +3 -3
- package/dist/internal/harness.js +2 -2
- package/dist/internal/llm.d.ts +2 -2
- package/dist/internal/llm.js +1 -1
- package/dist/orchestration/goal.js +2 -2
- package/dist/orchestration/run-workflow-tool.d.ts +8 -6
- package/dist/orchestration/run-workflow-tool.js +10 -6
- package/dist/orchestration/workflow-size-guideline.d.ts +4 -4
- package/dist/orchestration/workflow-types.d.ts +18 -0
- package/dist/orchestration/workflow-types.js +6 -0
- package/dist/orchestration/workflow.d.ts +5 -13
- package/dist/orchestration/workflow.js +57 -49
- package/dist/prompt-assembly/artifact.d.ts +2 -2
- package/dist/prompt-assembly/artifact.js +5 -3
- package/dist/prompt-assembly/assemble.d.ts +3 -2
- package/dist/prompt-assembly/assemble.js +1 -1
- package/dist/prompt-assembly/catalog/schema.d.ts +43 -12
- package/dist/prompt-assembly/catalog/schema.js +34 -2
- package/dist/prompt-assembly/catalog/sections.js +0 -1
- package/dist/prompt-assembly/composer.d.ts +3 -1
- package/dist/prompt-assembly/composer.js +1 -1
- package/dist/prompt-assembly/event-registry.js +2 -0
- package/dist/prompt-assembly/overlay.js +3 -3
- package/dist/prompt-assembly/renderers.d.ts +1 -1
- package/dist/prompt-assembly/renderers.js +0 -3
- package/dist/prompt-assembly/role-base.d.ts +15 -0
- package/dist/prompt-assembly/role-base.js +9 -0
- package/dist/prompt-assembly/select.d.ts +39 -14
- package/dist/prompt-assembly/select.js +47 -16
- package/dist/prompt-assembly/sugar.d.ts +17 -11
- package/dist/prompt-assembly/sugar.js +8 -3
- package/dist/prompt-assembly/tool-catalog.d.ts +39 -2
- package/dist/prompt-assembly/tool-catalog.js +117 -4
- package/dist/prompt-assembly/turn-snapshot.d.ts +4 -10
- package/dist/prompt-assembly/turn-snapshot.js +0 -3
- package/dist/prompt-assembly/types.d.ts +0 -7
- package/dist/prompts/default.d.ts +14 -14
- package/dist/scenarios/full-body.d.ts +15 -15
- package/dist/scenarios/full-body.js +4 -3
- package/dist/shell/lex.js +10 -1
- package/dist/stores/file/adoption/adopt.d.ts +4 -3
- package/dist/stores/file/adoption/adopt.js +27 -33
- package/dist/stores/file/adoption/marker.d.ts +6 -13
- package/dist/stores/file/adoption/marker.js +9 -17
- package/dist/stores/file/checkpoint-store.d.ts +24 -0
- package/dist/stores/file/checkpoint-store.js +45 -7
- package/dist/stores/file/file-history-store.d.ts +20 -19
- package/dist/stores/file/file-history-store.js +157 -141
- package/dist/stores/file/fs-atomic.d.ts +15 -0
- package/dist/stores/file/fs-atomic.js +89 -14
- package/dist/stores/file/index.d.ts +1 -1
- package/dist/stores/file/index.js +2 -1
- package/dist/stores/file/mailbox-store.d.ts +3 -0
- package/dist/stores/file/mailbox-store.js +3 -1
- package/dist/stores/file/permission-rule-adopt.d.ts +1 -1
- package/dist/stores/file/permission-rule-adopt.js +18 -18
- package/dist/stores/file/permission-rule-store.d.ts +18 -2
- package/dist/stores/file/permission-rule-store.js +31 -18
- package/dist/stores/file/session-policy-store.d.ts +3 -3
- package/dist/stores/file/session-store.d.ts +54 -16
- package/dist/stores/file/session-store.js +114 -85
- package/dist/stores/file/workflow-journal-store.d.ts +10 -4
- package/dist/stores/file/workflow-journal-store.js +28 -13
- package/dist/tools/artifact/artifact-text.d.ts +1 -1
- package/dist/tools/artifact/artifact-tool.js +5 -3
- package/dist/tools/fs/bash-program-position.d.ts +19 -2
- package/dist/tools/fs/bash-program-position.js +56 -9
- package/dist/tools/fs/bash-readonly-classifier.d.ts +3 -3
- package/dist/tools/fs/fs-bash.d.ts +2 -2
- package/dist/tools/fs/fs-bash.js +8 -6
- package/dist/tools/fs/fs-glob.d.ts +86 -0
- package/dist/tools/fs/fs-glob.js +226 -0
- package/dist/tools/fs/fs-read.js +14 -14
- package/dist/tools/fs/fs-search-tools.js +7 -7
- package/dist/tools/fs/fs-shared.d.ts +8 -8
- package/dist/tools/fs/gh-rate-limit.d.ts +1 -1
- package/dist/tools/fs/notebook.d.ts +2 -2
- package/dist/tools/fs/pattern-kill-guard.d.ts +22 -0
- package/dist/tools/fs/pattern-kill-guard.js +397 -0
- package/dist/tools/fs/pdf.d.ts +9 -6
- package/dist/tools/fs/pdf.js +3 -3
- package/dist/tools/fs/program-read-model.d.ts +57 -7
- package/dist/tools/fs/program-read-model.js +11 -1
- package/dist/tools/fs/program-read-model.rows.js +78 -21
- package/dist/tools/fs/read-deny-home.js +3 -2
- package/dist/tools/fs/read-deny.d.ts +29 -7
- package/dist/tools/fs/read-deny.js +63 -22
- package/dist/tools/fs/removal-targets.d.ts +18 -8
- package/dist/tools/fs/removal-targets.js +47 -20
- package/dist/tools/fs/safety.d.ts +9 -9
- package/dist/tools/fs/search.d.ts +16 -6
- package/dist/tools/fs/search.js +20 -26
- package/dist/tools/fs/shell-read-argv.js +89 -12
- package/dist/tools/fs/shell-read-bindings.d.ts +31 -0
- package/dist/tools/fs/shell-read-bindings.js +41 -0
- package/dist/tools/fs/shell-read-check.js +12 -20
- package/dist/tools/fs/shell-read-environment.d.ts +5 -1
- package/dist/tools/fs/shell-read-environment.js +3 -2
- package/dist/tools/fs/shell-read-establish.d.ts +15 -0
- package/dist/tools/fs/shell-read-establish.js +19 -20
- package/dist/tools/fs/shell-read-judge.d.ts +4 -0
- package/dist/tools/fs/shell-read-judge.js +5 -2
- package/dist/tools/fs/shell-read-plan.js +24 -16
- package/dist/tools/fs/shell-read-start.d.ts +6 -1
- package/dist/tools/fs/shell-read-write-targets.d.ts +5 -1
- package/dist/tools/fs/shell-read-write-targets.js +2 -3
- package/dist/tools/fs/shell-reentry-text.d.ts +9 -0
- package/dist/tools/fs/shell-reentry-text.js +40 -2
- package/dist/tools/loop-tick.d.ts +2 -2
- package/dist/tools/scheduler-tools.js +5 -1
- package/dist/tools/task-list.d.ts +7 -7
- package/dist/tools/task-list.js +5 -1
- package/dist/tools/todo.js +65 -64
- package/dist/tools/web.d.ts +20 -15
- package/dist/tools/web.js +55 -69
- package/dist/tools/worktree.d.ts +3 -3
- package/dist/tools/worktree.js +3 -1
- package/package.json +1 -1
- package/test/export-surface.snapshot.json +5894 -5638
- package/wire-changes/core@7.55.0.json +3318 -0
- package/wire-changes/core@7.56.0.json +3891 -0
- package/wire-changes/mods-kernel@7.56.0.json +303 -0
- package/dist/core/store-contracts/session-store-incarnation-contract.d.ts +0 -39
- package/dist/core/store-contracts/session-store-incarnation-contract.js +0 -95
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { GateOutcome, HostDecisionFacts } from "./gate-outcome.js";
|
|
2
2
|
import { type ExecutionOutcomeRecordWord } from "./checkpoint-execution-record.js";
|
|
3
|
+
import { type HolderJudge } from "./checkpoint-generation.js";
|
|
3
4
|
import { type CheckpointPause } from "./pause-registry.js";
|
|
5
|
+
import { type CheckpointDeleteGuard, type CheckpointOverdueCursor, type CheckpointOverdueQuery, type CheckpointPage, type CheckpointRowRead, type CheckpointSessionCursor, type CheckpointSessionQuery } from "./checkpoint-queries.js";
|
|
4
6
|
import type { SystemInjectionPriority } from "./task-notification.js";
|
|
5
7
|
import { type SteerReplayFacet } from "./steer-replay.js";
|
|
6
8
|
import type { QuestionAnswer } from "./ask-question.js";
|
|
@@ -266,12 +268,17 @@ export declare function normalizeProbeCause(value: unknown): ProbeCause | undefi
|
|
|
266
268
|
* - (1 reserved — least-severe / informational; not expected from these gates.)
|
|
267
269
|
* `egress` dominates the shell coarse-grade (an explicitly egress-marked shell tighten is still ≥3). A future
|
|
268
270
|
* arm may refine this — but only with a stated reason, and the ORDERING must stay monotone in risk.
|
|
271
|
+
* Total over what a stored row can hold, never a throw: a value that is not a plain record ({@link isPlainRecord}) has
|
|
272
|
+
* no tier (`undefined`); a mark that is neither absent nor a boolean contributes nothing, the valid `true` marks give
|
|
273
|
+
* their floor, and "nothing tripped" (tier 2) is not claimed past a damaged mark. A caller projecting a stored row
|
|
274
|
+
* discloses the damage ({@link summarizeCheckpoint}'s `disclose`).
|
|
269
275
|
*/
|
|
270
276
|
export declare function riskSeverity(axes: {
|
|
271
277
|
egress?: boolean;
|
|
272
278
|
irreversible?: boolean;
|
|
273
279
|
shell?: boolean;
|
|
274
280
|
}): 1 | 2 | 3 | 4 | 5;
|
|
281
|
+
export declare function riskSeverity(axes: unknown): 1 | 2 | 3 | 4 | 5 | undefined;
|
|
275
282
|
/** design S1e: the char cap for the {@link CheckpointSummary.toolInput} BOUNDED raw preview of a
|
|
276
283
|
* `tool_approval` pendingAction's `args` (`JSON.stringify`-ed). Caps the `listByScope` payload size; over-cap
|
|
277
284
|
* is truncated with a trailing `…`. Bounded raw (NOT neutralized) — redaction is the consumer's job (echo-only). */
|
|
@@ -882,12 +889,21 @@ export type PendingAction = {
|
|
|
882
889
|
*/
|
|
883
890
|
family?: import("./tool-face.js").ToolFamily;
|
|
884
891
|
pathTarget?: import("./tool-face.js").ToolRosterPathTarget;
|
|
892
|
+
/** The URL slot the parked call's host rules were read on (`ToolCallFace.hostTarget`), off the same roster row at the same
|
|
893
|
+
* mint: the pre-CAS recheck judges an edit on it, and the approval object binds it (a resume whose tool now names another
|
|
894
|
+
* slot is vetoed, `resume.target_moved`). Absent ⇒ the tool declared none, or a row minted before the member: a deny or an
|
|
895
|
+
* ask by host is then judged on the catalog's slot for the name, and no allow by host reaches the call. */
|
|
896
|
+
hostTarget?: import("./tool-face.js").ToolHostTarget;
|
|
885
897
|
/** The names the parked call answered to, copied from the face the gate judged it under (`ToolCallFace.names`: the
|
|
886
898
|
* model's spelling first, then the wire name and the other aliases that resolve to it; a row minted before the
|
|
887
899
|
* spelling led carries the wire name first) — the pre-CAS recheck judges an edit against rules written on any of
|
|
888
900
|
* them, as the live gate judged the original, and the resume re-mints its face under the spelling while it still
|
|
889
901
|
* resolves to the row's tool. Absent on a row minted before it ⇒ the row's `toolName` alone. */
|
|
890
902
|
names?: readonly string[];
|
|
903
|
+
/** `true` iff one of the engine's own mount sites mounted the parked tool (the roster entry's fact `ToolCallFace.engineMounted`
|
|
904
|
+
* carries): what the identity members above cannot say (a host-mounted engine definition has the same ones). The pre-CAS
|
|
905
|
+
* recheck rebuilds the face from the row (`parkedCallFaceOf`); absent ⇒ judged as an ordinary tool. Word `mount_site`. */
|
|
906
|
+
engineMounted?: true;
|
|
891
907
|
/** The approval object's TARGETS (`approvalTargetsOf`): per reading of the path slot, where it resolved when the card
|
|
892
908
|
* was asked; absent ⇒ not judged. A role resolving elsewhere at the execution vetoes the call (`resume.target_moved`). */
|
|
893
909
|
targets?: import("./approval-object.js").ApprovalTargets;
|
|
@@ -1021,6 +1037,9 @@ export interface CheckpointState {
|
|
|
1021
1037
|
};
|
|
1022
1038
|
/** The grant rows the run grew ({@link import("./skill-grant.js").frozenSkillGrants}); absent = none, damaged = refused pre-CAS. */
|
|
1023
1039
|
skillGrants?: import("./skill-grant.js").SkillGrantRecord[];
|
|
1040
|
+
/** The skills active on the leg whose hooks were open (`SkillSpec.mods`; {@link import("./mods/spec-seats.js").SkillScopes}`.frozen`):
|
|
1041
|
+
* the resumed leg reopens them at its admission. Absent = none; damaged = refused pre-CAS. */
|
|
1042
|
+
skillScopes?: string[];
|
|
1024
1043
|
/**
|
|
1025
1044
|
* design/319 (A ticket) — the session's reminder provenance mark
|
|
1026
1045
|
* ({@link import("./reminder-mint.js").mintReminderMark}), persisted so a durable resume keeps
|
|
@@ -1080,12 +1099,12 @@ export interface CheckpointState {
|
|
|
1080
1099
|
*/
|
|
1081
1100
|
pendingSteerQueue?: PendingSteerEntry[];
|
|
1082
1101
|
/**
|
|
1083
|
-
* SR-7 (
|
|
1084
|
-
*
|
|
1102
|
+
* SR-7 (orphaned-background-task notice, resume leg
|
|
1103
|
+
* under the `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` gate — the cloud-worker restart
|
|
1085
1104
|
* leg, exactly sema's durable-resume shape): the background tasks (pending/running, this run's
|
|
1086
1105
|
* owner triple) still ALIVE at suspend. Background processes never survive a suspend (design/103
|
|
1087
1106
|
* §3.7 unconditional dispose + killed receipts), so on resume any snapshot entry NOT
|
|
1088
|
-
* alive in the resume leg's registry is an ORPHAN — aggregated into ONE
|
|
1107
|
+
* alive in the resume leg's registry is an ORPHAN — aggregated into ONE "The container
|
|
1089
1108
|
* was restarted…" reminder appended to the resume continuation (single message: header +
|
|
1090
1109
|
* `- description (task id)` list + re-create instruction; never a per-task barrage). A survivor
|
|
1091
1110
|
* (session-resident shell / in-window monitor) is excluded — still reachable via TaskOutput/
|
|
@@ -1645,8 +1664,17 @@ export { REOPEN_REASONS, type ReopenReason } from "./resume-startup-cause.js";
|
|
|
1645
1664
|
* (legacy callers / direct store tests) → no OCC.
|
|
1646
1665
|
*/
|
|
1647
1666
|
export interface ResolveExpectation {
|
|
1648
|
-
/** The monotonic {@link Checkpoint.rev} the caller observed at `get()
|
|
1667
|
+
/** The monotonic {@link Checkpoint.rev} the caller observed at `get()`, read through {@link checkpointRevOf} (absent rev ⇒ legacy `0`). */
|
|
1649
1668
|
rev: number;
|
|
1669
|
+
/**
|
|
1670
|
+
* The deployment's credential for the claim the resolving run acts under (`RunInternals.holder`, carried verbatim — the engine
|
|
1671
|
+
* never judges, stores or prints it). Every member of this object is a precondition the store evaluates in the SAME atomic step
|
|
1672
|
+
* as the flip: the CAS wins only if the grant `holder` names is still the deployment's current one at that instant (no claim
|
|
1673
|
+
* transfer may commit between the judgement and the flip). Judged only by a store that declares {@link CheckpointStore.fence}
|
|
1674
|
+
* `holder`; any other store LOSES a CAS that carries one (never ignores it — `checkpointHolderMatches`). A miss is an ordinary
|
|
1675
|
+
* loss: the row is untouched, so it reads `pending` at the generation the caller validated.
|
|
1676
|
+
*/
|
|
1677
|
+
holder?: string;
|
|
1650
1678
|
}
|
|
1651
1679
|
/** design/384 slice 2 / S-25-R1 — the terminal intents a claim can carry. Deliberately the
|
|
1652
1680
|
* TERMINAL pair only: `resolve` and `expire` are the two verbs that race one pending row to
|
|
@@ -1661,16 +1689,17 @@ export type TerminalClaimIntent = {
|
|
|
1661
1689
|
};
|
|
1662
1690
|
/** design/384 slice 2 / S-25-R1 — the single-round-trip answer: EITHER the claim won, OR it lost and
|
|
1663
1691
|
* the SAME atomic operation reports what the row is now. `current` reuses the row's own vocabulary
|
|
1664
|
-
* (status / rev / resolvedOutcome) — no new value domain. `status:"pending"` on a loss is the
|
|
1665
|
-
*
|
|
1666
|
-
* cleanly KNOWN state is never "unknown").
|
|
1692
|
+
* (status / rev / resolvedOutcome) — no new value domain. `status:"pending"` on a loss is one of the
|
|
1693
|
+
* two expectation arms: a `rev` other than `expect.rev` is the OCC arm (the row is still open — re-get +
|
|
1694
|
+
* re-validate, zero backoff; a cleanly KNOWN state is never "unknown"); `expect.rev` itself means the
|
|
1695
|
+
* row did not move and the claim holder (`expect.holder`) was not current. */
|
|
1667
1696
|
export type TerminalClaimOutcome = {
|
|
1668
1697
|
claimed: true;
|
|
1669
1698
|
} | {
|
|
1670
1699
|
claimed: false;
|
|
1671
1700
|
current: {
|
|
1672
1701
|
status: "pending" | "resolved" | "expired";
|
|
1673
|
-
/**
|
|
1702
|
+
/** {@link checkpointRevOf} — the absent-rev-reads-as-0 rule the OCC key already uses. */
|
|
1674
1703
|
rev: number;
|
|
1675
1704
|
/** Row-field PASSTHROUGH on every present status: the row PRESERVES it across `reopen`
|
|
1676
1705
|
* (resolved→pending rows carry it), `expire` never clears it, and a winnerless resolve
|
|
@@ -1807,7 +1836,7 @@ export interface CheckpointRow {
|
|
|
1807
1836
|
* key ({@link ResolveExpectation}): a resume reads it at `get()` and `resolve` requires the live `rev` to
|
|
1808
1837
|
* still equal it, so any resolve/reopen cycle landing in the get→resolve window loses the CAS (fail-closed).
|
|
1809
1838
|
* Unlike the 2-valued `reopenReason`, it cannot ABA back to a prior value. Absent ⇒ legacy `0` (a checkpoint
|
|
1810
|
-
* minted before this field; treated as never mutated).
|
|
1839
|
+
* minted before this field; treated as never mutated) — read it through {@link checkpointRevOf}.
|
|
1811
1840
|
*/
|
|
1812
1841
|
rev?: number;
|
|
1813
1842
|
/**
|
|
@@ -1883,6 +1912,43 @@ export interface CheckpointRow {
|
|
|
1883
1912
|
/** Epoch ms the store stamped {@link executionOutcome} at. Present iff `executionOutcome` is. */
|
|
1884
1913
|
executionAtMs?: number;
|
|
1885
1914
|
}
|
|
1915
|
+
/**
|
|
1916
|
+
* The immutable, indexable facts of one checkpoint row: what core minted on it and nothing later moves. A backend that
|
|
1917
|
+
* keeps columns beside the stored row writes them from {@link checkpointIndexFacts}, the one derivation. Not here: the
|
|
1918
|
+
* state the CAS faces move (`status`, `rev`, `reopenReason`, the execution record), values a deployment mints (an
|
|
1919
|
+
* abandonment backstop), display projections a deployment bounds or redacts, and the deadline FACET — a reading of the
|
|
1920
|
+
* pause registry, which a stored copy would freeze ({@link import("./pause-registry.js").CARD_FACET_OVERRIDES}).
|
|
1921
|
+
* Every member is present; `null` = the row carries none.
|
|
1922
|
+
*/
|
|
1923
|
+
export interface CheckpointIndexFacts {
|
|
1924
|
+
readonly token: CheckpointToken;
|
|
1925
|
+
readonly scope: string;
|
|
1926
|
+
readonly sessionId: string;
|
|
1927
|
+
/** {@link checkpointVersionOf}. */
|
|
1928
|
+
readonly version: number;
|
|
1929
|
+
readonly gateKind: CheckpointGate["kind"];
|
|
1930
|
+
/**
|
|
1931
|
+
* The approval gate's stored card word AS STORED: a member of `TOOL_APPROVAL_CARDS`, or a string outside it (kept, so
|
|
1932
|
+
* a later engine that knows the word reads the column right); `null` for a non-string, no card, or a gate that is not
|
|
1933
|
+
* an approval. Never a derived facet: a facet predicate over this column is generated from `CARD_FACET_OVERRIDES` (its
|
|
1934
|
+
* keys `IN (…)` take the key's facet, anything else the gate kind's). Read off the gate alone — independent of the
|
|
1935
|
+
* pending action's own members (offers, the absence word), so a backfill of one never presumes the other's.
|
|
1936
|
+
*/
|
|
1937
|
+
readonly approvalCard: string | null;
|
|
1938
|
+
/** The pending tool call's name, id and bound input hash (a `tool_approval` pending action only). */
|
|
1939
|
+
readonly toolName: string | null;
|
|
1940
|
+
readonly toolCallId: string | null;
|
|
1941
|
+
readonly boundInputHash: string | null;
|
|
1942
|
+
readonly deadline: number | null;
|
|
1943
|
+
readonly createdAt: number;
|
|
1944
|
+
/** The approval gate's descriptor, the row's own object (display only; serialize it, do not mutate it). */
|
|
1945
|
+
readonly riskDescriptor: RiskDescriptor | null;
|
|
1946
|
+
/** The park mint's directional-control bit, presence only: `true`, or `null` — not recorded, never "clean". */
|
|
1947
|
+
readonly hasBidiControls: true | null;
|
|
1948
|
+
}
|
|
1949
|
+
/** Derive a row's {@link CheckpointIndexFacts}. Pure: reads no clock, writes nothing; the approval card is read
|
|
1950
|
+
* through {@link parkedApprovalCardOf} (the one card reading), the tool fields only off a `tool_approval` action. */
|
|
1951
|
+
export declare function checkpointIndexFacts(cp: Checkpoint): CheckpointIndexFacts;
|
|
1886
1952
|
/**
|
|
1887
1953
|
* design/80 assistant-scheduler seam #1: a LIGHTWEIGHT projection of one PENDING
|
|
1888
1954
|
* checkpoint, returned in bulk by {@link CheckpointStore.listByScope} so a supervisor scheduler can list a
|
|
@@ -1905,7 +1971,9 @@ export interface CheckpointSummary {
|
|
|
1905
1971
|
* `irreversible_ask` approval escalations), derived via {@link riskSeverity} from the descriptor's axes —
|
|
1906
1972
|
* the SAME value as `gate.riskDescriptor.severity`, recomputed from the single source helper rather than
|
|
1907
1973
|
* re-stored. `undefined` for a gate with no descriptor (resource_limit / needs_review / plan_review / a
|
|
1908
|
-
* legacy human ask minted before D-E). The inbox sorts DESC by this.
|
|
1974
|
+
* legacy human ask minted before D-E). The inbox sorts DESC by this. Also `undefined` for a descriptor whose axes
|
|
1975
|
+
* prove no tier (not a plain record, or damaged marks and no valid `true` one) — damage, not a low risk: the
|
|
1976
|
+
* projection then calls its `disclose` once, so such a row does not sink below the graded rows unannounced. */
|
|
1909
1977
|
severity?: 1 | 2 | 3 | 4 | 5;
|
|
1910
1978
|
/** Cumulative spend debited to this suspend chain ({@link ResourceLedger.spentMicroUsd}) in micro-USD —
|
|
1911
1979
|
* present whenever the checkpoint carries a {@link Checkpoint.resourceLedger} (every resource_limit suspend,
|
|
@@ -2067,9 +2135,12 @@ export interface CheckpointSummary {
|
|
|
2067
2135
|
* {@link CheckpointSummary}. Shared by every {@link CheckpointStore} impl so the projection is IDENTICAL
|
|
2068
2136
|
* across the in-memory, file, and durable backends (the anti-drift guard) — `severity` always derives from the
|
|
2069
2137
|
* gate's {@link RiskDescriptor} via the single {@link riskSeverity} helper, `spentMicroUsd` always reads
|
|
2070
|
-
* {@link ResourceLedger.spentMicroUsd}. Pure; reads no clock/random.
|
|
2138
|
+
* {@link ResourceLedger.spentMicroUsd}. Pure; reads no clock/random. `disclose` receives one sentence for a damage the
|
|
2139
|
+
* projection reads past — descriptor axes that are not a plain record, or a mark that is not a boolean (the `severity`
|
|
2140
|
+
* is then the valid marks' floor, or omitted) — naming the row by checkpoint id and session (never its token) and the member by its
|
|
2141
|
+
* shape (never its value); it is called synchronously and every listing calls it again. A store hands it its own seat.
|
|
2071
2142
|
*/
|
|
2072
|
-
export declare function summarizeCheckpoint(cp: Checkpoint): CheckpointSummary;
|
|
2143
|
+
export declare function summarizeCheckpoint(cp: Checkpoint, disclose?: (sentence: string) => void): CheckpointSummary;
|
|
2073
2144
|
/**
|
|
2074
2145
|
* WHICH arm of a multi-arm {@link CheckpointError} `code` fired (requested 2026-08-10: a deployment retry
|
|
2075
2146
|
* policy needs to tell "a newer worker can redeem this row" from "this row is damaged/caller-declared and
|
|
@@ -2094,14 +2165,16 @@ export declare function summarizeCheckpoint(cp: Checkpoint): CheckpointSummary;
|
|
|
2094
2165
|
* steer seat, which no worker version reads and the host decides itself, or a retired mode-seed member of
|
|
2095
2166
|
* `inheritedGate`, which an engine at 7.38.x or earlier still reads once).
|
|
2096
2167
|
* · `invalid_outcome` pre-CAS row-integrity arms: `"real_approval_damaged"`, `"real_approval_forged"`,
|
|
2097
|
-
* `"read_face_damaged"`, `"read_face_forged"`, `"write_face_damaged"`, `"skill_grants_damaged"`, `"constraint_chain_missing"`, `"hands_coordinates_damaged"`, `"requirements_damaged"` (all terminal for the row's
|
|
2168
|
+
* `"read_face_damaged"`, `"read_face_forged"`, `"write_face_damaged"`, `"skill_grants_damaged"`, `"skill_scopes_damaged"`, `"constraint_chain_missing"`, `"hands_coordinates_damaged"`, `"requirements_damaged"` (all terminal for the row's
|
|
2098
2169
|
* current bytes — no worker version redeems a damaged row).
|
|
2099
2170
|
*/
|
|
2100
2171
|
export type CheckpointErrorReason = "version_newer" | "env_factory_missing" | "governed_unwired" | "origin_missing" | "ledger_event_unknown" | "seat_retired" | "real_approval_damaged" | "real_approval_forged" | "read_face_damaged" | "read_face_forged"
|
|
2101
2172
|
/** `state.writeFace` is present but not a well-formed section. No `_forged` twin: the section is
|
|
2102
2173
|
* legal-and-absent at every version, so there is no version to judge a fabrication against — and a
|
|
2103
2174
|
* fabricated "open" still needs the LIVE resolution to say open too. */
|
|
2104
|
-
| "write_face_damaged" | "skill_grants_damaged"
|
|
2175
|
+
| "write_face_damaged" | "skill_grants_damaged"
|
|
2176
|
+
/** `state.skillScopes` is present but not a list of skill names (the active skills whose hooks the resumed leg reopens). */
|
|
2177
|
+
| "skill_scopes_damaged" | "constraint_chain_missing"
|
|
2105
2178
|
/** `state.handsRoot` / `state.handsHome` / `state.handsCwd` is present but not an absolute path (the row's hands' coordinates). */
|
|
2106
2179
|
| "hands_coordinates_damaged"
|
|
2107
2180
|
/** The row's reader-requirement list ({@link CheckpointRow.requires}) is missing on a v10 row, is not a list of words,
|
|
@@ -2119,10 +2192,11 @@ export type CheckpointErrorReason = "version_newer" | "env_factory_missing" | "g
|
|
|
2119
2192
|
* wrote the leg's lists is not one (`"invalid_record"`); the roster the resume hands mounts a delegation tool under another name than it declares
|
|
2120
2193
|
* (`"renamed_mount"`); the process-wide table of declared names is occupied by a value that is not the engine's (`"registry_occupied"`). */
|
|
2121
2194
|
| "not_a_list" | "not_a_string" | "unknown_name" | "unsupported_pattern" | "invalid_record" | "renamed_mount" | "registry_occupied"
|
|
2122
|
-
/** On `
|
|
2123
|
-
* a word the model catalog does not hold (`"unknown_model_ref"`),
|
|
2124
|
-
* (`"not_a_model_ref"`)
|
|
2125
|
-
|
|
2195
|
+
/** On `config.unknown_role` (a fresh run's terminal `detail.detail.reason`; on a resume, `detail.reason` of `checkpoint.config_refused` with `detail.code` `config.unknown_role`)
|
|
2196
|
+
* — a model binding or a role word the engine cannot read: a word the model catalog does not hold (`"unknown_model_ref"`), a value that is
|
|
2197
|
+
* no model reference at all — a number, a boolean, a list (`"not_a_model_ref"`), or a role word outside the vocabulary — a `roles` key, a
|
|
2198
|
+
* `modelRole` value (`"unknown_role_word"`). The sentence names the seat the refusal's `field` names (`roles.consolidate`, `tiers.pro`, `TaskSpec.model`). */
|
|
2199
|
+
| "unknown_model_ref" | "not_a_model_ref" | "unknown_role_word";
|
|
2126
2200
|
/**
|
|
2127
2201
|
* The codes a RESUME's pre-claim configuration screen carries as `detail.code` of a `checkpoint.config_refused` — the words prepare's
|
|
2128
2202
|
* doors throw, held unchanged so one refusal reads the same on a fresh run (`TaskResult.errorCode`) and on a resume: the mode, output-style,
|
|
@@ -2131,18 +2205,21 @@ export type CheckpointErrorReason = "version_newer" | "env_factory_missing" | "g
|
|
|
2131
2205
|
* re-supplied config and the deployment's deps (`configValueDoors`, the rest): the retired deps seats and caller-policy members
|
|
2132
2206
|
* (`config.deps_retired_key`), the peer presence, the restore selector, the microCompact knob, the prompt selectors, `resumeAt` on a resume
|
|
2133
2207
|
* (`resume_at.conflicts_resume`, `resume_at.mode_without_target` — a resume carrying `resumeAt` is refused as a conflict before its mode is
|
|
2134
|
-
* read, so `resume_at.invalid_mode` is a fresh run's word only), the containment faces, the add-only seats and the MCP / A2A `toolAxes` (`config.invalid_argument`), an MCP server's `toolFaces` (`config.tool_face_invalid`), the three memory seats,
|
|
2208
|
+
* read, so `resume_at.invalid_mode` is a fresh run's word only), the containment faces, the add-only seats and the MCP / A2A `toolAxes` (`config.invalid_argument`), an MCP server's `toolFaces` (`config.tool_face_invalid`), the three memory seats, the cross-boundary posture, the advisor switch and the advisor model's shape,
|
|
2135
2209
|
* the auto-consolidation arming (its role key too, and the role seats and tier bindings it reads: `config.unknown_role`, `detail.reason` naming the arm), the materialize strategy and persistence flag, the lock layer (`config.locked_registry`,
|
|
2136
2210
|
* `config.locked_key`), an MCP server's content class, the skills-listing seats (`config.skill_listing_budget_invalid`), the limits and the
|
|
2137
|
-
* resource-suspend knobs, the attachment modes, the governance windows, the brain-call guardrail and the retention declaration over the stores the leg
|
|
2211
|
+
* resource-suspend knobs, the attachment modes, the governance windows, the brain-call guardrail, the host floor (`config.host_floor_invalid`) and the retention declaration over the stores the leg
|
|
2138
2212
|
* would run on (`config.retention_policy`, `config.retention_capability`), and the checkpoint store seat itself (`config.invalid_checkpoint_store`: the
|
|
2139
2213
|
* retired `null` spelling, a store that declares no execution outcome), and the skills seat and the hands band (`config.invalid_argument`;
|
|
2140
2214
|
* a skill's `baseDir` by its own reader, `config.skill_base_dir_invalid`). A door not entered here (the leg's model, its rebuilt
|
|
2141
2215
|
* roster, its answer face, the approval seat's value) still refuses after the claim, each for a stated reason (INTEGRATION-CORE, "A resume's two doors").
|
|
2142
2216
|
*/
|
|
2143
|
-
export declare const CHECKPOINT_CONFIG_REFUSAL_CODES: readonly ["config.spec_retired_key", "config.output_style_invalid", "config.permission_mode_invalid", "config.shell_gate_value_retired", "config.approval_reach_invalid", "config.user_invoked_skill_unknown", "config.skill_deny_unreadable", "config.user_attachment_invalid", "config.tool_face_control", "config.deps_retired_key", "config.peer_presence_invalid", "config.tool_model_gate_invalid", "config.microcompact_invalid", "config.prompt_selector_invalid", "resume_at.conflicts_resume", "resume_at.mode_without_target", "config.read_face_invalid", "config.write_face_invalid", "config.invalid_argument", "config.tool_face_invalid", "config.memory_delegation_evidence", "config.memory_provenance", "config.memory_capture_policy", "config.cross_boundary_posture", "config.auto_consolidation", "config.unknown_role", "config.tool_materialize_invalid", "config.memory_persistence_invalid", "config.tool_materialize_unreachable", "config.locked_registry", "config.locked_key", "config.mcp_content_class", "config.skill_listing_budget_invalid", "config.limit_unknown_key", "config.limit_invalid", "config.attachment_invalid", "config.usage_window_invalid", "config.brain_call_guardrail_invalid", "config.retention_policy", "config.retention_capability", "config.invalid_checkpoint_store", "config.skill_base_dir_invalid"];
|
|
2217
|
+
export declare const CHECKPOINT_CONFIG_REFUSAL_CODES: readonly ["config.spec_retired_key", "config.output_style_invalid", "config.permission_mode_invalid", "config.shell_gate_value_retired", "config.approval_reach_invalid", "config.user_invoked_skill_unknown", "config.skill_deny_unreadable", "config.user_attachment_invalid", "config.tool_face_control", "config.deps_retired_key", "config.peer_presence_invalid", "config.tool_model_gate_invalid", "config.microcompact_invalid", "config.prompt_selector_invalid", "resume_at.conflicts_resume", "resume_at.mode_without_target", "config.read_face_invalid", "config.write_face_invalid", "config.invalid_argument", "config.tool_face_invalid", "config.memory_delegation_evidence", "config.memory_provenance", "config.memory_capture_policy", "config.cross_boundary_posture", "config.advisor_tool_invalid", "config.advisor_model_invalid", "config.auto_consolidation", "config.unknown_role", "config.tool_materialize_invalid", "config.memory_persistence_invalid", "config.tool_materialize_unreachable", "config.locked_registry", "config.locked_key", "config.mcp_content_class", "config.skill_listing_budget_invalid", "config.limit_unknown_key", "config.limit_invalid", "config.attachment_invalid", "config.usage_window_invalid", "config.brain_call_guardrail_invalid", "config.retention_policy", "config.retention_capability", "config.invalid_checkpoint_store", "config.skill_base_dir_invalid", "config.host_floor_invalid"];
|
|
2144
2218
|
export type CheckpointConfigRefusalCode = (typeof CHECKPOINT_CONFIG_REFUSAL_CODES)[number];
|
|
2145
2219
|
export declare const isCheckpointConfigRefusalCode: (word: unknown) => word is CheckpointConfigRefusalCode;
|
|
2220
|
+
/** The words of a {@link CheckpointError}'s optional `detail.field` (what each means: the `detail` member's doc). A CLOSED SET with one home, registered in
|
|
2221
|
+
* `docs/CLOSED-SETS.md`: a consumer holding a table over it is tsc-red on a new word until it places the word. */
|
|
2222
|
+
export type CheckpointErrorField = "boundCallId" | "boundInputHash" | "boundGrantDigest" | "answer" | "hostDecision" | "approver" | "feedback" | "taskConfig" | "deps" | "inheritedGate";
|
|
2146
2223
|
/** A typed checkpoint-store error so callers branch on `code` (mirrors `SessionError`). */
|
|
2147
2224
|
export declare class CheckpointError extends Error {
|
|
2148
2225
|
readonly code: "checkpoint.already_exists" | "checkpoint.already_resolved" | "checkpoint.not_found"
|
|
@@ -2296,9 +2373,15 @@ export declare class CheckpointError extends Error {
|
|
|
2296
2373
|
* parity) before this throw — the token is NOT redeemable, by the deployment's own permanent
|
|
2297
2374
|
* verdict (a dead binding must not be redialed forever). */
|
|
2298
2375
|
| "resume.preflight_rejected"
|
|
2376
|
+
/** The resume carried a claim holder ({@link ResolveExpectation.holder}) and lost its CAS while the row is still the one it
|
|
2377
|
+
* validated — same scope, `pending`, the same generation — so the holder was not the deployment's current grant: nothing was
|
|
2378
|
+
* applied and the row is unchanged by this resume. The run is superseded; do not retry it (the current holder delivers).
|
|
2379
|
+
* Read off the CAS's own loss answer on `claimTerminal`; on the two-step route off its diagnostic read (a later instant —
|
|
2380
|
+
* under a race the row's later state answers instead, fail-closed either way). */
|
|
2381
|
+
| "resume.holder_superseded"
|
|
2299
2382
|
/** F-012 L3: the resume carried an approver EDIT (`updatedInput`) and a FROZEN inherited ancestor
|
|
2300
2383
|
* constraint (the persisted projection chain) — or the deployment's resume-edit policy — DENIES the
|
|
2301
|
-
* edited args. Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
|
|
2384
|
+
* edited args, or the policy accepts them only rewritten (`detail.editRewritten` names that form). Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
|
|
2302
2385
|
* the same token remains decidable (approve as shown, deny, or edit differently) — the rejection
|
|
2303
2386
|
* consumed the decision's INPUT, never the ask itself. */
|
|
2304
2387
|
| "resume.constraint_rejected"
|
|
@@ -2318,14 +2401,15 @@ export declare class CheckpointError extends Error {
|
|
|
2318
2401
|
* `person`/`sla_timeout`/`policy`, pair the sweep's `sla_timeout` with an allow or put it on a row a sweep does not
|
|
2319
2402
|
* resolve, or try to supply the minted record), or — design/252 G-7 — `"approver"` (the attribution is not a
|
|
2320
2403
|
* well-formed identifier: re-decide with a plain, bounded, control-character-free string, or omit
|
|
2321
|
-
* it)
|
|
2404
|
+
* it), or `"feedback"` (the allow's `feedback` is not fit to deliver — it carries the engine's `<system-reminder>` tag, is not a string, rides a deny,
|
|
2405
|
+
* or rides a decide a machine made: re-decide with the words changed or dropped; the binding did not change). On a `checkpoint.config_refused` `field` names which INPUT carries the refusal — `"taskConfig"`
|
|
2322
2406
|
* (the re-supplied config: correct it and resume the same token), `"deps"` (the deployment's own seat — and the policies the
|
|
2323
2407
|
* caller re-supplies as inherited constraints: correct them and resume the same token) or `"inheritedGate"` (the row's record: no config reaches it; expire the row). The throw
|
|
2324
2408
|
* sites always knew which arm fired; this carries that fact instead of dropping it (ruled
|
|
2325
2409
|
* 2026-08-03, cross-repo HITL discussion). Additive and optional — `code` remains the only REQUIRED
|
|
2326
2410
|
* discriminant. */
|
|
2327
2411
|
readonly detail?: {
|
|
2328
|
-
field?:
|
|
2412
|
+
field?: CheckpointErrorField;
|
|
2329
2413
|
/** On `checkpoint.config_refused` — prepare's own code for the refusal ({@link CheckpointConfigRefusalCode}), the
|
|
2330
2414
|
* word a fresh run of the same bad config reports as its `errorCode`. Absent on every other code. */
|
|
2331
2415
|
code?: CheckpointConfigRefusalCode;
|
|
@@ -2347,6 +2431,9 @@ export declare class CheckpointError extends Error {
|
|
|
2347
2431
|
* {@link SteerReplayFacet}, in that set's order; always present on that code, never empty). Absent on
|
|
2348
2432
|
* every other code. The live verb's refusal carries the same value. */
|
|
2349
2433
|
differs?: readonly SteerReplayFacet[];
|
|
2434
|
+
/** On `resume.constraint_rejected` ⇔ the resume-edit policy accepts the person's edit only rewritten: `acceptableForm`
|
|
2435
|
+
* is that form, the outlet a host may offer; a decide carrying it as `updatedInput` runs exactly those bytes. */
|
|
2436
|
+
editRewritten?: import("./rewrite-rejudge.js").EditRewritten;
|
|
2350
2437
|
} | undefined;
|
|
2351
2438
|
constructor(code: "checkpoint.already_exists" | "checkpoint.already_resolved" | "checkpoint.not_found"
|
|
2352
2439
|
/** `runner.resume` was handed an {@link ResumeOutcome} whose `gate` arm does not match the
|
|
@@ -2499,9 +2586,15 @@ export declare class CheckpointError extends Error {
|
|
|
2499
2586
|
* parity) before this throw — the token is NOT redeemable, by the deployment's own permanent
|
|
2500
2587
|
* verdict (a dead binding must not be redialed forever). */
|
|
2501
2588
|
| "resume.preflight_rejected"
|
|
2589
|
+
/** The resume carried a claim holder ({@link ResolveExpectation.holder}) and lost its CAS while the row is still the one it
|
|
2590
|
+
* validated — same scope, `pending`, the same generation — so the holder was not the deployment's current grant: nothing was
|
|
2591
|
+
* applied and the row is unchanged by this resume. The run is superseded; do not retry it (the current holder delivers).
|
|
2592
|
+
* Read off the CAS's own loss answer on `claimTerminal`; on the two-step route off its diagnostic read (a later instant —
|
|
2593
|
+
* under a race the row's later state answers instead, fail-closed either way). */
|
|
2594
|
+
| "resume.holder_superseded"
|
|
2502
2595
|
/** F-012 L3: the resume carried an approver EDIT (`updatedInput`) and a FROZEN inherited ancestor
|
|
2503
2596
|
* constraint (the persisted projection chain) — or the deployment's resume-edit policy — DENIES the
|
|
2504
|
-
* edited args. Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
|
|
2597
|
+
* edited args, or the policy accepts them only rewritten (`detail.editRewritten` names that form). Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
|
|
2505
2598
|
* the same token remains decidable (approve as shown, deny, or edit differently) — the rejection
|
|
2506
2599
|
* consumed the decision's INPUT, never the ask itself. */
|
|
2507
2600
|
| "resume.constraint_rejected"
|
|
@@ -2521,14 +2614,15 @@ export declare class CheckpointError extends Error {
|
|
|
2521
2614
|
* `person`/`sla_timeout`/`policy`, pair the sweep's `sla_timeout` with an allow or put it on a row a sweep does not
|
|
2522
2615
|
* resolve, or try to supply the minted record), or — design/252 G-7 — `"approver"` (the attribution is not a
|
|
2523
2616
|
* well-formed identifier: re-decide with a plain, bounded, control-character-free string, or omit
|
|
2524
|
-
* it)
|
|
2617
|
+
* it), or `"feedback"` (the allow's `feedback` is not fit to deliver — it carries the engine's `<system-reminder>` tag, is not a string, rides a deny,
|
|
2618
|
+
* or rides a decide a machine made: re-decide with the words changed or dropped; the binding did not change). On a `checkpoint.config_refused` `field` names which INPUT carries the refusal — `"taskConfig"`
|
|
2525
2619
|
* (the re-supplied config: correct it and resume the same token), `"deps"` (the deployment's own seat — and the policies the
|
|
2526
2620
|
* caller re-supplies as inherited constraints: correct them and resume the same token) or `"inheritedGate"` (the row's record: no config reaches it; expire the row). The throw
|
|
2527
2621
|
* sites always knew which arm fired; this carries that fact instead of dropping it (ruled
|
|
2528
2622
|
* 2026-08-03, cross-repo HITL discussion). Additive and optional — `code` remains the only REQUIRED
|
|
2529
2623
|
* discriminant. */
|
|
2530
2624
|
detail?: {
|
|
2531
|
-
field?:
|
|
2625
|
+
field?: CheckpointErrorField;
|
|
2532
2626
|
/** On `checkpoint.config_refused` — prepare's own code for the refusal ({@link CheckpointConfigRefusalCode}), the
|
|
2533
2627
|
* word a fresh run of the same bad config reports as its `errorCode`. Absent on every other code. */
|
|
2534
2628
|
code?: CheckpointConfigRefusalCode;
|
|
@@ -2550,6 +2644,9 @@ export declare class CheckpointError extends Error {
|
|
|
2550
2644
|
* {@link SteerReplayFacet}, in that set's order; always present on that code, never empty). Absent on
|
|
2551
2645
|
* every other code. The live verb's refusal carries the same value. */
|
|
2552
2646
|
differs?: readonly SteerReplayFacet[];
|
|
2647
|
+
/** On `resume.constraint_rejected` ⇔ the resume-edit policy accepts the person's edit only rewritten: `acceptableForm`
|
|
2648
|
+
* is that form, the outlet a host may offer; a decide carrying it as `updatedInput` runs exactly those bytes. */
|
|
2649
|
+
editRewritten?: import("./rewrite-rejudge.js").EditRewritten;
|
|
2553
2650
|
} | undefined);
|
|
2554
2651
|
}
|
|
2555
2652
|
/**
|
|
@@ -2649,41 +2746,6 @@ export declare function encodeAtFidelity(fidelity: StoreFidelity, value: unknown
|
|
|
2649
2746
|
ok: false;
|
|
2650
2747
|
cause: unknown;
|
|
2651
2748
|
};
|
|
2652
|
-
/**
|
|
2653
|
-
* CONSERVATIVE "these two are provably the same value" for deciding whether a {@link encodeAtFidelity}
|
|
2654
|
-
* projection moved anything, and whether a policy's rewrite names the very value about to be filed.
|
|
2655
|
-
*
|
|
2656
|
-
* Deliberately NOT the binding hash, which is the wrong instrument for this question in two directions:
|
|
2657
|
-
* it folds `-0` onto `0` (a real projection change the policy may care about, invisible to the hash), and
|
|
2658
|
-
* it is a digest, so a collision would read as sameness. `Object.is` at the leaves keeps the `-0`
|
|
2659
|
-
* distinction; comparing own-key SETS keeps the dropped `undefined`-valued key visible.
|
|
2660
|
-
*
|
|
2661
|
-
* Conservative on purpose — the answer it must never give wrongly is TRUE, because both callers read
|
|
2662
|
-
* TRUE as "nothing moved / the policy named this very value" and act by filing. So sameness has to be
|
|
2663
|
-
* PROVED, not merely un-disproved:
|
|
2664
|
-
* - the PROTOTYPES must match and be the plain-object or array one. `[object Object]` is not proof of
|
|
2665
|
-
* a plain object — a class instance and a null-prototype object both report it, and a tool executing
|
|
2666
|
-
* the arguments can observe inherited behaviour. (Neither input to the projection comparison can be
|
|
2667
|
-
* such a value: `structuredClone` and `JSON.parse` both produce plain data. A policy's rewrite can.)
|
|
2668
|
-
* - own keys are compared with `Reflect.ownKeys` and POSITIONALLY, so a SYMBOL key or a non-enumerable
|
|
2669
|
-
* property on one side is a difference rather than an invisible extra, and so is a different order
|
|
2670
|
-
* (which `Object.keys`, `JSON.stringify` and any tool iterating its arguments can see).
|
|
2671
|
-
* - properties are compared through their DESCRIPTORS — every flag, so a frozen object is not the
|
|
2672
|
-
* mutable value a JSON decode produces — and an accessor on either side answers FALSE without being
|
|
2673
|
-
* read: an approval decision must not be made by running deployment code, and what a getter returns
|
|
2674
|
-
* need not be the same twice.
|
|
2675
|
-
* - reference TOPOLOGY counts: two properties that share one object are not two properties holding
|
|
2676
|
-
* equal objects, and a JSON round trip is precisely what turns the first into the second.
|
|
2677
|
-
* - what it CANNOT prove on its own is that the value it inspected answers ordinary reads the way its
|
|
2678
|
-
* descriptors did — a Proxy reports the target's descriptors and can return anything from a `get`.
|
|
2679
|
-
* A caller comparing a value it did not construct must first establish that it is an inert data
|
|
2680
|
-
* graph (the capture clone does exactly that, and refuses a Proxy outright).
|
|
2681
|
-
* - any brand outside plain object/array that is not already reference-identical answers FALSE (a Date
|
|
2682
|
-
* is never the string a JSON codec leaves behind, a Map is never the `{}`), and so does any
|
|
2683
|
-
* inspection that throws.
|
|
2684
|
-
* An uncertain answer therefore costs a policy consultation or a park, never a silently filed value.
|
|
2685
|
-
*/
|
|
2686
|
-
export declare function samePlainValue(a: unknown, b: unknown): boolean;
|
|
2687
2749
|
export interface CheckpointStore {
|
|
2688
2750
|
/**
|
|
2689
2751
|
* Managed-retention declaration (ruled 2026-08-05, retention.ts): `"managed"` promises the
|
|
@@ -2736,6 +2798,15 @@ export interface CheckpointStore {
|
|
|
2736
2798
|
readonly execution: {
|
|
2737
2799
|
readonly outcome: true;
|
|
2738
2800
|
};
|
|
2801
|
+
/**
|
|
2802
|
+
* The CLAIM-HOLDER declaration: this store judges {@link ResolveExpectation.holder} in the same atomic step as the resolve's flip.
|
|
2803
|
+
* Same "declaration, never duck-typing" posture as {@link execution}: ABSENT reads as "does not judge holders", and a run handed a
|
|
2804
|
+
* holder over such a store is refused at its store seat (`config.invalid_checkpoint_store`) — a holder the store would ignore would
|
|
2805
|
+
* fence nothing while the deployment believed it fenced.
|
|
2806
|
+
*/
|
|
2807
|
+
readonly fence?: {
|
|
2808
|
+
readonly holder: true;
|
|
2809
|
+
};
|
|
2739
2810
|
/** Create-once. Throws {@link CheckpointError} `already_exists` on a token collision (never a silent
|
|
2740
2811
|
* overwrite — a reused token would clobber a live suspension). */
|
|
2741
2812
|
put(token: CheckpointToken, cp: Checkpoint): Promise<void>;
|
|
@@ -2970,10 +3041,21 @@ export interface CheckpointStore {
|
|
|
2970
3041
|
* enumeration face `listByScope` lacks. A host keeping its own scope registry (e.g. a sidecar file for a
|
|
2971
3042
|
* cross-scope inbox) can rebuild it from the data itself when the registry is lost/corrupt, instead of the
|
|
2972
3043
|
* enumeration silently going empty and pending approvals turning invisible. Scoped to PENDING deliberately:
|
|
2973
|
-
* it matches `listByScope`'s visible surface, so `listScopes() × listByScope()` is exactly the full inbox
|
|
3044
|
+
* it matches `listByScope`'s visible surface, so `listScopes() × listByScope()` is exactly the full inbox,
|
|
3045
|
+
* and a member the summary does not project is read with `get(token)` on the listed token — the composition
|
|
3046
|
+
* a deployment's approval queue is, rather than a query of its own over the store's rows.
|
|
2974
3047
|
* **OPTIONAL** like {@link listByScope}; the in-memory and file first-party impls provide it.
|
|
2975
3048
|
*/
|
|
2976
3049
|
listScopes?(): Promise<string[]>;
|
|
3050
|
+
/** The PENDING rows of every scope past their deadline, one facet per call ({@link CheckpointOverdueQuery}; read by
|
|
3051
|
+
* `readCheckpointOverdueQuery`, keyset-paged, bounded). OPTIONAL, probed by presence; both first-party stores provide it. */
|
|
3052
|
+
listOverdue?(query: CheckpointOverdueQuery): Promise<CheckpointPage<CheckpointSummary, CheckpointOverdueCursor>>;
|
|
3053
|
+
/** The rows of ONE session in any status ({@link CheckpointSessionQuery}; read by `readCheckpointSessionQuery`, keyset-paged,
|
|
3054
|
+
* bounded; a damaged row of the session answers `unreadable`, never skipped — a row with no string session id belongs to no session and is left out, disclosed; the file replay drops a row with a non-string token, scope or status, disclosed there). OPTIONAL, probed by presence; both first-party stores provide it. */
|
|
3055
|
+
listBySession?(query: CheckpointSessionQuery): Promise<CheckpointPage<CheckpointRowRead, CheckpointSessionCursor>>;
|
|
3056
|
+
/** Delete the checkpoint rows of one session that exist when the call starts, in any status, when the guard admits it
|
|
3057
|
+
* ({@link CheckpointDeleteGuard}); answers the count. Present exactly when the store can judge the guard (a session head read). */
|
|
3058
|
+
deleteSessionCheckpoints?(sessionId: string, guard: CheckpointDeleteGuard): Promise<number>;
|
|
2977
3059
|
}
|
|
2978
3060
|
/**
|
|
2979
3061
|
* The SINGLE resolution of "which CheckpointStore does this run use" (ruled 2026-08-04; re-homed
|
|
@@ -3070,15 +3152,6 @@ export declare function appendPendingSteer(state: Pick<CheckpointState, "pending
|
|
|
3070
3152
|
* that backend's own correctness core and must never be absorbed into a shared abstraction).
|
|
3071
3153
|
*/
|
|
3072
3154
|
export declare function checkpointRowMatches(cp: Checkpoint | undefined, scope: string, status: Checkpoint["status"]): cp is Checkpoint;
|
|
3073
|
-
/**
|
|
3074
|
-
* REF-A4 — THE optimistic-concurrency half of `resolve`'s CAS predicate (design/80 D-1), shared by every
|
|
3075
|
-
* backend. The caller validated its reopen-by-reason guard against a `get()` snapshot; if a concurrent
|
|
3076
|
-
* resolve/reopen cycle moved the monotonic `rev` in the get→resolve window, that validation is stale ⇒
|
|
3077
|
-
* lose the CAS (fail-closed), forcing a re-get + re-validate. Keyed on `rev`, NOT on `reopenReason` — a
|
|
3078
|
-
* 2-valued enum can ABA back to a prior value while the winner changed (round-2 BLOCKER fix). An absent
|
|
3079
|
-
* expectation opts out of the guard entirely.
|
|
3080
|
-
*/
|
|
3081
|
-
export declare function checkpointOccMatches(cp: Checkpoint, expect?: ResolveExpectation): boolean;
|
|
3082
3155
|
/** Fault-injection mode for {@link InMemoryCheckpointStore.testInjectFault} (council #5). One-shot. */
|
|
3083
3156
|
export type CheckpointFaultMode =
|
|
3084
3157
|
/** `resolve` commits the CAS (status → resolved) then throws — simulates a crash *after* the commit
|
|
@@ -3117,8 +3190,26 @@ export declare class InMemoryCheckpointStore implements CheckpointStore {
|
|
|
3117
3190
|
readonly execution: {
|
|
3118
3191
|
readonly outcome: true;
|
|
3119
3192
|
};
|
|
3193
|
+
/** Declared exactly when the store was built with a `holderIsCurrent` judge ({@link CheckpointStore.fence}). */
|
|
3194
|
+
readonly fence?: {
|
|
3195
|
+
readonly holder: true;
|
|
3196
|
+
};
|
|
3120
3197
|
private cps;
|
|
3121
3198
|
private fault;
|
|
3199
|
+
private readonly disclose;
|
|
3200
|
+
private readonly holderIsCurrent;
|
|
3201
|
+
readonly deleteSessionCheckpoints?: (sessionId: string, guard: CheckpointDeleteGuard) => Promise<number>;
|
|
3202
|
+
/** `disclose` is the listing projections' own seat ({@link summarizeCheckpoint}'s and the listing faces'): this store has no
|
|
3203
|
+
* path, so it forwards each sentence for a row read past a damage, called synchronously by the listing that read it.
|
|
3204
|
+
* `sessionHeadOf` (a session store's `headOf`) is what {@link CheckpointStore.deleteSessionCheckpoints} judges its guard by.
|
|
3205
|
+
* `holderIsCurrent` ({@link HolderJudge}) is what a resolve's `expect.holder` is judged by. */
|
|
3206
|
+
constructor(opts?: {
|
|
3207
|
+
disclose?: (sentence: string) => void;
|
|
3208
|
+
sessionHeadOf?: (sessionId: string) => Promise<{
|
|
3209
|
+
readonly owner: string | null;
|
|
3210
|
+
} | undefined>;
|
|
3211
|
+
holderIsCurrent?: HolderJudge;
|
|
3212
|
+
});
|
|
3122
3213
|
put(token: CheckpointToken, cp: Checkpoint): Promise<void>;
|
|
3123
3214
|
get(token: CheckpointToken): Promise<Checkpoint | null>;
|
|
3124
3215
|
/** The loser's single-round-trip reading (claim law 1): what the row IS, in its own vocabulary —
|
|
@@ -3176,6 +3267,8 @@ export declare class InMemoryCheckpointStore implements CheckpointStore {
|
|
|
3176
3267
|
reap(scope: string, cutoff: number): Promise<number>;
|
|
3177
3268
|
listByScope(scope: string): Promise<CheckpointSummary[]>;
|
|
3178
3269
|
listScopes(): Promise<string[]>;
|
|
3270
|
+
listOverdue(query: CheckpointOverdueQuery): Promise<CheckpointPage<CheckpointSummary, CheckpointOverdueCursor>>;
|
|
3271
|
+
listBySession(query: CheckpointSessionQuery): Promise<CheckpointPage<CheckpointRowRead, CheckpointSessionCursor>>;
|
|
3179
3272
|
/** Arm a one-shot fault on the next `resolve` (council #5: makes crash-recovery unit-testable). */
|
|
3180
3273
|
testInjectFault(mode: CheckpointFaultMode | null): void;
|
|
3181
3274
|
/** Test/inspection helper: number of stored checkpoints. */
|