@sema-agent/core 7.51.2 → 7.53.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 +698 -2
- package/README.md +3 -1
- package/dist/agents/agent-transcript-tool.d.ts +1 -1
- package/dist/agents/cascade.js +4 -0
- package/dist/agents/cross-session-envelope.d.ts +8 -0
- package/dist/agents/cross-session-envelope.js +6 -0
- package/dist/agents/cross-session-judge.d.ts +21 -1
- package/dist/agents/cross-session-judge.js +8 -0
- package/dist/agents/cross-session-ref.d.ts +5 -0
- package/dist/agents/cross-session-ref.js +1 -0
- package/dist/agents/cumulative-stats.d.ts +3 -0
- package/dist/agents/cumulative-stats.js +3 -0
- package/dist/agents/list-agents-tool.d.ts +1 -1
- package/dist/agents/org-delivery-gate.d.ts +122 -0
- package/dist/agents/org-delivery-gate.js +69 -0
- package/dist/agents/peer-held-queue.d.ts +9 -4
- package/dist/agents/peer-held-queue.js +6 -5
- package/dist/agents/peer-session-drain.d.ts +35 -5
- package/dist/agents/peer-session-drain.js +271 -180
- package/dist/agents/read-inbox-tool.d.ts +8 -1
- package/dist/agents/read-inbox-tool.js +5 -1
- package/dist/agents/repair-loop.js +4 -0
- package/dist/agents/send-message-tool.d.ts +11 -16
- package/dist/agents/send-message-tool.js +11 -13
- package/dist/agents/subagent.d.ts +3 -0
- package/dist/agents/subagent.js +105 -76
- package/dist/agents/tool-filter.d.ts +58 -13
- package/dist/agents/tool-filter.js +34 -14
- package/dist/bench/metrics.d.ts +1 -0
- package/dist/brain/anthropic.d.ts +6 -1
- package/dist/brain/anthropic.js +17 -13
- package/dist/brain/model-presets.d.ts +4 -5
- package/dist/brain/model-presets.js +6 -5
- package/dist/brain/open-responses.js +16 -12
- package/dist/brain/openai.js +16 -12
- package/dist/brain/request-params.d.ts +12 -33
- package/dist/brain/request-params.js +5 -2
- package/dist/brain/request-route.d.ts +9 -8
- package/dist/brain/request-route.js +1 -0
- package/dist/brain/route-adjudicator.d.ts +123 -47
- package/dist/brain/route-adjudicator.js +171 -42
- package/dist/brain/route-conformance.js +2 -2
- package/dist/brain/routing.d.ts +24 -1
- package/dist/brain/routing.js +54 -19
- package/dist/brain/status-sink.d.ts +18 -0
- package/dist/brain/status-sink.js +7 -0
- package/dist/brain/timeout.js +5 -4
- package/dist/core/a2a.d.ts +5 -2
- package/dist/core/a2a.js +30 -13
- package/dist/core/allow-entry.d.ts +42 -9
- package/dist/core/allow-entry.js +25 -18
- package/dist/core/auto-compaction.d.ts +80 -20
- package/dist/core/auto-compaction.js +65 -18
- package/dist/core/auto-promote.d.ts +2 -1
- package/dist/core/auto-promote.js +2 -2
- package/dist/core/caller-tool-name.d.ts +9 -0
- package/dist/core/caller-tool-name.js +13 -0
- package/dist/core/checkpoint-requirements.d.ts +7 -1
- package/dist/core/checkpoint-requirements.js +2 -0
- package/dist/core/checkpoint-store.d.ts +57 -24
- package/dist/core/checkpoint-store.js +3 -3
- package/dist/core/child-clamp-seats.d.ts +6 -0
- package/dist/core/child-clamp-seats.js +2 -1
- package/dist/core/compliance.js +3 -1
- package/dist/core/credential-vocabulary.d.ts +33 -8
- package/dist/core/credential-vocabulary.js +32 -7
- package/dist/core/decision-receipt.d.ts +2 -2
- package/dist/core/delegation-frames.d.ts +9 -2
- package/dist/core/delegation-name.d.ts +18 -0
- package/dist/core/delegation-name.js +47 -0
- package/dist/core/effective-path-target.d.ts +25 -6
- package/dist/core/effective-path-target.js +24 -2
- package/dist/core/engine-capabilities.d.ts +8 -1
- package/dist/core/engine-capabilities.js +1 -1
- package/dist/core/engine-notice.d.ts +49 -21
- package/dist/core/frontmatter-fence.d.ts +10 -0
- package/dist/core/frontmatter-fence.js +6 -0
- package/dist/core/gate-fold.js +8 -25
- package/dist/core/gate-lanes.js +358 -274
- package/dist/core/gate-outcome.d.ts +11 -6
- package/dist/core/governance-codes.d.ts +11 -4
- package/dist/core/governance-codes.js +12 -3
- package/dist/core/hands-band-screen.d.ts +7 -0
- package/dist/core/hands-band-screen.js +32 -0
- package/dist/core/hooks.d.ts +283 -739
- package/dist/core/hooks.js +100 -193
- package/dist/{tools/fs → core}/image-admission.d.ts +21 -3
- package/dist/{tools/fs → core}/image-admission.js +24 -6
- package/dist/core/locked-config.d.ts +84 -32
- package/dist/core/locked-config.js +128 -42
- package/dist/core/mcp-connection-pool.d.ts +4 -1
- package/dist/core/mcp-connection-pool.js +7 -2
- package/dist/core/mcp-probe.d.ts +12 -9
- package/dist/core/mcp-probe.js +3 -3
- package/dist/core/mcp-server-spec.d.ts +104 -10
- package/dist/core/mcp-server-spec.js +183 -33
- package/dist/core/mcp.d.ts +31 -20
- package/dist/core/mcp.js +66 -56
- package/dist/core/memory-engine/data-plane.js +5 -1
- package/dist/core/memory-engine/distiller.js +16 -2
- package/dist/core/memory-engine/engine.d.ts +22 -30
- package/dist/core/memory-engine/engine.js +16 -10
- package/dist/core/memory-engine/frontmatter.d.ts +6 -0
- package/dist/core/memory-engine/frontmatter.js +19 -16
- package/dist/core/memory.d.ts +2 -2
- package/dist/core/mode-policy.d.ts +5 -16
- package/dist/core/mode-policy.js +7 -19
- package/dist/core/model-seat.d.ts +4 -1
- package/dist/core/mods/dollar.d.ts +109 -0
- package/dist/core/mods/dollar.js +154 -0
- package/dist/core/mods/host.d.ts +23 -0
- package/dist/core/mods/host.js +21 -0
- package/dist/core/mods/kernel/budget.d.ts +43 -0
- package/dist/core/mods/kernel/budget.js +83 -0
- package/dist/core/mods/kernel/dispatch.d.ts +100 -0
- package/dist/core/mods/kernel/dispatch.js +699 -0
- package/dist/core/mods/kernel/events.d.ts +245 -0
- package/dist/core/mods/kernel/events.js +210 -0
- package/dist/core/mods/kernel/index.d.ts +6 -0
- package/dist/core/mods/kernel/index.js +5 -0
- package/dist/core/mods/kernel/receive.d.ts +94 -0
- package/dist/core/mods/kernel/receive.js +188 -0
- package/dist/core/mods/kernel/registration.d.ts +131 -0
- package/dist/core/mods/kernel/registration.js +102 -0
- package/dist/core/mods/kernel/site-rules.d.ts +149 -0
- package/dist/core/mods/kernel/site-rules.js +296 -0
- package/dist/core/mods/stations.d.ts +344 -0
- package/dist/core/mods/stations.js +437 -0
- package/dist/core/mounted-mcp.d.ts +57 -0
- package/dist/core/mounted-mcp.js +71 -2
- package/dist/core/own-property-receipt.d.ts +13 -0
- package/dist/core/own-property-receipt.js +13 -23
- package/dist/core/parent-spec-seat.d.ts +18 -7
- package/dist/core/parent-spec-seat.js +6 -2
- package/dist/core/path-identity.js +2 -1
- package/dist/core/permission-rule-model.d.ts +58 -9
- package/dist/core/permission-rule-model.js +81 -7
- package/dist/core/permission-rule-org.d.ts +163 -33
- package/dist/core/permission-rule-org.js +205 -71
- package/dist/core/permission-rule-syntax.d.ts +15 -0
- package/dist/core/permission-rule-syntax.js +24 -16
- package/dist/core/permission-rules.d.ts +14 -2
- package/dist/core/permission-rules.js +63 -23
- package/dist/core/prompt-section-seat.d.ts +15 -27
- package/dist/core/prompt-section-seat.js +73 -40
- package/dist/core/protocol-http-auth.d.ts +3 -1
- package/dist/core/protocol-http-auth.js +2 -0
- package/dist/core/reminder-mint.d.ts +2 -2
- package/dist/core/remote-env.d.ts +24 -12
- package/dist/core/remote-env.js +1 -0
- package/dist/core/resume-startup-cause.d.ts +16 -1
- package/dist/core/resume-startup-cause.js +4 -1
- package/dist/core/retention.js +7 -2
- package/dist/core/retired-keys.d.ts +12 -2
- package/dist/core/retired-keys.js +15 -1
- package/dist/core/roles.js +60 -10
- package/dist/core/rule-lane-reads.js +1 -1
- package/dist/core/runner/announce-once-ledger.d.ts +31 -1
- package/dist/core/runner/announce-once-ledger.js +22 -0
- package/dist/core/runner/assemble-result.d.ts +9 -0
- package/dist/core/runner/assemble-result.js +3 -1
- package/dist/core/runner/call-hook-stations.d.ts +23 -27
- package/dist/core/runner/call-hook-stations.js +58 -42
- package/dist/core/runner/caller-stop-gate.d.ts +25 -0
- package/dist/core/runner/caller-stop-gate.js +7 -0
- package/dist/core/runner/compaction-seams.d.ts +8 -22
- package/dist/core/runner/compaction-seams.js +28 -53
- package/dist/core/runner/construction-doors.js +11 -1
- package/dist/core/runner/contracts.d.ts +86 -83
- package/dist/core/runner/credential-origin-seat.d.ts +2 -0
- package/dist/core/runner/credential-origin-seat.js +19 -0
- package/dist/core/runner/extra-body-dropped-seat.d.ts +2 -6
- package/dist/core/runner/gate-exit.d.ts +47 -36
- package/dist/core/runner/gate-exit.js +12 -5
- package/dist/core/runner/image.js +1 -2
- package/dist/core/runner/inline-image.js +1 -1
- package/dist/core/runner/mcp-redial.d.ts +52 -10
- package/dist/core/runner/mcp-redial.js +38 -9
- package/dist/core/runner/notice-seat-input.d.ts +11 -0
- package/dist/core/runner/notice-seat-input.js +1 -0
- package/dist/core/runner/permission-rule-lanes.d.ts +5 -2
- package/dist/core/runner/permission-rule-lanes.js +22 -10
- package/dist/core/runner/person-path-rows.d.ts +3 -1
- package/dist/core/runner/person-path-rows.js +3 -2
- package/dist/core/runner/prepare-acquire-reconcile.js +5 -1
- package/dist/core/runner/prepare-ask-lane.d.ts +5 -7
- package/dist/core/runner/prepare-ask-lane.js +6 -15
- package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -2
- package/dist/core/runner/prepare-caps-and-workflow.js +25 -8
- package/dist/core/runner/prepare-config-doors.d.ts +52 -1
- package/dist/core/runner/prepare-config-doors.js +168 -143
- package/dist/core/runner/prepare-defer-classify.js +7 -11
- package/dist/core/runner/prepare-delegation-surface.d.ts +2 -2
- package/dist/core/runner/prepare-delegation-surface.js +7 -5
- package/dist/core/runner/prepare-gate-stations.d.ts +8 -11
- package/dist/core/runner/prepare-gate-stations.js +11 -10
- package/dist/core/runner/prepare-hands-readface.d.ts +1 -1
- package/dist/core/runner/prepare-hands-readface.js +2 -1
- package/dist/core/runner/prepare-inherited-gate.d.ts +8 -12
- package/dist/core/runner/prepare-inherited-gate.js +10 -23
- package/dist/core/runner/prepare-listings.d.ts +1 -1
- package/dist/core/runner/prepare-listings.js +4 -2
- package/dist/core/runner/prepare-memory-engine-session.d.ts +0 -6
- package/dist/core/runner/prepare-memory-engine-session.js +20 -7
- package/dist/core/runner/prepare-memory.d.ts +3 -2
- package/dist/core/runner/prepare-memory.js +6 -2
- package/dist/core/runner/prepare-offload-wrappers.d.ts +4 -4
- package/dist/core/runner/prepare-offload-wrappers.js +2 -1
- package/dist/core/runner/prepare-park-ask.js +10 -14
- package/dist/core/runner/prepare-policy-chain.d.ts +17 -15
- package/dist/core/runner/prepare-policy-chain.js +104 -109
- package/dist/core/runner/prepare-project-context.d.ts +1 -1
- package/dist/core/runner/prepare-project-context.js +11 -12
- package/dist/core/runner/prepare-prompt-assembly.d.ts +45 -40
- package/dist/core/runner/prepare-prompt-assembly.js +138 -101
- package/dist/core/runner/prepare-prompt-inputs.d.ts +28 -23
- package/dist/core/runner/prepare-prompt-inputs.js +11 -10
- package/dist/core/runner/prepare-protocol-tools.d.ts +11 -7
- package/dist/core/runner/prepare-protocol-tools.js +20 -13
- package/dist/core/runner/prepare-question-face.d.ts +4 -2
- package/dist/core/runner/prepare-question-face.js +4 -3
- package/dist/core/runner/prepare-safety-scan.js +6 -10
- package/dist/core/runner/prepare-suspend-saga.d.ts +6 -0
- package/dist/core/runner/prepare-suspend-saga.js +7 -5
- package/dist/core/runner/prepare-task.js +41 -23
- package/dist/core/runner/prepare-turn-wiring.d.ts +13 -15
- package/dist/core/runner/prepare-turn-wiring.js +29 -27
- package/dist/core/runner/prepare-wiring-manifest.d.ts +13 -9
- package/dist/core/runner/prepare-wiring-manifest.js +14 -11
- package/dist/core/runner/resume-admission.d.ts +4 -1
- package/dist/core/runner/resume-admission.js +7 -5
- package/dist/core/runner/resume-apply.d.ts +5 -2
- package/dist/core/runner/resume-apply.js +24 -42
- package/dist/core/runner/resume-checkpoint-screen.d.ts +1 -0
- package/dist/core/runner/resume-checkpoint-screen.js +9 -1
- package/dist/core/runner/resume-internals-and-config.d.ts +3 -3
- package/dist/core/runner/resume-internals-and-config.js +3 -8
- package/dist/core/runner/resume-preflight.js +38 -16
- package/dist/core/runner/retired-runner-deps.d.ts +5 -6
- package/dist/core/runner/retired-runner-deps.js +4 -5
- package/dist/core/runner/run-brain-sinks.d.ts +3 -2
- package/dist/core/runner/run-brain-sinks.js +5 -1
- package/dist/core/runner/run-compaction-machinery.d.ts +7 -1
- package/dist/core/runner/run-compaction-machinery.js +7 -33
- package/dist/core/runner/run-harness-handlers.js +4 -2
- package/dist/core/runner/run-identity-wiring.d.ts +3 -1
- package/dist/core/runner/run-identity-wiring.js +3 -2
- package/dist/core/runner/run-leg.js +103 -95
- package/dist/core/runner/run-notification-lane.js +1 -0
- package/dist/core/runner/run-recovery-lanes.d.ts +3 -0
- package/dist/core/runner/run-recovery-lanes.js +14 -11
- package/dist/core/runner/run-settle-and-teardown.js +9 -28
- package/dist/core/runner/run-stop-and-final-verify.js +18 -25
- package/dist/core/runner/run-terminal-adoption.d.ts +3 -0
- package/dist/core/runner/run-terminal-adoption.js +34 -22
- package/dist/core/runner/run-tool-mount-facts.js +5 -3
- package/dist/core/runner/run-turn-boundary.js +32 -37
- package/dist/core/runner/runtask.d.ts +6 -7
- package/dist/core/runner/runtask.js +15 -73
- package/dist/core/runner/session-rule-policy.d.ts +5 -5
- package/dist/core/runner/session-rule-policy.js +13 -8
- package/dist/core/runner/side-call-account.d.ts +68 -0
- package/dist/core/runner/side-call-account.js +61 -0
- package/dist/core/runner/skills-seat.d.ts +15 -0
- package/dist/core/runner/skills-seat.js +57 -0
- package/dist/core/runner/stream-halt-verbs.js +12 -17
- package/dist/core/runner/stream-lifecycle-verbs.js +8 -5
- package/dist/core/runner/stream-steer-verb.d.ts +1 -1
- package/dist/core/runner/stream-steer-verb.js +20 -38
- package/dist/core/runner/sub-agent-deny-lists.d.ts +124 -23
- package/dist/core/runner/sub-agent-deny-lists.js +230 -71
- package/dist/core/runner/synthetic-tools.d.ts +5 -2
- package/dist/core/runner/synthetic-tools.js +2 -12
- package/dist/core/runner/tool-end-body.d.ts +5 -6
- package/dist/core/runner/tool-end-body.js +6 -4
- package/dist/core/runner/tool-not-executed.d.ts +15 -0
- package/dist/core/runner/tool-not-executed.js +30 -0
- package/dist/core/runner/tool-occurrence.d.ts +8 -7
- package/dist/core/runner/tool-occurrence.js +5 -5
- package/dist/core/runner/tool-result-media-seat.d.ts +1 -1
- package/dist/core/runner-deps.d.ts +43 -36
- package/dist/core/safety-merge-corpus.js +18 -2
- package/dist/core/secret-env.d.ts +88 -20
- package/dist/core/secret-env.js +192 -38
- package/dist/core/session-policy-store.d.ts +71 -16
- package/dist/core/session-policy-store.js +138 -28
- package/dist/core/session-reconcile.d.ts +4 -0
- package/dist/core/session-reconcile.js +2 -1
- package/dist/core/shell-read-silence.js +3 -32
- package/dist/core/side-query.d.ts +5 -3
- package/dist/core/skill-grant.d.ts +3 -2
- package/dist/core/skill-grant.js +17 -9
- package/dist/core/skills-directory.d.ts +31 -11
- package/dist/core/skills-directory.js +655 -104
- package/dist/core/store-contracts/mailbox-store-contract.js +13 -0
- package/dist/core/task-event.d.ts +49 -3
- package/dist/core/task-notification.js +2 -2
- package/dist/core/task-result.d.ts +8 -0
- package/dist/core/task-spec.d.ts +20 -19
- package/dist/core/task-stream.d.ts +14 -4
- package/dist/core/tighten-task-spec.d.ts +4 -3
- package/dist/core/tighten-task-spec.js +2 -4
- package/dist/core/tool-check-reading.d.ts +74 -0
- package/dist/core/tool-check-reading.js +80 -0
- package/dist/core/tool-policy.d.ts +62 -18
- package/dist/core/tool-policy.js +86 -15
- package/dist/core/tool-registry.d.ts +20 -0
- package/dist/core/tool-registry.js +4 -0
- package/dist/core/tool-spec.d.ts +10 -6
- package/dist/core/tools.js +2 -0
- package/dist/core/trace.d.ts +51 -32
- package/dist/core/types.d.ts +2 -2
- package/dist/core/types.js +1 -1
- package/dist/core/unc-spelling.d.ts +10 -0
- package/dist/core/unc-spelling.js +3 -0
- package/dist/core/untrusted-egress.d.ts +8 -0
- package/dist/core/untrusted-egress.js +4 -1
- package/dist/core/untrusted-text.d.ts +16 -0
- package/dist/core/untrusted-text.js +7 -2
- package/dist/core/user-attachment.d.ts +25 -4
- package/dist/core/user-attachment.js +63 -42
- package/dist/core/wiring-manifest.d.ts +18 -15
- package/dist/core/wiring-manifest.js +2 -2
- package/dist/engine/compaction/utils.js +1 -2
- package/dist/engine/execution-env/node-execution-env.d.ts +4 -3
- package/dist/engine/execution-env/symlink-chain.js +1 -1
- package/dist/engine/harness/agent-harness.d.ts +1 -1
- package/dist/engine/harness/agent-harness.js +5 -4
- package/dist/engine/harness/types.d.ts +20 -16
- package/dist/engine/harness/types.js +7 -1
- package/dist/engine/llm/types.d.ts +12 -7
- package/dist/engine/loop/agent-loop.d.ts +12 -1
- package/dist/engine/loop/agent-loop.js +18 -6
- package/dist/engine/loop/types.d.ts +8 -2
- package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
- package/dist/engine/session/import-validate.js +3 -10
- package/dist/engine/session/session.d.ts +4 -4
- package/dist/engine/session/session.js +4 -4
- package/dist/index.d.ts +33 -23
- package/dist/index.js +23 -15
- package/dist/internal/harness.d.ts +2 -1
- package/dist/internal/harness.js +2 -1
- package/dist/orchestration/goal.d.ts +24 -1
- package/dist/orchestration/goal.js +3 -2
- package/dist/orchestration/run-spec.d.ts +4 -6
- package/dist/orchestration/run-spec.js +39 -63
- package/dist/orchestration/run-workflow-tool.js +1 -2
- package/dist/orchestration/workflow.d.ts +11 -3
- package/dist/orchestration/workflow.js +11 -2
- package/dist/prompt-assembly/artifact-store.d.ts +72 -56
- package/dist/prompt-assembly/artifact-store.js +60 -52
- package/dist/prompt-assembly/artifact.d.ts +90 -76
- package/dist/prompt-assembly/artifact.js +197 -145
- package/dist/prompt-assembly/assemble.d.ts +36 -29
- package/dist/prompt-assembly/assemble.js +34 -220
- package/dist/prompt-assembly/bands.d.ts +20 -0
- package/dist/prompt-assembly/bands.js +18 -0
- package/dist/prompt-assembly/catalog/constitution.d.ts +23 -0
- package/dist/prompt-assembly/catalog/constitution.js +69 -0
- package/dist/prompt-assembly/catalog/core-behavior.d.ts +9 -0
- package/dist/prompt-assembly/catalog/core-behavior.js +85 -0
- package/dist/prompt-assembly/catalog/index.d.ts +11 -0
- package/dist/prompt-assembly/catalog/index.js +60 -0
- package/dist/prompt-assembly/catalog/memory.d.ts +13 -0
- package/dist/prompt-assembly/catalog/memory.js +6 -0
- package/dist/prompt-assembly/catalog/modes.d.ts +15 -0
- package/dist/prompt-assembly/catalog/modes.js +137 -0
- package/dist/prompt-assembly/catalog/role.d.ts +10 -0
- package/dist/prompt-assembly/catalog/role.js +157 -0
- package/dist/prompt-assembly/catalog/schema.d.ts +138 -0
- package/dist/prompt-assembly/catalog/schema.js +25 -0
- package/dist/prompt-assembly/catalog/sections.d.ts +9 -0
- package/dist/prompt-assembly/catalog/sections.js +98 -0
- package/dist/prompt-assembly/catalog/team.d.ts +4 -0
- package/dist/prompt-assembly/catalog/team.js +258 -0
- package/dist/prompt-assembly/composer.d.ts +26 -28
- package/dist/prompt-assembly/composer.js +124 -46
- package/dist/prompt-assembly/epoch.d.ts +89 -79
- package/dist/prompt-assembly/epoch.js +115 -142
- package/dist/prompt-assembly/explain.d.ts +58 -34
- package/dist/prompt-assembly/explain.js +21 -24
- package/dist/prompt-assembly/overlay.d.ts +137 -0
- package/dist/prompt-assembly/overlay.js +339 -0
- package/dist/prompt-assembly/renderers.d.ts +21 -0
- package/dist/prompt-assembly/renderers.js +39 -0
- package/dist/prompt-assembly/section-usage.d.ts +3 -3
- package/dist/prompt-assembly/section-usage.js +1 -1
- package/dist/prompt-assembly/select.d.ts +71 -0
- package/dist/prompt-assembly/select.js +106 -0
- package/dist/prompt-assembly/sugar.d.ts +31 -0
- package/dist/prompt-assembly/sugar.js +20 -0
- package/dist/prompt-assembly/turn-snapshot.d.ts +3 -2
- package/dist/prompt-assembly/types.d.ts +45 -148
- package/dist/prompts/coordinator.d.ts +2 -21
- package/dist/prompts/coordinator.js +3 -255
- package/dist/prompts/cowork.d.ts +27 -16
- package/dist/prompts/cowork.js +2 -23
- package/dist/prompts/default.d.ts +38 -511
- package/dist/prompts/default.js +20 -288
- package/dist/prompts/supervisor.d.ts +6 -71
- package/dist/prompts/supervisor.js +6 -117
- package/dist/stores/file/permission-rule-store.d.ts +1 -1
- package/dist/stores/file/permission-rule-store.js +2 -1
- package/dist/tools/artifact/artifact-tool.js +4 -3
- package/dist/tools/fs/bash-readonly-classifier.d.ts +6 -5
- package/dist/tools/fs/dir-entries.d.ts +4 -2
- package/dist/tools/fs/dir-entries.js +16 -4
- package/dist/tools/fs/fs-bash.d.ts +1 -1
- package/dist/tools/fs/fs-bash.js +22 -11
- package/dist/tools/fs/fs-pdf.js +17 -13
- package/dist/tools/fs/fs-read.js +4 -3
- package/dist/tools/fs/fs-shared.d.ts +1 -10
- package/dist/tools/fs/fs-shared.js +3 -4
- package/dist/tools/fs/fs-write.js +2 -1
- package/dist/tools/fs/notebook.js +1 -1
- package/dist/tools/fs/pdf.d.ts +20 -10
- package/dist/tools/fs/pdf.js +19 -10
- package/dist/tools/fs/program-read-model.d.ts +68 -8
- package/dist/tools/fs/program-read-model.js +112 -33
- package/dist/tools/fs/program-read-model.rows.js +30 -10
- package/dist/tools/fs/read-deny-home.d.ts +25 -9
- package/dist/tools/fs/read-deny-home.js +28 -27
- package/dist/tools/fs/read-deny.d.ts +41 -11
- package/dist/tools/fs/read-deny.js +51 -5
- package/dist/tools/fs/safety.d.ts +4 -26
- package/dist/tools/fs/safety.js +10 -32
- package/dist/tools/fs/search.js +15 -10
- package/dist/tools/fs/shell-read-argv.d.ts +3 -2
- package/dist/tools/fs/shell-read-argv.js +118 -38
- package/dist/tools/fs/shell-read-establish.d.ts +5 -5
- package/dist/tools/fs/shell-read-establish.js +11 -61
- package/dist/tools/fs/shell-read-identity.js +6 -3
- package/dist/tools/fs/shell-read-judge.d.ts +13 -15
- package/dist/tools/fs/shell-read-judge.js +18 -4
- package/dist/tools/fs/shell-read-plan.d.ts +2 -2
- package/dist/tools/web.js +1 -1
- package/package.json +13 -1
- package/test/export-surface.snapshot.json +306 -103
- package/wire-changes/core@7.52.0.json +5859 -0
- package/wire-changes/core@7.53.0.json +1946 -0
- package/dist/core/hook-seats.d.ts +0 -66
- package/dist/core/hook-seats.js +0 -37
- package/dist/prompt-assembly/packs/sema-default.d.ts +0 -2
- package/dist/prompt-assembly/packs/sema-default.js +0 -147
- package/dist/prompts/simple-sections.d.ts +0 -58
- package/dist/prompts/simple-sections.js +0 -43
|
@@ -336,12 +336,17 @@ export type CauseTableCoversEveryDeniedBy = AssertAllKeysHandled<Exclude<DeniedB
|
|
|
336
336
|
* allow or deny) and from BOTH stations (this gate's own classifier step, and an ANCESTOR's frozen
|
|
337
337
|
* classifier reached through the inherited policy chain, whose allow and deny carry it out on the same seat
|
|
338
338
|
* that carries the FORM): which model it was for, which one answered, and — only when the ladder moved —
|
|
339
|
-
* the rung it left and why.
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
*
|
|
339
|
+
* the rung it left and why. It is the classification's account, not the settlement's: a classification that
|
|
340
|
+
* RULED keeps it whoever then decided the call — a call whose question a person then answered (an ask a
|
|
341
|
+
* station after the classifier raised, or a block at the DENIAL-LIMIT bound, which becomes an ask) carries
|
|
342
|
+
* it beside that person's settlement on {@link GateOutcome}; who decided is read from the settlement
|
|
343
|
+
* (`human_allowed`, `policy_allowed`, …), never from this member's presence. ABSENT reads UNKNOWN, never
|
|
344
|
+
* "the seat answered" (that is `fallback` absent WITH the member present), and a consumer cannot tell its
|
|
345
|
+
* three causes apart from the record alone: no classification happened; one ran on a decider given no
|
|
346
|
+
* candidate ladder and can name no model (a hand-built decider; a parked ancestor's cross-process rebuild,
|
|
347
|
+
* whose single fresh leg has none); or one did not rule (it could not run, or replied with no verdict) and
|
|
348
|
+
* handed the question to the approval seat, whose settlement then names the resolution that ask reached.
|
|
349
|
+
* Additive. Invariant I6 ({@link screenGateOutcome}) screens its shape. */
|
|
345
350
|
export type GateDisposition = {
|
|
346
351
|
kind: "allowed";
|
|
347
352
|
classifier?: AutoModeClassifierRound;
|
|
@@ -49,7 +49,8 @@ export declare function governanceRetryClass(code: string): GovernanceRetryClass
|
|
|
49
49
|
* member over a roster row's wire bound (`config.tool_roster_bound` / `config.tool_name_too_long` /
|
|
50
50
|
* `config.tool_contract_too_long`), a schema over the row's key bounds (`config.tool_schema_bound`), a
|
|
51
51
|
* declared face or result card the schema / namespace cannot carry (`config.tool_face_invalid`), a name or
|
|
52
|
-
* alias
|
|
52
|
+
* alias outside the caller tool name contract — one no rule can name, or one carrying the protocol namespace separator
|
|
53
|
+
* (`config.tool_name_invalid`), an egress tool declared other than
|
|
53
54
|
* `write` (`config.egress_requires_write_effect` — also minted, same meaning, for a protocol tool's resolved
|
|
54
55
|
* axes), a name the run reserves for a tool the engine injects (`config.reserved_tool_name` — structured output,
|
|
55
56
|
* the skill tool, tool search, the offload reader, an injected protocol tool; `runGoal`'s completion tool, which
|
|
@@ -137,7 +138,7 @@ export type NoticeAudience = "user" | "operator";
|
|
|
137
138
|
* the union's catalog ({@link EngineNotice.code}). The groups below say only which family a row joins,
|
|
138
139
|
* so the catalog is not written a second time here and the two cannot drift.
|
|
139
140
|
*/
|
|
140
|
-
export declare const ENGINE_NOTICE_CODES: readonly ["config.autocompact_window_clamped", "config.env_timeout_discarded", "config.materialize_env_discarded", "config.models_swapped", "config.context_settings_swapped", "config.read_face_swapped", "config.read_face_deployment_clamped", "config.write_face_swapped", "config.write_face_deployment_clamped", "config.read_deny_swapped", "config.tool_model_gate_removed", "config.tool_model_gate_unknown_class", "config.tool_model_gate_env_invalid", "config.artifact_host_invalid", "config.task_root_not_canonical", "config.write_protection_target_view_absent", "config.path_view_unresolved", "config.execution_env_capability_invalid", "config.tool_card_undeclared", "config.tool_face_undeclared", "config.tool_face_invalid", "config.forward_sink_failed", "config.durable_gate_unavailable", "config.peer_admission_out_of_range", "config.peer_lane_unmounted", "config.secret_env_scrubbed", "config.permission_mode_unavailable", "permission.ask_released_by_mode", "permission.read_deny_unapplied", "permission.rule_store_unavailable", "permission.rule_row_dropped", "permission.allowed_tool_not_granted", "peer.inbound_disposition", "peer.held_settled", "peer.idle_subscription", "classifier.denial_limit", "classifier.fallback", "classifier.role_defaulted", "classifier.contract_broken", "classifier.unavailable", "checkpoint.execution_outcome_unrecorded", "delegation.transcript_integrity", "delegation.ask_unresolvable", "mcp.injection_dropped", "mcp.revocation_probe_failed", "mcp.server_redialed", "workflow.governance_key_stripped", "workflow.agent_option_ignored", "memory.session_polluted", "memory.harvest_quarantined", "memory.delegation_static_mark_waived", "memory.content_class_declared", "memory.hold_opened", "memory.hold_released", "memory.hold_disposed", "memory.consolidation_recommended", "memory.consolidation_committed", "memory.consolidation_conflict", "memory.consolidation_incomplete", "memory.consolidation_refused", "memory.consolidation_withheld", "memory.restore_withheld", "memory.project_scope_absent", "route.fallback_to_primary", "route.classifier_unroutable", "route.
|
|
141
|
+
export declare const ENGINE_NOTICE_CODES: readonly ["config.autocompact_window_clamped", "config.env_timeout_discarded", "config.materialize_env_discarded", "config.models_swapped", "config.context_settings_swapped", "config.read_face_swapped", "config.read_face_deployment_clamped", "config.write_face_swapped", "config.write_face_deployment_clamped", "config.read_deny_swapped", "config.tool_model_gate_removed", "config.tool_model_gate_unknown_class", "config.tool_model_gate_env_invalid", "config.artifact_host_invalid", "config.task_root_not_canonical", "config.write_protection_target_view_absent", "config.path_view_unresolved", "config.execution_env_capability_invalid", "config.tool_card_undeclared", "config.tool_face_undeclared", "config.tool_face_invalid", "config.forward_sink_failed", "config.durable_gate_unavailable", "config.peer_admission_out_of_range", "config.peer_lane_unmounted", "config.secret_env_scrubbed", "config.credential_not_withheld", "config.permission_mode_unavailable", "permission.ask_released_by_mode", "permission.read_deny_unapplied", "permission.rule_store_unavailable", "permission.rule_row_dropped", "config.session_rules_earlier_grammar", "permission.allowed_tool_not_granted", "mods.registration_refused", "peer.inbound_disposition", "peer.held_settled", "peer.idle_subscription", "classifier.denial_limit", "classifier.fallback", "classifier.role_defaulted", "classifier.contract_broken", "classifier.unavailable", "checkpoint.execution_outcome_unrecorded", "delegation.transcript_integrity", "delegation.ask_unresolvable", "mcp.injection_dropped", "mcp.revocation_probe_failed", "mcp.server_redialed", "workflow.governance_key_stripped", "workflow.agent_option_ignored", "memory.session_polluted", "memory.harvest_quarantined", "memory.delegation_static_mark_waived", "memory.content_class_declared", "memory.hold_opened", "memory.hold_released", "memory.hold_disposed", "memory.consolidation_recommended", "memory.consolidation_committed", "memory.consolidation_conflict", "memory.consolidation_incomplete", "memory.consolidation_refused", "memory.consolidation_withheld", "memory.restore_withheld", "memory.project_scope_absent", "route.fallback_to_primary", "route.classifier_unroutable", "route.credential_origin_mismatch", "route.response_model_mismatch", "route.tool_call_id_folded", "route.finish_reason_unknown", "route.stream_end_ignored", "route.extra_body_reserved_dropped", "context.tool_turn_repaired", "task.user_steer_undrained", "task.user_followup_undrained", "steering.parked_input_blocked", "task.turn_interrupted", "task.halt_unconsumed", "task.late_approval", "task.interrupt_unconsumed", "task.tool_turn_incomplete", "approval.read_root_granted", "approval.read_root_grant_rejected", "memory.capture_opted_out", "memory.capture_optout_unpersisted", "skills.listing_truncated", "agents.listing_truncated", "tool_result.offload_put_failed", "tool_result.media_refused", "instructions.source_changed", "session.records_skipped", "memory.layer_locked_legacy", "server.model_unreachable", "permission.entry_mode_clamped"];
|
|
141
142
|
/** A catalogued code (see {@link ENGINE_NOTICE_CODES}); {@link NOTICE_MINTER} says who mints it. NOT the type of
|
|
142
143
|
* `EngineNotice.code`, which stays `string` — a host forwarding its own notices through the same
|
|
143
144
|
* sink is a supported shape, and narrowing that field would break it. */
|
|
@@ -177,6 +178,7 @@ declare const NOTICE_AUDIENCE_TABLE: {
|
|
|
177
178
|
readonly "task.tool_turn_incomplete": "user";
|
|
178
179
|
readonly "route.finish_reason_unknown": "user";
|
|
179
180
|
readonly "route.stream_end_ignored": "user";
|
|
181
|
+
readonly "route.credential_origin_mismatch": "user";
|
|
180
182
|
readonly "approval.read_root_granted": "user";
|
|
181
183
|
readonly "approval.read_root_grant_rejected": "user";
|
|
182
184
|
readonly "config.durable_gate_unavailable": "user";
|
|
@@ -185,7 +187,9 @@ declare const NOTICE_AUDIENCE_TABLE: {
|
|
|
185
187
|
readonly "permission.read_deny_unapplied": "user";
|
|
186
188
|
readonly "permission.rule_store_unavailable": "user";
|
|
187
189
|
readonly "permission.rule_row_dropped": "user";
|
|
190
|
+
readonly "config.session_rules_earlier_grammar": "user";
|
|
188
191
|
readonly "permission.allowed_tool_not_granted": "user";
|
|
192
|
+
readonly "mods.registration_refused": "user";
|
|
189
193
|
readonly "memory.capture_opted_out": "user";
|
|
190
194
|
readonly "memory.capture_optout_unpersisted": "user";
|
|
191
195
|
readonly "memory.consolidation_withheld": "operator";
|
|
@@ -214,6 +218,7 @@ declare const NOTICE_AUDIENCE_TABLE: {
|
|
|
214
218
|
readonly "config.peer_lane_unmounted": "operator";
|
|
215
219
|
readonly "config.peer_admission_out_of_range": "operator";
|
|
216
220
|
readonly "config.secret_env_scrubbed": "operator";
|
|
221
|
+
readonly "config.credential_not_withheld": "operator";
|
|
217
222
|
readonly "peer.inbound_disposition": "user";
|
|
218
223
|
readonly "peer.held_settled": "user";
|
|
219
224
|
readonly "peer.idle_subscription": "user";
|
|
@@ -234,7 +239,6 @@ declare const NOTICE_AUDIENCE_TABLE: {
|
|
|
234
239
|
readonly "memory.project_scope_absent": "operator";
|
|
235
240
|
readonly "route.fallback_to_primary": "operator";
|
|
236
241
|
readonly "route.classifier_unroutable": "operator";
|
|
237
|
-
readonly "route.base_url_changed_key_unchanged": "operator";
|
|
238
242
|
readonly "route.response_model_mismatch": "operator";
|
|
239
243
|
readonly "route.tool_call_id_folded": "operator";
|
|
240
244
|
readonly "route.extra_body_reserved_dropped": "operator";
|
|
@@ -300,12 +304,15 @@ declare const NOTICE_MINTER_TABLE: {
|
|
|
300
304
|
readonly "config.peer_admission_out_of_range": "engine";
|
|
301
305
|
readonly "config.peer_lane_unmounted": "engine";
|
|
302
306
|
readonly "config.secret_env_scrubbed": "engine";
|
|
307
|
+
readonly "config.credential_not_withheld": "engine";
|
|
303
308
|
readonly "config.permission_mode_unavailable": "engine";
|
|
304
309
|
readonly "permission.ask_released_by_mode": "engine";
|
|
305
310
|
readonly "permission.read_deny_unapplied": "engine";
|
|
306
311
|
readonly "permission.rule_store_unavailable": "engine";
|
|
307
312
|
readonly "permission.rule_row_dropped": "engine";
|
|
313
|
+
readonly "config.session_rules_earlier_grammar": "engine";
|
|
308
314
|
readonly "permission.allowed_tool_not_granted": "engine";
|
|
315
|
+
readonly "mods.registration_refused": "engine";
|
|
309
316
|
readonly "peer.inbound_disposition": "engine";
|
|
310
317
|
readonly "peer.held_settled": "engine";
|
|
311
318
|
readonly "peer.idle_subscription": "engine";
|
|
@@ -339,7 +346,7 @@ declare const NOTICE_MINTER_TABLE: {
|
|
|
339
346
|
readonly "memory.project_scope_absent": "engine";
|
|
340
347
|
readonly "route.fallback_to_primary": "engine";
|
|
341
348
|
readonly "route.classifier_unroutable": "engine";
|
|
342
|
-
readonly "route.
|
|
349
|
+
readonly "route.credential_origin_mismatch": "engine";
|
|
343
350
|
readonly "route.response_model_mismatch": "engine";
|
|
344
351
|
readonly "route.tool_call_id_folded": "engine";
|
|
345
352
|
readonly "route.finish_reason_unknown": "engine";
|
|
@@ -145,12 +145,15 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
145
145
|
"config.peer_admission_out_of_range",
|
|
146
146
|
"config.peer_lane_unmounted",
|
|
147
147
|
"config.secret_env_scrubbed",
|
|
148
|
+
"config.credential_not_withheld",
|
|
148
149
|
"config.permission_mode_unavailable",
|
|
149
150
|
"permission.ask_released_by_mode",
|
|
150
151
|
"permission.read_deny_unapplied",
|
|
151
152
|
"permission.rule_store_unavailable",
|
|
152
153
|
"permission.rule_row_dropped",
|
|
154
|
+
"config.session_rules_earlier_grammar",
|
|
153
155
|
"permission.allowed_tool_not_granted",
|
|
156
|
+
"mods.registration_refused",
|
|
154
157
|
"peer.inbound_disposition",
|
|
155
158
|
"peer.held_settled",
|
|
156
159
|
"peer.idle_subscription",
|
|
@@ -184,7 +187,7 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
184
187
|
"memory.project_scope_absent",
|
|
185
188
|
"route.fallback_to_primary",
|
|
186
189
|
"route.classifier_unroutable",
|
|
187
|
-
"route.
|
|
190
|
+
"route.credential_origin_mismatch",
|
|
188
191
|
"route.response_model_mismatch",
|
|
189
192
|
"route.tool_call_id_folded",
|
|
190
193
|
"route.finish_reason_unknown",
|
|
@@ -235,6 +238,7 @@ const NOTICE_AUDIENCE_TABLE = {
|
|
|
235
238
|
"task.tool_turn_incomplete": "user",
|
|
236
239
|
"route.finish_reason_unknown": "user",
|
|
237
240
|
"route.stream_end_ignored": "user",
|
|
241
|
+
"route.credential_origin_mismatch": "user",
|
|
238
242
|
"approval.read_root_granted": "user",
|
|
239
243
|
"approval.read_root_grant_rejected": "user",
|
|
240
244
|
"config.durable_gate_unavailable": "user",
|
|
@@ -243,7 +247,9 @@ const NOTICE_AUDIENCE_TABLE = {
|
|
|
243
247
|
"permission.read_deny_unapplied": "user",
|
|
244
248
|
"permission.rule_store_unavailable": "user",
|
|
245
249
|
"permission.rule_row_dropped": "user",
|
|
250
|
+
"config.session_rules_earlier_grammar": "user",
|
|
246
251
|
"permission.allowed_tool_not_granted": "user",
|
|
252
|
+
"mods.registration_refused": "user",
|
|
247
253
|
"memory.capture_opted_out": "user",
|
|
248
254
|
"memory.capture_optout_unpersisted": "user",
|
|
249
255
|
"memory.consolidation_withheld": "operator",
|
|
@@ -272,6 +278,7 @@ const NOTICE_AUDIENCE_TABLE = {
|
|
|
272
278
|
"config.peer_lane_unmounted": "operator",
|
|
273
279
|
"config.peer_admission_out_of_range": "operator",
|
|
274
280
|
"config.secret_env_scrubbed": "operator",
|
|
281
|
+
"config.credential_not_withheld": "operator",
|
|
275
282
|
"peer.inbound_disposition": "user",
|
|
276
283
|
"peer.held_settled": "user",
|
|
277
284
|
"peer.idle_subscription": "user",
|
|
@@ -292,7 +299,6 @@ const NOTICE_AUDIENCE_TABLE = {
|
|
|
292
299
|
"memory.project_scope_absent": "operator",
|
|
293
300
|
"route.fallback_to_primary": "operator",
|
|
294
301
|
"route.classifier_unroutable": "operator",
|
|
295
|
-
"route.base_url_changed_key_unchanged": "operator",
|
|
296
302
|
"route.response_model_mismatch": "operator",
|
|
297
303
|
"route.tool_call_id_folded": "operator",
|
|
298
304
|
"route.extra_body_reserved_dropped": "operator",
|
|
@@ -339,12 +345,15 @@ const NOTICE_MINTER_TABLE = {
|
|
|
339
345
|
"config.peer_admission_out_of_range": "engine",
|
|
340
346
|
"config.peer_lane_unmounted": "engine",
|
|
341
347
|
"config.secret_env_scrubbed": "engine",
|
|
348
|
+
"config.credential_not_withheld": "engine",
|
|
342
349
|
"config.permission_mode_unavailable": "engine",
|
|
343
350
|
"permission.ask_released_by_mode": "engine",
|
|
344
351
|
"permission.read_deny_unapplied": "engine",
|
|
345
352
|
"permission.rule_store_unavailable": "engine",
|
|
346
353
|
"permission.rule_row_dropped": "engine",
|
|
354
|
+
"config.session_rules_earlier_grammar": "engine",
|
|
347
355
|
"permission.allowed_tool_not_granted": "engine",
|
|
356
|
+
"mods.registration_refused": "engine",
|
|
348
357
|
"peer.inbound_disposition": "engine",
|
|
349
358
|
"peer.held_settled": "engine",
|
|
350
359
|
"peer.idle_subscription": "engine",
|
|
@@ -378,7 +387,7 @@ const NOTICE_MINTER_TABLE = {
|
|
|
378
387
|
"memory.project_scope_absent": "engine",
|
|
379
388
|
"route.fallback_to_primary": "engine",
|
|
380
389
|
"route.classifier_unroutable": "engine",
|
|
381
|
-
"route.
|
|
390
|
+
"route.credential_origin_mismatch": "engine",
|
|
382
391
|
"route.response_model_mismatch": "engine",
|
|
383
392
|
"route.tool_call_id_folded": "engine",
|
|
384
393
|
"route.finish_reason_unknown": "engine",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Total over what a deployment can hand the seat: absent passes; a value that is not a plain record, a member the record does not
|
|
3
|
+
* have, or a member holding a value it does not take refuses by name (`config.invalid_argument`, `detail.field` = `RunnerDeps.hands`
|
|
4
|
+
* or `RunnerDeps.hands.<member>`) — a band setting the engine cannot read is never run as if it were absent. A member holding
|
|
5
|
+
* `undefined` is absence, as on every optional seat.
|
|
6
|
+
*/
|
|
7
|
+
export declare function screenHandsBandOptions(value: unknown): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const HANDS_BAND_MEMBERS = {
|
|
2
|
+
bashReadonlyAllow: { takes: "a list of command-name strings", ok: (v) => Array.isArray(v) && v.every((c) => typeof c === "string") },
|
|
3
|
+
commitCoAuthor: { takes: "a string or false", ok: (v) => typeof v === "string" || v === false },
|
|
4
|
+
readImageDownsampler: { takes: "a function or false", ok: (v) => typeof v === "function" || v === false },
|
|
5
|
+
beforeWrite: { takes: "a function", ok: (v) => typeof v === "function" },
|
|
6
|
+
autoBackgroundOnTimeout: { takes: "a boolean", ok: (v) => typeof v === "boolean" },
|
|
7
|
+
};
|
|
8
|
+
const kindOf = (v) => (v === null ? "null" : Array.isArray(v) ? "an array" : typeof v);
|
|
9
|
+
export function screenHandsBandOptions(value) {
|
|
10
|
+
if (value === undefined)
|
|
11
|
+
return;
|
|
12
|
+
const refuse = (field, problem) => {
|
|
13
|
+
const e = new Error(`${field} ${problem} — a hands band setting the engine cannot read is refused rather than ignored.`);
|
|
14
|
+
e.code = "config.invalid_argument";
|
|
15
|
+
e.detail = { field };
|
|
16
|
+
throw e;
|
|
17
|
+
};
|
|
18
|
+
const proto = typeof value === "object" && value !== null ? Object.getPrototypeOf(value) : undefined;
|
|
19
|
+
if (typeof value !== "object" || value === null || Array.isArray(value) || (proto !== Object.prototype && proto !== null)) {
|
|
20
|
+
refuse("RunnerDeps.hands", `must be a plain record of hands band settings (got ${kindOf(value)})`);
|
|
21
|
+
}
|
|
22
|
+
for (const key of Object.keys(value)) {
|
|
23
|
+
const v = value[key];
|
|
24
|
+
if (v === undefined)
|
|
25
|
+
continue;
|
|
26
|
+
if (!Object.hasOwn(HANDS_BAND_MEMBERS, key))
|
|
27
|
+
refuse(`RunnerDeps.hands.${key}`, `is not a hands band setting (the settings: ${Object.keys(HANDS_BAND_MEMBERS).join(", ")})`);
|
|
28
|
+
const member = HANDS_BAND_MEMBERS[key];
|
|
29
|
+
if (!member.ok(v))
|
|
30
|
+
refuse(`RunnerDeps.hands.${key}`, `must be ${member.takes} (got ${kindOf(v)})`);
|
|
31
|
+
}
|
|
32
|
+
}
|