@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,4 +1,4 @@
|
|
|
1
|
-
import { mailboxCrossProcessMountVerdict } from "../core/mailbox-store.js";
|
|
1
|
+
import { isMailboxDecisionFinal, mailboxCrossProcessMountVerdict, moveMailboxDecision } from "../core/mailbox-store.js";
|
|
2
2
|
import { decodeEngineFrame, ENGINE_FRAME_CODEC_VERSION, renderTaskNotificationXml, taskNotificationDedupKey } from "../core/task-notification.js";
|
|
3
3
|
import { createFrameSettlement, toolResultReceiptKey } from "../core/frame-settlement.js";
|
|
4
4
|
import { PRINCIPAL_INBOX_HANDLE } from "./cross-session-ref.js";
|
|
@@ -7,7 +7,7 @@ import { deliverEngineNotice } from "../core/types.js";
|
|
|
7
7
|
import { buildCrossSessionEnvelope, CrossSessionCodecError, encodePeerAddress } from "./cross-session-envelope.js";
|
|
8
8
|
import { judgeCrossSessionInbound, principalInboundLayers, resolveCrossSessionInboundSetting } from "./cross-session-judge.js";
|
|
9
9
|
import { judgePeerAdmission, peerAxisToken, resolvePeerLaneConfig } from "./peer-admission.js";
|
|
10
|
-
import { isPeerSessionId, PEER_SESSION_ID_GRAMMAR, peerSessionBoxHandle } from "./peer-directory.js";
|
|
10
|
+
import { isPeerSessionId, listPeerDirectory, PEER_SESSION_ID_GRAMMAR, peerSessionBoxHandle } from "./peer-directory.js";
|
|
11
11
|
import { inlineUntrusted } from "../core/untrusted-text.js";
|
|
12
12
|
import { createListAgentsTool, LIST_AGENTS_TOOL_ALIAS, LIST_AGENTS_TOOL_NAME } from "./list-agents-tool.js";
|
|
13
13
|
import { foldPermissionModeClass } from "./cross-session-judge.js";
|
|
@@ -161,7 +161,7 @@ export function createPeerSessionDrain(opts) {
|
|
|
161
161
|
...(live
|
|
162
162
|
? {
|
|
163
163
|
inject: (entry) => {
|
|
164
|
-
if (currentRound === undefined)
|
|
164
|
+
if (currentRound === undefined || !currentRound.holds(lane))
|
|
165
165
|
return "deferred";
|
|
166
166
|
const payload = buildPeerMessagePayload(lane, entry);
|
|
167
167
|
if (currentRound.deliver(payload, "next") === "deferred")
|
|
@@ -169,9 +169,13 @@ export function createPeerSessionDrain(opts) {
|
|
|
169
169
|
noteDelivered(lane, entry.seq, 1, payload, currentRound.carrier);
|
|
170
170
|
return undefined;
|
|
171
171
|
},
|
|
172
|
+
canInject: () => currentRound !== undefined && currentRound.holds(lane) && !currentRound.spent,
|
|
172
173
|
}
|
|
173
174
|
: {}),
|
|
174
175
|
receipt: receipt(lane),
|
|
176
|
+
tellsSender: (entry) => receiptAddress(lane, entry) !== undefined,
|
|
177
|
+
decide: (entry, expect, next) => moveMailboxDecision(mailbox, scope, lane.boxHandle, entry.seq, expect, next),
|
|
178
|
+
onFault: (entry, e) => opts.onError?.(e, { phase: "degraded", sessionId, classification: `peer-decision-move:${entry.box}#${entry.seq}` }),
|
|
175
179
|
onHeld: (entry, count, cause, reannounce) => {
|
|
176
180
|
if (!reannounce && lane.disclosedHeld.has(entry.seq))
|
|
177
181
|
return;
|
|
@@ -179,12 +183,13 @@ export function createPeerSessionDrain(opts) {
|
|
|
179
183
|
disclose(lane, "held", cause, entry, reannounce ? `still held; its cause moved to ${cause} (${count} held)` : undefined);
|
|
180
184
|
},
|
|
181
185
|
onSettled: (entry, settlement, reason, count) => {
|
|
182
|
-
if (entry.box === lane.boxHandle && settlement !== "delivered")
|
|
186
|
+
if (entry.box === lane.boxHandle && settlement !== "delivered" && settlement !== "retired")
|
|
183
187
|
lane.ledger.set(entry.seq, { kind: "terminal", why: `held_${settlement}` });
|
|
184
188
|
const replyTo = receiptAddress(lane, entry);
|
|
189
|
+
const told = reason !== "decided_elsewhere" && settlement !== "retired" && replyTo !== undefined;
|
|
185
190
|
deliverEngineNotice(opts.onNotice, {
|
|
186
191
|
code: "peer.held_settled",
|
|
187
|
-
message: `held cross-session message seq ${entry.seq} left this session's held queue: ${settlement} (${reason}); ${count} still held${settlement === "expired" && reason === "evicted" ? " — the held queue was full, so the oldest entry was expired to make room" : ""}. The sender ${replyTo !== undefined ? "was sent a receipt" : "has no reply address and was not told"}.`,
|
|
192
|
+
message: `held cross-session message seq ${entry.seq} left this session's held queue: ${settlement} (${reason}); ${count} still held${settlement === "expired" && reason === "evicted" ? " — the held queue was full, so the oldest entry was expired to make room" : ""}${settlement === "retired" ? (reason === "superseded" ? " — its record is no longer in the box (another consumer settled it); nothing was decided here" : " — no decision was taken: it stays held in the box, and the next drain presents it again") : ""}${reason === "decided_elsewhere" ? " — another consumer of the box decided it first" : ""}. The sender ${told ? "was sent a receipt" : replyTo !== undefined ? "was not sent a receipt from here" : "has no reply address and was not told"}.`,
|
|
188
193
|
detail: { settlement, reason, seq: entry.seq, box: lane.boxHandle, ...(entry.peerMeta?.fromSession !== undefined ? { fromSession: entry.peerMeta.fromSession } : {}), heldCount: count, sessionId, runId },
|
|
189
194
|
});
|
|
190
195
|
},
|
|
@@ -216,28 +221,29 @@ export function createPeerSessionDrain(opts) {
|
|
|
216
221
|
idleMachine.requester.configure({
|
|
217
222
|
expired: (o) => void routePeerIdleNotice(route(), sessionId, { kind: "expired", label: o.label }),
|
|
218
223
|
});
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
for (const
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
224
|
+
const reconcileHeld = (lane, lease) => {
|
|
225
|
+
const live = lease.messages.filter((m) => lane.ackedUpTo === undefined || m.seq > lane.ackedUpTo);
|
|
226
|
+
lane.held.reconcile(new Map(live.map((m) => [m.seq, m.decision])));
|
|
227
|
+
adoptFinalDecisions(lane, lease);
|
|
228
|
+
for (const m of live) {
|
|
229
|
+
const d = lane.ledger.get(m.seq);
|
|
230
|
+
if (lane.held.has(m.seq)) {
|
|
231
|
+
if (d === undefined)
|
|
232
|
+
lane.ledger.set(m.seq, { kind: "held" });
|
|
233
|
+
}
|
|
234
|
+
else if (d?.kind === "held")
|
|
235
|
+
lane.ledger.delete(m.seq);
|
|
230
236
|
}
|
|
231
237
|
};
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
for (const [seq, d] of lane.ledger) {
|
|
236
|
-
if (d.kind !== "held")
|
|
238
|
+
const adoptFinalDecisions = (lane, lease) => {
|
|
239
|
+
for (const m of lease.messages) {
|
|
240
|
+
if (lane.ackedUpTo !== undefined && m.seq <= lane.ackedUpTo)
|
|
237
241
|
continue;
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
242
|
+
if (!isMailboxDecisionFinal(m.decision))
|
|
243
|
+
continue;
|
|
244
|
+
const d = lane.ledger.get(m.seq);
|
|
245
|
+
if (d === undefined || d.kind === "held" || d.kind === "invalidated")
|
|
246
|
+
lane.ledger.set(m.seq, { kind: "terminal", why: `held_${m.decision}` });
|
|
241
247
|
}
|
|
242
248
|
};
|
|
243
249
|
const wantsCompactionEffects = () => {
|
|
@@ -280,7 +286,6 @@ export function createPeerSessionDrain(opts) {
|
|
|
280
286
|
};
|
|
281
287
|
const settleLaneLocally = (lane, landed) => {
|
|
282
288
|
const { ledger, boxHandle } = lane;
|
|
283
|
-
adoptHeldDecisions(lane);
|
|
284
289
|
const hostWithheldSeqs = [];
|
|
285
290
|
if (seam.receipts.size > 0 || seam.withheld.size > 0 || seam.hostWithheld.size > 0) {
|
|
286
291
|
for (const [seq, d] of ledger) {
|
|
@@ -326,26 +331,17 @@ export function createPeerSessionDrain(opts) {
|
|
|
326
331
|
}
|
|
327
332
|
};
|
|
328
333
|
const ackSettledPrefix = async (lane, lease) => {
|
|
329
|
-
const {
|
|
330
|
-
|
|
331
|
-
if (decided.size > 0) {
|
|
332
|
-
const live = new Set(lease.messages.map((m) => m.seq));
|
|
333
|
-
held.forgetDecisions([...decided.keys()].filter((seq) => !live.has(seq)));
|
|
334
|
-
}
|
|
334
|
+
const { ledger, boxHandle } = lane;
|
|
335
|
+
adoptFinalDecisions(lane, lease);
|
|
335
336
|
const prefix = deriveAckPrefix(lane, lease.messages);
|
|
336
337
|
if (prefix !== undefined && (lane.ackedUpTo === undefined || prefix > lane.ackedUpTo)) {
|
|
337
338
|
try {
|
|
338
339
|
const result = await mailbox.ack(scope, boxHandle, drainOwner, prefix);
|
|
339
340
|
if (result.acked) {
|
|
340
341
|
lane.ackedUpTo = prefix;
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
continue;
|
|
345
|
-
gone.push(seq);
|
|
346
|
-
ledger.delete(seq);
|
|
347
|
-
}
|
|
348
|
-
held.forgetDecisions(gone);
|
|
342
|
+
for (const seq of [...ledger.keys()])
|
|
343
|
+
if (seq <= prefix)
|
|
344
|
+
ledger.delete(seq);
|
|
349
345
|
}
|
|
350
346
|
else {
|
|
351
347
|
opts.onError?.(new Error(`the ${lane.kind === "session" ? "session box" : "principal inbox"} ${boxHandle} refused this leg's ack up to seq ${prefix}: the drain lease is no longer held by ${drainOwner} (it expired and another cycle claimed it). The records stay parked and the lease holder re-serves them.`), { phase: "degraded", sessionId, classification: "peer-box-ack" });
|
|
@@ -451,6 +447,13 @@ export function createPeerSessionDrain(opts) {
|
|
|
451
447
|
lane.ledger.set(seq, { kind: "terminal", why });
|
|
452
448
|
}
|
|
453
449
|
batch = [];
|
|
450
|
+
leasedLanes = new Set();
|
|
451
|
+
lease(lanes) {
|
|
452
|
+
this.leasedLanes = new Set(lanes);
|
|
453
|
+
}
|
|
454
|
+
holds(lane) {
|
|
455
|
+
return this.leasedLanes.has(lane);
|
|
456
|
+
}
|
|
454
457
|
chars = 0;
|
|
455
458
|
constructor(limit, out, carrier, charBudget) {
|
|
456
459
|
this.limit = limit;
|
|
@@ -527,15 +530,17 @@ export function createPeerSessionDrain(opts) {
|
|
|
527
530
|
const leased = claims.filter((c) => c.lease !== null);
|
|
528
531
|
if (leased.length === 0)
|
|
529
532
|
return { pending: 0, urgent: 0 };
|
|
533
|
+
round.lease(leased.map((c) => c.lane));
|
|
530
534
|
for (const { lane, lease } of leased) {
|
|
531
535
|
bindHeld(lane, true);
|
|
532
536
|
reconcileHeld(lane, lease);
|
|
533
|
-
lane.held.rejudge();
|
|
537
|
+
await lane.held.rejudge();
|
|
534
538
|
}
|
|
535
539
|
try {
|
|
536
540
|
for (const { lane, lease } of leased) {
|
|
537
541
|
const { ledger, disclosedHeld, held, boxHandle } = lane;
|
|
538
542
|
const ackedUpTo = lane.ackedUpTo;
|
|
543
|
+
let adoptedThisPass = false;
|
|
539
544
|
for (const m of lease.messages) {
|
|
540
545
|
const prior = ledger.get(m.seq);
|
|
541
546
|
if (prior === undefined || prior.kind !== "invalidated")
|
|
@@ -545,7 +550,6 @@ export function createPeerSessionDrain(opts) {
|
|
|
545
550
|
const attempt = prior.attempt + 1;
|
|
546
551
|
round.batch.push({ lane, payload: { ...prior.payload, attempt, resupplied: true }, priority: "next", urgent: false, seq: m.seq, attempt });
|
|
547
552
|
}
|
|
548
|
-
adoptHeldDecisions(lane);
|
|
549
553
|
for (const m of lease.messages) {
|
|
550
554
|
if (ackedUpTo !== undefined && m.seq <= ackedUpTo)
|
|
551
555
|
continue;
|
|
@@ -597,15 +601,29 @@ export function createPeerSessionDrain(opts) {
|
|
|
597
601
|
continue;
|
|
598
602
|
}
|
|
599
603
|
const sameTree = meta?.fromRoot !== undefined && meta.fromRoot.toLowerCase() === sessionId.toLowerCase();
|
|
604
|
+
const known = m.decision;
|
|
600
605
|
if (!sameTree) {
|
|
601
606
|
const judged = judgeMeta(facts, meta);
|
|
602
|
-
|
|
607
|
+
const shown = known === "held" || known === "approved";
|
|
608
|
+
if (!shown && judged.verdict === "refuse") {
|
|
603
609
|
disclose(lane, "refused", judged.cause, m);
|
|
604
610
|
round.dispose(lane, m.seq, `refused:${judged.cause}`);
|
|
605
611
|
continue;
|
|
606
612
|
}
|
|
607
|
-
if (judged.verdict === "hold") {
|
|
608
|
-
held.hold({ seq: m.seq, box: boxHandle, content: m.content, ...(m.from !== undefined ? { from: m.from } : {}), sentAt: m.sentAt, ...(m.hopChain !== undefined ? { hopChain: [...m.hopChain] } : {}), ...(meta !== undefined ? { peerMeta: { ...meta } } : {}), cause: judged.cause });
|
|
613
|
+
if (shown || (judged.verdict === "hold" && known !== "delivered")) {
|
|
614
|
+
const outcome = await held.hold({ seq: m.seq, box: boxHandle, content: m.content, ...(m.from !== undefined ? { from: m.from } : {}), sentAt: m.sentAt, ...(m.hopChain !== undefined ? { hopChain: [...m.hopChain] } : {}), ...(meta !== undefined ? { peerMeta: { ...meta } } : {}), cause: judged.verdict === "hold" ? judged.cause : "explicit-setting" }, shown ? known : undefined);
|
|
615
|
+
if (outcome === "gone" || outcome === "fault")
|
|
616
|
+
continue;
|
|
617
|
+
if (outcome !== "held" && outcome !== "adopted" && outcome !== "uncarded") {
|
|
618
|
+
round.dispose(lane, m.seq, `held_${outcome}`);
|
|
619
|
+
continue;
|
|
620
|
+
}
|
|
621
|
+
if (shown && outcome === "adopted")
|
|
622
|
+
adoptedThisPass = true;
|
|
623
|
+
if (outcome === "uncarded" && !disclosedHeld.has(m.seq)) {
|
|
624
|
+
disclosedHeld.add(m.seq);
|
|
625
|
+
disclose(lane, "held", judged.verdict === "hold" ? judged.cause : "explicit-setting", m, "it is held in the box, but this session's held queue is full; it is shown when a card frees");
|
|
626
|
+
}
|
|
609
627
|
if (!ledger.has(m.seq))
|
|
610
628
|
ledger.set(m.seq, { kind: "held" });
|
|
611
629
|
continue;
|
|
@@ -622,6 +640,8 @@ export function createPeerSessionDrain(opts) {
|
|
|
622
640
|
}
|
|
623
641
|
round.batch.push({ lane, payload, priority: "next", urgent: meta?.urgent === true, seq: m.seq, attempt: 1 });
|
|
624
642
|
}
|
|
643
|
+
if (adoptedThisPass)
|
|
644
|
+
await held.rejudge();
|
|
625
645
|
}
|
|
626
646
|
}
|
|
627
647
|
finally {
|
|
@@ -830,7 +850,7 @@ export function bindPeerLaneDrain(harness, args) {
|
|
|
830
850
|
if (deps.peerDirectory === undefined)
|
|
831
851
|
return;
|
|
832
852
|
try {
|
|
833
|
-
const rows = await deps.peerDirectory
|
|
853
|
+
const rows = await listPeerDirectory(deps.peerDirectory, { scope: args.scope });
|
|
834
854
|
rowName = rows.find((r) => r.sessionId.toLowerCase() === args.sessionId.toLowerCase())?.name;
|
|
835
855
|
}
|
|
836
856
|
catch {
|
|
@@ -48,7 +48,7 @@ export async function runRepairLoop(runner, implSpec, config) {
|
|
|
48
48
|
const oracle = { tier: "none", passed: false, flaky: false, retries: 0 };
|
|
49
49
|
return {
|
|
50
50
|
taskId: implSpec.taskId ?? "",
|
|
51
|
-
result: `oracle isolation check failed: ${reason}`,
|
|
51
|
+
result: `oracle isolation check failed: ${reason}`, resultEntryIds: [],
|
|
52
52
|
terminal: { kind: "failed", code: "oracle.unprotected", message: `oracle isolation check failed: ${reason}` },
|
|
53
53
|
sessionId: "",
|
|
54
54
|
stats: { tokens: 0, turns: 0, costMicroUsd: 0 },
|
|
@@ -160,7 +160,7 @@ export async function runRepairLoop(runner, implSpec, config) {
|
|
|
160
160
|
};
|
|
161
161
|
const exhaustedBeforeDispatch = (message, errorCode) => ({
|
|
162
162
|
taskId: implSpec.taskId ?? "",
|
|
163
|
-
result: message ?? `repair loop: attempt budget already spent (attemptCount ${bundle.attemptCount} >= maxAttempts ${maxAttempts}) — no attempt dispatched`,
|
|
163
|
+
result: message ?? `repair loop: attempt budget already spent (attemptCount ${bundle.attemptCount} >= maxAttempts ${maxAttempts}) — no attempt dispatched`, resultEntryIds: [],
|
|
164
164
|
terminal: { kind: "failed", code: errorCode ?? "repair.attempts_exhausted", message: message ?? `repair loop: attempt budget already spent (attemptCount ${bundle.attemptCount} >= maxAttempts ${maxAttempts}) — no attempt dispatched` },
|
|
165
165
|
sessionId: implSpec.sessionId ?? "",
|
|
166
166
|
stats: { tokens: 0, turns: 0, costMicroUsd: 0 },
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Type } from "typebox";
|
|
2
2
|
import { isNotificationInjectionOutcome } from "../core/task-notification.js";
|
|
3
3
|
import { defineTool } from "../core/tools.js";
|
|
4
|
-
import { normalizeAgentName, DURABLE_AGENT_HANDLE_RE, DURABLE_AGENT_HEARTBEAT_MS } from "../core/task-registry.js";
|
|
4
|
+
import { normalizeAgentName, chosenAgentName, DURABLE_AGENT_HANDLE_RE, DURABLE_AGENT_HEARTBEAT_MS } from "../core/task-registry.js";
|
|
5
5
|
import { announceTranscriptIntegrityGapOnce, canAccessAgentRecord, clearRevivedRowTerminalPayload } from "../core/background-agent-store.js";
|
|
6
6
|
import { uuidv7 } from "../internal/harness.js";
|
|
7
7
|
import { MAILBOX_TOMBSTONED_RECIPIENT_CODE, mailboxCrossProcessMountVerdict } from "../core/mailbox-store.js";
|
|
8
8
|
import { peerSendVerdictSeverity } from "./cross-session-judge.js";
|
|
9
|
-
import { parsePeerSessionAddress, peerSessionBoxHandle, peerSessionLane, resolvePeerSessions } from "./peer-directory.js";
|
|
9
|
+
import { listPeerDirectory, parsePeerSessionAddress, peerSessionBoxHandle, peerSessionLane, resolvePeerSessions } from "./peer-directory.js";
|
|
10
10
|
import { peerIdleMachineFor } from "./peer-idle.js";
|
|
11
11
|
import { PEER_IDLE_OUTSTANDING_CAP, PEER_IDLE_SUBSCRIPTION_TTL_MS, peerIdleNoticeLabel } from "./peer-notices.js";
|
|
12
12
|
import { escapeAttributeValue, escapeEnvelopeTag, isObserverTaskId, OBSERVER_SENDMESSAGE_SENDER_REFUSAL, OBSERVER_SENDMESSAGE_TARGET_REFUSAL, } from "./observer.js";
|
|
@@ -263,7 +263,7 @@ export function createSendMessageTool(opts) {
|
|
|
263
263
|
let ownRowName;
|
|
264
264
|
const resolvePeerTarget = async () => {
|
|
265
265
|
try {
|
|
266
|
-
const rows = await opts.peerDirectory
|
|
266
|
+
const rows = await listPeerDirectory(opts.peerDirectory, { scope: peerScope ?? "" });
|
|
267
267
|
if (peerSelfSessionId !== undefined)
|
|
268
268
|
ownRowName = rows.find((r) => r.sessionId.toLowerCase() === peerSelfSessionId.toLowerCase())?.name;
|
|
269
269
|
return resolvePeerSessions(rows, to, peerSelfSessionId !== undefined ? { sessionId: peerSelfSessionId } : undefined);
|
|
@@ -349,7 +349,7 @@ export function createSendMessageTool(opts) {
|
|
|
349
349
|
const doorbell = opts.peerChannel !== undefined && record.sockPath !== undefined && record.liveness === "live" && (seq !== undefined || subscriptionSeq !== undefined) ? await opts.peerChannel.nudge(record.sockPath).catch(() => false) : undefined;
|
|
350
350
|
let rowRestored = "present";
|
|
351
351
|
try {
|
|
352
|
-
const rowsNow = await opts.peerDirectory
|
|
352
|
+
const rowsNow = await listPeerDirectory(opts.peerDirectory, { scope: peerScope });
|
|
353
353
|
const nowRow = rowsNow.find((r) => r.sessionId.toLowerCase() === record.sessionId.toLowerCase());
|
|
354
354
|
if (nowRow?.liveness === "deleted")
|
|
355
355
|
rowRestored = "deleted_meanwhile";
|
|
@@ -906,7 +906,7 @@ export function createSendMessageTool(opts) {
|
|
|
906
906
|
(suggestion !== undefined ? ` Did you mean: ${suggestion}?` : "") +
|
|
907
907
|
(labels.length > 0 ? ` Running background agents: ${labels.join(", ")}.` : "") +
|
|
908
908
|
` Reachable from here: ${reachable.join("; ").slice(0, 300)}.` +
|
|
909
|
-
` Note: a completed foreground agent is not
|
|
909
|
+
` Note: a completed foreground agent is not addressable (nothing retains its transcript) — name an agent or run it in the background to keep it addressable (a named agent always runs in the background), or launch a new agent.`,
|
|
910
910
|
details: { error: "not_found", to, ...(suggestion !== undefined ? { suggestion } : {}) },
|
|
911
911
|
isError: true,
|
|
912
912
|
};
|
|
@@ -1041,6 +1041,7 @@ export function createSendMessageTool(opts) {
|
|
|
1041
1041
|
if (!l3Verdict.ok)
|
|
1042
1042
|
return admissionRefusal(l3Verdict.reason, who);
|
|
1043
1043
|
assertParentSpecSeatCurrent(ctx.parentSpecSeat);
|
|
1044
|
+
const chosenRowName = chosenAgentName(targetId, row.name);
|
|
1044
1045
|
const resume = createSubagentResume({
|
|
1045
1046
|
ledger,
|
|
1046
1047
|
parentToolCallId: resumeToolUseId,
|
|
@@ -1055,7 +1056,7 @@ export function createSendMessageTool(opts) {
|
|
|
1055
1056
|
...((ctx.onBackgroundChildEvent ?? opts.onBackgroundChildEvent) ? { bgSink: ctx.onBackgroundChildEvent ?? opts.onBackgroundChildEvent } : {}),
|
|
1056
1057
|
sessionScoped: row.sessionScoped === true,
|
|
1057
1058
|
...(row.description !== undefined ? { rowDescription: row.description } : {}),
|
|
1058
|
-
...(
|
|
1059
|
+
...(chosenRowName !== undefined ? { rowName: chosenRowName } : {}),
|
|
1059
1060
|
...(row.agentType !== undefined ? { rowAgentType: row.agentType } : {}),
|
|
1060
1061
|
...(row.owner !== undefined ? { rowOwner: row.owner } : {}),
|
|
1061
1062
|
...(row.scope !== undefined ? { rowScope: row.scope } : {}),
|
|
@@ -168,9 +168,6 @@ export interface SubagentWorktreeIsolation {
|
|
|
168
168
|
/** CC "auto-cleaned if unchanged": remove the worktree when clean, keep it when the child made changes. */
|
|
169
169
|
finish(worktreeDir: string): Promise<"pruned" | "kept">;
|
|
170
170
|
}
|
|
171
|
-
/** Is `result` one of the delegation tool's refusals before any child ran ({@link notStartedResult})? The brand only: the identity
|
|
172
|
-
* of its `details` object, never what the result says. */
|
|
173
|
-
export declare function isNotStartedDelegationResult(result: unknown): boolean;
|
|
174
171
|
/**
|
|
175
172
|
* Build the {@link SubagentWorktreeIsolation} helper over a base env + repo root. Called by `prepare-task`
|
|
176
173
|
* (closure over the run's ExecutionEnv/taskRootPath — trusted, mirrors the scheduler/fork mounts). The
|
|
@@ -672,10 +669,15 @@ export interface SubagentToolOptions {
|
|
|
672
669
|
allowTools?: string[];
|
|
673
670
|
/** Tool-level denylist (design/38 1A), used when no `agent` is selected: the denied half of the child's own selector layer (a deny wins). */
|
|
674
671
|
denyTools?: string[];
|
|
675
|
-
/** System prompt / persona for the child
|
|
672
|
+
/** System prompt / persona for the child, by TEXT — the child's own role-base statement, written on its task seat (an
|
|
673
|
+
* agent definition's `systemPrompt` wins over it). Default (since 1.259.0): the LEAN
|
|
676
674
|
* {@link SUBAGENT_PROMPT} (agent persona + return contract), NOT the full default constitution role
|
|
677
675
|
* base — pass `DEFAULT_SYSTEM_PROMPT` here explicitly to restore the pre-1.259 behavior. */
|
|
678
676
|
systemPrompt?: string;
|
|
677
|
+
/** The child's role base by WORD (`TaskSpec.promptRole`'s closed set: `"code"` gives the children the catalog's coding
|
|
678
|
+
* base): the same seat as {@link systemPrompt} (text beside it replaces the base this word selects) — so a role
|
|
679
|
+
* preset never overtakes it. Outside the closed set ⇒ refused when the tool is built (`config.prompt_selector_invalid`). */
|
|
680
|
+
promptRole?: import("../prompt-assembly/catalog/schema.js").HostRole;
|
|
679
681
|
/** Tool name exposed to the parent. Default "Agent". */
|
|
680
682
|
name?: string;
|
|
681
683
|
/** What the child is for (shown to the parent in the tool description). */
|