@sema-agent/core 7.55.0 → 7.57.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 +1054 -0
- package/LICENSE +1 -1
- package/dist/agents/cascade.js +1 -1
- package/dist/agents/cc-peer-directory.js +1 -0
- package/dist/agents/child-model-seat.d.ts +0 -11
- package/dist/agents/child-model-seat.js +0 -3
- package/dist/agents/list-agents-tool.d.ts +3 -1
- package/dist/agents/list-agents-tool.js +7 -7
- package/dist/agents/org-delivery-gate.js +3 -4
- package/dist/agents/peer-directory.d.ts +22 -4
- package/dist/agents/peer-directory.js +24 -2
- package/dist/agents/peer-held-queue.d.ts +69 -49
- package/dist/agents/peer-held-queue.js +255 -106
- package/dist/agents/peer-session-drain.js +65 -45
- package/dist/agents/repair-loop.js +2 -2
- package/dist/agents/send-message-tool.js +7 -6
- package/dist/agents/subagent.d.ts +6 -4
- package/dist/agents/subagent.js +72 -68
- package/dist/agents/tool-filter.d.ts +7 -5
- package/dist/agents/tool-filter.js +12 -9
- package/dist/agents/verify.d.ts +3 -2
- package/dist/agents/verify.js +3 -3
- package/dist/brain/anthropic.js +45 -80
- 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 +2 -8
- package/dist/brain/model-presets.js +1 -6
- package/dist/brain/open-responses.js +23 -34
- package/dist/brain/openai.js +25 -96
- package/dist/brain/provider-dialect.d.ts +3 -2
- package/dist/brain/provider-dialect.js +2 -2
- package/dist/brain/reasoning-request.d.ts +96 -0
- package/dist/brain/reasoning-request.js +174 -0
- package/dist/brain/reasoning.d.ts +11 -11
- package/dist/brain/reasoning.js +4 -3
- package/dist/brain/request-params.d.ts +13 -4
- package/dist/brain/request-params.js +21 -5
- package/dist/brain/status-sink.d.ts +20 -0
- package/dist/brain/status-sink.js +7 -0
- package/dist/brain/stream-engine.d.ts +9 -0
- package/dist/brain/stream-engine.js +24 -10
- package/dist/brain/stream-shared.d.ts +5 -4
- package/dist/brain/stream-shared.js +4 -4
- package/dist/core/a2a.d.ts +2 -1
- package/dist/core/a2a.js +19 -13
- package/dist/core/agent-definition.d.ts +10 -0
- package/dist/core/allow-entry.d.ts +23 -23
- package/dist/core/allow-entry.js +42 -46
- package/dist/core/allow-rule-shadow.d.ts +3 -3
- package/dist/core/approval-object.d.ts +21 -5
- package/dist/core/approval-object.js +44 -17
- package/dist/core/ask-origin.d.ts +66 -20
- package/dist/core/ask-origin.js +63 -23
- package/dist/core/ask-question.d.ts +51 -8
- package/dist/core/ask-question.js +3 -4
- 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 +71 -6
- package/dist/core/auto-compaction.js +42 -26
- package/dist/core/background-agent-store.d.ts +6 -2
- package/dist/core/background-agent-store.js +1 -1
- 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 -1
- package/dist/core/checkpoint-requirements.js +6 -0
- package/dist/core/checkpoint-store.d.ts +105 -53
- package/dist/core/checkpoint-store.js +43 -20
- package/dist/core/cross-boundary-taint.d.ts +6 -5
- package/dist/core/cross-boundary-taint.js +5 -5
- package/dist/core/decision-receipt.d.ts +37 -3
- package/dist/core/decision-receipt.js +17 -17
- package/dist/core/delegation-not-started.d.ts +6 -0
- package/dist/core/delegation-not-started.js +17 -0
- 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 +32 -12
- package/dist/core/engine-notice.js +6 -0
- package/dist/core/file-history-store.d.ts +104 -22
- package/dist/core/file-history-store.js +37 -19
- package/dist/core/gate-fold.d.ts +1 -1
- package/dist/core/gate-fold.js +22 -10
- package/dist/core/gate-lanes.js +73 -65
- package/dist/core/gate-outcome.d.ts +26 -5
- package/dist/core/gate-outcome.js +26 -0
- package/dist/core/governance-codes.d.ts +5 -1
- package/dist/core/governance-codes.js +6 -0
- package/dist/core/hooks.d.ts +19 -18
- 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 +38 -3
- package/dist/core/host-target.js +38 -5
- package/dist/core/mailbox-store.d.ts +62 -1
- package/dist/core/mailbox-store.js +59 -0
- package/dist/core/mcp-name-judge.d.ts +46 -0
- package/dist/core/mcp-name-judge.js +61 -0
- package/dist/core/mcp-probe.d.ts +1 -1
- package/dist/core/mcp-probe.js +2 -5
- package/dist/core/mcp.d.ts +5 -1
- package/dist/core/mcp.js +70 -64
- package/dist/core/memory-engine/consolidation-driver.js +4 -3
- package/dist/core/memory-engine/delegation-settlement.js +15 -24
- package/dist/core/memory-engine/distiller.js +26 -17
- 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 +70 -8
- 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 +32 -38
- package/dist/core/namespaced-rule-name.js +29 -36
- package/dist/core/parent-spec-seat.d.ts +6 -1
- package/dist/core/parent-spec-seat.js +2 -0
- package/dist/core/park-selfcheck.js +3 -0
- package/dist/core/permission-rule-consent.d.ts +24 -3
- package/dist/core/permission-rule-consent.js +136 -41
- package/dist/core/permission-rule-model.d.ts +57 -5
- package/dist/core/permission-rule-model.js +90 -31
- package/dist/core/permission-rule-org.d.ts +6 -2
- package/dist/core/permission-rule-org.js +8 -4
- package/dist/core/permission-rule-provider.d.ts +5 -2
- package/dist/core/permission-rule-provider.js +41 -11
- package/dist/core/permission-rule-store.d.ts +3 -2
- package/dist/core/permission-rule-store.js +11 -2
- package/dist/core/permission-rule-sync.js +3 -2
- 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 +4 -4
- package/dist/core/permission-rules.js +11 -20
- package/dist/core/persisted-rule-arms.d.ts +2 -2
- package/dist/core/persisted-rule-arms.js +10 -12
- 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 +40 -5
- package/dist/core/protocol-http-auth.js +168 -4
- package/dist/core/protocol-naming.d.ts +20 -0
- package/dist/core/protocol-naming.js +20 -3
- package/dist/core/read-only-shell.d.ts +20 -5
- package/dist/core/read-only-shell.js +29 -14
- package/dist/core/remote-env.d.ts +37 -1
- package/dist/core/remote-env.js +11 -0
- package/dist/core/resume-startup-cause.d.ts +24 -2
- package/dist/core/resume-startup-cause.js +20 -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 +28 -1
- package/dist/core/roles.js +81 -26
- package/dist/core/rule-lane-reads.d.ts +20 -15
- package/dist/core/rule-lane-reads.js +45 -17
- package/dist/core/rule-owner.d.ts +3 -3
- package/dist/core/rule-owner.js +3 -2
- package/dist/core/runner/announce-once-ledger.d.ts +14 -0
- package/dist/core/runner/announce-once-ledger.js +5 -0
- package/dist/core/runner/assemble-result.d.ts +1 -0
- 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 +16 -4
- package/dist/core/runner/caller-roster.js +33 -6
- 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 +7 -9
- package/dist/core/runner/classifier-ladder.js +3 -3
- package/dist/core/runner/compact-session.d.ts +10 -0
- package/dist/core/runner/compact-session.js +202 -0
- package/dist/core/runner/compaction-call-options.d.ts +2 -2
- package/dist/core/runner/compaction-seams.d.ts +21 -1
- package/dist/core/runner/compaction-seams.js +11 -8
- package/dist/core/runner/construction-doors.js +3 -0
- package/dist/core/runner/contracts.d.ts +50 -40
- package/dist/core/runner/cross-boundary-lane.d.ts +17 -13
- package/dist/core/runner/cross-boundary-lane.js +40 -27
- package/dist/core/runner/denial-limit-arms.d.ts +2 -2
- package/dist/core/runner/denial-limit-arms.js +1 -1
- package/dist/core/runner/derived-route-fallback.d.ts +13 -0
- package/dist/core/runner/derived-route-fallback.js +6 -0
- package/dist/core/runner/env-capability-census.d.ts +3 -2
- package/dist/core/runner/env-capability-census.js +9 -3
- 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 +3 -3
- package/dist/core/runner/gate-exit.js +4 -3
- package/dist/core/runner/image.d.ts +7 -17
- package/dist/core/runner/image.js +9 -60
- package/dist/core/runner/permission-rule-lanes.d.ts +11 -11
- package/dist/core/runner/permission-rule-lanes.js +39 -17
- package/dist/core/runner/person-path-rows.d.ts +12 -9
- package/dist/core/runner/person-path-rows.js +18 -7
- package/dist/core/runner/prepare-acquire-reconcile.d.ts +3 -0
- package/dist/core/runner/prepare-acquire-reconcile.js +2 -1
- 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 +4 -3
- package/dist/core/runner/prepare-config-doors.d.ts +35 -38
- package/dist/core/runner/prepare-config-doors.js +46 -28
- 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-file-history.d.ts +48 -8
- package/dist/core/runner/prepare-file-history.js +7 -39
- package/dist/core/runner/prepare-gate-stations.d.ts +1 -1
- package/dist/core/runner/prepare-gate-stations.js +10 -1
- package/dist/core/runner/prepare-hands-readface.d.ts +5 -9
- package/dist/core/runner/prepare-hands-readface.js +17 -14
- package/dist/core/runner/prepare-inherited-gate.d.ts +6 -3
- package/dist/core/runner/prepare-inherited-gate.js +5 -3
- package/dist/core/runner/prepare-memory-engine-session.js +1 -1
- package/dist/core/runner/prepare-park-ask.d.ts +2 -0
- package/dist/core/runner/prepare-park-ask.js +7 -7
- package/dist/core/runner/prepare-policy-chain.d.ts +6 -3
- package/dist/core/runner/prepare-policy-chain.js +67 -76
- 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 +3 -5
- package/dist/core/runner/prepare-protocol-tools.d.ts +2 -0
- package/dist/core/runner/prepare-protocol-tools.js +3 -3
- package/dist/core/runner/prepare-safety-scan.d.ts +1 -1
- package/dist/core/runner/prepare-safety-scan.js +0 -17
- 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 +5 -2
- package/dist/core/runner/prepare-task.js +48 -43
- package/dist/core/runner/prepare-tool-disclosure-mount.d.ts +20 -4
- package/dist/core/runner/prepare-tool-disclosure-mount.js +33 -23
- 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 +6 -2
- 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/retired-runner-deps.js +1 -0
- package/dist/core/runner/rewind-files.d.ts +12 -0
- package/dist/core/runner/rewind-files.js +90 -0
- package/dist/core/runner/run-attachment-seats.js +2 -1
- 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-harness-handlers.js +12 -4
- package/dist/core/runner/run-leg.d.ts +1 -1
- package/dist/core/runner/run-leg.js +40 -39
- package/dist/core/runner/run-notification-lane.d.ts +2 -0
- package/dist/core/runner/run-notification-lane.js +2 -2
- package/dist/core/runner/run-recovery-lanes.js +3 -4
- package/dist/core/runner/run-settle-and-teardown.js +7 -12
- package/dist/core/runner/run-terminal-adoption.js +3 -4
- package/dist/core/runner/run-turn-boundary.js +4 -15
- package/dist/core/runner/runtask.d.ts +10 -0
- package/dist/core/runner/runtask.js +35 -42
- package/dist/core/runner/send-message-continuation.js +1 -1
- 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.js +4 -3
- package/dist/core/runner/session-verb-doors.d.ts +28 -0
- package/dist/core/runner/session-verb-doors.js +48 -0
- package/dist/core/runner/session-write-ledger.d.ts +30 -0
- package/dist/core/runner/session-write-ledger.js +101 -0
- 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/skills-seat.js +6 -2
- package/dist/core/runner/stream-settle-backstop.js +12 -15
- package/dist/core/runner/sub-agent-deny-lists.d.ts +25 -3
- package/dist/core/runner/sub-agent-deny-lists.js +25 -17
- package/dist/core/runner/synthetic-tools.d.ts +6 -0
- package/dist/core/runner/synthetic-tools.js +4 -1
- package/dist/core/runner/teardown-bounded.d.ts +1 -0
- package/dist/core/runner/teardown-bounded.js +1 -0
- package/dist/core/runner/tool-disclosure.d.ts +10 -12
- package/dist/core/runner/tool-disclosure.js +1 -3
- 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-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/turn-attachments.d.ts +33 -15
- package/dist/core/runner/turn-attachments.js +62 -37
- package/dist/core/runner-deps.d.ts +7 -7
- 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 +11 -3
- package/dist/core/secret-env.d.ts +30 -3
- package/dist/core/secret-env.js +47 -8
- package/dist/core/select-model.js +3 -3
- package/dist/core/session-policy-store.d.ts +32 -15
- package/dist/core/session-policy-store.js +156 -36
- package/dist/core/session-store.d.ts +29 -10
- package/dist/core/session-store.js +51 -19
- package/dist/core/session.d.ts +82 -16
- package/dist/core/session.js +53 -0
- 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.d.ts +1 -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.js +10 -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/background-agent-store-contract.js +1 -0
- package/dist/core/store-contracts/checkpoint-store-contract.d.ts +11 -1
- package/dist/core/store-contracts/checkpoint-store-contract.js +141 -2
- package/dist/core/store-contracts/file-history-store-contract.js +40 -1
- package/dist/core/store-contracts/mailbox-store-contract.js +49 -1
- 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-repo-contract.js +51 -0
- package/dist/core/store-contracts/session-store-contract.d.ts +2 -1
- package/dist/core/store-contracts/session-store-contract.js +150 -14
- package/dist/core/stub-env.d.ts +2 -0
- package/dist/core/stub-env.js +1 -0
- package/dist/core/synthetic-read-verdict.js +3 -3
- package/dist/core/task-event.d.ts +32 -4
- package/dist/core/task-notification.d.ts +16 -12
- package/dist/core/task-registry-agent.d.ts +8 -4
- package/dist/core/task-registry-agent.js +14 -8
- package/dist/core/task-registry-shared.d.ts +35 -6
- package/dist/core/task-registry-shared.js +11 -0
- package/dist/core/task-registry.d.ts +10 -1
- package/dist/core/task-registry.js +12 -2
- package/dist/core/task-result.d.ts +18 -0
- package/dist/core/task-spec.d.ts +18 -13
- package/dist/core/tighten-task-spec.js +2 -1
- package/dist/core/tool-catalog-entries.d.ts +23 -0
- package/dist/core/tool-catalog-entries.js +14 -2
- package/dist/core/tool-check-reading.d.ts +11 -0
- package/dist/core/tool-check-reading.js +11 -6
- package/dist/core/tool-model-gate.d.ts +2 -2
- package/dist/core/tool-name-aliases.d.ts +48 -18
- package/dist/core/tool-name-aliases.js +36 -19
- package/dist/core/tool-name-readings.d.ts +6 -32
- package/dist/core/tool-name-readings.js +2 -9
- package/dist/core/tool-policy.d.ts +78 -204
- package/dist/core/tool-policy.js +152 -204
- package/dist/core/tool-result-store.js +3 -0
- package/dist/core/tool-roster.d.ts +14 -19
- package/dist/core/tool-roster.js +11 -44
- package/dist/core/tool-spec-members.js +7 -2
- package/dist/core/tool-spec.d.ts +19 -11
- package/dist/core/tools.js +49 -9
- package/dist/core/trace.d.ts +6 -3
- package/dist/core/trace.js +2 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/untrusted-egress.d.ts +20 -0
- package/dist/core/untrusted-egress.js +77 -3
- package/dist/core/user-attachment.d.ts +8 -1
- package/dist/core/user-attachment.js +64 -4
- package/dist/core/wiring-manifest.d.ts +9 -0
- package/dist/core/wiring-manifest.js +1 -0
- package/dist/core/workflow-journal-store.js +1 -1
- package/dist/engine/compaction/compaction.js +3 -2
- package/dist/engine/execution-env/node-execution-env.d.ts +7 -3
- package/dist/engine/execution-env/node-execution-env.js +11 -2
- package/dist/engine/harness/agent-harness.d.ts +32 -6
- package/dist/engine/harness/agent-harness.js +65 -9
- package/dist/engine/harness/types.d.ts +29 -2
- package/dist/engine/llm/types.d.ts +28 -11
- package/dist/engine/loop/agent-loop.d.ts +23 -4
- package/dist/engine/loop/agent-loop.js +42 -30
- package/dist/engine/loop/types.d.ts +16 -6
- package/dist/engine/session/memory-repo.d.ts +9 -2
- package/dist/engine/session/memory-repo.js +11 -1
- package/dist/engine/session/repo-utils.d.ts +6 -5
- package/dist/engine/session/repo-utils.js +14 -6
- package/dist/index.d.ts +34 -17
- package/dist/index.js +22 -11
- package/dist/internal/harness-types.d.ts +1 -1
- package/dist/internal/harness.d.ts +2 -1
- package/dist/internal/harness.js +1 -0
- package/dist/internal/llm.d.ts +1 -1
- package/dist/orchestration/run-workflow-tool.d.ts +6 -4
- package/dist/orchestration/run-workflow-tool.js +5 -3
- package/dist/orchestration/workflow.d.ts +3 -0
- package/dist/orchestration/workflow.js +36 -18
- package/dist/primitives/credential-ref.d.ts +89 -0
- package/dist/primitives/credential-ref.js +125 -0
- package/dist/primitives/index.d.ts +2 -0
- package/dist/primitives/index.js +1 -0
- 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 +1 -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 +37 -3
- package/dist/prompt-assembly/tool-catalog.js +114 -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/scenarios/full-body.d.ts +11 -11
- package/dist/scenarios/full-body.js +4 -3
- package/dist/shell/lex.js +10 -1
- package/dist/stores/file/adoption/adopt.js +4 -3
- package/dist/stores/file/adoption/marker.js +3 -2
- package/dist/stores/file/checkpoint-store.d.ts +21 -4
- package/dist/stores/file/checkpoint-store.js +38 -7
- package/dist/stores/file/file-history-store.js +18 -11
- package/dist/stores/file/index.js +2 -1
- package/dist/stores/file/mailbox-store.d.ts +2 -1
- package/dist/stores/file/mailbox-store.js +26 -1
- package/dist/stores/file/permission-rule-adopt.js +4 -3
- package/dist/stores/file/permission-rule-store.js +11 -5
- package/dist/stores/file/session-store.d.ts +29 -6
- package/dist/stores/file/session-store.js +42 -50
- package/dist/tools/artifact/artifact-tool.js +3 -2
- 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 +15 -19
- package/dist/tools/fs/bash-readonly-classifier.js +5 -10
- package/dist/tools/fs/fs-bash.js +15 -8
- 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/pattern-kill-guard.d.ts +23 -0
- package/dist/tools/fs/pattern-kill-guard.js +429 -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/removal-targets.d.ts +17 -7
- package/dist/tools/fs/removal-targets.js +47 -20
- package/dist/tools/fs/search.d.ts +10 -0
- 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.d.ts +10 -0
- package/dist/tools/fs/shell-read-check.js +13 -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-identity.d.ts +12 -9
- package/dist/tools/fs/shell-read-identity.js +9 -4
- 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/todo.js +63 -63
- package/dist/tools/web.d.ts +19 -14
- package/dist/tools/web.js +46 -61
- package/package.json +1 -1
- package/test/export-surface.snapshot.json +221 -7
- package/wire-changes/core-stores-sql@7.57.0.json +29 -0
- package/wire-changes/core@7.56.0.json +3891 -0
- package/wire-changes/core@7.57.0.json +1487 -0
- package/wire-changes/mods-kernel@7.56.0.json +303 -0
- package/wire-changes/mods-kernel@7.57.0.json +29 -0
- package/wire-changes/primitives@7.57.0.json +245 -0
|
@@ -6,6 +6,7 @@ import { lastAttachmentFrameOf } from "../user-attachment.js";
|
|
|
6
6
|
import { reconcileInterruptedSession } from "../session-reconcile.js";
|
|
7
7
|
import { detectConflicts, settleBranchWriteBack } from "./branch-writeback.js";
|
|
8
8
|
import { settleTeardownLeg } from "./teardown-bounded.js";
|
|
9
|
+
import { writesThroughLeg } from "./session-write-ledger.js";
|
|
9
10
|
const RECONCILE_MAX_RETRIES = 3;
|
|
10
11
|
export async function prepareAcquireReconcile(input) {
|
|
11
12
|
const { sessions, spec, resume, wakeEffects } = input;
|
|
@@ -29,7 +30,7 @@ export async function prepareAcquireReconcile(input) {
|
|
|
29
30
|
}
|
|
30
31
|
conflictRef = { hit: false };
|
|
31
32
|
const own = { ids: undefined };
|
|
32
|
-
session = new StoredSession(detectConflicts(acquired.session.getStorage(), conflictRef, own));
|
|
33
|
+
session = new StoredSession(detectConflicts(input.legWrites !== undefined ? writesThroughLeg(acquired.session.getStorage(), input.legWrites, acquired.sessionId) : acquired.session.getStorage(), conflictRef, own));
|
|
33
34
|
if (!spec.sessionId) {
|
|
34
35
|
break;
|
|
35
36
|
}
|
|
@@ -38,8 +38,8 @@ export interface PrepareAskLaneInput {
|
|
|
38
38
|
advertisedWritableDirs: Pick<AdvertisedWritableDirs, "roots"> | undefined;
|
|
39
39
|
/** borrowed-readonly — the leg's ONE exempt root, stamped on every request a policy judges (`ToolCallRequest.exemptRoots`). */
|
|
40
40
|
exemptRoots: readonly string[];
|
|
41
|
-
/** borrowed-readonly — the shared mount roster; read at RUN time by the approval-preview projection (
|
|
42
|
-
*
|
|
41
|
+
/** borrowed-readonly — the shared mount roster; read at RUN time by the approval-preview projection (the dispatcher's
|
|
42
|
+
* resolution over whatever the roster holds when the ask is minted). Never mutated here. */
|
|
43
43
|
tools: readonly AgentTool[];
|
|
44
44
|
/** borrowed-mutable — the inherited-unavailable marker set. Writer here: `resolveAskBound` consumes (`delete`) a
|
|
45
45
|
* marked call at its fail-closed intercept; the policy-chain phase records, the gate station sweeps. */
|
|
@@ -6,9 +6,11 @@ import { exactBoundInputHashOf } from "../canonical-json.js";
|
|
|
6
6
|
import { composeCallSignal, raceSettlementAgainstSignal } from "./abort-race.js";
|
|
7
7
|
import { failedJudgmentDeny, policyCheckAbortedDeny } from "./policy-throw.js";
|
|
8
8
|
import { askMandateMember } from "../ask-origin.js";
|
|
9
|
-
import { approvalCardMemberOf } from "../tool-roster.js";
|
|
9
|
+
import { approvalCardMemberOf, survivorsByName } from "../tool-roster.js";
|
|
10
|
+
import { toolNameIndex } from "../../internal/llm.js";
|
|
10
11
|
import { gateAskCarry, lateAskSettlementObserver } from "./denial-limit-arms.js";
|
|
11
12
|
import { consumeInheritedAskGrant } from "./inherited-ask-grants.js";
|
|
13
|
+
import { requesterOf } from "../mods/extension-call.js";
|
|
12
14
|
import { settleReadRootGrant } from "./read-root-grant.js";
|
|
13
15
|
function createDenyObserverNotifier(bus, signal) {
|
|
14
16
|
if (bus === undefined || !bus.hasHandlers("classic.PermissionDenied"))
|
|
@@ -32,7 +34,7 @@ const sanitizePreview = (node, depth = 0) => {
|
|
|
32
34
|
return out;
|
|
33
35
|
};
|
|
34
36
|
function resolveApprovalPreview(tools, toolName, args) {
|
|
35
|
-
const t =
|
|
37
|
+
const t = toolNameIndex([...survivorsByName(tools).values()])(toolName);
|
|
36
38
|
if (t?.approvalPreview === undefined)
|
|
37
39
|
return {};
|
|
38
40
|
try {
|
|
@@ -106,6 +108,7 @@ export function prepareAskLane(input) {
|
|
|
106
108
|
...askSourceIdentity(),
|
|
107
109
|
...riskAxesOf(req),
|
|
108
110
|
...approvalCardMemberOf(req),
|
|
111
|
+
...requesterOf(modBus, req.toolCallId),
|
|
109
112
|
...(decision.action === "ask" && decision.requiresRealApproval === true ? { requiresRealApproval: true } : {}),
|
|
110
113
|
...(decision.action === "ask" ? askMandateMember(decision) : {}),
|
|
111
114
|
...(decision.action === "ask" ? gateAskCarry(decision, isLiveApproverSeat(onAsk), autoModeDenialTracking.current) : {}),
|
|
@@ -36,7 +36,7 @@ import type { AssertAllKeysHandled } from "../ask-origin.js";
|
|
|
36
36
|
import { type ChildClampSource } from "../child-clamp-seats.js";
|
|
37
37
|
import type { InheritedGate, Prepared, RunInternals, RunnerSelfSeat, ToolFaceSnapshot } from "./contracts.js";
|
|
38
38
|
import { type BlockedRef } from "./synthetic-tools.js";
|
|
39
|
-
import { RosterBuilder
|
|
39
|
+
import { RosterBuilder } from "../tool-roster.js";
|
|
40
40
|
import type { ParentSpecSeat } from "../parent-spec-seat.js";
|
|
41
41
|
import { type RosterSpec } from "./caller-roster.js";
|
|
42
42
|
export interface PrepareCapsAndWorkflowInput {
|
|
@@ -56,7 +56,7 @@ export interface PrepareCapsAndWorkflowInput {
|
|
|
56
56
|
/** borrowed-readonly — the trusted spawn-side channel; the Workflow mount forwards `rootSessionId`, `placementRoot`,
|
|
57
57
|
* `onTaskNotification`, `workflowDepth`, the capture-floor getter reads `memoryCaptureAncestors`, and the arming reads
|
|
58
58
|
* the chain's auto-mode face (`inheritedGate.autoModeFace`). */
|
|
59
|
-
internals: Pick<RunInternals, "rootSessionId" | "placementRoot" | "onTaskNotification" | "workflowDepth" | "memoryCaptureAncestors" | "workflowParkedResume" | "questionFaceStripped" | "inheritedGate"> | undefined;
|
|
59
|
+
internals: Pick<RunInternals, "rootSessionId" | "placementRoot" | "onTaskNotification" | "workflowDepth" | "memoryCaptureAncestors" | "workflowParkedResume" | "holder" | "questionFaceStripped" | "inheritedGate"> | undefined;
|
|
60
60
|
/** borrowed-readonly — the tree's cross-boundary token (inherited or minted), which the Workflow mount hands to its children. */ crossBoundaryTree: import("../cross-boundary-taint.js").CrossBoundaryTreeToken;
|
|
61
61
|
/** borrowed-readonly — the acquired session; the classifier leg rebuilds its transcript window from `buildContext`. */
|
|
62
62
|
session: Pick<StoredSession, "buildContext">;
|
|
@@ -78,12 +78,10 @@ export interface PrepareCapsAndWorkflowInput {
|
|
|
78
78
|
lockedPreflight: Pick<LockedPreflight, "mcp">;
|
|
79
79
|
/** borrowed-mutable — the effect collection (`Prepared.toolEffects`): the safety scan's caller entries, then the mounts' writes. */
|
|
80
80
|
toolEffects: Prepared["toolEffects"];
|
|
81
|
-
/** borrowed-mutable — the scan's axis tables, so the builder moves an alias's axes with its member (a phase test may omit them). */
|
|
82
|
-
safetyAxes?: RosterAxisTables;
|
|
83
81
|
/** borrowed-readonly — the frozen tool-face snapshot the Workflow mount forwards (exclude / defer / alwaysLoad / restoreGated). */
|
|
84
82
|
toolFaceSnapshot: ToolFaceSnapshot;
|
|
85
|
-
/** borrowed-readonly — the
|
|
86
|
-
|
|
83
|
+
/** borrowed-readonly — the task-level lean switch (the Workflow mount's parentPromptLean; absent ⇒ no key). */
|
|
84
|
+
promptLean: ToolExecuteContext["promptLean"];
|
|
87
85
|
/** borrowed-readonly — the resolved interaction posture (the Workflow mount's parentInteractionPosture; absent ⇒ no key). */
|
|
88
86
|
resolvedInteractionPosture: ToolExecuteContext["interactionPosture"];
|
|
89
87
|
/** borrowed-readonly — the harness seat; the Workflow mount's parentModel / parentThinking getters read it call-time. */
|
|
@@ -117,8 +117,8 @@ function autoModeArmReasonOf(intent, facePresent, caps, capsFaulted) {
|
|
|
117
117
|
return { armed: true, reason: "armed" };
|
|
118
118
|
}
|
|
119
119
|
export async function prepareCapsAndWorkflow(input) {
|
|
120
|
-
const { spec, deps, parentSpecSeat, checkpointSeat, internals, session, sessionId, runId, hostTaskId, taskScope, taskRootFinal, model, thinking, lockedPreflight, toolEffects,
|
|
121
|
-
const roster = new RosterBuilder(toolEffects
|
|
120
|
+
const { spec, deps, parentSpecSeat, checkpointSeat, internals, session, sessionId, runId, hostTaskId, taskScope, taskRootFinal, model, thinking, lockedPreflight, toolEffects, toolFaceSnapshot, promptLean, resolvedInteractionPosture, harnessRef, askSeat, runClampSource, forwardEvent, inheritedGateForChildren, enrichSpecToolCtx, maybeOffload, requestReview, enterPlanMode, permissionMode, readDenyEntries, peerLaneActive, peerSendMessageBuiltIn, runnerSelf, delegated, sideCallBookRef } = input;
|
|
121
|
+
const roster = new RosterBuilder(toolEffects);
|
|
122
122
|
for (const t of spec.tools ?? []) {
|
|
123
123
|
const mounted = mountCallerTool(t);
|
|
124
124
|
roster.mount(mounted, { source: callerMountSource(mounted), mountedBy: "scenario" });
|
|
@@ -317,7 +317,7 @@ export async function prepareCapsAndWorkflow(input) {
|
|
|
317
317
|
parentDeferTools: toolFaceSnapshot.defer,
|
|
318
318
|
parentAlwaysLoadTools: toolFaceSnapshot.alwaysLoad,
|
|
319
319
|
...(toolFaceSnapshot.restoreGated !== undefined ? { parentRestoreGatedTools: toolFaceSnapshot.restoreGated } : {}),
|
|
320
|
-
|
|
320
|
+
...(promptLean !== undefined ? { parentPromptLean: promptLean } : {}),
|
|
321
321
|
models: deps.models,
|
|
322
322
|
agents: deps.agents,
|
|
323
323
|
builtinAgents: deps.builtinAgents,
|
|
@@ -352,6 +352,7 @@ export async function prepareCapsAndWorkflow(input) {
|
|
|
352
352
|
return mine.length > 0 ? mine : undefined;
|
|
353
353
|
} }
|
|
354
354
|
: {}),
|
|
355
|
+
...(internals?.holder !== undefined ? { holder: internals.holder } : {}),
|
|
355
356
|
parentSpecSeat, ...(internals?.questionFaceStripped === true ? { parentQuestionFaceStripped: true } : {}),
|
|
356
357
|
...(resolvedInteractionPosture !== undefined ? { parentInteractionPosture: resolvedInteractionPosture } : {}),
|
|
357
358
|
parentMemoryCaptureState: () => {
|
|
@@ -23,6 +23,7 @@ import type { Model } from "../../internal/llm.js";
|
|
|
23
23
|
import type { ThinkingLevel } from "../../internal/harness.js";
|
|
24
24
|
import { type MicroCompactMachine } from "../context-edit.js";
|
|
25
25
|
import { type CrossBoundaryPosture } from "../cross-boundary-taint.js";
|
|
26
|
+
import { type HostFloor } from "../host-floor.js";
|
|
26
27
|
import { recordedModeSeed } from "../checkpoint-store.js";
|
|
27
28
|
import { type ConfigDoorEntry, type LockedPreflight } from "../locked-config.js";
|
|
28
29
|
import { type ResolvedRole } from "../roles.js";
|
|
@@ -33,10 +34,24 @@ import { type UsageWindow } from "../usage-window-store.js";
|
|
|
33
34
|
import { type AskSeat } from "../wiring-manifest.js";
|
|
34
35
|
import type { PrepareResume, RunInternals, ToolFaceLists } from "./contracts.js";
|
|
35
36
|
import { resolveHost } from "../../prompt-assembly/select.js";
|
|
37
|
+
import type { PromptTraitName } from "../../prompt-assembly/catalog/schema.js";
|
|
36
38
|
import { type RosterSpec } from "./caller-roster.js";
|
|
39
|
+
/**
|
|
40
|
+
* The model a compaction pass summarizes on: the explicit `compactionModel` wins (resolved at `seat`, the word a
|
|
41
|
+
* refusal names), else the `summarize` role when one is configured, else `undefined` — the pass then falls back to
|
|
42
|
+
* the main model inside `maybeCompact`. One reading for a run's prepare and the out-of-run `Runner.compactSession`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveCompactionModel(spec: Pick<TaskSpec, "compactionModel" | "roles">, deps: Pick<RunnerDeps, "models" | "roles">, seat: string): Model | undefined;
|
|
37
45
|
export declare function limitConfigError(code: string, message: string): Error & {
|
|
38
46
|
code?: string;
|
|
39
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* `TaskSpec.principal`: absent (omitted, or the empty string the engine has always read as no principal) or a principal name. A
|
|
50
|
+
* principal that was PROVIDED and is no name (white space, an invisible or control character, a non-string) is refused at the task, on
|
|
51
|
+
* every leg a resume's re-supplied config included — read as "no principal" it would reach the unauthenticated floor, or, on a
|
|
52
|
+
* deployment that declared local-owner rules, the machine owner's standing approvals.
|
|
53
|
+
*/
|
|
54
|
+
export declare function assertPrincipalValue(raw: unknown): void;
|
|
40
55
|
/**
|
|
41
56
|
* Validate `TaskSpec.limits` at the door and return it unchanged.
|
|
42
57
|
*
|
|
@@ -52,8 +67,9 @@ export declare function limitConfigError(code: string, message: string): Error &
|
|
|
52
67
|
*/
|
|
53
68
|
export declare function resolveTaskLimits(limits: TaskLimits | undefined): TaskLimits | undefined;
|
|
54
69
|
/**
|
|
55
|
-
* Validate the
|
|
56
|
-
* config unchanged. Today that is
|
|
70
|
+
* Validate the members of `TaskSpec.attachments` that refuse a value they cannot read at the same door, and return the
|
|
71
|
+
* config unchanged. Today that is two: the mode-valued `totalTokensReminderMode` and the boolean switch `mcpUnavailable`
|
|
72
|
+
* (read by its own reader, `mcpUnavailableOn`, which the leg asks as well).
|
|
57
73
|
*
|
|
58
74
|
* WHY A DOOR AT ALL (坏值响亮度律): a knob whose bad value silently folds to the default is a knob the
|
|
59
75
|
* deployment believes is armed. `totalTokensReminderMode: "padded_countdown"` (underscore) or
|
|
@@ -86,36 +102,13 @@ export declare function resolveTaskLimits(limits: TaskLimits | undefined): TaskL
|
|
|
86
102
|
*/
|
|
87
103
|
export declare function resolveAttachmentsConfig(attachments: TaskSpec["attachments"]): TaskSpec["attachments"];
|
|
88
104
|
/**
|
|
89
|
-
*
|
|
90
|
-
* `
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* as fable), case-normalized. Recognition set = CC's _Nr (startsWith "claude-fable-") + b9e
|
|
95
|
-
* (mythos-5). R3 system sections fork on the resulting fact.
|
|
105
|
+
* The run's prompt traits — the one place prepare forms them: the model's declared set (`Model.promptTraits`, read
|
|
106
|
+
* through the model door: a retired `promptGuidance` or a name that is no trait refuses the task by name) with the
|
|
107
|
+
* task's switch on `lean_prompt` (`promptLean`, as the spec writes it — an engine-built child's spec carries its
|
|
108
|
+
* parent's), bundles expanded ({@link effectiveTraitsOf}). The reference's counterpart is a model registry's capability list; sema is
|
|
109
|
+
* BYOM, so the model entry carries the list and no model id is read.
|
|
96
110
|
*/
|
|
97
|
-
export declare function
|
|
98
|
-
/**
|
|
99
|
-
* The SINGLE decision point for the two prompt-shape axes.
|
|
100
|
-
* Both were resolved in separate places with different mechanisms — `promptProfile` off a TaskSpec field,
|
|
101
|
-
* `fableMitigations` off a raw model-id prefix test — so "which shape does this task speak" had no one
|
|
102
|
-
* place to read. The reference's counterpart is a model-registry `capabilities` array (one table drives
|
|
103
|
-
* `lean_prompt` + `fable_5_mitigations` alike).
|
|
104
|
-
*
|
|
105
|
-
* sema stays BYOM: we cannot key off a capability table for arbitrary model ids, so the RESOLUTION RULES
|
|
106
|
-
* are unchanged — profile: spec > inherited internals > "simple"; mitigations: model family. This is a
|
|
107
|
-
* consolidation, not a behavior change (the axes stay ORTHOGONAL: neither rewrites the other).
|
|
108
|
-
*/
|
|
109
|
-
export declare function resolveModelPromptTraits(model: {
|
|
110
|
-
id: string;
|
|
111
|
-
}, spec: {
|
|
112
|
-
promptProfile?: "simple" | "classic";
|
|
113
|
-
}, internals?: {
|
|
114
|
-
promptProfile?: "simple" | "classic";
|
|
115
|
-
}): {
|
|
116
|
-
promptProfile: "simple" | "classic";
|
|
117
|
-
fableMitigations: boolean;
|
|
118
|
-
};
|
|
111
|
+
export declare function resolvePromptTraits(model: Model, promptLean: boolean | undefined): ReadonlySet<PromptTraitName>;
|
|
119
112
|
export interface PrepareConfigDoorsInput {
|
|
120
113
|
/** borrowed-readonly — the snapshot spec (its roster is faces). NEVER mutated here: the per-task agents rebind returns a
|
|
121
114
|
* SHALLOW COPY on {@link PrepareConfigDoorsResult.spec} (only `tools` replaced, each rebuilt entry through the snapshot). */
|
|
@@ -130,7 +123,7 @@ export interface PrepareConfigDoorsInput {
|
|
|
130
123
|
/** borrowed-readonly — presence gates the resumeAt-conflict door and exempts the empty-objective
|
|
131
124
|
* door (a checkpoint resume passes `objective: ""` by design). */
|
|
132
125
|
resume?: PrepareResume | undefined;
|
|
133
|
-
/** borrowed-readonly — trusted engine channel:
|
|
126
|
+
/** borrowed-readonly — trusted engine channel: the spawning run's
|
|
134
127
|
* interaction posture, the engine question-strip flag. */
|
|
135
128
|
internals?: RunInternals | undefined;
|
|
136
129
|
}
|
|
@@ -142,8 +135,12 @@ export interface PrepareConfigDoorsResult {
|
|
|
142
135
|
/** owned — the frozen task-start copies of the caller's tool-face control arrays; the driver compiles the leg's selector
|
|
143
136
|
* from them, and the selector (with the disclosure lists) is the ONLY thing later face reads consult. Frozen-immutable. */
|
|
144
137
|
toolFaceLists: ToolFaceLists;
|
|
145
|
-
/** owned — the
|
|
146
|
-
|
|
138
|
+
/** owned — the task-level switch on the lean shape (`TaskSpec.promptLean`, validated; an engine-built child's spec
|
|
139
|
+
* carries its parent's): what the run hands its children and workflow agents, never its effective traits. */
|
|
140
|
+
promptLean: boolean | undefined;
|
|
141
|
+
/** owned, frozen-by-contract — the run's effective prompt traits ({@link resolvePromptTraits}): the catalog's
|
|
142
|
+
* variants, every overlay's `when.traits` and each tool's description variants select on them. */
|
|
143
|
+
promptTraits: ReadonlySet<PromptTraitName>;
|
|
147
144
|
/** owned — the host selector values (`TaskSpec.promptRole` / `TaskSpec.promptForm`, validated) the assembly selects on. */
|
|
148
145
|
promptHost: ReturnType<typeof resolveHost>;
|
|
149
146
|
/** owned — the run's binding (`TaskSpec.promptBinding`, validated): the selector value every overlay's `when.binding` reads. */
|
|
@@ -170,8 +167,6 @@ export interface PrepareConfigDoorsResult {
|
|
|
170
167
|
/** owned — the compaction model: explicit wins, else the `summarize` role, else undefined (main
|
|
171
168
|
* model fallback inside maybeCompact). NOT derivable from {@link resolvedRole}. */
|
|
172
169
|
compModel: Model | undefined;
|
|
173
|
-
/** owned — the mitigations half of the decision point (model-family fact). */
|
|
174
|
-
fableMitigations: boolean;
|
|
175
170
|
/** owned, frozen — model-gate DISCLOSURE data (the application itself already
|
|
176
171
|
* happened on {@link spec}: its `tools` is the survivor rebind when anything was removed).
|
|
177
172
|
* prepareTask emits the notices from this after the doors return (the onNotice station);
|
|
@@ -214,6 +209,7 @@ export interface PrepareConfigDoorsResult {
|
|
|
214
209
|
/** owned — the screened cross-boundary posture: the deps seat read ONCE, a bad value refused; absent stays `undefined` (undeclared is its own fact). */
|
|
215
210
|
crossBoundaryPosture: CrossBoundaryPosture | undefined;
|
|
216
211
|
advisorTool: "disabled" | undefined;
|
|
212
|
+
hostFloor: HostFloor | undefined;
|
|
217
213
|
}
|
|
218
214
|
/** The microCompact knob door (坏值响亮度默认律, the sibling knob doors' form:
|
|
219
215
|
* interactionPosture / toolModelGate / staleToolResultOffload). Placement is load-bearing:
|
|
@@ -238,7 +234,7 @@ export declare const checkpointStoreSeat: (spec: {
|
|
|
238
234
|
export declare function assertResumeConfigRecord(config: unknown): void;
|
|
239
235
|
/** The spec the value doors read: a prepare's (its roster is faces) or a resume's re-supplied config (no objective, no session id). */
|
|
240
236
|
type ValueDoorSpec = Omit<TaskSpec, "tools" | "objective" | "sessionId" | "userAttachments"> & Partial<Pick<TaskSpec, "objective" | "sessionId">>;
|
|
241
|
-
type ConfigValueDoorsResult = Pick<PrepareConfigDoorsResult, "toolFaceLists" | "promptHost" | "promptBinding" | "lockedPreflight" | "microCompactKnob" | "memoryDelegationEvidence" | "memoryProvenance" | "memoryCapturePolicy" | "usageWindows" | "brainCallGuardrailMs" | "crossBoundaryPosture" | "advisorTool"> & {
|
|
237
|
+
type ConfigValueDoorsResult = Pick<PrepareConfigDoorsResult, "toolFaceLists" | "promptHost" | "promptBinding" | "lockedPreflight" | "microCompactKnob" | "memoryDelegationEvidence" | "memoryProvenance" | "memoryCapturePolicy" | "usageWindows" | "brainCallGuardrailMs" | "crossBoundaryPosture" | "advisorTool" | "promptLean" | "hostFloor"> & {
|
|
242
238
|
skillListingSeats: {
|
|
243
239
|
fraction: unknown;
|
|
244
240
|
maxDescChars: unknown;
|
|
@@ -259,6 +255,7 @@ export declare function configValueDoors(input: {
|
|
|
259
255
|
deps: RunnerDeps;
|
|
260
256
|
resumeLeg: boolean;
|
|
261
257
|
sessions: SessionStore;
|
|
258
|
+
holder?: string | undefined;
|
|
262
259
|
}, enter?: ConfigDoorEntry): ConfigValueDoorsResult;
|
|
263
260
|
/**
|
|
264
261
|
* The doors a RESUMED leg's prepare refuses at, run as one screen BEFORE the claim — prepare's own functions, so a refusal carries
|
|
@@ -273,6 +270,6 @@ export declare function configValueDoors(input: {
|
|
|
273
270
|
* corrected resume redeems the same token. A throw that is none of prepare's codes leaves as it was thrown. Returns the config the
|
|
274
271
|
* leg is handed: the caller's, its MCP servers and A2A peers the frozen entries the lock layer judged (read once, dialed as judged).
|
|
275
272
|
*/
|
|
276
|
-
export declare function refuseResumeDoors<C extends ValueDoorSpec & Pick<TaskSpec, "userAttachments">>(config: C, recordedGate: Parameters<typeof recordedModeSeed>[0], deps: RunnerDeps, sessions: SessionStore): C;
|
|
273
|
+
export declare function refuseResumeDoors<C extends ValueDoorSpec & Pick<TaskSpec, "userAttachments">>(config: C, recordedGate: Parameters<typeof recordedModeSeed>[0], deps: RunnerDeps, sessions: SessionStore, holder?: string): C;
|
|
277
274
|
export declare function prepareConfigDoors(input: PrepareConfigDoorsInput): PrepareConfigDoorsResult;
|
|
278
275
|
export {};
|
|
@@ -3,8 +3,10 @@ import { assertContainmentFaceValue } from "../../tools/fs/index.js";
|
|
|
3
3
|
import { MICRO_COMPACT_MACHINES } from "../context-edit.js";
|
|
4
4
|
import { assertAddOnlySeats } from "../child-clamp-seats.js";
|
|
5
5
|
import { CROSS_BOUNDARY_POSTURES } from "../cross-boundary-taint.js";
|
|
6
|
+
import { compileHostFloor } from "../host-floor.js";
|
|
6
7
|
import { assertNoRetiredRunnerDeps } from "./retired-runner-deps.js";
|
|
7
8
|
import { recordedModeSeed, resolveCheckpointStore } from "../checkpoint-store.js";
|
|
9
|
+
import { assertCheckpointStoreJudgesHolder, assertHolderValue } from "../checkpoint-generation.js";
|
|
8
10
|
import { asResumeConfigRefusal, refusePermissionModeDoors } from "../mode-policy.js";
|
|
9
11
|
import { resolveOutputStyleFrame } from "../output-style.js";
|
|
10
12
|
import { screenUserAttachments } from "../user-attachment.js";
|
|
@@ -15,21 +17,24 @@ import { assertAutoConsolidationWirable } from "./memory-consolidation-driver.js
|
|
|
15
17
|
import { isModelPriced, malformedPricingField, modelCostToPricing } from "../pricing.js";
|
|
16
18
|
import { ENTER_AS_IS, preflightLockedConfig } from "../locked-config.js";
|
|
17
19
|
import { assertRetentionCapability } from "../retention.js";
|
|
18
|
-
import { resolveModel, resolveTaskModel, roleModelIfSet } from "../roles.js";
|
|
20
|
+
import { resolveModel, resolveTaskModel, roleModelIfSet, screenRoleMap } from "../roles.js";
|
|
19
21
|
import { resolveSkillListingBudget } from "../skill-listing-budget.js";
|
|
20
22
|
import { describeRejectedValue } from "../tool-search-setting.js";
|
|
21
23
|
import { assertAdvisorModelShape } from "../advisor-verdict.js";
|
|
22
|
-
import { applyToolModelGate, assertRestoreGatedToolsValue
|
|
24
|
+
import { applyToolModelGate, assertRestoreGatedToolsValue } from "../tool-model-gate.js";
|
|
23
25
|
import { resolveUsageWindows } from "../usage-window-store.js";
|
|
24
26
|
import { deriveAskEffective, resolveAskSeat, resolveQuestionSeam, screenApprovalReach } from "../wiring-manifest.js";
|
|
25
|
-
import { resolveHost } from "../../prompt-assembly/select.js";
|
|
27
|
+
import { effectiveTraitsOf, readModelPromptTraits, resolveHost, resolvePromptLean } from "../../prompt-assembly/select.js";
|
|
28
|
+
import { assertNoRetiredKeys, RETIRED_MODEL_KEYS } from "../retired-keys.js";
|
|
26
29
|
import { resolvePromptBinding } from "../../prompt-assembly/overlay.js";
|
|
27
30
|
import { assertPeerPresenceValue } from "../../agents/peer-directory.js";
|
|
28
31
|
import { snapshotDefinitionLists } from "../../agents/tool-filter.js";
|
|
29
|
-
import { TOTAL_TOKENS_REMINDER_MODES } from "./turn-attachments.js";
|
|
30
|
-
import { rosterFaceOf } from "./caller-roster.js";
|
|
32
|
+
import { mcpUnavailableOn, TOTAL_TOKENS_REMINDER_MODES } from "./turn-attachments.js";
|
|
33
|
+
import { refuseRetiredMember, rosterFaceOf } from "./caller-roster.js";
|
|
31
34
|
import { assertToolBoundaryLegs } from "../tool-roster.js";
|
|
35
|
+
import { assertToolCardDeclarations } from "../../prompt-assembly/tool-catalog.js";
|
|
32
36
|
import { refuseRenamedDelegationMounts } from "./sub-agent-deny-lists.js";
|
|
37
|
+
import { readPrincipal } from "../principal-name.js";
|
|
33
38
|
const TASK_LIMIT_KEY_DICT = {
|
|
34
39
|
maxTokens: true,
|
|
35
40
|
maxCostUsd: true,
|
|
@@ -49,11 +54,20 @@ const RETIRED_TASK_LIMIT_KEYS = {
|
|
|
49
54
|
callCapByDeadline: "(retired — no replacement)",
|
|
50
55
|
gracefulFinalize: "(retired — the approach notice is the only end-of-budget prompt)",
|
|
51
56
|
};
|
|
57
|
+
export function resolveCompactionModel(spec, deps, seat) {
|
|
58
|
+
return spec.compactionModel !== undefined ? resolveModel(spec.compactionModel, deps.models, seat) : roleModelIfSet("summarize", spec, deps);
|
|
59
|
+
}
|
|
52
60
|
export function limitConfigError(code, message) {
|
|
53
61
|
const e = new Error(message);
|
|
54
62
|
e.code = code;
|
|
55
63
|
return e;
|
|
56
64
|
}
|
|
65
|
+
export function assertPrincipalValue(raw) {
|
|
66
|
+
const reading = readPrincipal(raw);
|
|
67
|
+
if (reading.kind === "invalid") {
|
|
68
|
+
throw limitConfigError("config.invalid_argument", `TaskSpec.principal must be a principal name when present (got ${reading.fault}) — omit the key for a task with no principal; a provided value that names nobody is refused, never read as "no principal".`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
57
71
|
export function resolveTaskLimits(limits) {
|
|
58
72
|
if (limits === undefined)
|
|
59
73
|
return undefined;
|
|
@@ -99,6 +113,7 @@ export function resolveTaskLimits(limits) {
|
|
|
99
113
|
export function resolveAttachmentsConfig(attachments) {
|
|
100
114
|
if (attachments === null || (typeof attachments !== "object" && typeof attachments !== "function"))
|
|
101
115
|
return attachments;
|
|
116
|
+
mcpUnavailableOn(attachments);
|
|
102
117
|
const mode = attachments.totalTokensReminderMode;
|
|
103
118
|
if (mode !== undefined) {
|
|
104
119
|
const legal = TOTAL_TOKENS_REMINDER_MODES;
|
|
@@ -109,15 +124,9 @@ export function resolveAttachmentsConfig(attachments) {
|
|
|
109
124
|
}
|
|
110
125
|
return attachments;
|
|
111
126
|
}
|
|
112
|
-
export function
|
|
113
|
-
|
|
114
|
-
return
|
|
115
|
-
}
|
|
116
|
-
export function resolveModelPromptTraits(model, spec, internals) {
|
|
117
|
-
return {
|
|
118
|
-
promptProfile: spec.promptProfile ?? internals?.promptProfile ?? "simple",
|
|
119
|
-
fableMitigations: isFableFamilyModelId(model.id),
|
|
120
|
-
};
|
|
127
|
+
export function resolvePromptTraits(model, promptLean) {
|
|
128
|
+
assertNoRetiredKeys(model, RETIRED_MODEL_KEYS, "Model");
|
|
129
|
+
return effectiveTraitsOf(readModelPromptTraits(model), promptLean);
|
|
121
130
|
}
|
|
122
131
|
function microCompactConfigError(field, value, legal) {
|
|
123
132
|
let shown;
|
|
@@ -173,8 +182,9 @@ export function assertResumeConfigRecord(config) {
|
|
|
173
182
|
}
|
|
174
183
|
}
|
|
175
184
|
export function configValueDoors(input, enter = ENTER_AS_IS) {
|
|
176
|
-
const { spec, deps, resumeLeg, sessions } = input;
|
|
185
|
+
const { spec, deps, resumeLeg, sessions, holder } = input;
|
|
177
186
|
enter("deps", () => assertNoRetiredRunnerDeps(deps));
|
|
187
|
+
enter("taskConfig", () => assertPrincipalValue(spec.principal));
|
|
178
188
|
enter("taskConfig", () => assertPeerPresenceValue(spec.peerPresence));
|
|
179
189
|
enter("taskConfig", () => assertRestoreGatedToolsValue(spec.restoreGatedTools));
|
|
180
190
|
const microCompactKnob = enter("deps", () => resolveMicroCompactKnob(deps.microCompact));
|
|
@@ -213,7 +223,10 @@ export function configValueDoors(input, enter = ENTER_AS_IS) {
|
|
|
213
223
|
: undefined,
|
|
214
224
|
};
|
|
215
225
|
const promptHost = enter("taskConfig", () => resolveHost(spec));
|
|
226
|
+
enter("deps", () => screenRoleMap(deps.roles, "RunnerDeps.roles"));
|
|
227
|
+
enter("taskConfig", () => screenRoleMap(spec.roles, "TaskSpec.roles"));
|
|
216
228
|
const promptBinding = enter("taskConfig", () => resolvePromptBinding(spec));
|
|
229
|
+
const promptLean = enter("taskConfig", () => resolvePromptLean(spec));
|
|
217
230
|
if (spec.resumeAt !== undefined)
|
|
218
231
|
enter("taskConfig", () => {
|
|
219
232
|
if (resumeLeg) {
|
|
@@ -236,6 +249,7 @@ export function configValueDoors(input, enter = ENTER_AS_IS) {
|
|
|
236
249
|
const memoryProvenance = enter("deps", () => closedWord(deps.memoryProvenance, "RunnerDeps.memoryProvenance", ["off", "carry"], "carry", "config.memory_provenance", "an unevaluable provenance mode is refused loudly, never folded to either mode."));
|
|
237
250
|
const memoryCapturePolicy = enter("deps", () => closedWord(deps.memoryCapturePolicy, "RunnerDeps.memoryCapturePolicy", ["open", "governed", "capture-required"], "open", "config.memory_capture_policy", "an unevaluable capture posture is refused loudly, never folded to any posture (the fault arms differ per posture, so a guess would pick a polarity nobody configured)."));
|
|
238
251
|
const crossBoundaryPosture = enter("deps", () => closedWord(deps.crossBoundaryPosture, "RunnerDeps.crossBoundaryPosture", CROSS_BOUNDARY_POSTURES, undefined, "config.cross_boundary_posture", "an unevaluable posture is refused loudly, never folded to either word (an absent seat is undeclared, which is its own fact)."));
|
|
252
|
+
const hostFloor = enter("deps", () => compileHostFloor(deps.hostFloor));
|
|
239
253
|
const advisorTool = enter("deps", () => closedWord(deps.advisorTool, "RunnerDeps.advisorTool", ["disabled"], undefined, "config.advisor_tool_invalid", "the switch has one word; anything else is refused, never read as either state."));
|
|
240
254
|
if (advisorTool === undefined)
|
|
241
255
|
enter("taskConfig", () => assertAdvisorModelShape(spec.advisorModel));
|
|
@@ -310,6 +324,8 @@ export function configValueDoors(input, enter = ENTER_AS_IS) {
|
|
|
310
324
|
const taskGuardrail = spec.limits?.brainCallGuardrailMs;
|
|
311
325
|
const brainCallGuardrailMs = enter(taskGuardrail != null ? "taskConfig" : "deps", () => resolveBrainCallGuardrailMs(taskGuardrail ?? deps.brainCallGuardrailMs));
|
|
312
326
|
const checkpointStore = enter(checkpointStoreSeat(spec), () => resolveCheckpointStore(spec, deps));
|
|
327
|
+
enter("deps", () => assertHolderValue(holder));
|
|
328
|
+
enter(checkpointStoreSeat(spec), () => assertCheckpointStoreJudgesHolder(checkpointStoreSeat(spec) === "taskConfig" ? "TaskSpec.checkpointStore" : "RunnerDeps.checkpointStore", checkpointStore, holder));
|
|
313
329
|
const taskStore = checkpointStoreSeat(spec) === "taskConfig" ? checkpointStore : undefined;
|
|
314
330
|
const retention = { policy: deps.retentionPolicy, locked: lockedPreflight.lockedKeys.has("retentionPolicy") };
|
|
315
331
|
enter("deps", () => assertRetentionCapability({
|
|
@@ -322,9 +338,9 @@ export function configValueDoors(input, enter = ENTER_AS_IS) {
|
|
|
322
338
|
}));
|
|
323
339
|
if (taskStore !== undefined)
|
|
324
340
|
enter("taskConfig", () => assertRetentionCapability({ ...retention, stores: [{ name: "checkpointStore", store: taskStore }] }));
|
|
325
|
-
return { toolFaceLists, promptHost, promptBinding, lockedPreflight, skillListingSeats, skills, projectMemory, microCompactKnob, memoryDelegationEvidence, memoryProvenance, memoryCapturePolicy, usageWindows, brainCallGuardrailMs, crossBoundaryPosture, advisorTool };
|
|
341
|
+
return { toolFaceLists, promptHost, promptBinding, promptLean, lockedPreflight, skillListingSeats, skills, projectMemory, microCompactKnob, memoryDelegationEvidence, memoryProvenance, memoryCapturePolicy, usageWindows, brainCallGuardrailMs, crossBoundaryPosture, advisorTool, hostFloor };
|
|
326
342
|
}
|
|
327
|
-
export function refuseResumeDoors(config, recordedGate, deps, sessions) {
|
|
343
|
+
export function refuseResumeDoors(config, recordedGate, deps, sessions, holder) {
|
|
328
344
|
asResumeConfigRefusal("taskConfig", () => {
|
|
329
345
|
refusePermissionModeDoors(config);
|
|
330
346
|
resolveOutputStyleFrame(config.outputStyle);
|
|
@@ -332,19 +348,20 @@ export function refuseResumeDoors(config, recordedGate, deps, sessions) {
|
|
|
332
348
|
screenUserInvokedSkills(config);
|
|
333
349
|
screenUserAttachments(config.userAttachments, { resumeLeg: true });
|
|
334
350
|
assertToolBoundaryLegs(config.tools);
|
|
351
|
+
assertToolCardDeclarations(config.tools);
|
|
335
352
|
});
|
|
336
|
-
const { lockedPreflight, skills } = configValueDoors({ spec: config, deps, resumeLeg: true, sessions }, asResumeConfigRefusal);
|
|
353
|
+
const { lockedPreflight, skills } = configValueDoors({ spec: config, deps, resumeLeg: true, sessions, holder }, asResumeConfigRefusal);
|
|
337
354
|
asResumeConfigRefusal("inheritedGate", () => void recordedModeSeed(recordedGate));
|
|
338
355
|
return { ...config, ...(config.mcp !== undefined ? { mcp: lockedPreflight.mcp ?? [] } : {}), ...(config.a2a !== undefined ? { a2a: lockedPreflight.a2a ?? [] } : {}), skills };
|
|
339
356
|
}
|
|
340
357
|
export function prepareConfigDoors(input) {
|
|
341
358
|
const { deps, sessions, resume, internals } = input;
|
|
342
359
|
assertToolBoundaryLegs(input.spec.tools);
|
|
360
|
+
assertToolCardDeclarations(input.spec.tools);
|
|
343
361
|
let spec = input.spec;
|
|
344
|
-
const { toolFaceLists, promptHost, promptBinding, lockedPreflight, skillListingSeats, skills, projectMemory, microCompactKnob, memoryDelegationEvidence, memoryProvenance, memoryCapturePolicy, usageWindows, brainCallGuardrailMs, crossBoundaryPosture, advisorTool } = configValueDoors({ spec, deps, resumeLeg: resume !== undefined, sessions });
|
|
362
|
+
const { toolFaceLists, promptHost, promptBinding, promptLean, lockedPreflight, skillListingSeats, skills, projectMemory, microCompactKnob, memoryDelegationEvidence, memoryProvenance, memoryCapturePolicy, usageWindows, brainCallGuardrailMs, crossBoundaryPosture, advisorTool, hostFloor } = configValueDoors({ spec, deps, resumeLeg: resume !== undefined, sessions, holder: internals?.holder });
|
|
345
363
|
const doorRead = (value) => ({ value, enumerable: value !== undefined, writable: false, configurable: false });
|
|
346
364
|
spec = Object.create(Object.getPrototypeOf(spec), { ...Object.getOwnPropertyDescriptors(spec), skills: doorRead(skills), projectMemory: doorRead(projectMemory) });
|
|
347
|
-
const promptProfile = resolveModelPromptTraits({ id: "" }, spec, internals).promptProfile;
|
|
348
365
|
const resolvedInteractionPosture = spec.interactionPosture ?? internals?.parentInteractionPosture ?? deps.interactionPosture;
|
|
349
366
|
const askSeat = resolveAskSeat(spec, deps);
|
|
350
367
|
{
|
|
@@ -410,7 +427,10 @@ export function prepareConfigDoors(input) {
|
|
|
410
427
|
if (typeof t.withAgents !== "function")
|
|
411
428
|
return t;
|
|
412
429
|
const rebuilt = t.withAgents(perTask);
|
|
413
|
-
|
|
430
|
+
const restamp = t.modelGate !== undefined && rebuilt.modelGate === undefined;
|
|
431
|
+
if (restamp)
|
|
432
|
+
refuseRetiredMember(rebuilt, index);
|
|
433
|
+
return rosterFaceOf(restamp ? { ...rebuilt, modelGate: t.modelGate } : rebuilt, index);
|
|
414
434
|
}),
|
|
415
435
|
};
|
|
416
436
|
}
|
|
@@ -447,7 +467,7 @@ export function prepareConfigDoors(input) {
|
|
|
447
467
|
throw limitConfigError("config.limit_invalid", `TaskSpec.${dollarCeiling} is a money ceiling, but the price table for model ${JSON.stringify(model.id)} declares an unevaluable ${bad} — every rate must be a finite, non-negative number of USD per 1M tokens. A table like this prices every turn at zero (or below), so the ceiling would never trip: refused rather than enforced in name only.`);
|
|
448
468
|
}
|
|
449
469
|
}
|
|
450
|
-
const
|
|
470
|
+
const promptTraits = resolvePromptTraits(model, promptLean);
|
|
451
471
|
const gateDecision = applyToolModelGate({
|
|
452
472
|
tools: spec.tools,
|
|
453
473
|
modelId: model.id,
|
|
@@ -465,13 +485,12 @@ export function prepareConfigDoors(input) {
|
|
|
465
485
|
discardedEnvRaw: gateDecision.discardedEnvRaw,
|
|
466
486
|
});
|
|
467
487
|
const thinking = spec.thinking ?? resolvedRole.thinking ?? model.defaultThinking;
|
|
468
|
-
const compModel = spec.compactionModel
|
|
469
|
-
? resolveModel(spec.compactionModel, deps.models, "TaskSpec.compactionModel")
|
|
470
|
-
: roleModelIfSet("summarize", spec, deps);
|
|
488
|
+
const compModel = resolveCompactionModel(spec, deps, "TaskSpec.compactionModel");
|
|
471
489
|
return {
|
|
472
490
|
spec,
|
|
473
491
|
toolFaceLists,
|
|
474
|
-
|
|
492
|
+
promptLean,
|
|
493
|
+
promptTraits,
|
|
475
494
|
promptHost,
|
|
476
495
|
promptBinding,
|
|
477
496
|
lockedPreflight,
|
|
@@ -482,12 +501,11 @@ export function prepareConfigDoors(input) {
|
|
|
482
501
|
model,
|
|
483
502
|
thinking,
|
|
484
503
|
compModel,
|
|
485
|
-
fableMitigations,
|
|
486
504
|
modelGate,
|
|
487
505
|
memoryDelegationEvidence,
|
|
488
506
|
skillListingBudget,
|
|
489
507
|
memoryProvenance,
|
|
490
|
-
memoryCapturePolicy, crossBoundaryPosture, advisorTool,
|
|
508
|
+
memoryCapturePolicy, crossBoundaryPosture, advisorTool, hostFloor,
|
|
491
509
|
usageWindows,
|
|
492
510
|
brainCallGuardrailRef,
|
|
493
511
|
brainCallGuardrailMs,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Model } from "../../internal/llm.js";
|
|
2
|
+
import type { PromptTraitName } from "../../prompt-assembly/catalog/schema.js";
|
|
2
3
|
import type { MaterializedA2a } from "../a2a.js";
|
|
3
4
|
import type { MaterializedMcp } from "../mcp.js";
|
|
4
5
|
import type { RunnerDeps, TaskSpec } from "../types.js";
|
|
@@ -11,7 +12,7 @@ export interface PrepareDeferClassifyInput {
|
|
|
11
12
|
deps: Pick<RunnerDeps, "deferMode" | "toolSearch">;
|
|
12
13
|
/** borrowed-mutable — the shared mount array (later refs alias it; in-place contract, never
|
|
13
14
|
* re-created). Mutated here, in order: `splice` of every excluded name; element REPLACEMENT with a
|
|
14
|
-
* shallow copy for the
|
|
15
|
+
* shallow copy for a description variant chosen by the run's traits (the caller's ToolSpec object is never
|
|
15
16
|
* mutated); `splice` of a retracted memory group. After this phase: the content-origin wrap
|
|
16
17
|
* (element replacement with the wrapped object), the disclosure mount, the MCP refresh re-splice. Since
|
|
17
18
|
* Every one of those writes is a builder verb (`unmountWhere` / `replaceAt`). */
|
|
@@ -22,8 +23,8 @@ export interface PrepareDeferClassifyInput {
|
|
|
22
23
|
handsEnabled: boolean;
|
|
23
24
|
/** borrowed-readonly — the spec-time precomputation the invariant checks the post-exclusion roster against: a mismatch is an engine bug, thrown. */
|
|
24
25
|
fullShellReachable: boolean;
|
|
25
|
-
/** borrowed-readonly — the
|
|
26
|
-
|
|
26
|
+
/** borrowed-readonly — the run's effective prompt traits (each tool's description variants are chosen on them). */
|
|
27
|
+
promptTraits: ReadonlySet<PromptTraitName>;
|
|
27
28
|
/** borrowed-readonly — the resolved model (the deferral gate's threshold reads its context window). */
|
|
28
29
|
model: Model;
|
|
29
30
|
/** borrowed-readonly — the materialized MCP roster; only `tools` is read (protocol names; `mcpAlwaysLoad` self-declarations lose to an operator defer). */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getToolContract } from "../../prompt-assembly/tool-catalog.js";
|
|
1
|
+
import { getToolContract, mountDescriptionVariant } from "../../prompt-assembly/tool-catalog.js";
|
|
2
2
|
import { FULL_SHELL_CONTRACT_ID } from "../../tools/fs/index.js";
|
|
3
3
|
import { ASK_USER_QUESTION_TOOL_NAME } from "../ask-question.js";
|
|
4
4
|
import { MEMORY_ENGINE_TOOL_NAMES } from "../memory-engine/tools.js";
|
|
@@ -17,7 +17,7 @@ function memoryGroupRetractionSet(builtinDeferPairNames, engineTrioInPlay) {
|
|
|
17
17
|
return new Set([...builtinDeferPairNames, ...(engineTrioInPlay ? MEMORY_ENGINE_TOOL_NAMES : [])]);
|
|
18
18
|
}
|
|
19
19
|
export function prepareDeferClassify(input) {
|
|
20
|
-
const { spec, deps, roster, toolFaceSnapshot, handsEnabled, fullShellReachable,
|
|
20
|
+
const { spec, deps, roster, toolFaceSnapshot, handsEnabled, fullShellReachable, promptTraits, model, mcp, a2a, sharedMemoryPairMounted, memoryEnginePairMounted, memoryRecallSegment, onceLedger, sessionId } = input;
|
|
21
21
|
const tools = roster.tools;
|
|
22
22
|
let memoryBlock = input.memoryBlock;
|
|
23
23
|
const leaves = valveLeaves(spec, toolFaceSnapshot.selector);
|
|
@@ -32,12 +32,11 @@ export function prepareDeferClassify(input) {
|
|
|
32
32
|
throw e;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
35
|
+
for (let i = 0; i < tools.length; i++) {
|
|
36
|
+
const t = tools[i];
|
|
37
|
+
const face = mountDescriptionVariant(t, promptTraits);
|
|
38
|
+
if (face !== t)
|
|
39
|
+
roster.replaceAt(i, face);
|
|
41
40
|
}
|
|
42
41
|
const protocolToolNames = [...mcp.tools, ...a2a.tools].filter((t) => protocolOf(t.name) !== undefined).map((t) => t.name);
|
|
43
42
|
const mcpAlwaysLoadNames = mcp.tools
|