@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
|
@@ -72,9 +72,11 @@
|
|
|
72
72
|
* here) and no leading-env-assignment stripping (`FOO=1 git status` simply does not match
|
|
73
73
|
* `Bash(git status:*)`) — the last two are strict-side divergences from upstream, registered as such.
|
|
74
74
|
*/
|
|
75
|
+
import { type ParsedPermissionRule } from "./permission-rule-syntax.js";
|
|
75
76
|
import { type DenyFace } from "../tools/fs/read-deny.js";
|
|
76
77
|
import type { AssertAllKeysHandled, RuleOffersAbsence } from "./ask-origin.js";
|
|
77
78
|
import { type ToolCallLike } from "./tool-registry.js";
|
|
79
|
+
import { type HostReading } from "./host-target.js";
|
|
78
80
|
import { type PathDenialEvidence, type PathFamily, type PathIdentity } from "../tools/fs/safety.js";
|
|
79
81
|
import { type TargetViews } from "./path-rule-binding.js";
|
|
80
82
|
/**
|
|
@@ -160,73 +162,148 @@ export declare function callPathFaceOf(call: ToolCallLike): DenyFace | undefined
|
|
|
160
162
|
/** Does some {@link PATH_RULE_FACES} tightening column (deny or ask) hold `face` — may a face-keyed row speak for a call on
|
|
161
163
|
* it, whatever the call's tool is called (a caller's tool declaring a read path target is on the read face too)? */
|
|
162
164
|
export declare function faceRowsSpeakFor(face: DenyFace | undefined): boolean;
|
|
165
|
+
/** One row of {@link NAME_RULE_FACES}. */
|
|
166
|
+
export interface NameRuleFace {
|
|
167
|
+
/** The argument a rule's content is read against. */
|
|
168
|
+
readonly param: string;
|
|
169
|
+
/** The arguments whose `<param>:` spelling the row CLAIMS: on a bare row that spelling is refused (the bare one is the rule's),
|
|
170
|
+
* on a keyed row it is the rule. An argument the tool carries that the row does not claim keeps the generic parameter lane. */
|
|
171
|
+
readonly params: readonly string[];
|
|
172
|
+
/** KEYED: the closed set of values the tool itself declares for `param` (the tool's own set, never a copy). */
|
|
173
|
+
readonly words?: readonly string[];
|
|
174
|
+
/** `mounted`: the values a rule names are the MOUNTED tool's own — its `ToolRuleFace.nameValues`, riding the call's face — and a
|
|
175
|
+
* rule's value and the call's are each resolved to one of them by the one resolver ({@link canonicalNameValue}). */
|
|
176
|
+
readonly values?: "mounted";
|
|
177
|
+
}
|
|
163
178
|
/**
|
|
164
179
|
* The tools whose rule content NAMES THE VALUE of one parameter instead of a command or a path — ONE grammar (the name grammar,
|
|
165
180
|
* match `name`), one row per tool, the row declaring the tool's SPELLING of it:
|
|
166
|
-
* · BARE — the reference's `Skill(<name>)` / `Skill(<prefix>:*)`: `
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* `params` (test/backlog1318).
|
|
181
|
+
* · BARE — the reference's `Skill(<name>)` / `Skill(<prefix>:*)`: `params` is every scalar argument the tool carries, read off
|
|
182
|
+
* its catalog row (the parameter spelling `Tool(<param>:<pattern>)` those names used to reach is retired for such a tool,
|
|
183
|
+
* see {@link parseNameRuleContent}). The Skill tool's real schema keys are pinned equal to `params` (test/backlog1318).
|
|
170
184
|
* · KEYED — `words` present: the reference's `Artifact(action:<word>)`, the content carrying the argument's own key. `params`
|
|
171
|
-
* is that one key
|
|
172
|
-
*
|
|
185
|
+
* is that one key, and a rule names exactly one of the words — no prefix form, no `*`.
|
|
186
|
+
* · MOUNTED — `values: "mounted"`: the reference's `Agent(<subagent_type>)`, bare, naming one value of the set the mounted tool
|
|
187
|
+
* declares (which agent types this leg offers) — no prefix form, no `*`, no leading-slash reading. `params` is the one
|
|
188
|
+
* argument it claims; the tool's other arguments keep the generic parameter lane (`Agent(model:…)`).
|
|
173
189
|
* Whatever the spelling, a rule of this grammar says "the call's value of `param` is this value", read by the one subject
|
|
174
|
-
* reader ({@link nameRuleSubjectOf}), the one predicate ({@link
|
|
190
|
+
* reader ({@link nameRuleSubjectOf}), the one predicate ({@link nameRuleReach}), the one precedence walk
|
|
175
191
|
* ({@link adjudicatePersistedNameRules}) and the one offer ({@link suggestRuleForName}).
|
|
176
192
|
*/
|
|
177
|
-
export declare const NAME_RULE_FACES: Readonly<Record<string,
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
193
|
+
export declare const NAME_RULE_FACES: Readonly<Record<string, NameRuleFace>>;
|
|
194
|
+
/**
|
|
195
|
+
* The reference's fold of a delegated agent type (`lhe`, cli296.js:246723):
|
|
196
|
+
* `e.normalize("NFKC").toLowerCase().replace(/[\p{White_Space}\p{Pd}_]+/gu, "")`.
|
|
197
|
+
*
|
|
198
|
+
* Deliberately lossy and deliberately NOT a resolver: it decides whether two spellings denote the same entry of a value set AFTER
|
|
199
|
+
* an exact match has already failed ({@link canonicalNameValue} is the resolver). `\p{Pd}` is the dash punctuation class (an
|
|
200
|
+
* en-dash paste folds like a hyphen), `\p{White_Space}` covers NBSP and friends, and NFKC folds fullwidth/compatibility forms —
|
|
201
|
+
* the three ways a name gets mangled between a listing line and a tool call. It can map DISTINCT entries onto one key
|
|
202
|
+
* ("code-review" / "code_review"), which is why a fold that lands on several is ambiguous, never a pick.
|
|
203
|
+
*/
|
|
204
|
+
export declare function normalizeSubagentType(value: string): string;
|
|
205
|
+
/** What a spelling names in a value set ({@link canonicalNameValue}): one entry, several (the fold lands on each), or none. */
|
|
206
|
+
export type NameValueResolution = {
|
|
207
|
+
readonly kind: "entry";
|
|
208
|
+
readonly entry: string;
|
|
209
|
+
} | {
|
|
210
|
+
readonly kind: "ambiguous";
|
|
211
|
+
readonly entries: readonly string[];
|
|
212
|
+
} | {
|
|
213
|
+
readonly kind: "unknown";
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* THE resolver of a spelling against a value set — the one identity a delegated agent type has, read alike by the tool that runs
|
|
217
|
+
* the call and by every rule judged on it: an EXACT member first (a correct spelling never moves); else the members the
|
|
218
|
+
* reference's fold ({@link normalizeSubagentType}) maps onto the same key — exactly one ⇒ that member, several ⇒ `ambiguous`
|
|
219
|
+
* (listed, never one picked), none (or a spelling that folds to nothing) ⇒ `unknown`.
|
|
220
|
+
*/
|
|
221
|
+
export declare function canonicalNameValue(value: string, values: readonly string[]): NameValueResolution;
|
|
182
222
|
/**
|
|
183
|
-
* Why a call of a
|
|
184
|
-
* undefined (
|
|
185
|
-
* (`argsAsTheToolReads`: its argument preparation, then the schema's
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* deny
|
|
190
|
-
*
|
|
191
|
-
* default stands behind it.
|
|
223
|
+
* Why a call of a name tool whose rules name one value of a CLOSED set (a keyed tool's `words`, a mounted tool's values) cannot
|
|
224
|
+
* be read against the tool's deny / ask rules when it names no value, or undefined (an open-set tool, or no value tool). Every
|
|
225
|
+
* judge reads a call's arguments as the tool reads them (`argsAsTheToolReads`: its argument preparation, then the schema's
|
|
226
|
+
* coercions); a call that STILL names no value runs one no argument shows — a default filled in inside the tool's execution (a
|
|
227
|
+
* caller's tool mounted under the name with no argument preparation of its own; the delegation tool's plain lane while a
|
|
228
|
+
* definition shadows its default type's name). Whether a rule by the value reaches such a call is unknown, so every reader
|
|
229
|
+
* REFUSES it on the tool's deny or ask rule — a refusal, never an ask a person could approve past a deny, and no allow by the
|
|
230
|
+
* value reaches it. A tool whose reading always names its value (the built-in `Artifact`: an absent action reads as
|
|
231
|
+
* `publish`) never meets this. An open-set tool's call that names nothing is reached by nothing: no default stands behind it.
|
|
192
232
|
*/
|
|
193
|
-
export declare function
|
|
233
|
+
export declare function nameValueAbsentReason(tool: string): string | undefined;
|
|
194
234
|
/**
|
|
195
|
-
* Does the name grammar read this content of this tool?
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
235
|
+
* Does the name grammar read this content of this tool ALONE? On a keyed tool only content keyed by its own parameter
|
|
236
|
+
* (`action:…` on `Artifact`); on a bare tool every content but one keyed by an argument the catalog's tool carries and the row
|
|
237
|
+
* does not claim ({@link NameRuleFace.params}) — that is a rule on that argument (`Agent(model:…)`, `Artifact(url:…)`), which the
|
|
238
|
+
* caller policy reads with its generic parameter lane; a MOUNTED row's such content is read as its value too where it tightens
|
|
239
|
+
* ({@link mountedValueArmOf}). The arguments are the catalog's, whatever face a leg mounts the tool with: one text reads one way
|
|
240
|
+
* on every compile. Undefined grammar ⇒ false.
|
|
199
241
|
*/
|
|
200
242
|
export declare function nameGrammarReads(tool: string, content: string): boolean;
|
|
201
243
|
/**
|
|
202
|
-
* The
|
|
203
|
-
*
|
|
204
|
-
*
|
|
244
|
+
* The VALUE arm of a mounted row's (`Agent`) `<key>:<rest>` deny / ask that the parameter lane reads as a rule on the argument
|
|
245
|
+
* `key` — or undefined (any other tool, or an allow). One rule for every reader of such a content: a TIGHTENING reaches the call
|
|
246
|
+
* under every reading of its text — the rule on the argument, and the whole text as one of the tool's values (an agent type may
|
|
247
|
+
* carry a colon), either reaching ⇒ it applies (the reference reads the content as an agent type for its deny filter and as a
|
|
248
|
+
* `key:value` for its generic parameter check alike); a GRANT reads exactly one way — the argument rule where `key` is an
|
|
249
|
+
* argument the tool carries — so an allow never widens through a second reading. The value arm is the name grammar's own rule
|
|
250
|
+
* over the whole content, judged like every value rule ({@link nameRuleReach}).
|
|
251
|
+
*/
|
|
252
|
+
export declare function mountedValueArmOf(text: string, tool: string, behavior: RuleBehavior): ParsedRule | undefined;
|
|
253
|
+
/**
|
|
254
|
+
* The argument a mounted row's (`Agent`) `<key>:<rest>` content is keyed by when the leg's own tool declares it (`mountedParams`,
|
|
255
|
+
* the leg's face) and the catalog's does not — or undefined. A rule's grammar reads the catalog's arguments only, so such a
|
|
256
|
+
* content would read as one of the tool's values and never reach a call setting that argument: a compile that holds the leg's
|
|
257
|
+
* face knows this and refuses it; one without the face cannot tell, and reads the value.
|
|
258
|
+
*/
|
|
259
|
+
export declare function mountedOnlyArgumentOf(tool: string, content: string, mountedParams: readonly string[] | undefined): string | undefined;
|
|
260
|
+
/**
|
|
261
|
+
* The ARGUMENT arm of a mounted row's value rule — the other half of {@link mountedValueArmOf}'s law, read where the rule is a
|
|
262
|
+
* stored row (a list entry, a session bucket's entry, the person's persisted row): a deny or an ask whose value is
|
|
263
|
+
* `<argument>:<pattern>`, `argument` one the catalog's tool carries and the row does not claim, is ALSO the rule on that
|
|
264
|
+
* argument, judged by the one argument predicate (`paramRuleReaches`) — so a stored `Agent(model:opus)` deny refuses a call
|
|
265
|
+
* running `model: opus` as the rule policy does. Undefined for an allow (a grant reads one way), another tool, or another value.
|
|
205
266
|
*/
|
|
206
|
-
export declare
|
|
267
|
+
export declare function mountedArgumentArmOf(rule: Pick<PersistedRule, "tool" | "behavior" | "match" | "command">): {
|
|
207
268
|
readonly param: string;
|
|
208
|
-
|
|
269
|
+
readonly pattern: string;
|
|
270
|
+
} | undefined;
|
|
271
|
+
/** The marker a DOMAIN-grammar rule's content starts with: `<Tool>(domain:<host>)` (the reference's spelling). */
|
|
272
|
+
export declare const DOMAIN_RULE_MARKER = "domain:";
|
|
209
273
|
/**
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
274
|
+
* THE grammar a rule on a tool takes — the one reading every rule reader shares (the persisted model's {@link parseRuleText}, the
|
|
275
|
+
* rule policy's compiler through {@link ruleLaneOf}, the entry lists, the approval card), and a property of the rule's tool NAME
|
|
276
|
+
* as the catalog declares it, never of the tool a leg mounts under that name. The model's tool set is DERIVED, never a hand-kept
|
|
277
|
+
* list: the command rule word ({@link COMMAND_RULE_TOOL}) takes the COMMAND grammar — the other shell-face tools take none of
|
|
278
|
+
* their own, their command is judged by the `Bash(…)` rules ({@link laneToolNamesOf}); the tools of {@link NAME_RULE_FACES} the
|
|
279
|
+
* NAME grammar (each in its row's spelling: bare `Skill(<name>)`, keyed `Artifact(action:<word>)`); every name the catalog
|
|
280
|
+
* declares a host target for (`hostTargetOf`: WebFetch) the DOMAIN grammar; every name it declares a path target for
|
|
281
|
+
* (`pathTargetOf`: Read / Edit / Write / Glob / NotebookEdit / …) the PATH grammar. A rule on any other tool has no content
|
|
282
|
+
* this model can judge and is refused (`unsupported.tool`). The tool set therefore moves with the catalog's declarations,
|
|
283
|
+
* exactly as the protective fences' covered set does.
|
|
218
284
|
*/
|
|
219
285
|
export type RuleGrammar = "command" | "path" | "name" | "domain";
|
|
220
286
|
export declare function ruleToolGrammarOf(toolName: string): RuleGrammar | undefined;
|
|
287
|
+
/** The parameter a shell-face tool's rule content names as one of the tool's own scalar arguments (`Monitor(description:*)`,
|
|
288
|
+
* `Bash(timeout:5)`), or undefined — the content is then a command spelling. */
|
|
289
|
+
export declare function shellRuleParamOf(tool: string, content: string): string | undefined;
|
|
290
|
+
/** A lane of the rule policy's compiler: one of the content grammars, or the generic `param:pattern` lane. */
|
|
291
|
+
export type RuleLane = RuleGrammar | "param";
|
|
221
292
|
/**
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
293
|
+
* THE dispatch of a `<tool>(<content>)` rule in the rule policy's compiler — which lane reads it. A shell-face tool's content
|
|
294
|
+
* is a COMMAND spelling unless it names one of that tool's own scalar arguments (the command word's `<param>:*` keeps the
|
|
295
|
+
* command-prefix reading); otherwise the tool's grammar ({@link ruleToolGrammarOf}, the rule model's own reading) reads the
|
|
296
|
+
* content it claims — a name tool every content (a keyed one only content keyed by its own parameter, {@link nameGrammarReads}),
|
|
297
|
+
* a path tool a content with no `:` past its first character, a host tool a content that starts with {@link DOMAIN_RULE_MARKER}
|
|
298
|
+
* — and every other content is a rule on a parameter. The lane is a function of the rule's name and content alone: it is decided
|
|
299
|
+
* before any lane's own check runs, a content a grammar claims is never judged as a parameter rule, and the same rule text takes
|
|
300
|
+
* the same lane whether the policy is compiled with no leg resolver or with a leg's roster (whose faces say only which
|
|
301
|
+
* parameters a tool carries).
|
|
226
302
|
*/
|
|
227
|
-
export declare function
|
|
303
|
+
export declare function ruleLaneOf(tool: string, content: string): RuleLane;
|
|
228
304
|
/** The value a name-grammar tool's call carries in its name argument — the string every NAME rule is read against, the one a
|
|
229
|
-
* `Skill` call is resolved by — or undefined (not a name-grammar tool; no such argument; not a string
|
|
305
|
+
* `Skill` call is resolved by — or undefined (not a name-grammar tool; no such argument; not a string; the empty string, which
|
|
306
|
+
* names no value: an empty and an omitted argument are one call to every reader, as they are to the tool that runs it). */
|
|
230
307
|
export declare function nameRuleSubjectOf(toolName: string, args: unknown): string | undefined;
|
|
231
308
|
/** The rule WORDS a call is judged under, once each: for every name the call answers to (the model's spelling, the wire
|
|
232
309
|
* name, the other aliases that resolve to it), the word its rules are written in — a shell-face name's is the command
|
|
@@ -238,7 +315,7 @@ export declare function laneToolNamesOf(req: Pick<import("./tool-policy.js").Too
|
|
|
238
315
|
/** The match words a persisted rule is stored with, spelled once: {@link PersistedRuleMatch} is derived from this
|
|
239
316
|
* tuple (each form is documented there). A store backend that checks a stored row's `match` reads this value
|
|
240
317
|
* rather than keeping its own list. */
|
|
241
|
-
export declare const PERSISTED_RULE_MATCHES: readonly ["exact", "prefix", "wildcard", "subpath", "path", "name", "name_prefix", "host", "subdomain"];
|
|
318
|
+
export declare const PERSISTED_RULE_MATCHES: readonly ["exact", "prefix", "wildcard", "pattern", "subpath", "path", "name", "name_prefix", "host", "subdomain"];
|
|
242
319
|
/**
|
|
243
320
|
* Match forms, one family per grammar (`prefix` and `wildcard` are one predicate):
|
|
244
321
|
* · `exact` — admits the one string the rule spells.
|
|
@@ -252,6 +329,12 @@ export declare const PERSISTED_RULE_MATCHES: readonly ["exact", "prefix", "wildc
|
|
|
252
329
|
* (`Bash(cd /tmp && adb pull:*)`): the trailing-star form deliberately has no compound reading
|
|
253
330
|
* (see {@link parseRuleText}), because upstream's own trailing-star pattern is inert on a
|
|
254
331
|
* compound and importing/minting one as a chain licence would grant what nobody approved.
|
|
332
|
+
* · `pattern` — the PATTERN spelling (`Bash(git * main)`): any other unescaped `*` in the content, the reference's
|
|
333
|
+
* wildcard. `command` is the folded pattern as written (stars and `\*` escapes kept); `*` is any text, newlines
|
|
334
|
+
* included, `\*` a literal star, a `/` then `**` then `/` also matches one `/`. It reaches ONE simple command, matched whole:
|
|
335
|
+
* an allow against the command's spelling, a deny / ask against each program run's words
|
|
336
|
+
* ({@link programRunReachOf}); never a chain — its body is one command, and a compound is covered segment
|
|
337
|
+
* by segment. No allow leaves the program open (a `*` in the first word) or opens an interpreter's arguments.
|
|
255
338
|
* · `subpath` — the directory form (design/382 §2.2): `Tool(//abs-dir/**)`, reaching every path under
|
|
256
339
|
* one absolute directory. Never admits any command; its one predicate is {@link directoryRuleAdmits}.
|
|
257
340
|
* As an ALLOW it exists on the two face tools ({@link PATH_RULE_FACES}); as a deny/ask on every
|
|
@@ -270,7 +353,7 @@ export type PersistedRuleMatch = (typeof PERSISTED_RULE_MATCHES)[number];
|
|
|
270
353
|
* Where a rule applies — design/382 §4.1, the THREE consent dimensions.
|
|
271
354
|
*
|
|
272
355
|
* · `global` — the personal-global dimension: this OWNER's rules, everywhere (the bucket is already
|
|
273
|
-
* per-owner, {@link import("./
|
|
356
|
+
* per-owner, {@link import("./rule-owner.js").RuleOwner}). The member keeps its historical
|
|
274
357
|
* spelling on purpose: renaming it `personal-global` would be a no-benefit migration of every stored
|
|
275
358
|
* row; the "personal" half lives in documentation and card wording, not in the wire byte.
|
|
276
359
|
* · `project` — applies ONLY inside `root`. `root` is expected to be already canonicalized (realpath)
|
|
@@ -377,6 +460,9 @@ export type RuleRejectCode = "invalid.grammar" | "invalid.empty_command" | "inva
|
|
|
377
460
|
export interface RuleReject {
|
|
378
461
|
code: RuleRejectCode;
|
|
379
462
|
message: string;
|
|
463
|
+
/** For a text that is no rule spelling only because of white space (a tab, a no-break space included) around it or before its `(`:
|
|
464
|
+
* the rule spelling it is a blank away from ({@link respelledRuleTextOf}) — named in `message`, never read in its place. */
|
|
465
|
+
respelling?: string;
|
|
380
466
|
}
|
|
381
467
|
/** The parsed, canonical shape of one rule text under one behavior — everything but the scope and the
|
|
382
468
|
* provenance. The behavior is the parser's INPUT (it decides which validator floor applies), carried
|
|
@@ -527,6 +613,19 @@ export declare const SHELL_RESERVED_WORDS: ReadonlySet<string>;
|
|
|
527
613
|
* misled.
|
|
528
614
|
*/
|
|
529
615
|
export declare const SUGGESTION_LEXICON: readonly string[];
|
|
616
|
+
/**
|
|
617
|
+
* THE spelling of a content rule on a call's tool under one behavior — its rule word and grammar with a placeholder for the
|
|
618
|
+
* content, never a rule minted for the call — or undefined: the tool takes no content rule (the catalog gives it no grammar,
|
|
619
|
+
* whatever face a leg mounts it with), and the whole-tool entry is the only rule it has. The command grammar's `Bash(<command>)`
|
|
620
|
+
* for a tool on the shell face (`Monitor` too: a command rule is written on the command word); a name tool's own spelling
|
|
621
|
+
* ({@link nameRuleFormOf}); a host tool's `<Tool>(domain:<host>)`; a path tool's — a TIGHTENING on the tool's own word
|
|
622
|
+
* (`Write(<path>)` reaches the tool it is written on), a GRANT on the face tool whose allow column holds the call's face
|
|
623
|
+
* (`Read(<path>)` for a read, `Edit(<path>)` for a write: a path allow exists on the two face tools of {@link PATH_RULE_FACES}
|
|
624
|
+
* only). Read off the dispatch every reader shares ({@link ruleToolGrammarOf}, {@link callPathFaceOf}) and spelled by
|
|
625
|
+
* {@link formatRuleText}; every sentence that offers a rule's shape (a compile refusal's way out, the dontAsk refusal's remedy)
|
|
626
|
+
* reads it.
|
|
627
|
+
*/
|
|
628
|
+
export declare function ruleShapeOf(call: ToolCallLike, behavior: RuleBehavior): string | undefined;
|
|
530
629
|
/**
|
|
531
630
|
* Render a peer- or file-controlled value for a DISCLOSURE line (a warning, a refusal message, an
|
|
532
631
|
* operator log). Takes `unknown` on purpose: most of these values are typed but arrive off a wire or a
|
|
@@ -600,6 +699,13 @@ export declare function renderUntrustedCommandText(text: unknown, maxLen?: numbe
|
|
|
600
699
|
* Not part of the package's public surface — an internal screen for lane entry points.
|
|
601
700
|
*/
|
|
602
701
|
export declare function hasUnrenderableCharacters(text: string): boolean;
|
|
702
|
+
/**
|
|
703
|
+
* A rule spelling's content as a content rule, or undefined when the spelling names its WHOLE tool: no content (`Bash`,
|
|
704
|
+
* `Bash()`, `Bash(*)` — the syntax's reading), or a command content that folds to the lone `*` (`Bash( * )`): the command
|
|
705
|
+
* grammar folds its spacing, so that spelling is `Bash(*)` and never a pattern. The one reading every lane asks — the
|
|
706
|
+
* store, the entry lists, the rule policy — so a spelling of the whole tool is answered as the whole tool wherever it is written.
|
|
707
|
+
*/
|
|
708
|
+
export declare function ruleContentOf(parsed: ParsedPermissionRule): string | undefined;
|
|
603
709
|
/**
|
|
604
710
|
* Parse one rule text into its canonical shape, or refuse it with a reason.
|
|
605
711
|
*
|
|
@@ -615,6 +721,13 @@ export declare function hasUnrenderableCharacters(text: string): boolean;
|
|
|
615
721
|
* most wants. The tightening behaviors therefore admit the interpreter-headed prefix form and change
|
|
616
722
|
* nothing else; the allow floor is unchanged.
|
|
617
723
|
*/
|
|
724
|
+
/**
|
|
725
|
+
* The rule spelling a text the rule syntax cannot read is a blank away from: the text with the white space (tabs included) around
|
|
726
|
+
* it and before its first `(` taken off, when that reads as a rule under `behavior` — its canonical text — else `undefined`. A text
|
|
727
|
+
* holding an invisible format character never gets here (its one caller refuses it first: `invalid.control_chars`, or `invalid.too_long`). Only what a refusal SAYS: a rule text is read as written ({@link parseRuleText}), so the way out is named, never
|
|
728
|
+
* taken (a door that reads the respelled text would be a second reading of the same text).
|
|
729
|
+
*/
|
|
730
|
+
export declare function respelledRuleTextOf(text: string, behavior: RuleBehavior): string | undefined;
|
|
618
731
|
export declare function parseRuleText(text: string, behavior: RuleBehavior): {
|
|
619
732
|
rule: ParsedRule;
|
|
620
733
|
} | {
|
|
@@ -624,11 +737,26 @@ export declare function parseRuleText(text: string, behavior: RuleBehavior): {
|
|
|
624
737
|
* `subpath` the command is the lexical-normal absolute directory (one leading slash), re-spelled in the
|
|
625
738
|
* double-slash directory form; for `path` it is the pattern as spelled. */
|
|
626
739
|
export declare function formatRuleText(command: string, match: PersistedRuleMatch, tool: PersistedRuleTool): string;
|
|
627
|
-
/** Does a name rule reach this name? `name`: equal; `name_prefix`: begins with it (no boundary — the
|
|
628
|
-
* A rule of any other family reaches no name.
|
|
740
|
+
/** Does a name rule reach this name, spelling against spelling? `name`: equal; `name_prefix`: begins with it (no boundary — the
|
|
741
|
+
* reference's `startsWith`). A rule of any other family reaches no name. The comparison {@link nameRuleReach} makes for a row
|
|
742
|
+
* whose values are not resolved against a set. */
|
|
629
743
|
export declare function nameRuleAdmits(rule: Pick<PersistedRule, "match" | "command">, name: string): boolean;
|
|
630
|
-
/**
|
|
631
|
-
|
|
744
|
+
/** How a name rule meets a call ({@link nameRuleReach}). `unread`: the call's face carries no value set for a row that needs one. */
|
|
745
|
+
export type NameRuleReach = "reached" | "not_reached" | "unread";
|
|
746
|
+
/**
|
|
747
|
+
* THE predicate of a name rule over one call's value — every reader of a name rule (the rule policy, the lists, the person's
|
|
748
|
+
* stored rows) asks it. An open or keyed row compares spellings ({@link nameRuleAdmits}). A MOUNTED row (`Agent`) resolves the
|
|
749
|
+
* rule's value and the call's through the one resolver ({@link canonicalNameValue}) against the set the call's face carries
|
|
750
|
+
* (`values`, the mounted tool's `nameValues`): both one entry ⇒ reached iff the same one; a rule value the fold lands on several
|
|
751
|
+
* entries with ⇒ a deny or an ask reaches every one of them and an allow none (an operand is never resolved to one of several);
|
|
752
|
+
* a side that resolves to none ⇒ the two spellings compared exactly (an unknown rule value never reaches a resolved call); no
|
|
753
|
+
* set ⇒ `unread` — which type the call runs cannot be read, so a deny refuses, an ask asks a person, and an allow grants nothing.
|
|
754
|
+
*/
|
|
755
|
+
export declare function nameRuleReach(rule: Pick<PersistedRule, "tool" | "behavior" | "match" | "command">, name: string, values: readonly string[] | undefined): NameRuleReach;
|
|
756
|
+
/** Why a call is unread against a mounted row's rule ({@link nameRuleReach} `unread`) — the sentence every reader carries. */
|
|
757
|
+
export declare function nameValuesUnreadReason(tool: string): string;
|
|
758
|
+
/** Does a domain rule reach this host (as `hostOfUrl` reads it)? The pattern's own reach ({@link hostPatternAdmits}); a rule of
|
|
759
|
+
* any other family reaches no host. */
|
|
632
760
|
export declare function domainRuleAdmits(rule: Pick<PersistedRule, "match" | "command">, host: string): boolean;
|
|
633
761
|
/**
|
|
634
762
|
* The closed set of BASES a path-form pattern resolves against — facts of the CALL (its execution
|
|
@@ -696,7 +824,7 @@ export declare function pathRuleReachOf(rule: Pick<PersistedRule, "match" | "com
|
|
|
696
824
|
* reaches lies at or below the head, so a spelling of the head that the environment resolves elsewhere (a link, a
|
|
697
825
|
* firmlink, `/var` → `/private/var`) is a second spelling of everything the rule reaches — the deny tables judge the
|
|
698
826
|
* rule at both ({@link import("../tools/fs/read-deny.js").withRuleRowsWhereTheyLead}; the reference's "physical twin"
|
|
699
|
-
* of a rule prefix
|
|
827
|
+
* of a rule prefix). The head may be the bare anchor (`/`, a drive or share root — `Read(/**)` at a
|
|
700
828
|
* drive root): an environment can resolve a drive or share root elsewhere. `undefined`: the pattern needs a base the
|
|
701
829
|
* call does not supply (the rule then reads `unreadable`, a reach, everywhere), or a directory rule names the bare
|
|
702
830
|
* anchor (it admits nothing).
|
|
@@ -787,6 +915,15 @@ export declare function programRunReachOf(rule: Pick<PersistedRule, "match" | "c
|
|
|
787
915
|
/** The boolean face of {@link programRunReachOf}: `reached` only. The shadow view and the pins that
|
|
788
916
|
* assert a reach read this; a lane that must fail closed on `unreadable` reads the outcome. */
|
|
789
917
|
export declare function ruleReachesProgramRun(rule: Pick<PersistedRule, "match" | "command">, command: string): boolean;
|
|
918
|
+
/**
|
|
919
|
+
* Could the run this pattern names be one of `programs` (each its word or words, then anything)? The program is read as the
|
|
920
|
+
* read station reads it — past the launchers and wrappers in front of it (`nice`, `timeout 5`, `command`, `doas`, `env`,
|
|
921
|
+
* …: {@link readProgramPosition}) and by basename (`/usr/bin/python` runs `python`) — and the words from it on are read as
|
|
922
|
+
* the run receives them (quotes off), in lower case as the auto-mode strip reads every rule
|
|
923
|
+
* ({@link import("./allow-entry.js").autoStripped}). A program word the pattern leaves open (a star in it), or a run whose
|
|
924
|
+
* program cannot be read, could be any of them.
|
|
925
|
+
*/
|
|
926
|
+
export declare function commandPatternMayRun(body: string, programs: readonly string[]): boolean;
|
|
790
927
|
/** The breadth-warning codes, spelled once: {@link EditedRuleBreadthWarning}'s `code` is derived from this tuple,
|
|
791
928
|
* and a consent record's `edited.warnings` stores exactly these words (its readback refuses any other). */
|
|
792
929
|
export declare const EDITED_RULE_BREADTH_WARNING_CODES: readonly ["broad_prefix", "compound_prefix"];
|
|
@@ -820,7 +957,8 @@ export interface EditedRuleBreadthWarning {
|
|
|
820
957
|
* and a SUBPATH rule is not this classifier's subject (no command reach at all). The two
|
|
821
958
|
* reach-bearing forms take the same two questions: `prefix` (colon-star) and `wildcard`
|
|
822
959
|
* (trailing space-star, #510 — match-equivalent reach on a single-command body; its grammar has no
|
|
823
|
-
* chain reading, so only the single-token question can fire for it)
|
|
960
|
+
* chain reading, so only the single-token question can fire for it), and `pattern` (the pattern form: one command, its
|
|
961
|
+
* first word star-free in an allow, so neither question fires for an allow pattern today).
|
|
824
962
|
* MAINTENANCE DUTY, stated where it binds: every match form with PREFIX REACH belongs here — a
|
|
825
963
|
* new reach-bearing member added to {@link PersistedRuleMatch} owes this classifier its arm, judged
|
|
826
964
|
* by the same "single token / chain body" questions (an exact-only form never warns).
|
|
@@ -1083,36 +1221,69 @@ export declare function adjudicatePersistedPathRules(rules: readonly PersistedRu
|
|
|
1083
1221
|
readonly tighten?: TargetViews;
|
|
1084
1222
|
readonly allow?: TargetViews;
|
|
1085
1223
|
}, anchorsOf: (rule: PersistedRule) => PathRuleBases, leads: ReadonlyMap<string, string | undefined>): PersistedRuleVerdict | undefined;
|
|
1224
|
+
/** The call a persisted name rule is judged on — the request itself: its arguments (the one string it names is read off them,
|
|
1225
|
+
* `nameRuleSubjectOf`; a mounted row's argument arm reads them too) and its face (a mounted tool's values, the tool's reading). */
|
|
1226
|
+
export interface PersistedNameCall {
|
|
1227
|
+
readonly args: unknown;
|
|
1228
|
+
readonly face?: {
|
|
1229
|
+
readonly nameValues?: readonly string[];
|
|
1230
|
+
} | undefined;
|
|
1231
|
+
}
|
|
1086
1232
|
/**
|
|
1087
1233
|
* The name-family sibling of {@link adjudicatePersistedRules}: the same precedence walk over the rules of one name tool
|
|
1088
|
-
* ({@link NAME_RULE_FACES}), judged on the one string
|
|
1089
|
-
*
|
|
1090
|
-
*
|
|
1091
|
-
*
|
|
1092
|
-
*
|
|
1093
|
-
* cannot be read against
|
|
1094
|
-
*
|
|
1234
|
+
* ({@link NAME_RULE_FACES}), judged on the call itself (`request`): the one string it names (`nameRuleSubjectOf`) and, for a
|
|
1235
|
+
* mounted row, the value set its face carries. A rule of the tool speaks for the call when it is live, of this behavior, in scope
|
|
1236
|
+
* ({@link eligiblePersisted}, the one predicate) and reaches the call — a tightening of a mounted row by its argument arm
|
|
1237
|
+
* ({@link mountedArgumentArmOf}, judged by `paramRuleReaches`) or by its value ({@link nameRuleReach}); the first behavior in
|
|
1238
|
+
* {@link RULE_BEHAVIORS_BY_PRECEDENCE} whose rules speak decides, the first table-order rule of it is the answer. A call a
|
|
1239
|
+
* mounted row cannot be read against (`unread`: no value set on the face) is REFUSED by the first such deny row and asked in the
|
|
1240
|
+
* fail-closed form (`unreadable`) by the first such ask row; no allow row reaches it.
|
|
1241
|
+
* A call that names nothing (read as the tool reads it): on an open-set tool it is reached by no rule; on a closed-set tool it
|
|
1242
|
+
* cannot be read against the tool's rules ({@link nameValueAbsentReason}) and is REFUSED — a deny verdict standing on the
|
|
1243
|
+
* first eligible deny row of the tool, else its first ask row (an ask a person could approve would let a deny be approved
|
|
1095
1244
|
* past) — and no allow row reaches it.
|
|
1096
1245
|
*/
|
|
1097
1246
|
export declare function adjudicatePersistedNameRules(rules: readonly PersistedRule[], call: {
|
|
1098
1247
|
tool: string;
|
|
1099
|
-
|
|
1248
|
+
request: PersistedNameCall;
|
|
1100
1249
|
cwd: string | undefined;
|
|
1101
1250
|
sessionId?: string;
|
|
1102
1251
|
scopeIdentity?: ScopeRootIdentity;
|
|
1103
1252
|
}): PersistedRuleVerdict | undefined;
|
|
1104
1253
|
/**
|
|
1105
|
-
* The domain
|
|
1106
|
-
*
|
|
1107
|
-
|
|
1254
|
+
* The host the domain rules of one call are judged on, per direction (`callHostTargetOf`): `tighten` for a deny and an ask
|
|
1255
|
+
* (the protective reading), `grant` for an allow (the declared reading). Absent ⇒ the call has no URL slot in that direction.
|
|
1256
|
+
*/
|
|
1257
|
+
export interface CallHosts {
|
|
1258
|
+
readonly tighten: HostReading | undefined;
|
|
1259
|
+
readonly grant: HostReading | undefined;
|
|
1260
|
+
}
|
|
1261
|
+
/**
|
|
1262
|
+
* The domain-family sibling of {@link adjudicatePersistedNameRules}: the same precedence walk (deny > ask > allow) over the rules of
|
|
1263
|
+
* one host tool, each behavior judged on its direction's host ({@link CallHosts}) by {@link domainRuleAdmits}; the first behavior
|
|
1264
|
+
* whose eligible rules speak decides, the first table-order rule of it is the answer. A call whose host cannot be read (a URL
|
|
1265
|
+
* that does not parse, is not http(s), carries credentials, or names a host that does not read back as itself) is REFUSED by the
|
|
1266
|
+
* tool's first eligible deny row, whatever host that row names, and otherwise ASKED by its first eligible ask row in the
|
|
1267
|
+
* fail-closed form (`unreadable`, never a matched ask); no allow row reaches it, and with no deny or ask row it is reached by
|
|
1268
|
+
* nothing. A stored row whose text the rule reader reads as no rule reaches this walk from the person's rule lane only as a deny
|
|
1269
|
+
* or an ask (its fields still tighten); the lane answers a call none of the rows refuses as one it cannot judge.
|
|
1108
1270
|
*/
|
|
1109
1271
|
export declare function adjudicatePersistedDomainRules(rules: readonly PersistedRule[], call: {
|
|
1110
1272
|
tool: string;
|
|
1111
|
-
|
|
1273
|
+
hosts: CallHosts;
|
|
1112
1274
|
cwd: string | undefined;
|
|
1113
1275
|
sessionId?: string;
|
|
1114
1276
|
scopeIdentity?: ScopeRootIdentity;
|
|
1115
1277
|
}): PersistedRuleVerdict | undefined;
|
|
1278
|
+
/**
|
|
1279
|
+
* The ONE offer a host tool's approval card carries: the exact rule for the host the call reaches (`WebFetch(domain:<host>)`, the
|
|
1280
|
+
* reference's "don't ask again for <host>" row), or undefined when no rule spells exactly that host (the round-trip law: the
|
|
1281
|
+
* canonical text, parsed back as an allow, must be the exact host rule over the very host). Never a `*.` rule: it would widen past
|
|
1282
|
+
* the host shown.
|
|
1283
|
+
*/
|
|
1284
|
+
export declare function suggestRuleForHost(tool: string, host: string): Extract<RuleOffer, {
|
|
1285
|
+
kind: "single";
|
|
1286
|
+
}> | undefined;
|
|
1116
1287
|
/**
|
|
1117
1288
|
* The ONE offer a name tool's approval card carries: the exact rule for the name the call carries (`Skill(<name>)`, the reference's
|
|
1118
1289
|
* "don't ask again for <skill>" row), or undefined when no rule spells exactly that name (the round-trip law: the canonical text,
|
|
@@ -1297,6 +1468,15 @@ export type RuleOffer = {
|
|
|
1297
1468
|
*/
|
|
1298
1469
|
readonly uncoveredDetail?: readonly UncoveredSegmentDetail[];
|
|
1299
1470
|
};
|
|
1471
|
+
/** The offer discriminants as a value: the `kind` words of {@link RuleOffer} and of the consent record's own option form
|
|
1472
|
+
* (`RuleOffer2`, which stores the same choice by candidate index), each union fenced to the tuple in both directions
|
|
1473
|
+
* ({@link RuleOfferKindsCoverEveryArm} / {@link RuleOfferArmsCoverEveryKind} here, their twins beside `RuleOffer2`).
|
|
1474
|
+
* The engine's offer reader and record check read it; a backend's offer or record shape reads it too. */
|
|
1475
|
+
export declare const RULE_OFFER_KINDS: readonly ["single", "batch"];
|
|
1476
|
+
/** Compile fence: an arm whose `kind` is not in {@link RULE_OFFER_KINDS} turns the argument into that word. */
|
|
1477
|
+
export type RuleOfferKindsCoverEveryArm = AssertAllKeysHandled<Exclude<RuleOffer["kind"], (typeof RULE_OFFER_KINDS)[number]>>;
|
|
1478
|
+
/** Compile fence, the other direction: a word in {@link RULE_OFFER_KINDS} that no arm carries. */
|
|
1479
|
+
export type RuleOfferArmsCoverEveryKind = AssertAllKeysHandled<Exclude<(typeof RULE_OFFER_KINDS)[number], RuleOffer["kind"]>>;
|
|
1300
1480
|
/** The uncovered-segment reason words, spelled once: {@link UncoveredSegmentDetail}'s `reason` is derived from this
|
|
1301
1481
|
* tuple, {@link UNCOVERED_SEGMENT_REASON_BASELINE} is keyed by it, and a consent record's reason rows are read
|
|
1302
1482
|
* against it. */
|