@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { snapshotActorAssertion } from "../../internal/llm.js";
|
|
2
2
|
import { redactThenCut } from "../../agents/subagent-steps.js";
|
|
3
|
-
import {
|
|
3
|
+
import { isEngineQuestionFace } from "../ask-question.js";
|
|
4
4
|
import { CheckpointError, readPendingSteerQueue, realApprovalOrgFact, remainingBudgetMicroUsd } from "../checkpoint-store.js";
|
|
5
5
|
import { normalizePersistedRuleHit } from "../rule-lane-reads.js";
|
|
6
6
|
import { decidersNote, SETTLEMENT_NOBODY_JUDGED } from "../gate-outcome.js";
|
|
@@ -21,7 +21,7 @@ import { hasDestroy } from "../remote-env.js";
|
|
|
21
21
|
import { advertisedWritableRootsSeat, attestationOf, exemptRootsSeat, humanRefusalSentence, licenseCovers, ownedReading, policyCannotAnswer, policyRefusalMessage, refuseOutOfContractDecision } from "../tool-policy.js";
|
|
22
22
|
import { failedJudgmentDeny } from "./policy-throw.js";
|
|
23
23
|
import { pathDenialCardOf } from "../../tools/fs/safety.js";
|
|
24
|
-
import { callFaceSeat, parkedRowLiveFace, rosterEntryNamed } from "../tool-roster.js";
|
|
24
|
+
import { callFaceSeat, parkedRowLiveFace, rosterEntryNamed, rowMember } from "../tool-roster.js";
|
|
25
25
|
import { deliverEngineNotice } from "../types.js";
|
|
26
26
|
import { delimitUntrusted, inlineUntrusted, REVIEWER_NOTE_MAX_BODY, sanitizeUntrustedText } from "../untrusted-text.js";
|
|
27
27
|
import { errorCodeOf } from "./terminal-account.js";
|
|
@@ -29,7 +29,8 @@ import { DEFAULT_PRECALL_OUTPUT_TOKENS, platformLimitTerminal } from "./clock-an
|
|
|
29
29
|
import { legContextOverlayOption } from "./compaction-call-options.js";
|
|
30
30
|
import { mintOutputStyleReminder, owedPostureText } from "./compaction-restate.js";
|
|
31
31
|
import { advisorFrameText, registerAdvisorReceipt } from "./advisor-instructions.js";
|
|
32
|
-
import {
|
|
32
|
+
import { resumeContinuation } from "./decide-continuation.js";
|
|
33
|
+
import { editRewrittenSentence, sameBytes } from "../rewrite-rejudge.js";
|
|
33
34
|
import { approvalWordsOf, owedApprovalWords, withApprovalWords } from "./approval-feedback.js";
|
|
34
35
|
import { chainCannotJudge } from "./call-hook-stations.js";
|
|
35
36
|
import { settleExecutionRecord } from "./execution-record.js";
|
|
@@ -46,12 +47,11 @@ import { settleTeardownLeg } from "./teardown-bounded.js";
|
|
|
46
47
|
import { announceToolCall, emitSettled, toolResultMsg } from "./tool-end-body.js";
|
|
47
48
|
import { rowDetailsOf, withRowNotExecuted } from "./tool-not-executed.js";
|
|
48
49
|
import { announceListingTruncation } from "../skill-listing-budget.js";
|
|
49
|
-
import { attachmentEnvelopeTags, collectDateChange, commitAgentListing, commitSkillsListing, reduceToolEnd, renderAgentListingFrame, renderOrphanedBackgroundTasks, renderSkillsListingFrame, stampWriteAnchor } from "./turn-attachments.js";
|
|
50
|
-
import { flushOwedAnnouncedSnapshot } from "./announce-once-ledger.js";
|
|
50
|
+
import { attachmentEnvelopeTags, collectDateChange, commitAgentListing, commitSkillsListing, owedMcpUnavailable, reduceToolEnd, renderAgentListingFrame, renderOrphanedBackgroundTasks, renderSkillsListingFrame, stampWriteAnchor } from "./turn-attachments.js";
|
|
51
|
+
import { flushOwedAnnouncedSnapshot, settleMcpUnavailable } from "./announce-once-ledger.js";
|
|
51
52
|
import { thrownMarksOf } from "../thrown-value.js";
|
|
52
53
|
import { egressThrownText, egressValue } from "../untrusted-egress.js";
|
|
53
54
|
import { ruleSourcePhrase } from "../rule-denial-sentence.js";
|
|
54
|
-
import { wireOf } from "../tool-name-readings.js";
|
|
55
55
|
export async function runLeg(input) {
|
|
56
56
|
const { spec, queue, prepared, resume, rs, entryActor, effectiveTimeoutMs, timeout, pushContent, ident, emitCommitted, writeFamilyOf, startedToolCallIds, announceWorkspaceMove, withBrainSinks, flushGitMirror, loopLatch, notificationLane, unsubscribeTaskNotifications, unsubGitRetry, unsubBoundary, unsub, runner, next } = input;
|
|
57
57
|
let final;
|
|
@@ -69,7 +69,6 @@ export async function runLeg(input) {
|
|
|
69
69
|
const walltimeExhaustedResume = effectiveTimeoutMs !== undefined && effectiveTimeoutMs <= 0;
|
|
70
70
|
const approvalWords = approvalWordsOf(resume.outcome);
|
|
71
71
|
const approvalFrames = owedApprovalWords(approvalWords, uuidv7());
|
|
72
|
-
let approvalCommitted = false;
|
|
73
72
|
prepared.undeliveredContinuationRef.current.parkedSteers.push(...approvalFrames);
|
|
74
73
|
const resumeWindowRetryAfterMs = !walltimeExhaustedResume && prepared.usageGovernance !== undefined ? await prepared.usageGovernance.check(Date.now()) : undefined;
|
|
75
74
|
if (resumeWindowRetryAfterMs !== undefined) {
|
|
@@ -164,6 +163,9 @@ export async function runLeg(input) {
|
|
|
164
163
|
const outputStyleWrapped = mintOutputStyleReminder(prepared);
|
|
165
164
|
if (outputStyleWrapped !== undefined)
|
|
166
165
|
continuation += "\n\n" + outputStyleWrapped;
|
|
166
|
+
const unavailableResume = owedMcpUnavailable(prepared, rs.attach.attachmentsCfg);
|
|
167
|
+
if (unavailableResume !== undefined)
|
|
168
|
+
continuation += "\n\n" + mintSystemReminder(sanitizeUntrustedText(unavailableResume.body, attachmentEnvelopeTags("mcp_unavailable")), prepared.reminderMark);
|
|
167
169
|
const advisorResumeFrame = advisorFrameText(prepared);
|
|
168
170
|
if (advisorResumeFrame !== undefined)
|
|
169
171
|
continuation += "\n\n" + advisorResumeFrame;
|
|
@@ -241,10 +243,10 @@ export async function runLeg(input) {
|
|
|
241
243
|
(steer.trusted ? formatHookFeedback(projected, prepared.reminderMark) : delimitUntrusted("supervisor steering message", projected));
|
|
242
244
|
if (steer.trusted)
|
|
243
245
|
engineSegments.push({ start, end: continuation.length });
|
|
244
|
-
appliedEvents.push({
|
|
246
|
+
appliedEvents.push(() => ({
|
|
245
247
|
...buildAppliedHumanInputEvent({ carrier: source, source, sessionSeq: nextHumanInputSeq(prepared.harness), inputId: steer.inputId, actor: steer.actor, principal: spec.principal }),
|
|
246
248
|
...ident(),
|
|
247
|
-
});
|
|
249
|
+
}));
|
|
248
250
|
}
|
|
249
251
|
if (approvalWords !== undefined)
|
|
250
252
|
continuation = withApprovalWords(continuation, engineSegments, approvalWords);
|
|
@@ -256,8 +258,6 @@ export async function runLeg(input) {
|
|
|
256
258
|
prepared.batchHaltRef.current = { rejectedToolCallId: pending.toolCallId };
|
|
257
259
|
prepared.undeliveredContinuationRef.current = { parkedSteers: [...resumeFrames.map(({ entry }) => entry).filter((e) => !withheldSteerIds.has(e.inputId)), ...approvalFrames], orphanTasks };
|
|
258
260
|
if (!prepared.abortController.signal.aborted) {
|
|
259
|
-
if (resume !== undefined)
|
|
260
|
-
resume.decisionDelivered = true;
|
|
261
261
|
registerAdvisorReceipt(prepared, continuation);
|
|
262
262
|
if (gitResumeDelivered !== undefined) {
|
|
263
263
|
const delivered = gitResumeDelivered;
|
|
@@ -279,24 +279,17 @@ export async function runLeg(input) {
|
|
|
279
279
|
}
|
|
280
280
|
if (postureText !== undefined)
|
|
281
281
|
prepared.frameReceipts.pending.push({ source: "posture", text: continuation, commit: () => undefined });
|
|
282
|
-
if (
|
|
283
|
-
prepared.frameReceipts.pending.push({
|
|
284
|
-
source: "approval_feedback",
|
|
285
|
-
text: continuation,
|
|
286
|
-
commit: () => {
|
|
287
|
-
approvalCommitted = true;
|
|
288
|
-
const seat = prepared.undeliveredContinuationRef.current;
|
|
289
|
-
seat.parkedSteers = seat.parkedSteers.filter((f) => !approvalFrames.includes(f));
|
|
290
|
-
},
|
|
291
|
-
});
|
|
292
|
-
}
|
|
282
|
+
if (unavailableResume !== undefined)
|
|
283
|
+
prepared.frameReceipts.pending.push({ source: "mcp_unavailable", text: continuation, commit: () => void (settleMcpUnavailable(prepared, unavailableResume.entries), queue.push({ type: "steering_injected", source: "mcp_unavailable", preview: redactThenCut(unavailableResume.body, 220), ...ident() }), (rs.attach.attachmentsInjected += 1)) });
|
|
293
284
|
final = await withBrainSinks(() => prepared.harness.prompt(continuation, {
|
|
294
285
|
engineSegments,
|
|
295
286
|
settleUnansweredToolCalls: rejectionHalt !== undefined ? { halt: rejectionHalt } : {},
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
287
|
+
onCommitted: () => {
|
|
288
|
+
if (resume !== undefined)
|
|
289
|
+
resume.decisionDelivered = true;
|
|
290
|
+
prepared.undeliveredContinuationRef.current = { parkedSteers: [], orphanTasks: [] };
|
|
291
|
+
for (const applied of appliedEvents)
|
|
292
|
+
queue.push(applied());
|
|
300
293
|
},
|
|
301
294
|
}));
|
|
302
295
|
await flushGitMirror();
|
|
@@ -361,6 +354,9 @@ export async function runLeg(input) {
|
|
|
361
354
|
const dateFrame = legToday !== undefined ? collectDateChange(rs.attach.dateState, legToday) : undefined;
|
|
362
355
|
if (dateFrame !== undefined)
|
|
363
356
|
firstFrames.push({ source: "date_change", body: dateFrame.body, commit: () => void (rs.attach.dateState.announcedDate = legToday), disclose: () => undefined });
|
|
357
|
+
const unavailable = owedMcpUnavailable(prepared, rs.attach.attachmentsCfg);
|
|
358
|
+
if (unavailable !== undefined)
|
|
359
|
+
firstFrames.push({ source: "mcp_unavailable", body: unavailable.body, commit: () => settleMcpUnavailable(prepared, unavailable.entries), disclose: () => undefined });
|
|
364
360
|
if (rs.attach.attachState !== undefined) {
|
|
365
361
|
const attach = rs.attach.attachState;
|
|
366
362
|
if (rs.attach.agentListingOn && prepared.agentListing !== undefined) {
|
|
@@ -450,7 +446,7 @@ export async function runLeg(input) {
|
|
|
450
446
|
}
|
|
451
447
|
else {
|
|
452
448
|
const images = spec.images
|
|
453
|
-
? await Promise.all(spec.images.map((img) => toImageContent(img,
|
|
449
|
+
? await Promise.all(spec.images.map((img) => toImageContent(img, prepared.hostFloor)))
|
|
454
450
|
: undefined;
|
|
455
451
|
if (gitLegDelivered !== undefined) {
|
|
456
452
|
const delivered = gitLegDelivered;
|
|
@@ -570,7 +566,7 @@ async function resolvePendingCall(runner, prepared, resume, emit, emitCommitted,
|
|
|
570
566
|
const { outcome } = resume;
|
|
571
567
|
if (pendingAction.kind !== "tool_approval" || outcome.gate !== "policy_ask")
|
|
572
568
|
return;
|
|
573
|
-
const mounted = () => { const
|
|
569
|
+
const mounted = () => { const roster = prepared.toolRosterDeltas.current; const entry = roster === undefined ? undefined : rosterEntryNamed(roster, pendingAction.toolName); const tool = entry?.name === pendingAction.toolName ? rowMember(entry) : undefined; return tool === undefined ? {} : { tool, entry }; };
|
|
574
570
|
const reopen = (miss) => { throw Object.assign(new Error(miss.message), { code: miss.code }); };
|
|
575
571
|
const liveTool = mounted().tool;
|
|
576
572
|
const atSession = outcome.decision === "allow" ? judgeApprovalObject(pendingAction, { tool: mounted().entry }, "session") : "match";
|
|
@@ -580,7 +576,7 @@ async function resolvePendingCall(runner, prepared, resume, emit, emitCommitted,
|
|
|
580
576
|
if (decidedGate === undefined) {
|
|
581
577
|
throw new CheckpointError("checkpoint.invalid_outcome", "pending action reached the resolver with no settlement record on its decision (gateOutcome) — refusing to execute or settle a decision that carries no record");
|
|
582
578
|
}
|
|
583
|
-
const humanRewrite =
|
|
579
|
+
const humanRewrite = isEngineQuestionFace(parkedRowLiveFace(prepared.toolRosterDeltas.current, pendingAction)) ? undefined : outcome.updatedInput;
|
|
584
580
|
const reading = liveTool === undefined ? undefined : ownedReading((a) => readToolCallArguments(liveTool, { type: "toolCall", id: pendingAction.toolCallId, name: pendingAction.toolName, arguments: {} }, a));
|
|
585
581
|
const beltFace = () => { const f = parkedRowLiveFace(prepared.toolRosterDeltas.current, pendingAction); if (f !== undefined && reading !== undefined)
|
|
586
582
|
stampArgsReading(f, reading); return f; };
|
|
@@ -652,9 +648,14 @@ async function resolvePendingCall(runner, prepared, resume, emit, emitCommitted,
|
|
|
652
648
|
emitCommitted(await prepared.session.appendMessage(resultRow(hookDenial, true)), "toolResult", pendingAction.toolCallId);
|
|
653
649
|
return;
|
|
654
650
|
}
|
|
655
|
-
const rescreened =
|
|
651
|
+
const rescreened = screened !== undefined ? tryRead(screened.args) : undefined;
|
|
656
652
|
if (rescreened?.unread !== undefined)
|
|
657
653
|
return settleUnreadable(rescreened.unread.error, "the arguments a PreToolUse hook rewrote it to");
|
|
654
|
+
if (humanRewrite !== undefined && rescreened !== undefined && !sameBytes({}, resolvedArgs, rescreened.args)) {
|
|
655
|
+
const text = formatHookFeedback(`${editRewrittenSentence(pendingAction.toolName)}, which a PreToolUse hook wrote — this approval is spent; the call has to be re-issued.`, prepared.reminderMark);
|
|
656
|
+
await settleEnd(true, { content: text, details: { editRewritten: { acceptableForm: rescreened.args } } }, "hook");
|
|
657
|
+
return emitCommitted(await prepared.session.appendMessage(resultRow(text, true)), "toolResult", pendingAction.toolCallId);
|
|
658
|
+
}
|
|
658
659
|
const executedArgs = rescreened !== undefined ? rescreened.args : resolvedArgs;
|
|
659
660
|
const unseen = !licenseCovers(pendingAction.boundInputHash, executedArgs);
|
|
660
661
|
let beltReading;
|
|
@@ -687,19 +688,18 @@ async function resolvePendingCall(runner, prepared, resume, emit, emitCommitted,
|
|
|
687
688
|
if (unseen && prepared.basePolicyForResumeEdit) {
|
|
688
689
|
const rechecked = refuseOutOfContractDecision(await beltCheck((signal) => prepared.basePolicyForResumeEdit.check(beltReq(), signal), "the deployment's tool policy re-checking a resumed call"));
|
|
689
690
|
const personUnanswered = policyCannotAnswer(rechecked, outcome.hostDecision.decidedBy);
|
|
690
|
-
const
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
if (beltUnsafe) {
|
|
691
|
+
const rewrite = rechecked.updatedInput !== undefined ? tryRead(rechecked.updatedInput) : undefined;
|
|
692
|
+
const rewrote = rewrite !== undefined && (rewrite.unread !== undefined || !sameBytes({}, rewrite.args, executedArgs));
|
|
693
|
+
if (rechecked.action === "deny" || rewrote || personUnanswered) {
|
|
694
694
|
const why = rechecked.action === "deny"
|
|
695
695
|
? (rechecked.message ? `: ${rechecked.message}` : "")
|
|
696
696
|
: personUnanswered
|
|
697
697
|
? " (the call as it would run requires a person's approval, and this decision was the deployment's policy)"
|
|
698
698
|
: " (the policy rewrote these bytes to a value that was not approved)";
|
|
699
699
|
const editedDenial = formatHookFeedback(`${outcome.updatedInput !== undefined ? "The approver EDITED this call's input; the edited call" : "A PreToolUse hook REWROTE this approved call's input; the rewritten call"} is refused by the deployment's tool policy and was not executed${why}.`, prepared.reminderMark);
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
emitCommitted(
|
|
700
|
+
const outlet = rechecked.action !== "deny" && !personUnanswered && humanRewrite !== undefined && rewrite?.unread === undefined && rewrite !== undefined ? { details: { editRewritten: { acceptableForm: rewrite.args } } } : denialCard(rechecked);
|
|
701
|
+
await settleEnd(true, { content: editedDenial, ...outlet }, "policy");
|
|
702
|
+
emitCommitted(await prepared.session.appendMessage(resultRow(editedDenial, true)), "toolResult", pendingAction.toolCallId);
|
|
703
703
|
return;
|
|
704
704
|
}
|
|
705
705
|
}
|
|
@@ -818,7 +818,8 @@ async function resolvePendingCall(runner, prepared, resume, emit, emitCommitted,
|
|
|
818
818
|
for (;;) {
|
|
819
819
|
const { targetReading: _belts, ...unread } = beltReq();
|
|
820
820
|
const targetReading = (await prepared.stampCallTarget?.(unread, prepared.abortController.signal))?.targetReading;
|
|
821
|
-
const
|
|
821
|
+
const reads = prepared.shellReadLandings?.(pendingAction.toolCallId);
|
|
822
|
+
const atExecution = judgeApprovalObject(pendingAction, { tool: mounted().entry, args: executedArgs, skills: prepared.skillSpecs, skillToolName: SKILL_TOOL_NAME, ...(humanRewrite !== undefined ? { decided: resolvedArgs } : {}), targetReading, reads }, "execution");
|
|
822
823
|
if (atExecution !== "match")
|
|
823
824
|
return atExecution.disposition === "reopen" ? reopen(atExecution) : vetoApproval(atExecution);
|
|
824
825
|
tool = mounted().tool;
|
|
@@ -841,7 +842,7 @@ async function resolvePendingCall(runner, prepared, resume, emit, emitCommitted,
|
|
|
841
842
|
const finalize = (executed) => prepared.harness.finalizeToolCall({ type: "toolCall", id: pendingAction.toolCallId, name: spelledName, arguments: executedArgs }, executedArgs, executed);
|
|
842
843
|
let res;
|
|
843
844
|
try {
|
|
844
|
-
res = await tool.execute(pendingAction.toolCallId, args, prepared.abortController.signal);
|
|
845
|
+
res = await (prepared.toolCallStation ?? ((_c, run) => run()))({ toolCallId: pendingAction.toolCallId, toolName: tool.name, args }, () => tool.execute(pendingAction.toolCallId, args, prepared.abortController.signal), prepared.abortController.signal);
|
|
845
846
|
}
|
|
846
847
|
catch (err) {
|
|
847
848
|
const execError = `Error: ${egressThrownText("same-principal", err)}`;
|
|
@@ -19,6 +19,8 @@ export interface RunNotificationLaneInput<R> {
|
|
|
19
19
|
taskIdRef: TaskIdRef | undefined;
|
|
20
20
|
/** borrowed-readonly — the stream layer's session-lock verb, handed to prepare; absent when the spec named its session. */
|
|
21
21
|
holdSessionLock: ((sessionId: string) => Promise<void>) | undefined;
|
|
22
|
+
/** borrowed-mutable (the Runner's) — this leg's view of the session write ledger, handed to prepare; the stream layer closes it at the leg's end. */
|
|
23
|
+
legWrites: import("./session-write-ledger.js").LegWrites;
|
|
22
24
|
/** borrowed-readonly — the Runner's deployment deps, read LIVE (`onError` in the park closure — after the run, on a swapped
|
|
23
25
|
* catalog it is still the CURRENT sink; `models` and prepare's `deps` at the natural-snapshot pin); the one home of why it
|
|
24
26
|
* is a seat and not a captured object is {@link RunnerDepsSeat}. */
|
|
@@ -8,7 +8,7 @@ export function runNotificationLane(input) {
|
|
|
8
8
|
return obligations.run(() => runNotificationLaneAs(input, obligations));
|
|
9
9
|
}
|
|
10
10
|
async function runNotificationLaneAs(input, obligations) {
|
|
11
|
-
const { spec, queue, resume, internals, taskIdRef, holdSessionLock, runner, self, sessions, sessionReadStates, sessionModeSeats, pendingSessionNotifications, prepareTask, next } = input;
|
|
11
|
+
const { spec, queue, resume, internals, taskIdRef, holdSessionLock, legWrites, runner, self, sessions, sessionReadStates, sessionModeSeats, pendingSessionNotifications, prepareTask, next } = input;
|
|
12
12
|
const prepareResume = resume
|
|
13
13
|
? {
|
|
14
14
|
leafId: resume.cp.leafId,
|
|
@@ -128,7 +128,7 @@ async function runNotificationLaneAs(input, obligations) {
|
|
|
128
128
|
}
|
|
129
129
|
return injectTaskNotification(notification, opts);
|
|
130
130
|
},
|
|
131
|
-
}, self, taskIdRef, holdSessionLock);
|
|
131
|
+
}, self, taskIdRef, holdSessionLock, legWrites);
|
|
132
132
|
pendingSessionNotifications.bindSessionBox(prepared.sessionId, prepared.sessionBox);
|
|
133
133
|
const notificationLane = {
|
|
134
134
|
get harness() { return notificationHarness; }, set harness(h) { notificationHarness = h; },
|
|
@@ -2,7 +2,7 @@ import { compactionKindOf } from "../task-notification.js";
|
|
|
2
2
|
import { planRejectionClears } from "../context-edit.js";
|
|
3
3
|
import { rosterToolName } from "../tool-roster.js";
|
|
4
4
|
import { landStaleResultClears } from "./prepare-context-lane.js";
|
|
5
|
-
import { compactionPassReport, DEFAULT_COMPACTION_INSTRUCTIONS, isCompactionManualCancel, maybeCompact, mintCompactedEvent } from "../auto-compaction.js";
|
|
5
|
+
import { compactionFailureReason, compactionPassReport, DEFAULT_COMPACTION_INSTRUCTIONS, isCompactionManualCancel, maybeCompact, mintCompactedEvent } from "../auto-compaction.js";
|
|
6
6
|
import { emitTrace } from "../trace.js";
|
|
7
7
|
import { isDegenerateCutMessage } from "../../brain/terminal-cause.js";
|
|
8
8
|
import { rebaseCadenceWindows } from "./turn-attachments.js";
|
|
@@ -11,7 +11,7 @@ import { compactionEnabled } from "../context-settings.js";
|
|
|
11
11
|
import { compactionRestateOptions } from "./compaction-restate.js";
|
|
12
12
|
import { COMPACTION_FREED_EPSILON, COMPACTION_REGROWTH_FACTOR, MAX_CONSECUTIVE_COMPACTION_FAILURES } from "./compaction-knobs.js";
|
|
13
13
|
import { compactionHookOptions, recordCompactionReuse, seamCCompactionOptions } from "./compaction-seams.js";
|
|
14
|
-
import { asThrownError
|
|
14
|
+
import { asThrownError } from "../thrown-value.js";
|
|
15
15
|
export function runRecoveryLanes(input) {
|
|
16
16
|
const { spec, prepared, queue, rs, ident, compactionBrain, compactionBreaker, windowSafetyOptions, callerStop, runner } = input;
|
|
17
17
|
const runForcedCompactionPass = async (lane, turnSignal) => {
|
|
@@ -102,8 +102,7 @@ export function runRecoveryLanes(input) {
|
|
|
102
102
|
}
|
|
103
103
|
compactionBreaker.failures += 1;
|
|
104
104
|
runner.deps.onError?.(asThrownError(err), { phase: "compaction", sessionId: prepared.sessionId });
|
|
105
|
-
|
|
106
|
-
queue.push({ type: "compaction_outcome", outcome: "failed", trigger: "forced", reason: msg.length > 512 ? `${msg.slice(0, 512)}…` : msg, ...passReport.end, ...ident() });
|
|
105
|
+
queue.push({ type: "compaction_outcome", outcome: "failed", trigger: "forced", reason: compactionFailureReason(err), ...passReport.end, ...ident() });
|
|
107
106
|
return false;
|
|
108
107
|
}
|
|
109
108
|
};
|
|
@@ -5,7 +5,7 @@ import { adjudicateDerivedRoute, fallbackToPrimaryNotice, sameRouteIdentity } fr
|
|
|
5
5
|
import { isDegenerateCutMessage } from "../../brain/terminal-cause.js";
|
|
6
6
|
import { hasBackgroundShell, sweepRunBoundaryBackgroundShells } from "../background-shell.js";
|
|
7
7
|
import { resolveCheckpointStore } from "../checkpoint-store.js";
|
|
8
|
-
import {
|
|
8
|
+
import { compensateUnstarted, reopenReasonOf, resumeStartupCauseOf, unstartedRowSentence } from "../resume-startup-cause.js";
|
|
9
9
|
import { classicEventBase, observeClassic } from "../mods/stations.js";
|
|
10
10
|
import { modelCostToPricing } from "../pricing.js";
|
|
11
11
|
import { hasDestroy, isIsolated } from "../remote-env.js";
|
|
@@ -96,6 +96,7 @@ export async function runSettleAndTeardown(input) {
|
|
|
96
96
|
editedFiles: prepared.editedFilesSnapshot(),
|
|
97
97
|
haltedOnUserRejection: prepared.batchHaltRef.current !== undefined,
|
|
98
98
|
haltConsumption: prepared.harness.haltConsumption(),
|
|
99
|
+
answerEntryIds: prepared.harness.answerEntryIdsOf(final),
|
|
99
100
|
strandedHumanAnswers,
|
|
100
101
|
remoteEnvFailures: prepared.remoteEnvFailures,
|
|
101
102
|
effectiveReadFace: prepared.effectiveReadFace,
|
|
@@ -138,17 +139,11 @@ export async function runSettleAndTeardown(input) {
|
|
|
138
139
|
resume.pendingActionStarted !== true &&
|
|
139
140
|
result.terminal.kind !== "completed" &&
|
|
140
141
|
result.terminal.kind !== "paused" &&
|
|
141
|
-
!(resumeDecisionWasNegative(resume) && resume.decisionDelivered === true)
|
|
142
|
-
resume.onEnvRestoreFailed !== undefined) {
|
|
142
|
+
!(resumeDecisionWasNegative(resume) && resume.decisionDelivered === true)) {
|
|
143
143
|
const reopenReason = reopenReasonOf(resumeStartupCauseOf(result.terminal.kind === "failed" ? result.terminal.code : undefined));
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
amendTerminal(result, "resume.reopened_unstarted", (m) => `${m ?? "the resume leg did not complete"} — ${reopenedUnstartedSentence(reopenReason)}`);
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
amendTerminal(result, "resume.reopen_failed_unstarted", (m) => `${m ?? "the resume leg did not complete"} — the approved action never started, and reopening the checkpoint FAILED: its state is unprovable from here. Re-read it before deciding; do NOT issue a fresh approval on the assumption the old one is dead`);
|
|
151
|
-
}
|
|
144
|
+
const row = await compensateUnstarted(resume.reopenUnstarted, reopenReason);
|
|
145
|
+
rowReturned = row.kind === "reopened";
|
|
146
|
+
amendTerminal(result, rowReturned ? "resume.reopened_unstarted" : "resume.reopen_failed_unstarted", (m) => `${m ?? "the resume leg did not complete"} — ${unstartedRowSentence(row)}`);
|
|
152
147
|
}
|
|
153
148
|
settleOwedUserInput(owedUserInput, rowReturned, { taskId: spec.taskId ?? prepared.sessionId, sessionId: prepared.sessionId, runId: prepared.runId, parent: parentLegIds(internals) }, runner.deps.onNotice);
|
|
154
149
|
prepared.sealReadStateSeat?.(ownCommittedTailRef.current);
|
|
@@ -283,7 +278,7 @@ export async function runSettleAndTeardown(input) {
|
|
|
283
278
|
if (writeDateAnchor !== undefined)
|
|
284
279
|
await settleTeardownLeg(writeDateAnchor, "date anchor (settle leg)", (e) => runner.deps.onError?.(e, { phase: "degraded", sessionId: prepared.sessionId }));
|
|
285
280
|
if (prepared.crossBoundary !== undefined)
|
|
286
|
-
await prepared.crossBoundary.settle();
|
|
281
|
+
await prepared.crossBoundary.settle(() => defaultTaskRegistry.owedDeliveries({ ...prepared.registryAccess, sessionId: prepared.sessionId }));
|
|
287
282
|
const ownedEnvDying = prepared.ownedEnv !== undefined &&
|
|
288
283
|
hasDestroy(prepared.ownedEnv) &&
|
|
289
284
|
isIsolated(prepared.ownedEnv) &&
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { compactionPassReport, DEFAULT_COMPACTION_INSTRUCTIONS, isCompactionManualCancel, maybeCompact } from "../auto-compaction.js";
|
|
1
|
+
import { compactionFailureReason, compactionPassReport, DEFAULT_COMPACTION_INSTRUCTIONS, isCompactionManualCancel, maybeCompact } from "../auto-compaction.js";
|
|
2
2
|
import { eventDefaultOn } from "../../prompt-assembly/event-registry.js";
|
|
3
3
|
import { appendInterruptionMarker, reconcileInterruptedSession } from "../session-reconcile.js";
|
|
4
4
|
import { emitTrace } from "../trace.js";
|
|
@@ -11,7 +11,7 @@ import { compactionRestateOptions } from "./compaction-restate.js";
|
|
|
11
11
|
import { MAX_CONSECUTIVE_COMPACTION_FAILURES } from "./compaction-knobs.js";
|
|
12
12
|
import { emitSettled, reconciledEnd } from "./tool-end-body.js";
|
|
13
13
|
import { isApprovalWordsFrame } from "./approval-feedback.js";
|
|
14
|
-
import { asThrownError
|
|
14
|
+
import { asThrownError } from "../thrown-value.js";
|
|
15
15
|
export async function runTerminalAdoption(input) {
|
|
16
16
|
const { spec, queue, prepared, rs, stats, ident, emitCommitted, startedToolCallIds, toolLabels, timeout, compactionBrain, compactionBreaker, windowSafetyOptions, undrainedUserAtEnd, userInputLostAtEnd, final, abortedLive, userInterruptedLive, callerStop, runner, sessions, next } = input;
|
|
17
17
|
let { threw } = input;
|
|
@@ -185,8 +185,7 @@ async function finish(spec, prepared, opts, runner, sessions) {
|
|
|
185
185
|
opts?.onCompactionOutcome?.("mooted", "cancelled", opts.passReport.end);
|
|
186
186
|
}
|
|
187
187
|
else {
|
|
188
|
-
const
|
|
189
|
-
const failReason = failMsg.length > 512 ? `${failMsg.slice(0, 512)}…` : failMsg;
|
|
188
|
+
const failReason = compactionFailureReason(err);
|
|
190
189
|
emitTrace(opts?.telemetry?.tracer ?? spec.tracer ?? runner.deps.tracer, () => ({
|
|
191
190
|
kind: "compaction.failed",
|
|
192
191
|
version: 1,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { compactionKindOf } from "../task-notification.js";
|
|
2
2
|
import { mintSystemReminder } from "../reminder-mint.js";
|
|
3
3
|
import { eventDefaultOn } from "../../prompt-assembly/event-registry.js";
|
|
4
|
-
import { compactionPassReport, DEFAULT_COMPACTION_INSTRUCTIONS, isCompactionManualCancel, maybeCompact, mintCompactedEvent, nextTrimForceBackoff, recordCompactionAndCheckRapidRefill } from "../auto-compaction.js";
|
|
4
|
+
import { compactionFailureReason, compactionPassReport, DEFAULT_COMPACTION_INSTRUCTIONS, isCompactionManualCancel, manualCompactOutcomeOf, maybeCompact, mintCompactedEvent, nextTrimForceBackoff, recordCompactionAndCheckRapidRefill } from "../auto-compaction.js";
|
|
5
5
|
import { emitTrace } from "../trace.js";
|
|
6
6
|
import { redactThenCut } from "../../agents/subagent-steps.js";
|
|
7
7
|
import { ATTACHMENT_BYTE_CAP, CHANGED_FILES_MAX, TOTAL_TOKENS_REMINDER_DEFAULT_MODE, attachmentEnvelopeTags, clipToBytes, collectDateChange, collectDueAttachments, collectInstructionsChange, commitAgentListing, commitInstructionsChange, commitSkillsListing, isIntactSource, rebaseCadenceWindows, renderAgentListingFrame, renderMcpDroppedTools, renderMcpInstructionsDelta, selectMcpDroppedBatch, renderSkillsListingFrame, renderToolsDelta } from "./turn-attachments.js";
|
|
@@ -18,7 +18,6 @@ import { COMPACTION_FREED_EPSILON, COMPACTION_REGROWTH_FACTOR, MAX_CONSECUTIVE_C
|
|
|
18
18
|
import { compactionHookOptions, recordCompactionReuse, seamCCompactionOptions } from "./compaction-seams.js";
|
|
19
19
|
import { contextUsageSections } from "../../prompt-assembly/section-usage.js";
|
|
20
20
|
import { asThrownError } from "../thrown-value.js";
|
|
21
|
-
import { egressThrownText } from "../untrusted-egress.js";
|
|
22
21
|
const BATCH_CONTEXT_MIN_KEEP_BYTES = 160;
|
|
23
22
|
const BATCH_TRUNCATION_MARKER = "\n…[truncated]";
|
|
24
23
|
export function createTurnBoundary(input) {
|
|
@@ -255,12 +254,10 @@ export function createTurnBoundary(input) {
|
|
|
255
254
|
const pendingTools = tdRef !== undefined && tdRef.pending.length > 0 ? [...tdRef.pending] : undefined;
|
|
256
255
|
const pendingRemovedTools = tdRef !== undefined && tdRef.pendingRemoved.length > 0 ? [...tdRef.pendingRemoved] : undefined;
|
|
257
256
|
const pendingReaddedTools = tdRef !== undefined && tdRef.pendingReadded.length > 0 ? [...tdRef.pendingReadded] : undefined;
|
|
258
|
-
const
|
|
259
|
-
const mcpToolsDelta = pendingRemovedTools !== undefined || pendingReaddedTools !== undefined || pendingFailedMcp !== undefined
|
|
257
|
+
const mcpToolsDelta = pendingRemovedTools !== undefined || pendingReaddedTools !== undefined
|
|
260
258
|
? {
|
|
261
259
|
...(pendingRemovedTools !== undefined ? { removed: pendingRemovedTools } : {}),
|
|
262
260
|
...(pendingReaddedTools !== undefined ? { readded: pendingReaddedTools } : {}),
|
|
263
|
-
...(pendingFailedMcp !== undefined ? { failedServers: pendingFailedMcp } : {}),
|
|
264
261
|
}
|
|
265
262
|
: undefined;
|
|
266
263
|
const mcpInstructionsOn = rs.attach.attachmentsCfg?.mcpInstructions === true;
|
|
@@ -359,13 +356,6 @@ export function createTurnBoundary(input) {
|
|
|
359
356
|
ref.pendingRemoved.splice(0, pendingRemovedTools.length);
|
|
360
357
|
if (pendingReaddedTools !== undefined)
|
|
361
358
|
ref.pendingReadded.splice(0, pendingReaddedTools.length);
|
|
362
|
-
if (pendingFailedMcp !== undefined) {
|
|
363
|
-
ref.pendingFailed.splice(0, pendingFailedMcp.length);
|
|
364
|
-
if (!noNextRequest()) {
|
|
365
|
-
prepared.announcedListingsRef.mcpFailed = [...(prepared.announcedListingsRef.mcpFailed ?? []), ...pendingFailedMcp];
|
|
366
|
-
announcedOnceDirty = true;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
359
|
}
|
|
370
360
|
}
|
|
371
361
|
if ((mcpAdds !== undefined || mcpRemovals !== undefined) &&
|
|
@@ -623,7 +613,7 @@ export function createTurnBoundary(input) {
|
|
|
623
613
|
ts: Date.now(),
|
|
624
614
|
}));
|
|
625
615
|
}
|
|
626
|
-
manualOutcome = comp
|
|
616
|
+
manualOutcome = manualCompactOutcomeOf(comp);
|
|
627
617
|
if (forceManual && !comp.compacted && !comp.blocked) {
|
|
628
618
|
if (comp.disabled) {
|
|
629
619
|
emitTrace(rs.telemetry.tracer, () => ({ kind: "compaction.disabled", version: 1, taskId: rs.telemetry.taskId, ts: Date.now() }));
|
|
@@ -680,8 +670,7 @@ export function createTurnBoundary(input) {
|
|
|
680
670
|
else if (!prepared.abortController.signal.aborted) {
|
|
681
671
|
compactionBreaker.failures += 1;
|
|
682
672
|
runnerHooks.onError?.(err, { phase: "compaction", sessionId: prepared.sessionId });
|
|
683
|
-
const
|
|
684
|
-
const failReason = msg.length > 512 ? `${msg.slice(0, 512)}…` : msg;
|
|
673
|
+
const failReason = compactionFailureReason(err);
|
|
685
674
|
emitTrace(rs.telemetry.tracer, () => ({
|
|
686
675
|
kind: "compaction.failed",
|
|
687
676
|
version: 1,
|
|
@@ -8,6 +8,8 @@ import type { AgentDefinition, ModelRef, ModelRoles, RunnerDeps, TaskEvent, Task
|
|
|
8
8
|
import { type ContextSettings, type ContextWindowOverlay } from "../context-settings.js";
|
|
9
9
|
import type { ResumeRun, ResumeTaskConfig, RunInternals, RunnerSelfSeat } from "./contracts.js";
|
|
10
10
|
export type { ResumeTaskConfig } from "./contracts.js";
|
|
11
|
+
import type { CompactSessionRequest, CompactSessionResult } from "../auto-compaction.js";
|
|
12
|
+
import type { RewindFilesRequest, RewindFilesResult } from "../file-history-store.js";
|
|
11
13
|
/**
|
|
12
14
|
* A stateless task runner. Holds shared deps (the external brain, model catalog) and an
|
|
13
15
|
* in-memory session store so that passing a `sessionId` continues a prior conversation.
|
|
@@ -17,6 +19,10 @@ export declare class Runner implements RunnerSelfSeat {
|
|
|
17
19
|
readonly sessions: SessionStore;
|
|
18
20
|
/** Per-sessionId serialization so two tasks never mutate one session concurrently. */
|
|
19
21
|
private sessionLocks;
|
|
22
|
+
/** The lock's tail: the session writes this Runner's legs issued that have not settled — a session's next holder starts after them. */
|
|
23
|
+
private readonly sessionWrites;
|
|
24
|
+
/** The session-lock seats every out-of-run verb (`rewindFiles`, `compactSession`) is lent — ONE reading of "busy": a leg holds or awaits the lock, or a write issued to the session has not settled. */
|
|
25
|
+
private readonly verbLockSeats;
|
|
20
26
|
/** Per-session read-file-state seats (CC parity: readFileState is session-scoped;
|
|
21
27
|
* sema's map stays per-task, so the session scope lives here). A bounded CACHE, never an
|
|
22
28
|
* authority: a durable resume's checkpoint seed wins on its leg, and a miss (cross-process,
|
|
@@ -133,6 +139,10 @@ export declare class Runner implements RunnerSelfSeat {
|
|
|
133
139
|
* the same model resolution as tasks, returns real usage/model. No session, no tool execution, no
|
|
134
140
|
* policy gate, no accounting — caller-trusted. */
|
|
135
141
|
sideQuery(spec: SideQuerySpec): Promise<SideQueryResult>;
|
|
142
|
+
/** The out-of-run code-only rewind, no model call and no session entry — the contract is {@link rewindSessionFiles}'s (refused while a leg of this Runner holds or awaits the session's lock, or a write issued to it has not settled). */
|
|
143
|
+
rewindFiles(request: RewindFilesRequest): Promise<RewindFilesResult>;
|
|
144
|
+
/** The out-of-run manual compaction, no run and no user turn — the contract is {@link compactIdleSession}'s (the one pass every lane runs; refused while a leg of this Runner holds or awaits the session's lock, or a write issued to it has not settled). */
|
|
145
|
+
compactSession(request: CompactSessionRequest): Promise<CompactSessionResult>;
|
|
136
146
|
/** Run a task and stream live events; await `.result()` for the final TaskResult. `resume` (internal)
|
|
137
147
|
* drives a durable resume through the same loop instead of a fresh objective prompt.
|
|
138
148
|
* `internals` (internal) is a TRUSTED run-scoped channel for live per-task state the
|