@sema-agent/core 7.48.0 → 7.49.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 +418 -0
- package/README.md +2 -2
- package/dist/agents/cascade.d.ts +2 -5
- package/dist/agents/child-failure.d.ts +20 -0
- package/dist/agents/child-failure.js +28 -0
- package/dist/agents/cross-session-ref.d.ts +11 -3
- package/dist/agents/cross-session-ref.js +6 -0
- package/dist/agents/cumulative-stats.d.ts +12 -15
- package/dist/agents/cumulative-stats.js +1 -1
- package/dist/agents/extra-tool-names.js +1 -1
- package/dist/agents/inherited-tool-pool.d.ts +17 -13
- package/dist/agents/inherited-tool-pool.js +4 -3
- package/dist/agents/peer-session-drain.d.ts +3 -2
- package/dist/agents/peer-session-drain.js +5 -4
- package/dist/agents/send-message-tool.js +2 -9
- package/dist/agents/subagent.d.ts +10 -29
- package/dist/agents/subagent.js +65 -53
- package/dist/agents/suspend-guard.d.ts +1 -1
- package/dist/agents/tool-filter.d.ts +76 -65
- package/dist/agents/tool-filter.js +122 -92
- package/dist/agents/verify.d.ts +4 -7
- package/dist/agents/verify.js +6 -7
- package/dist/bench/metrics.d.ts +1 -2
- package/dist/brain/anthropic.js +133 -79
- package/dist/brain/errors.d.ts +53 -6
- package/dist/brain/errors.js +22 -2
- package/dist/brain/input-too-long.d.ts +40 -19
- package/dist/brain/input-too-long.js +3 -16
- package/dist/brain/open-responses.js +19 -10
- package/dist/brain/openai.js +123 -32
- package/dist/brain/provider-dialect.d.ts +214 -0
- package/dist/brain/provider-dialect.js +186 -0
- package/dist/brain/request-params.d.ts +27 -8
- package/dist/brain/request-params.js +7 -12
- package/dist/brain/request-route.d.ts +84 -0
- package/dist/brain/request-route.js +41 -0
- package/dist/brain/retry.d.ts +8 -0
- package/dist/brain/retry.js +10 -4
- package/dist/brain/route-adjudicator.d.ts +7 -0
- package/dist/brain/route-adjudicator.js +5 -1
- package/dist/brain/status-sink.d.ts +20 -0
- package/dist/brain/status-sink.js +11 -0
- package/dist/brain/stream-engine.d.ts +52 -1
- package/dist/brain/stream-engine.js +81 -24
- package/dist/brain/stream-shared.d.ts +57 -11
- package/dist/brain/stream-shared.js +28 -2
- package/dist/core/a2a.d.ts +1 -0
- package/dist/core/agent-config-dir.js +3 -2
- package/dist/core/allow-entry.d.ts +21 -12
- package/dist/core/allow-entry.js +38 -31
- package/dist/core/arg-summary.d.ts +17 -24
- package/dist/core/arg-summary.js +169 -68
- package/dist/core/ask-origin.d.ts +42 -24
- package/dist/core/ask-origin.js +18 -13
- package/dist/core/auto-mode-prompt-assets.d.ts +2 -2
- package/dist/core/auto-mode-prompt-assets.js +1 -1
- package/dist/core/auto-mode-prompt.d.ts +11 -1
- package/dist/core/auto-mode-prompt.js +13 -10
- package/dist/core/auto-mode-rebuild.d.ts +7 -0
- package/dist/core/auto-mode-rebuild.js +4 -1
- package/dist/core/canonical-json.d.ts +3 -0
- package/dist/core/canonical-json.js +2 -1
- package/dist/core/checkpoint-requirements.d.ts +892 -0
- package/dist/core/checkpoint-requirements.js +333 -0
- package/dist/core/checkpoint-store.d.ts +94 -65
- package/dist/core/checkpoint-store.js +14 -26
- package/dist/core/child-clamp-seats.d.ts +228 -69
- package/dist/core/child-clamp-seats.js +211 -17
- package/dist/core/classifier-unavailable-arm.d.ts +5 -1
- package/dist/core/classifier-unavailable-arm.js +3 -3
- package/dist/core/compliance.d.ts +3 -0
- package/dist/core/compliance.js +9 -4
- package/dist/core/credential-vocabulary.d.ts +140 -0
- package/dist/core/credential-vocabulary.js +131 -0
- package/dist/core/decision-receipt.js +1 -1
- package/dist/core/effective-path-target.d.ts +73 -16
- package/dist/core/effective-path-target.js +63 -33
- package/dist/core/engine-notice.d.ts +32 -7
- package/dist/core/file-history-store.js +2 -2
- package/dist/core/fs-write-gate-policy.d.ts +4 -0
- package/dist/core/fs-write-gate-policy.js +22 -5
- package/dist/core/gate-bounded-await.d.ts +28 -13
- package/dist/core/gate-bounded-await.js +41 -4
- package/dist/core/gate-fold.d.ts +1 -1
- package/dist/core/gate-fold.js +24 -25
- package/dist/core/gate-lanes.js +16 -15
- package/dist/core/gate-outcome.d.ts +20 -5
- package/dist/core/gate-outcome.js +5 -0
- package/dist/core/governance-codes.d.ts +11 -4
- package/dist/core/governance-codes.js +14 -3
- package/dist/core/hooks.d.ts +4 -0
- package/dist/core/locked-config.d.ts +8 -0
- package/dist/core/locked-config.js +14 -2
- package/dist/core/lsp.js +3 -5
- package/dist/core/mailbox-store.d.ts +3 -4
- package/dist/core/mcp-connection-pool.d.ts +75 -0
- package/dist/core/mcp-connection-pool.js +128 -0
- package/dist/core/mcp-failure.d.ts +2 -1
- package/dist/core/mcp-failure.js +13 -2
- package/dist/core/mcp.d.ts +4 -0
- package/dist/core/mcp.js +70 -43
- package/dist/core/memory-engine/content-origin.js +2 -14
- package/dist/core/memory-engine/engine.d.ts +32 -22
- package/dist/core/memory-engine/engine.js +103 -55
- package/dist/core/memory-engine/file-backend.d.ts +13 -30
- package/dist/core/memory-engine/file-backend.js +37 -252
- package/dist/core/memory-engine/index.d.ts +1 -1
- package/dist/core/memory-engine/index.js +1 -1
- package/dist/core/memory-engine/layout.d.ts +139 -9
- package/dist/core/memory-engine/layout.js +350 -7
- package/dist/core/memory-engine/scope-contract.d.ts +10 -0
- package/dist/core/memory-engine/scope-contract.js +8 -0
- package/dist/core/memory-engine/session-incarnation.d.ts +14 -4
- package/dist/core/memory-engine/session-incarnation.js +5 -2
- package/dist/core/memory-engine/types.d.ts +10 -1
- package/dist/core/memory.js +5 -17
- package/dist/core/model-seat.d.ts +4 -4
- package/dist/core/model-seat.js +1 -1
- package/dist/core/mounted-mcp.d.ts +57 -0
- package/dist/core/mounted-mcp.js +19 -0
- package/dist/core/namespaced-rule-name.d.ts +29 -0
- package/dist/core/namespaced-rule-name.js +52 -0
- package/dist/core/park-selfcheck.d.ts +1 -1
- package/dist/core/park-selfcheck.js +16 -6
- package/dist/core/path-guard-rows.d.ts +99 -0
- package/dist/core/path-guard-rows.js +45 -0
- package/dist/core/path-identity.d.ts +22 -16
- package/dist/core/path-identity.js +10 -10
- package/dist/core/path-rule-binding.d.ts +2 -1
- package/dist/core/path-rule-binding.js +3 -1
- package/dist/core/pause-registry.d.ts +16 -2
- package/dist/core/pause-registry.js +6 -0
- package/dist/core/permission-rule-consent.js +0 -7
- package/dist/core/permission-rule-model.d.ts +68 -24
- package/dist/core/permission-rule-model.js +105 -24
- package/dist/core/permission-rule-store.js +2 -2
- package/dist/core/permission-rules.d.ts +3 -30
- package/dist/core/permission-rules.js +4 -54
- package/dist/core/read-root-candidate.d.ts +1 -3
- package/dist/core/read-root-candidate.js +4 -15
- package/dist/core/real-approval.d.ts +4 -3
- package/dist/core/retired-keys.d.ts +13 -0
- package/dist/core/retired-keys.js +14 -0
- package/dist/core/roles.d.ts +2 -3
- package/dist/core/roles.js +15 -6
- package/dist/core/runner/assemble-result.d.ts +0 -7
- package/dist/core/runner/assemble-result.js +19 -31
- package/dist/core/runner/caller-roster.d.ts +78 -0
- package/dist/core/runner/caller-roster.js +219 -0
- package/dist/core/runner/checkpoint-scope.d.ts +16 -16
- package/dist/core/runner/checkpoint-scope.js +2 -2
- package/dist/core/runner/child-tree.js +2 -2
- package/dist/core/runner/contracts.d.ts +68 -35
- package/dist/core/runner/decide-continuation.d.ts +51 -3
- package/dist/core/runner/decide-continuation.js +76 -21
- package/dist/core/runner/denial-limit-arms.d.ts +17 -5
- package/dist/core/runner/denial-limit-arms.js +11 -9
- package/dist/core/runner/extra-body-dropped-seat.d.ts +8 -0
- package/dist/core/runner/extra-body-dropped-seat.js +22 -0
- package/dist/core/runner/finish-reason-seat.d.ts +9 -0
- package/dist/core/runner/finish-reason-seat.js +40 -0
- package/dist/core/runner/gate-exit.d.ts +44 -32
- package/dist/core/runner/gate-exit.js +112 -25
- package/dist/core/runner/inherited-ask-grants.js +6 -4
- package/dist/core/runner/mcp-redial.d.ts +3 -3
- package/dist/core/runner/mcp-redial.js +3 -4
- package/dist/core/runner/permission-rule-lanes.d.ts +1 -2
- package/dist/core/runner/permission-rule-lanes.js +5 -4
- package/dist/core/runner/prepare-artifact.d.ts +4 -0
- package/dist/core/runner/prepare-artifact.js +2 -1
- package/dist/core/runner/prepare-ask-lane.d.ts +2 -0
- package/dist/core/runner/prepare-ask-lane.js +12 -6
- package/dist/core/runner/prepare-boundary-parks.d.ts +5 -8
- package/dist/core/runner/prepare-boundary-parks.js +4 -7
- package/dist/core/runner/prepare-caps-and-workflow.d.ts +11 -15
- package/dist/core/runner/prepare-caps-and-workflow.js +19 -27
- package/dist/core/runner/prepare-config-doors.d.ts +9 -9
- package/dist/core/runner/prepare-config-doors.js +10 -5
- package/dist/core/runner/prepare-defer-classify.d.ts +2 -2
- package/dist/core/runner/prepare-defer-classify.js +5 -3
- package/dist/core/runner/prepare-delegation-surface.d.ts +1 -1
- package/dist/core/runner/prepare-delegation-surface.js +3 -3
- package/dist/core/runner/prepare-gate-stations.d.ts +4 -4
- package/dist/core/runner/prepare-gate-stations.js +9 -7
- package/dist/core/runner/prepare-hands-readface.d.ts +7 -7
- package/dist/core/runner/prepare-hands-readface.js +7 -7
- package/dist/core/runner/prepare-inherited-gate.d.ts +7 -6
- package/dist/core/runner/prepare-inherited-gate.js +14 -15
- package/dist/core/runner/prepare-listings.d.ts +7 -24
- package/dist/core/runner/prepare-listings.js +4 -5
- package/dist/core/runner/prepare-memory-engine-session.d.ts +2 -0
- package/dist/core/runner/prepare-memory-engine-session.js +4 -3
- package/dist/core/runner/prepare-memory.d.ts +6 -0
- package/dist/core/runner/prepare-memory.js +13 -13
- package/dist/core/runner/prepare-offload-wrappers.d.ts +5 -0
- package/dist/core/runner/prepare-offload-wrappers.js +3 -3
- package/dist/core/runner/prepare-park-ask.d.ts +7 -8
- package/dist/core/runner/prepare-park-ask.js +17 -10
- package/dist/core/runner/prepare-policy-chain.js +24 -44
- package/dist/core/runner/prepare-project-context.d.ts +1 -1
- package/dist/core/runner/prepare-project-context.js +3 -4
- package/dist/core/runner/prepare-protocol-tools.d.ts +9 -3
- package/dist/core/runner/prepare-protocol-tools.js +3 -4
- package/dist/core/runner/prepare-run-refs.d.ts +3 -0
- package/dist/core/runner/prepare-run-refs.js +2 -1
- package/dist/core/runner/prepare-safety-scan.d.ts +4 -8
- package/dist/core/runner/prepare-safety-scan.js +1 -2
- package/dist/core/runner/prepare-suspend-saga.d.ts +7 -1
- package/dist/core/runner/prepare-suspend-saga.js +28 -12
- package/dist/core/runner/prepare-task.d.ts +1 -1
- package/dist/core/runner/prepare-task.js +67 -56
- package/dist/core/runner/prepare-wiring-manifest.d.ts +11 -10
- package/dist/core/runner/prepare-wiring-manifest.js +5 -8
- package/dist/core/runner/resume-apply.js +7 -14
- package/dist/core/runner/resume-checkpoint-screen.js +11 -4
- package/dist/core/runner/resume-internals-and-config.js +2 -2
- package/dist/core/runner/resume-policy-outcome.js +5 -32
- package/dist/core/runner/resume-review-outcome.js +4 -1
- package/dist/core/runner/retired-runner-deps.d.ts +6 -0
- package/dist/core/runner/retired-runner-deps.js +10 -1
- package/dist/core/runner/run-brain-sinks.d.ts +4 -0
- package/dist/core/runner/run-brain-sinks.js +5 -2
- package/dist/core/runner/run-harness-handlers.js +27 -34
- package/dist/core/runner/run-leg.d.ts +0 -2
- package/dist/core/runner/run-leg.js +32 -33
- package/dist/core/runner/run-terminal-adoption.js +4 -3
- package/dist/core/runner/runtask.js +8 -8
- package/dist/core/runner/session-rule-policy.js +5 -5
- package/dist/core/runner/stream-settle-backstop.js +7 -4
- package/dist/core/runner/sub-agent-deny-lists.d.ts +51 -12
- package/dist/core/runner/sub-agent-deny-lists.js +111 -80
- package/dist/core/runner/terminal-account.d.ts +48 -0
- package/dist/core/runner/terminal-account.js +186 -0
- package/dist/core/runner/tool-end-body.d.ts +54 -17
- package/dist/core/runner/tool-end-body.js +27 -2
- package/dist/core/runner/tool-face-overlay.d.ts +3 -1
- package/dist/core/runner/tool-face-overlay.js +6 -4
- package/dist/core/runner/tool-occurrence.d.ts +106 -0
- package/dist/core/runner/tool-occurrence.js +123 -0
- package/dist/core/runner/tool-progress-lane.d.ts +16 -8
- package/dist/core/runner/tool-progress-lane.js +25 -34
- package/dist/core/runner/turn-attachments.d.ts +1 -1
- package/dist/core/runner/write-protection-station.d.ts +21 -9
- package/dist/core/runner/write-protection-station.js +20 -17
- package/dist/core/runner-deps.d.ts +12 -22
- package/dist/core/secret-env.d.ts +16 -5
- package/dist/core/secret-env.js +23 -63
- package/dist/core/sensitive-path-policy.d.ts +19 -18
- package/dist/core/sensitive-path-policy.js +73 -49
- package/dist/core/session-reconcile.d.ts +3 -0
- package/dist/core/session-reconcile.js +5 -4
- package/dist/core/session-store.d.ts +5 -0
- package/dist/core/session-store.js +12 -0
- package/dist/core/session.d.ts +13 -0
- package/dist/core/shared-memory/normalize.d.ts +17 -4
- package/dist/core/shared-memory/normalize.js +7 -7
- package/dist/core/shell-lexer.js +5 -4
- package/dist/core/skill-grant.js +1 -1
- package/dist/core/store-contracts/checkpoint-store-contract.js +13 -0
- package/dist/core/store-contracts/mailbox-store-contract.d.ts +7 -14
- package/dist/core/store-contracts/session-store-incarnation-contract.d.ts +27 -0
- package/dist/core/store-contracts/session-store-incarnation-contract.js +92 -0
- package/dist/core/stub-env.d.ts +2 -0
- package/dist/core/stub-env.js +1 -0
- package/dist/core/synthetic-read-verdict.js +2 -2
- package/dist/core/task-event.d.ts +59 -5
- package/dist/core/task-result.d.ts +1 -1
- package/dist/core/task-spec.d.ts +42 -9
- package/dist/core/terminal-cause.d.ts +94 -11
- package/dist/core/tighten-task-spec.d.ts +5 -4
- package/dist/core/tighten-task-spec.js +20 -25
- package/dist/core/tool-catalog-entries.d.ts +5 -7
- package/dist/core/tool-catalog-entries.js +14 -15
- package/dist/core/tool-face.d.ts +47 -0
- package/dist/core/tool-face.js +5 -0
- package/dist/core/tool-model-gate.d.ts +5 -5
- package/dist/core/tool-name-aliases.d.ts +26 -2
- package/dist/core/tool-name-aliases.js +13 -0
- package/dist/core/tool-name-list.d.ts +30 -0
- package/dist/core/tool-name-list.js +55 -0
- package/dist/core/tool-name-readings.d.ts +1 -9
- package/dist/core/tool-name-readings.js +1 -3
- package/dist/core/tool-policy.d.ts +195 -85
- package/dist/core/tool-policy.js +165 -380
- package/dist/core/tool-registry.d.ts +44 -1
- package/dist/core/tool-registry.js +26 -0
- package/dist/core/tool-roster.d.ts +19 -1
- package/dist/core/tool-roster.js +21 -2
- package/dist/core/tool-spec-members.d.ts +45 -0
- package/dist/core/tool-spec-members.js +169 -0
- package/dist/core/tool-spec.d.ts +46 -8
- package/dist/core/tools.d.ts +6 -2
- package/dist/core/tools.js +8 -4
- package/dist/core/untrusted-egress.js +29 -26
- package/dist/core/untrusted-text.d.ts +13 -10
- package/dist/core/untrusted-text.js +6 -44
- package/dist/core/workflow-journal-store.d.ts +4 -1
- package/dist/core/write-protect.d.ts +65 -29
- package/dist/core/write-protect.js +235 -177
- package/dist/engine/compaction/compaction.d.ts +2 -2
- package/dist/engine/execution-env/node-execution-env.d.ts +5 -23
- package/dist/engine/execution-env/node-execution-env.js +16 -38
- package/dist/engine/execution-env/symlink-chain.d.ts +23 -0
- package/dist/engine/execution-env/symlink-chain.js +32 -0
- package/dist/engine/harness/types.d.ts +7 -0
- package/dist/engine/llm/tool-turns.d.ts +3 -0
- package/dist/engine/llm/tool-turns.js +1 -0
- package/dist/engine/llm/types.d.ts +59 -23
- package/dist/engine/loop/agent-loop.js +16 -2
- package/dist/engine/session/memory-repo.js +11 -3
- package/dist/engine/session/repo-utils.d.ts +8 -0
- package/dist/engine/session/repo-utils.js +13 -0
- package/dist/index.d.ts +20 -23
- package/dist/index.js +17 -20
- package/dist/internal/harness.d.ts +1 -1
- package/dist/internal/harness.js +1 -1
- package/dist/internal/llm.d.ts +2 -2
- package/dist/internal/llm.js +1 -1
- package/dist/orchestration/governance-baseline-validity.js +1 -1
- package/dist/orchestration/run-spec.js +3 -3
- package/dist/orchestration/run-workflow-tool.d.ts +16 -35
- package/dist/orchestration/run-workflow-tool.js +38 -78
- package/dist/orchestration/workflow-governance.d.ts +21 -25
- package/dist/orchestration/workflow-governance.js +38 -78
- package/dist/orchestration/workflow-primitives.d.ts +7 -22
- package/dist/orchestration/workflow-primitives.js +5 -12
- package/dist/orchestration/workflow-types.d.ts +1 -1
- package/dist/orchestration/workflow.d.ts +61 -11
- package/dist/orchestration/workflow.js +189 -117
- package/dist/scenarios/full-body.d.ts +1 -1
- package/dist/shell/lex.d.ts +0 -21
- package/dist/shell/lex.js +250 -68
- package/dist/shell/shell-words.d.ts +35 -0
- package/dist/shell/shell-words.js +65 -0
- package/dist/stores/file/checkpoint-store.d.ts +5 -5
- package/dist/stores/file/checkpoint-store.js +5 -2
- package/dist/stores/file/index.d.ts +0 -8
- package/dist/stores/file/index.js +0 -12
- package/dist/stores/file/session-store.d.ts +3 -0
- package/dist/stores/file/session-store.js +44 -19
- package/dist/tools/artifact/artifact-tool.js +2 -0
- package/dist/tools/fs/bash-program-position.d.ts +10 -3
- package/dist/tools/fs/bash-program-position.js +21 -9
- package/dist/tools/fs/bash-readonly-classifier.d.ts +1 -1
- package/dist/tools/fs/bash-readonly-classifier.js +8 -7
- package/dist/tools/fs/containment-face.d.ts +4 -0
- package/dist/tools/fs/containment-face.js +3 -0
- package/dist/tools/fs/fs-shared.d.ts +10 -0
- package/dist/tools/fs/fs-shared.js +18 -0
- package/dist/tools/fs/fs-write.js +4 -2
- package/dist/tools/fs/index.d.ts +1 -1
- package/dist/tools/fs/program-read-model.d.ts +39 -18
- package/dist/tools/fs/program-read-model.js +29 -19
- package/dist/tools/fs/program-read-model.rows.d.ts +0 -14
- package/dist/tools/fs/program-read-model.rows.js +5 -5
- package/dist/tools/fs/read-deny-home.d.ts +33 -47
- package/dist/tools/fs/read-deny-home.js +35 -49
- package/dist/tools/fs/read-deny.d.ts +23 -22
- package/dist/tools/fs/read-deny.js +114 -89
- package/dist/tools/fs/removal-targets.d.ts +56 -23
- package/dist/tools/fs/removal-targets.js +65 -87
- package/dist/tools/fs/safety.d.ts +29 -22
- package/dist/tools/fs/safety.js +17 -11
- package/dist/tools/fs/search.js +10 -8
- package/dist/tools/fs/shell-read-argv.js +1 -1
- package/dist/tools/fs/shell-read-bindings.d.ts +169 -37
- package/dist/tools/fs/shell-read-bindings.js +324 -86
- package/dist/tools/fs/shell-read-builtins.d.ts +35 -0
- package/dist/tools/fs/shell-read-builtins.js +43 -0
- package/dist/tools/fs/shell-read-check.d.ts +15 -1
- package/dist/tools/fs/shell-read-check.js +51 -42
- package/dist/tools/fs/shell-read-establish.js +6 -6
- package/dist/tools/fs/shell-read-functions.d.ts +22 -0
- package/dist/tools/fs/shell-read-functions.js +29 -0
- package/dist/tools/fs/shell-read-judge.d.ts +48 -18
- package/dist/tools/fs/shell-read-judge.js +33 -4
- package/dist/tools/fs/shell-read-plan.d.ts +12 -6
- package/dist/tools/fs/shell-read-plan.js +118 -113
- package/dist/tools/fs/shell-read-start.d.ts +29 -6
- package/dist/tools/fs/shell-read-start.js +16 -9
- package/dist/tools/fs/shell-read-word.js +4 -0
- package/dist/tools/fs/shell-read-workdir.d.ts +156 -0
- package/dist/tools/fs/shell-read-workdir.js +281 -0
- package/dist/tools/fs/shell-read-write-targets.d.ts +5 -2
- package/dist/tools/fs/shell-read-write-targets.js +14 -5
- package/dist/tools/fs/shell-reentry-text.d.ts +4 -6
- package/dist/tools/fs/shell-reentry-text.js +3 -11
- package/dist/tools/task-list.d.ts +1 -2
- package/dist/tools/web.js +1 -1
- package/package.json +4 -1
- package/test/export-surface.snapshot.json +107 -143
- package/wire-changes/core@7.49.0.json +4765 -0
- package/dist/agents/teacher.d.ts +0 -159
- package/dist/agents/teacher.js +0 -577
- package/dist/agents/team.d.ts +0 -226
- package/dist/agents/team.js +0 -257
- package/dist/core/strategy-store.d.ts +0 -238
- package/dist/core/strategy-store.js +0 -253
- package/dist/orchestration/builtin-workflows.d.ts +0 -133
- package/dist/orchestration/builtin-workflows.js +0 -159
- package/dist/scenarios/env.d.ts +0 -40
- package/dist/scenarios/env.js +0 -39
- package/dist/scenarios/scenario-registry.d.ts +0 -110
- package/dist/scenarios/scenario-registry.js +0 -140
- package/dist/scenarios/teacher-quickstart.d.ts +0 -40
- package/dist/scenarios/teacher-quickstart.js +0 -12
- package/dist/stores/cc/lockfile.d.ts +0 -10
- package/dist/stores/cc/lockfile.js +0 -98
- package/dist/stores/cc/mailbox-store.d.ts +0 -20
- package/dist/stores/cc/mailbox-store.js +0 -255
- package/dist/stores/cc/roster-adapter.d.ts +0 -12
- package/dist/stores/cc/roster-adapter.js +0 -117
- package/dist/stores/cc/sidecar-transcript.d.ts +0 -97
- package/dist/stores/cc/sidecar-transcript.js +0 -264
- package/dist/stores/cc/task-list-store.d.ts +0 -2
- package/dist/stores/cc/task-list-store.js +0 -125
- package/dist/stores/file/strategy-store.d.ts +0 -97
- package/dist/stores/file/strategy-store.js +0 -341
|
@@ -150,8 +150,9 @@ export declare function scanEnvelopeShaped(text: string): EnvelopeShapedScan;
|
|
|
150
150
|
*
|
|
151
151
|
* NOTE the two sanctioned escape SHAPES in this tree, and why they are not merged: this one inserts
|
|
152
152
|
* a backslash (`<` → `<\`) because it is a byte-level CC anchor on the observer/teammate lanes;
|
|
153
|
-
* {@link sanitizeUntrustedText}
|
|
154
|
-
*
|
|
153
|
+
* {@link sanitizeUntrustedText} writes the entity `<` in the bracket's place, CC's own spelling
|
|
154
|
+
* for its reminder-tag escapers. Both are idempotent, both break the tag, and both are printable
|
|
155
|
+
* ASCII that no format-character cleaning can remove; a merge would move bytes on one of the two
|
|
155
156
|
* families for no security gain.
|
|
156
157
|
*/
|
|
157
158
|
export declare function escapeEnvelopeTag(tag: string, text: string): string;
|
|
@@ -221,10 +222,11 @@ export declare function defuseExactMarkInSegments(segments: readonly string[], m
|
|
|
221
222
|
/**
|
|
222
223
|
* Neutralize structural break-out sequences in UNTRUSTED text so it can't escape its framing into
|
|
223
224
|
* model-facing instructions. Always neutralizes `<system-reminder>` / `</system-reminder>` (the codebase's
|
|
224
|
-
* elevated-authority wrapper) by
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
225
|
+
* elevated-authority wrapper) by writing the entity {@link ESCAPED_LT} in place of the leading `<` (a form no
|
|
226
|
+
* format-character or whitespace cleaning removes — see there). Pass `extraTags` to also
|
|
227
|
+
* neutralize a CALLER's own data-framing tags — e.g. memory recall frames note text inside its own injection
|
|
228
|
+
* tags, so an untrusted note could emit the closing tag to break out; the caller passes those tag names
|
|
229
|
+
* (`MEMORY_INJECTION_TAGS`). Tag names must be literal (alphanumeric/hyphen) — they are code-supplied
|
|
228
230
|
* wrapper names, never untrusted input. Idempotent for prompt assembly (a defused tag no longer matches).
|
|
229
231
|
*
|
|
230
232
|
* WHY THE ALWAYS-ON SET IS ONE TAG AND NOT THE WHOLE {@link ENGINE_ENVELOPES} AUTHORITY FAMILY: this is a
|
|
@@ -344,8 +346,9 @@ export declare function flattenableUserText(content: unknown): string | undefine
|
|
|
344
346
|
* cannot forge {@link delimitUntrusted}'s own OPEN/CLOSE markers and break out of the fence. A worker (or
|
|
345
347
|
* an external page via `web_fetch`, an MCP resource — the label format is open-source, so the close marker
|
|
346
348
|
* `<<<END UNTRUSTED <label>>>>` is guessable) could otherwise emit the literal close marker followed by
|
|
347
|
-
* top-level injection. Caps any run of 3+ identical brackets at 2 consecutive by
|
|
348
|
-
*
|
|
349
|
+
* top-level injection. Caps any run of 3+ identical brackets at 2 consecutive by writing the entity
|
|
350
|
+
* ({@link ESCAPED_LT} / {@link ESCAPED_GT}) in place of every third bracket — the reader still sees the text,
|
|
351
|
+
* no `<<<`/`>>>` triple survives, and no format-character cleaning can put one back. Idempotent: a capped run
|
|
349
352
|
* (≤2) never re-matches `{3,}`. Defusing EITHER bracket breaks the marker; we defuse both for symmetry.
|
|
350
353
|
*
|
|
351
354
|
* Residual (council QUESTION, accepted): only ASCII `<`/`>` (U+003C/003E) are defused. A Unicode lookalike
|
|
@@ -440,8 +443,8 @@ export declare function delimitUntrusted(label: string, text: string, maxBody?:
|
|
|
440
443
|
* the fence really carries instead of re-deriving the transform from its own copy of the tag list.
|
|
441
444
|
*
|
|
442
445
|
* Two copies of that list is precisely what drifted once the fenced lane widened past the reminder tag:
|
|
443
|
-
* a caller pre-counting with the default (reminder-only) set under-measured the wide-set result by
|
|
444
|
-
*
|
|
446
|
+
* a caller pre-counting with the default (reminder-only) set under-measured the wide-set result by the
|
|
447
|
+
* rewrite's few extra characters per widened-family tag occurrence, so a body got clipped while the truncation disclosure that
|
|
445
448
|
* decision drove was withheld — an externally selectable window just under the cap. Idempotent (both
|
|
446
449
|
* halves are), so a caller may hand the neutralized string straight back to the fence.
|
|
447
450
|
*/
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const ESCAPED_LT = "<";
|
|
2
|
+
const ESCAPED_GT = ">";
|
|
1
3
|
const ZWSP = String.fromCharCode(0x200b);
|
|
2
4
|
export const ENGINE_ENVELOPES = Object.freeze([
|
|
3
5
|
{
|
|
@@ -83,8 +85,8 @@ export const ENGINE_ENVELOPES = Object.freeze([
|
|
|
83
85
|
{
|
|
84
86
|
tag: "previous-summary",
|
|
85
87
|
kind: "framing",
|
|
86
|
-
mint: "engine/compaction (update-summarization input)
|
|
87
|
-
guard: "
|
|
88
|
+
mint: "engine/compaction (update-summarization input)",
|
|
89
|
+
guard: "frames engine-held text (the previous summary the engine itself produced)",
|
|
88
90
|
fenced: false,
|
|
89
91
|
disclosed: false,
|
|
90
92
|
},
|
|
@@ -104,46 +106,6 @@ export const ENGINE_ENVELOPES = Object.freeze([
|
|
|
104
106
|
fenced: false,
|
|
105
107
|
disclosed: false,
|
|
106
108
|
},
|
|
107
|
-
{
|
|
108
|
-
tag: "statement",
|
|
109
|
-
kind: "framing",
|
|
110
|
-
mint: "agents/team.ts (member statement frame)",
|
|
111
|
-
guard: "sanitizeUntrustedText(NEUTRALIZED_WRAPPER_TAGS) on every member text",
|
|
112
|
-
fenced: false,
|
|
113
|
-
disclosed: false,
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
tag: "discussion",
|
|
117
|
-
kind: "framing",
|
|
118
|
-
mint: "agents/team.ts",
|
|
119
|
-
guard: "same NEUTRALIZED_WRAPPER_TAGS family",
|
|
120
|
-
fenced: false,
|
|
121
|
-
disclosed: false,
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
tag: "discussion-final",
|
|
125
|
-
kind: "framing",
|
|
126
|
-
mint: "agents/team.ts",
|
|
127
|
-
guard: "same NEUTRALIZED_WRAPPER_TAGS family",
|
|
128
|
-
fenced: false,
|
|
129
|
-
disclosed: false,
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
tag: "earlier-discussion-summary",
|
|
133
|
-
kind: "framing",
|
|
134
|
-
mint: "agents/team.ts",
|
|
135
|
-
guard: "same NEUTRALIZED_WRAPPER_TAGS family",
|
|
136
|
-
fenced: false,
|
|
137
|
-
disclosed: false,
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
tag: "topic",
|
|
141
|
-
kind: "framing",
|
|
142
|
-
mint: "agents/team.ts",
|
|
143
|
-
guard: "same NEUTRALIZED_WRAPPER_TAGS family",
|
|
144
|
-
fenced: false,
|
|
145
|
-
disclosed: false,
|
|
146
|
-
},
|
|
147
109
|
{
|
|
148
110
|
tag: "observer-report",
|
|
149
111
|
kind: "framing",
|
|
@@ -502,7 +464,7 @@ export function defuseExactMarkInSegments(segments, mark) {
|
|
|
502
464
|
return { segments: out, changed: true };
|
|
503
465
|
}
|
|
504
466
|
export function sanitizeUntrustedText(text, extraTags = []) {
|
|
505
|
-
return text.replace(breakoutRe(extraTags), (m) => m.
|
|
467
|
+
return text.replace(breakoutRe(extraTags), (m) => ESCAPED_LT + m.slice(1));
|
|
506
468
|
}
|
|
507
469
|
export function cutEnginePrefix(text, enginePrefixChars) {
|
|
508
470
|
if (typeof enginePrefixChars === "number" &&
|
|
@@ -574,7 +536,7 @@ export function flattenableUserText(content) {
|
|
|
574
536
|
return undefined;
|
|
575
537
|
}
|
|
576
538
|
export function defuseFenceMarkers(body) {
|
|
577
|
-
return body.replace(/<{3,}|>{3,}/g, (run) => run.
|
|
539
|
+
return body.replace(/<{3,}|>{3,}/g, (run) => run.replace(/(..)./g, (_g, keep) => keep + (run.startsWith("<") ? ESCAPED_LT : ESCAPED_GT)));
|
|
578
540
|
}
|
|
579
541
|
const REPLACEMENT = "�";
|
|
580
542
|
export function defuseControlChars(text) {
|
|
@@ -65,7 +65,10 @@ export interface WorkflowJournalStore {
|
|
|
65
65
|
/** Entries for `runId` IF its recorded scope === `scope`, ASCENDING by ordinal; otherwise EMPTY (cross-scope). */
|
|
66
66
|
load(runId: string, scope: string): Promise<WorkflowJournalEntry[]>;
|
|
67
67
|
/** Record one agent's result under `(runId, scope)`. MUST be idempotent per `(runId, ordinal)` — a resumed run
|
|
68
|
-
* re-appends the cached results of its replayed prefix, so a second append for the same ordinal overwrites.
|
|
68
|
+
* re-appends the cached results of its replayed prefix, so a second append for the same ordinal overwrites.
|
|
69
|
+
* The engine waits for the returned promise at most `RunWorkflowOptions.journalAppendTimeoutMs` (default 30 s);
|
|
70
|
+
* a store that has not answered by then is a store fault (`workflow.journal_append_timeout`), and the write is
|
|
71
|
+
* NOT cancelled — it may still land after the engine gave up on it, which idempotence makes harmless. */
|
|
69
72
|
append(runId: string, scope: string, entry: WorkflowJournalEntry): Promise<void>;
|
|
70
73
|
/** (CC diagnostics parity, additive): a HUMAN/MODEL-readable coordinate for this run's journal —
|
|
71
74
|
* the file store returns the on-disk jsonl path (CC "Read journal.jsonl" local form); a service store
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ExecutionEnv } from "../internal/harness-types.js";
|
|
2
2
|
import type { PermissionResult } from "./tool-policy.js";
|
|
3
|
-
import { type AskFace } from "./ask-origin.js";
|
|
4
3
|
import { type ToolCallLike } from "./tool-registry.js";
|
|
5
4
|
/**
|
|
6
5
|
* How one table row matches the judged path:
|
|
@@ -51,6 +50,12 @@ export declare const WRITE_PROTECTED_DEFAULT_TABLE: readonly WriteProtectedRow[]
|
|
|
51
50
|
* named `a:b` keeps its own identity on the POSIX reading.
|
|
52
51
|
*/
|
|
53
52
|
export declare function foldWriteProtectSegment(s: string): string;
|
|
53
|
+
/** One entry's refusal under the table's entry law ({@link normalizeWriteProtectedEntry}), labelled with the seat that
|
|
54
|
+
* carried it, or `undefined` when the entry is lawful. */
|
|
55
|
+
export declare function writeProtectedEntryProblem(entry: unknown, owner: string): string | undefined;
|
|
56
|
+
/** The key two LAWFUL entries fold by — the resolved table's own dedupe key (kind + the folded canonical name), so a
|
|
57
|
+
* list folded by it and the table resolved from it agree on which entries are one row. */
|
|
58
|
+
export declare function writeProtectedEntryIdentity(entry: WriteProtectedEntry): string;
|
|
54
59
|
/**
|
|
55
60
|
* Resolve the ACTIVE table under the deployment seat (validated, loud — #123's bad-value states all
|
|
56
61
|
* throw and name the knob). `undefined` = the default table; `[]` = NO table (an explicit, legal
|
|
@@ -61,6 +66,14 @@ export declare function foldWriteProtectSegment(s: string): string;
|
|
|
61
66
|
* candidate configuration with the engine's own rules.
|
|
62
67
|
*/
|
|
63
68
|
export declare function resolveWriteProtectedTable(entries?: readonly WriteProtectedEntry[]): readonly WriteProtectedRow[];
|
|
69
|
+
/**
|
|
70
|
+
* THE spelled half of the exemption law (path-guard-rows.ts), for every table whose rows are exemptible: compiled once over
|
|
71
|
+
* the declared data-root spellings ({@link dataRootSpellings}, each read under ITS OWN path family — a spelling that reduces to
|
|
72
|
+
* NO segments, a root of `/`, exempts nothing rather than the filesystem), it answers a SPELLED view's remainder below
|
|
73
|
+
* whichever root contains it (`""` = the root itself, `null` = none) by {@link relativeUnderDataRoot}'s one literal reading.
|
|
74
|
+
* The identity half compares canonical keys (`relativeUnderRoot`, sensitive-path-policy.ts).
|
|
75
|
+
*/
|
|
76
|
+
export declare function spelledExemptionOf(dataRootPaths: readonly string[]): (spelling: string) => string | null;
|
|
64
77
|
/**
|
|
65
78
|
* WHY the ENVIRONMENT half of one judgment could not contribute — the canonicalizer refused the spelling,
|
|
66
79
|
* a link the tree could not follow, a namespace spelling it declines, an environment call that threw.
|
|
@@ -80,13 +93,12 @@ export interface WriteProtectionViewAbsence {
|
|
|
80
93
|
* · `hit` — a row matched; `via` says which view named it: `"spelling"` (the anchored spelling, no
|
|
81
94
|
* filesystem consulted), `"chain"` (a spelling the leaf symlink chain passes through, judged as a
|
|
82
95
|
* spelling) or `"target"` (the resolved real target, the spelling being innocent);
|
|
83
|
-
* · `unresolvable` —
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* `false`: a wait that produced nothing knows nothing about what it was waiting for.
|
|
96
|
+
* · `unresolvable` — no view that answered met a row, and where the target really lands (its real target, its link chain)
|
|
97
|
+
* could not be determined — refused, not asked (`writeProtectionTightenDecision`): a write this table cannot judge is not
|
|
98
|
+
* made on its word (the one absence law's second sentence, path-guard-rows.ts). `cause` is the environment's sentence.
|
|
99
|
+
*
|
|
100
|
+
* An auxiliary view that did not answer (a root's key) takes no part; every absence is disclosed
|
|
101
|
+
* ({@link WriteProtectionCompileOptions.onViewAbsent}).
|
|
90
102
|
*/
|
|
91
103
|
export type WriteProtectionVerdict = {
|
|
92
104
|
readonly kind: "clear";
|
|
@@ -107,7 +119,9 @@ export interface WriteProtectionJudgeContext {
|
|
|
107
119
|
* ({@link pathTargetBaseOf}). Absent ⇒ `cwd`, then the compile-time `rootPath`, then the environment's
|
|
108
120
|
* own working directory: the same fallback chain the write tool itself walks. */
|
|
109
121
|
readonly base?: string;
|
|
110
|
-
/**
|
|
122
|
+
/** The judgment's deadline (the gate hands its own): each environment lookup — the real target, the link chain, a root's
|
|
123
|
+
* key — is bounded by it ON ITS OWN, and one that does not answer in time is absent while every row already met stays met.
|
|
124
|
+
* Absent ⇒ each lookup is bounded by the gate's default deadline. */
|
|
111
125
|
readonly signal?: AbortSignal;
|
|
112
126
|
/** The path is a CANONICAL key the caller already resolved at the seat its program writes it (the shell read station's
|
|
113
127
|
* established write target: where the path lands, or — for a removal or a rename — the entry itself, its canonical
|
|
@@ -152,9 +166,11 @@ export interface WriteProtectionMatcher {
|
|
|
152
166
|
*
|
|
153
167
|
* @contract write_protection.judges_the_real_target — the always-on write-protection table and the
|
|
154
168
|
* opt-in sensitive-path deny set differ in VOCABULARY (literal rows / segment globs) and SEVERITY
|
|
155
|
-
* (ask / deny), never in REACH: both judge the file the tool will write — the spelling anchored at the
|
|
156
|
-
*
|
|
157
|
-
*
|
|
169
|
+
* (ask / deny), never in REACH: both judge the file the tool will write — the spelling anchored at the tool's declared
|
|
170
|
+
* base AND its resolved real target and the hops of its link chain, through one canonicalizer — and under ONE absence
|
|
171
|
+
* law: a target whose real
|
|
172
|
+
* destination (or link chain) cannot be determined is refused by both wherever a row stands (a row a view that did answer
|
|
173
|
+
* met is still the answer), and an auxiliary view that does not answer (a root's key) votes in neither. An environment-less judge has no target view and answers by the spelling alone —
|
|
158
174
|
* the same absence law the cwd follows (absent ⇒ the spelling is judged exactly as given). REACH is what
|
|
159
175
|
* this sentence promises, not a LOCK: the identity is resolved at judgment time and re-resolved by the
|
|
160
176
|
* tool at execute time (the module header states that window and the seat that would close it).
|
|
@@ -202,6 +218,34 @@ export interface WriteProtectionCompileOptions {
|
|
|
202
218
|
* that replaces the table wholesale gets the same law over its own rows.
|
|
203
219
|
*/
|
|
204
220
|
export declare function compileWriteProtection(entries?: readonly WriteProtectedEntry[], opts?: WriteProtectionCompileOptions): WriteProtectionMatcher | undefined;
|
|
221
|
+
/** Which table a shell write target met in the leg's one write judgment: the always-on write-protection table (the command's
|
|
222
|
+
* ask carries that table's class) or a deployment's guarded write row (`ToolPolicy.writeGuardRows`: the target is not
|
|
223
|
+
* placed). */
|
|
224
|
+
export type WriteTargetCoverage = "protected" | "guarded";
|
|
225
|
+
/** The leg's write judgment, compiled once ({@link compileLegWriteJudgment}). ENGINE-INTERNAL (not re-exported from
|
|
226
|
+
* `src/index.ts`). */
|
|
227
|
+
export interface LegWriteJudgment {
|
|
228
|
+
/** The always-on table's judge — absent when the table is empty (an opted-out deployment mounts no tighten). */
|
|
229
|
+
readonly matcher: WriteProtectionMatcher | undefined;
|
|
230
|
+
/** THE one judgment of an ABSOLUTE write target a command names, over the always-on table AND the deployment's guarded
|
|
231
|
+
* write rows together — one reading of the target (its spelling, its real target, its symlink chain; a `canonical` key
|
|
232
|
+
* judged as a key), one exempt root, one absence law. `undefined` ⇒ no row covers it. Absent when neither table has a
|
|
233
|
+
* row. */
|
|
234
|
+
readonly judgeWriteTarget: ((target: string, opts?: {
|
|
235
|
+
readonly signal?: AbortSignal;
|
|
236
|
+
readonly canonical?: true;
|
|
237
|
+
}) => Promise<WriteTargetCoverage | undefined>) | undefined;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Compile the leg's ONE write judgment: the always-on table (`entries`, already resolved by the leg) and the deployment's
|
|
241
|
+
* guarded write rows (`guardRows`, the chain policies' {@link import("./tool-policy.js").ToolPolicy.writeGuardRows}) under
|
|
242
|
+
* the leg's one exempt root (`exemptRoots`, the leg's single resolution of `RunnerDeps.memoryEngineDir`). The gate's
|
|
243
|
+
* write-protection tighten reads the table's judge alone; the shell station asks the joint judgment.
|
|
244
|
+
*/
|
|
245
|
+
export declare function compileLegWriteJudgment(entries: readonly WriteProtectedEntry[], opts: Omit<WriteProtectionCompileOptions, "dataRoot"> & {
|
|
246
|
+
readonly exemptRoots: readonly string[];
|
|
247
|
+
readonly guardRows?: import("./tool-policy.js").ToolPolicy["writeGuardRows"];
|
|
248
|
+
}): LegWriteJudgment;
|
|
205
249
|
/**
|
|
206
250
|
* The gate tighten's DECISION for one judgment — the words the fold writes on the pass, minted beside the
|
|
207
251
|
* verdict they read so the two cannot drift:
|
|
@@ -210,28 +254,20 @@ export declare function compileWriteProtection(entries?: readonly WriteProtected
|
|
|
210
254
|
* message (table names are deployment-validated vocabulary); the model-authored target path deliberately
|
|
211
255
|
* does not — `message` is the classifier's `askMessage`, and the approval card already shows the args. The
|
|
212
256
|
* spelling form's sentence is the historical one byte for byte; the target form says the target RESOLVED.
|
|
213
|
-
* · `unresolvable` ⇒
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
* carrying the record stays a person's question in the modes that ask (dontAsk and bypassPermissions refuse it); where
|
|
217
|
-
* a mode may release the class (the shell face) — `ask` (`safety`)
|
|
218
|
-
* naming the cause, which the mode arbitration answers exactly as it answers that record over a standing ask
|
|
219
|
-
* (bypassPermissions releases it, default puts it to a person, dontAsk refuses): on that face alone a standing allow
|
|
220
|
-
* reads as a standing ask.
|
|
257
|
+
* · `unresolvable` ⇒ `deny` (`safety`; reason word `target_unresolved` on the sentence): where the write lands could not be
|
|
258
|
+
* determined, so this table cannot say it is not a protected path — refused in every permission mode (a refusal, not a
|
|
259
|
+
* question a mode releases), the reference's write check form ("where it leads on disk could not be determined").
|
|
221
260
|
* · `clear` ⇒ `undefined`: the surviving decision stands.
|
|
222
261
|
*/
|
|
223
|
-
export declare function writeProtectionTightenDecision(toolName: string, verdict: WriteProtectionVerdict
|
|
262
|
+
export declare function writeProtectionTightenDecision(toolName: string, verdict: WriteProtectionVerdict): PermissionResult | undefined;
|
|
224
263
|
/**
|
|
225
|
-
* @contract write_protection.verdict_is_the_mandate —
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
264
|
+
* @contract write_protection.verdict_is_the_mandate — a MATCHED row is the one fact of the judge's verdict a standing
|
|
265
|
+
* allow rule may not retire (a live decider may still clear it), and `clear` is not it; this predicate is the one reading
|
|
266
|
+
* of a verdict as that fact, beside the decision mint, so the fold records what the judge said and never re-derives "was
|
|
267
|
+
* this write protection?" from the decision it got back. A view the judge's reading could not answer is no second fact:
|
|
268
|
+
* it took no part.
|
|
230
269
|
*/
|
|
231
270
|
export declare function writeProtectionMandated(verdict: WriteProtectionVerdict): boolean;
|
|
232
|
-
/** The second half of {@link writeProtectionMandated}'s contract: the judge could not name this target
|
|
233
|
-
* (the arm that owns the ACTION denies on the same verdict). */
|
|
234
|
-
export declare function writeProtectionUnresolved(verdict: WriteProtectionVerdict): boolean;
|
|
235
271
|
/**
|
|
236
272
|
* The ENGINE-FILLED gate input (`ToolGateInput.writeProtectionCheck`). Returns `null` SYNCHRONOUSLY when the
|
|
237
273
|
* call is not this layer's business — not a covered write, or no resolvable target string — and otherwise
|