pi-subagents 0.69.0 → 0.70.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 +41 -0
- package/agents/reviewer.md +3 -2
- package/docs/agents.md +6 -2
- package/docs/configuration.md +1 -1
- package/docs/extension-api.md +1 -1
- package/docs/models.md +3 -1
- package/docs/observability.md +6 -0
- package/docs/watchdog.md +2 -0
- package/docs/workflows.md +6 -2
- package/index.d.ts +3 -0
- package/index.d.ts.map +1 -0
- package/index.js +10 -0
- package/index.js.map +1 -0
- package/package.json +89 -73
- package/runner-peer-loader.mjs +4 -7
- package/runner-peer-preload.mjs +5 -7
- package/skills/pi-subagents/references/prompting-and-roles.md +2 -2
- package/src/agents/advertised-agent-prompt.d.ts +8 -0
- package/src/agents/advertised-agent-prompt.d.ts.map +1 -0
- package/src/agents/advertised-agent-prompt.js +77 -0
- package/src/agents/advertised-agent-prompt.js.map +1 -0
- package/src/agents/agent-management.d.ts +27 -0
- package/src/agents/agent-management.d.ts.map +1 -0
- package/src/agents/agent-management.js +1528 -0
- package/src/agents/agent-management.js.map +1 -0
- package/src/agents/agent-memory.d.ts +49 -0
- package/src/agents/agent-memory.d.ts.map +1 -0
- package/src/agents/agent-memory.js +349 -0
- package/src/agents/agent-memory.js.map +1 -0
- package/src/agents/agent-refinements.d.ts +100 -0
- package/src/agents/agent-refinements.d.ts.map +1 -0
- package/src/agents/agent-refinements.js +569 -0
- package/src/agents/agent-refinements.js.map +1 -0
- package/src/agents/agent-scope.d.ts +3 -0
- package/src/agents/agent-scope.d.ts.map +1 -0
- package/src/agents/agent-scope.js +6 -0
- package/src/agents/agent-scope.js.map +1 -0
- package/src/agents/agent-selection.d.ts +3 -0
- package/src/agents/agent-selection.d.ts.map +1 -0
- package/src/agents/agent-selection.js +23 -0
- package/src/agents/agent-selection.js.map +1 -0
- package/src/agents/agent-serializer.d.ts +8 -0
- package/src/agents/agent-serializer.d.ts.map +1 -0
- package/src/agents/agent-serializer.js +200 -0
- package/src/agents/agent-serializer.js.map +1 -0
- package/src/agents/agents.d.ts +313 -0
- package/src/agents/agents.d.ts.map +1 -0
- package/src/agents/agents.js +2622 -0
- package/src/agents/agents.js.map +1 -0
- package/src/agents/builtin-names.d.ts +2 -0
- package/src/agents/builtin-names.d.ts.map +1 -0
- package/src/agents/builtin-names.js +17 -0
- package/src/agents/builtin-names.js.map +1 -0
- package/src/agents/chain-serializer.d.ts +7 -0
- package/src/agents/chain-serializer.d.ts.map +1 -0
- package/src/agents/chain-serializer.js +319 -0
- package/src/agents/chain-serializer.js.map +1 -0
- package/src/agents/frontmatter.d.ts +16 -0
- package/src/agents/frontmatter.d.ts.map +1 -0
- package/src/agents/frontmatter.js +142 -0
- package/src/agents/frontmatter.js.map +1 -0
- package/src/agents/identity.d.ts +8 -0
- package/src/agents/identity.d.ts.map +1 -0
- package/src/agents/identity.js +30 -0
- package/src/agents/identity.js.map +1 -0
- package/src/agents/proactive-skills.d.ts +35 -0
- package/src/agents/proactive-skills.d.ts.map +1 -0
- package/src/agents/proactive-skills.js +154 -0
- package/src/agents/proactive-skills.js.map +1 -0
- package/src/agents/runtime-agent-events.d.ts +27 -0
- package/src/agents/runtime-agent-events.d.ts.map +1 -0
- package/src/agents/runtime-agent-events.js +53 -0
- package/src/agents/runtime-agent-events.js.map +1 -0
- package/src/agents/runtime-agent-registry.d.ts +59 -0
- package/src/agents/runtime-agent-registry.d.ts.map +1 -0
- package/src/agents/runtime-agent-registry.js +390 -0
- package/src/agents/runtime-agent-registry.js.map +1 -0
- package/src/agents/skills.d.ts +33 -0
- package/src/agents/skills.d.ts.map +1 -0
- package/src/agents/skills.js +685 -0
- package/src/agents/skills.js.map +1 -0
- package/src/api/agents.d.ts +5 -0
- package/src/api/agents.d.ts.map +1 -0
- package/src/api/agents.js +3 -0
- package/src/api/agents.js.map +1 -0
- package/src/api/background-work.d.ts +39 -0
- package/src/api/background-work.d.ts.map +1 -0
- package/src/api/background-work.js +165 -0
- package/src/api/background-work.js.map +1 -0
- package/src/api/capability-ceiling.d.ts +2 -0
- package/src/api/capability-ceiling.d.ts.map +1 -0
- package/src/api/capability-ceiling.js +2 -0
- package/src/api/capability-ceiling.js.map +1 -0
- package/src/api/child-tool-plan.d.ts +2 -0
- package/src/api/child-tool-plan.d.ts.map +1 -0
- package/src/api/child-tool-plan.js +2 -0
- package/src/api/child-tool-plan.js.map +1 -0
- package/src/api/control-channel.d.ts +2 -0
- package/src/api/control-channel.d.ts.map +1 -0
- package/src/api/control-channel.js +2 -0
- package/src/api/control-channel.js.map +1 -0
- package/src/api/delegation.d.ts +99 -0
- package/src/api/delegation.d.ts.map +1 -0
- package/src/api/delegation.js +9 -0
- package/src/api/delegation.js.map +1 -0
- package/src/api/external-job-provider.d.ts +58 -0
- package/src/api/external-job-provider.d.ts.map +1 -0
- package/src/api/external-job-provider.js +140 -0
- package/src/api/external-job-provider.js.map +1 -0
- package/src/api/external-runs.d.ts +48 -0
- package/src/api/external-runs.d.ts.map +1 -0
- package/src/api/external-runs.js +245 -0
- package/src/api/external-runs.js.map +1 -0
- package/src/api/intercom-bridge.d.ts +2 -0
- package/src/api/intercom-bridge.d.ts.map +1 -0
- package/src/api/intercom-bridge.js +2 -0
- package/src/api/intercom-bridge.js.map +1 -0
- package/src/api/preflight.d.ts +173 -0
- package/src/api/preflight.d.ts.map +1 -0
- package/src/api/preflight.js +362 -0
- package/src/api/preflight.js.map +1 -0
- package/src/api/project-panes.d.ts +8 -0
- package/src/api/project-panes.d.ts.map +1 -0
- package/src/api/project-panes.js +8 -0
- package/src/api/project-panes.js.map +1 -0
- package/src/api/required-child-extensions.d.ts +2 -0
- package/src/api/required-child-extensions.d.ts.map +1 -0
- package/src/api/required-child-extensions.js +2 -0
- package/src/api/required-child-extensions.js.map +1 -0
- package/src/api/shared-types.d.ts +2 -0
- package/src/api/shared-types.d.ts.map +1 -0
- package/src/api/shared-types.js +2 -0
- package/src/api/shared-types.js.map +1 -0
- package/src/api/workflow-resources.d.ts +3 -0
- package/src/api/workflow-resources.d.ts.map +1 -0
- package/src/api/workflow-resources.js +2 -0
- package/src/api/workflow-resources.js.map +1 -0
- package/src/extension/config.d.ts +8 -0
- package/src/extension/config.d.ts.map +1 -0
- package/src/extension/config.js +245 -0
- package/src/extension/config.js.map +1 -0
- package/src/extension/control-notices.d.ts +19 -0
- package/src/extension/control-notices.d.ts.map +1 -0
- package/src/extension/control-notices.js +34 -0
- package/src/extension/control-notices.js.map +1 -0
- package/src/extension/doctor.d.ts +33 -0
- package/src/extension/doctor.d.ts.map +1 -0
- package/src/extension/doctor.js +231 -0
- package/src/extension/doctor.js.map +1 -0
- package/src/extension/fanout-child.d.ts +7 -0
- package/src/extension/fanout-child.d.ts.map +1 -0
- package/src/extension/fanout-child.js +261 -0
- package/src/extension/fanout-child.js.map +1 -0
- package/src/extension/herdr-pi-bridge.d.ts +17 -0
- package/src/extension/herdr-pi-bridge.d.ts.map +1 -0
- package/src/extension/herdr-pi-bridge.js +243 -0
- package/src/extension/herdr-pi-bridge.js.map +1 -0
- package/src/extension/index.d.ts +20 -0
- package/src/extension/index.d.ts.map +1 -0
- package/src/extension/index.js +1108 -0
- package/src/extension/index.js.map +1 -0
- package/src/extension/public-execution.d.ts +62 -0
- package/src/extension/public-execution.d.ts.map +1 -0
- package/src/extension/public-execution.js +174 -0
- package/src/extension/public-execution.js.map +1 -0
- package/src/extension/rpc.d.ts +83 -0
- package/src/extension/rpc.d.ts.map +1 -0
- package/src/extension/rpc.js +687 -0
- package/src/extension/rpc.js.map +1 -0
- package/src/extension/schemas.d.ts +252 -0
- package/src/extension/schemas.d.ts.map +1 -0
- package/src/extension/schemas.js +396 -0
- package/src/extension/schemas.js.map +1 -0
- package/src/extension/steering-notices.d.ts +15 -0
- package/src/extension/steering-notices.d.ts.map +1 -0
- package/src/extension/steering-notices.js +23 -0
- package/src/extension/steering-notices.js.map +1 -0
- package/src/extension/subagent-guide.d.ts +4 -0
- package/src/extension/subagent-guide.d.ts.map +1 -0
- package/src/extension/subagent-guide.js +35 -0
- package/src/extension/subagent-guide.js.map +1 -0
- package/src/extension/tool-description.d.ts +20 -0
- package/src/extension/tool-description.d.ts.map +1 -0
- package/src/extension/tool-description.js +160 -0
- package/src/extension/tool-description.js.map +1 -0
- package/src/extension/tool-result.d.ts +10 -0
- package/src/extension/tool-result.d.ts.map +1 -0
- package/src/extension/tool-result.js +17 -0
- package/src/extension/tool-result.js.map +1 -0
- package/src/inspectors/actions.d.ts +23 -0
- package/src/inspectors/actions.d.ts.map +1 -0
- package/src/inspectors/actions.js +155 -0
- package/src/inspectors/actions.js.map +1 -0
- package/src/inspectors/ghostty/actions.d.ts +12 -0
- package/src/inspectors/ghostty/actions.d.ts.map +1 -0
- package/src/inspectors/ghostty/actions.js +63 -0
- package/src/inspectors/ghostty/actions.js.map +1 -0
- package/src/inspectors/ghostty/plugin.d.ts +8 -0
- package/src/inspectors/ghostty/plugin.d.ts.map +1 -0
- package/src/inspectors/ghostty/plugin.js +24 -0
- package/src/inspectors/ghostty/plugin.js.map +1 -0
- package/src/inspectors/herdr/actions.d.ts +26 -0
- package/src/inspectors/herdr/actions.d.ts.map +1 -0
- package/src/inspectors/herdr/actions.js +134 -0
- package/src/inspectors/herdr/actions.js.map +1 -0
- package/src/inspectors/herdr/client.d.ts +42 -0
- package/src/inspectors/herdr/client.d.ts.map +1 -0
- package/src/inspectors/herdr/client.js +130 -0
- package/src/inspectors/herdr/client.js.map +1 -0
- package/src/inspectors/herdr/focus.d.ts +25 -0
- package/src/inspectors/herdr/focus.d.ts.map +1 -0
- package/src/inspectors/herdr/focus.js +50 -0
- package/src/inspectors/herdr/focus.js.map +1 -0
- package/src/inspectors/herdr/plugin.d.ts +7 -0
- package/src/inspectors/herdr/plugin.d.ts.map +1 -0
- package/src/inspectors/herdr/plugin.js +15 -0
- package/src/inspectors/herdr/plugin.js.map +1 -0
- package/src/inspectors/herdr/project-panes.d.ts +137 -0
- package/src/inspectors/herdr/project-panes.d.ts.map +1 -0
- package/src/inspectors/herdr/project-panes.js +608 -0
- package/src/inspectors/herdr/project-panes.js.map +1 -0
- package/src/inspectors/inspector-runner.d.ts +24 -0
- package/src/inspectors/inspector-runner.d.ts.map +1 -0
- package/src/inspectors/inspector-runner.js +162 -0
- package/src/inspectors/inspector-runner.js.map +1 -0
- package/src/inspectors/plugins.d.ts +4 -0
- package/src/inspectors/plugins.d.ts.map +1 -0
- package/src/inspectors/plugins.js +7 -0
- package/src/inspectors/plugins.js.map +1 -0
- package/src/inspectors/session-roots-codec.d.ts +16 -0
- package/src/inspectors/session-roots-codec.d.ts.map +1 -0
- package/src/inspectors/session-roots-codec.js +33 -0
- package/src/inspectors/session-roots-codec.js.map +1 -0
- package/src/inspectors/shell-command.d.ts +2 -0
- package/src/inspectors/shell-command.d.ts.map +1 -0
- package/src/inspectors/shell-command.js +17 -0
- package/src/inspectors/shell-command.js.map +1 -0
- package/src/inspectors/types.d.ts +49 -0
- package/src/inspectors/types.d.ts.map +1 -0
- package/src/inspectors/types.js +2 -0
- package/src/inspectors/types.js.map +1 -0
- package/src/integrations/herdr-status.d.ts +46 -0
- package/src/integrations/herdr-status.d.ts.map +1 -0
- package/src/integrations/herdr-status.js +371 -0
- package/src/integrations/herdr-status.js.map +1 -0
- package/src/integrations/pi-web-session-liveness.d.ts +20 -0
- package/src/integrations/pi-web-session-liveness.d.ts.map +1 -0
- package/src/integrations/pi-web-session-liveness.js +54 -0
- package/src/integrations/pi-web-session-liveness.js.map +1 -0
- package/src/intercom/intercom-bridge.d.ts +59 -0
- package/src/intercom/intercom-bridge.d.ts.map +1 -0
- package/src/intercom/intercom-bridge.js +192 -0
- package/src/intercom/intercom-bridge.js.map +1 -0
- package/src/intercom/native-supervisor-channel.d.ts +64 -0
- package/src/intercom/native-supervisor-channel.d.ts.map +1 -0
- package/src/intercom/native-supervisor-channel.js +894 -0
- package/src/intercom/native-supervisor-channel.js.map +1 -0
- package/src/intercom/result-intercom.d.ts +36 -0
- package/src/intercom/result-intercom.d.ts.map +1 -0
- package/src/intercom/result-intercom.js +372 -0
- package/src/intercom/result-intercom.js.map +1 -0
- package/src/intercom/supervisor-ui.d.ts +40 -0
- package/src/intercom/supervisor-ui.d.ts.map +1 -0
- package/src/intercom/supervisor-ui.js +202 -0
- package/src/intercom/supervisor-ui.js.map +1 -0
- package/src/missions/actions.d.ts +55 -0
- package/src/missions/actions.d.ts.map +1 -0
- package/src/missions/actions.js +396 -0
- package/src/missions/actions.js.map +1 -0
- package/src/missions/goal-driver.d.ts +16 -0
- package/src/missions/goal-driver.d.ts.map +1 -0
- package/src/missions/goal-driver.js +157 -0
- package/src/missions/goal-driver.js.map +1 -0
- package/src/missions/lifecycle.d.ts +40 -0
- package/src/missions/lifecycle.d.ts.map +1 -0
- package/src/missions/lifecycle.js +352 -0
- package/src/missions/lifecycle.js.map +1 -0
- package/src/missions/store.d.ts +22 -0
- package/src/missions/store.d.ts.map +1 -0
- package/src/missions/store.js +573 -0
- package/src/missions/store.js.map +1 -0
- package/src/missions/types.d.ts +168 -0
- package/src/missions/types.d.ts.map +1 -0
- package/src/missions/types.js +10 -0
- package/src/missions/types.js.map +1 -0
- package/src/missions/workflow-state.d.ts +15 -0
- package/src/missions/workflow-state.d.ts.map +1 -0
- package/src/missions/workflow-state.js +274 -0
- package/src/missions/workflow-state.js.map +1 -0
- package/src/policy/authority.d.ts +10 -0
- package/src/policy/authority.d.ts.map +1 -0
- package/src/policy/authority.js +42 -0
- package/src/policy/authority.js.map +1 -0
- package/src/profiles/profiles.d.ts +135 -0
- package/src/profiles/profiles.d.ts.map +1 -0
- package/src/profiles/profiles.js +520 -0
- package/src/profiles/profiles.js.map +1 -0
- package/src/runs/background/active-async-capacity.d.ts +100 -0
- package/src/runs/background/active-async-capacity.d.ts.map +1 -0
- package/src/runs/background/active-async-capacity.js +492 -0
- package/src/runs/background/active-async-capacity.js.map +1 -0
- package/src/runs/background/active-run-index.d.ts +13 -0
- package/src/runs/background/active-run-index.d.ts.map +1 -0
- package/src/runs/background/active-run-index.js +158 -0
- package/src/runs/background/active-run-index.js.map +1 -0
- package/src/runs/background/async-execution.d.ts +274 -0
- package/src/runs/background/async-execution.d.ts.map +1 -0
- package/src/runs/background/async-execution.js +1989 -0
- package/src/runs/background/async-execution.js.map +1 -0
- package/src/runs/background/async-job-tracker.d.ts +28 -0
- package/src/runs/background/async-job-tracker.d.ts.map +1 -0
- package/src/runs/background/async-job-tracker.js +876 -0
- package/src/runs/background/async-job-tracker.js.map +1 -0
- package/src/runs/background/async-resume.d.ts +59 -0
- package/src/runs/background/async-resume.d.ts.map +1 -0
- package/src/runs/background/async-resume.js +670 -0
- package/src/runs/background/async-resume.js.map +1 -0
- package/src/runs/background/async-retention.d.ts +45 -0
- package/src/runs/background/async-retention.d.ts.map +1 -0
- package/src/runs/background/async-retention.js +884 -0
- package/src/runs/background/async-retention.js.map +1 -0
- package/src/runs/background/async-status-snapshot.d.ts +10 -0
- package/src/runs/background/async-status-snapshot.d.ts.map +1 -0
- package/src/runs/background/async-status-snapshot.js +25 -0
- package/src/runs/background/async-status-snapshot.js.map +1 -0
- package/src/runs/background/async-status.d.ts +169 -0
- package/src/runs/background/async-status.d.ts.map +1 -0
- package/src/runs/background/async-status.js +673 -0
- package/src/runs/background/async-status.js.map +1 -0
- package/src/runs/background/auto-drain.d.ts +17 -0
- package/src/runs/background/auto-drain.d.ts.map +1 -0
- package/src/runs/background/auto-drain.js +73 -0
- package/src/runs/background/auto-drain.js.map +1 -0
- package/src/runs/background/binary-bootstrap.d.ts +9 -0
- package/src/runs/background/binary-bootstrap.d.ts.map +1 -0
- package/src/runs/background/binary-bootstrap.js +41 -0
- package/src/runs/background/binary-bootstrap.js.map +1 -0
- package/src/runs/background/chain-append.d.ts +35 -0
- package/src/runs/background/chain-append.d.ts.map +1 -0
- package/src/runs/background/chain-append.js +300 -0
- package/src/runs/background/chain-append.js.map +1 -0
- package/src/runs/background/chain-root-attachment.d.ts +49 -0
- package/src/runs/background/chain-root-attachment.d.ts.map +1 -0
- package/src/runs/background/chain-root-attachment.js +184 -0
- package/src/runs/background/chain-root-attachment.js.map +1 -0
- package/src/runs/background/completion-batcher.d.ts +52 -0
- package/src/runs/background/completion-batcher.d.ts.map +1 -0
- package/src/runs/background/completion-batcher.js +120 -0
- package/src/runs/background/completion-batcher.js.map +1 -0
- package/src/runs/background/completion-dedupe.d.ts +14 -0
- package/src/runs/background/completion-dedupe.d.ts.map +1 -0
- package/src/runs/background/completion-dedupe.js +49 -0
- package/src/runs/background/completion-dedupe.js.map +1 -0
- package/src/runs/background/completion-replay.d.ts +48 -0
- package/src/runs/background/completion-replay.d.ts.map +1 -0
- package/src/runs/background/completion-replay.js +267 -0
- package/src/runs/background/completion-replay.js.map +1 -0
- package/src/runs/background/control-channel.d.ts +156 -0
- package/src/runs/background/control-channel.d.ts.map +1 -0
- package/src/runs/background/control-channel.js +521 -0
- package/src/runs/background/control-channel.js.map +1 -0
- package/src/runs/background/fleet-view.d.ts +64 -0
- package/src/runs/background/fleet-view.d.ts.map +1 -0
- package/src/runs/background/fleet-view.js +648 -0
- package/src/runs/background/fleet-view.js.map +1 -0
- package/src/runs/background/index-segment.d.ts +16 -0
- package/src/runs/background/index-segment.d.ts.map +1 -0
- package/src/runs/background/index-segment.js +59 -0
- package/src/runs/background/index-segment.js.map +1 -0
- package/src/runs/background/inspect-rpc.d.ts +60 -0
- package/src/runs/background/inspect-rpc.d.ts.map +1 -0
- package/src/runs/background/inspect-rpc.js +406 -0
- package/src/runs/background/inspect-rpc.js.map +1 -0
- package/src/runs/background/notify.d.ts +162 -0
- package/src/runs/background/notify.d.ts.map +1 -0
- package/src/runs/background/notify.js +665 -0
- package/src/runs/background/notify.js.map +1 -0
- package/src/runs/background/owned-process-tree.d.ts +11 -0
- package/src/runs/background/owned-process-tree.d.ts.map +1 -0
- package/src/runs/background/owned-process-tree.js +117 -0
- package/src/runs/background/owned-process-tree.js.map +1 -0
- package/src/runs/background/parallel-groups.d.ts +4 -0
- package/src/runs/background/parallel-groups.d.ts.map +1 -0
- package/src/runs/background/parallel-groups.js +47 -0
- package/src/runs/background/parallel-groups.js.map +1 -0
- package/src/runs/background/process-terminal.d.ts +34 -0
- package/src/runs/background/process-terminal.d.ts.map +1 -0
- package/src/runs/background/process-terminal.js +305 -0
- package/src/runs/background/process-terminal.js.map +1 -0
- package/src/runs/background/result-delivery-ownership.d.ts +11 -0
- package/src/runs/background/result-delivery-ownership.d.ts.map +1 -0
- package/src/runs/background/result-delivery-ownership.js +37 -0
- package/src/runs/background/result-delivery-ownership.js.map +1 -0
- package/src/runs/background/result-files.d.ts +33 -0
- package/src/runs/background/result-files.d.ts.map +1 -0
- package/src/runs/background/result-files.js +528 -0
- package/src/runs/background/result-files.js.map +1 -0
- package/src/runs/background/result-watcher.d.ts +87 -0
- package/src/runs/background/result-watcher.d.ts.map +1 -0
- package/src/runs/background/result-watcher.js +764 -0
- package/src/runs/background/result-watcher.js.map +1 -0
- package/src/runs/background/resume-guidance.d.ts +5 -0
- package/src/runs/background/resume-guidance.d.ts.map +1 -0
- package/src/runs/background/resume-guidance.js +57 -0
- package/src/runs/background/resume-guidance.js.map +1 -0
- package/src/runs/background/retained-children.d.ts +25 -0
- package/src/runs/background/retained-children.d.ts.map +1 -0
- package/src/runs/background/retained-children.js +128 -0
- package/src/runs/background/retained-children.js.map +1 -0
- package/src/runs/background/retained-nested-route-tracker.d.ts +13 -0
- package/src/runs/background/retained-nested-route-tracker.d.ts.map +1 -0
- package/src/runs/background/retained-nested-route-tracker.js +91 -0
- package/src/runs/background/retained-nested-route-tracker.js.map +1 -0
- package/src/runs/background/run-child-session.d.ts +123 -0
- package/src/runs/background/run-child-session.d.ts.map +1 -0
- package/src/runs/background/run-child-session.js +602 -0
- package/src/runs/background/run-child-session.js.map +1 -0
- package/src/runs/background/run-id-query.d.ts +4 -0
- package/src/runs/background/run-id-query.d.ts.map +1 -0
- package/src/runs/background/run-id-query.js +7 -0
- package/src/runs/background/run-id-query.js.map +1 -0
- package/src/runs/background/run-id-resolver.d.ts +23 -0
- package/src/runs/background/run-id-resolver.d.ts.map +1 -0
- package/src/runs/background/run-id-resolver.js +170 -0
- package/src/runs/background/run-id-resolver.js.map +1 -0
- package/src/runs/background/run-status.d.ts +26 -0
- package/src/runs/background/run-status.d.ts.map +1 -0
- package/src/runs/background/run-status.js +826 -0
- package/src/runs/background/run-status.js.map +1 -0
- package/src/runs/background/runner-aliases.d.ts +17 -0
- package/src/runs/background/runner-aliases.d.ts.map +1 -0
- package/src/runs/background/runner-aliases.js +141 -0
- package/src/runs/background/runner-aliases.js.map +1 -0
- package/src/runs/background/runner-child-launch.d.ts +24 -0
- package/src/runs/background/runner-child-launch.d.ts.map +1 -0
- package/src/runs/background/runner-child-launch.js +68 -0
- package/src/runs/background/runner-child-launch.js.map +1 -0
- package/src/runs/background/runner-child-sessions.d.ts +7 -0
- package/src/runs/background/runner-child-sessions.d.ts.map +1 -0
- package/src/runs/background/runner-child-sessions.js +35 -0
- package/src/runs/background/runner-child-sessions.js.map +1 -0
- package/src/runs/background/runner-http-dispatcher.d.ts +43 -0
- package/src/runs/background/runner-http-dispatcher.d.ts.map +1 -0
- package/src/runs/background/runner-http-dispatcher.js +114 -0
- package/src/runs/background/runner-http-dispatcher.js.map +1 -0
- package/src/runs/background/scheduled-runs.d.ts +116 -0
- package/src/runs/background/scheduled-runs.d.ts.map +1 -0
- package/src/runs/background/scheduled-runs.js +1024 -0
- package/src/runs/background/scheduled-runs.js.map +1 -0
- package/src/runs/background/stale-run-reconciler.d.ts +37 -0
- package/src/runs/background/stale-run-reconciler.d.ts.map +1 -0
- package/src/runs/background/stale-run-reconciler.js +393 -0
- package/src/runs/background/stale-run-reconciler.js.map +1 -0
- package/src/runs/background/steering.d.ts +52 -0
- package/src/runs/background/steering.d.ts.map +1 -0
- package/src/runs/background/steering.js +247 -0
- package/src/runs/background/steering.js.map +1 -0
- package/src/runs/background/subagent-runner.d.ts +201 -0
- package/src/runs/background/subagent-runner.d.ts.map +1 -0
- package/src/runs/background/subagent-runner.js +5134 -0
- package/src/runs/background/subagent-runner.js.map +1 -0
- package/src/runs/background/subagent-wait.d.ts +122 -0
- package/src/runs/background/subagent-wait.d.ts.map +1 -0
- package/src/runs/background/subagent-wait.js +735 -0
- package/src/runs/background/subagent-wait.js.map +1 -0
- package/src/runs/background/terminal-run-index.d.ts +8 -0
- package/src/runs/background/terminal-run-index.d.ts.map +1 -0
- package/src/runs/background/terminal-run-index.js +123 -0
- package/src/runs/background/terminal-run-index.js.map +1 -0
- package/src/runs/background/top-level-async.d.ts +8 -0
- package/src/runs/background/top-level-async.d.ts.map +1 -0
- package/src/runs/background/top-level-async.js +6 -0
- package/src/runs/background/top-level-async.js.map +1 -0
- package/src/runs/background/wait-completions.d.ts +29 -0
- package/src/runs/background/wait-completions.d.ts.map +1 -0
- package/src/runs/background/wait-completions.js +264 -0
- package/src/runs/background/wait-completions.js.map +1 -0
- package/src/runs/background/wait-config.d.ts +9 -0
- package/src/runs/background/wait-config.d.ts.map +1 -0
- package/src/runs/background/wait-config.js +47 -0
- package/src/runs/background/wait-config.js.map +1 -0
- package/src/runs/background/wait-subscriptions.d.ts +27 -0
- package/src/runs/background/wait-subscriptions.d.ts.map +1 -0
- package/src/runs/background/wait-subscriptions.js +337 -0
- package/src/runs/background/wait-subscriptions.js.map +1 -0
- package/src/runs/background/wait-tool.d.ts +7 -0
- package/src/runs/background/wait-tool.d.ts.map +1 -0
- package/src/runs/background/wait-tool.js +36 -0
- package/src/runs/background/wait-tool.js.map +1 -0
- package/src/runs/foreground/async-dismiss-action.d.ts +7 -0
- package/src/runs/foreground/async-dismiss-action.d.ts.map +1 -0
- package/src/runs/foreground/async-dismiss-action.js +82 -0
- package/src/runs/foreground/async-dismiss-action.js.map +1 -0
- package/src/runs/foreground/async-steering-action.d.ts +32 -0
- package/src/runs/foreground/async-steering-action.d.ts.map +1 -0
- package/src/runs/foreground/async-steering-action.js +270 -0
- package/src/runs/foreground/async-steering-action.js.map +1 -0
- package/src/runs/foreground/async-stop-action.d.ts +7 -0
- package/src/runs/foreground/async-stop-action.d.ts.map +1 -0
- package/src/runs/foreground/async-stop-action.js +171 -0
- package/src/runs/foreground/async-stop-action.js.map +1 -0
- package/src/runs/foreground/execution.d.ts +11 -0
- package/src/runs/foreground/execution.d.ts.map +1 -0
- package/src/runs/foreground/execution.js +2186 -0
- package/src/runs/foreground/execution.js.map +1 -0
- package/src/runs/foreground/foreground-control.d.ts +25 -0
- package/src/runs/foreground/foreground-control.d.ts.map +1 -0
- package/src/runs/foreground/foreground-control.js +139 -0
- package/src/runs/foreground/foreground-control.js.map +1 -0
- package/src/runs/foreground/foreground-history.d.ts +12 -0
- package/src/runs/foreground/foreground-history.d.ts.map +1 -0
- package/src/runs/foreground/foreground-history.js +165 -0
- package/src/runs/foreground/foreground-history.js.map +1 -0
- package/src/runs/foreground/prompt-audit.d.ts +33 -0
- package/src/runs/foreground/prompt-audit.d.ts.map +1 -0
- package/src/runs/foreground/prompt-audit.js +143 -0
- package/src/runs/foreground/prompt-audit.js.map +1 -0
- package/src/runs/foreground/subagent-executor.d.ts +296 -0
- package/src/runs/foreground/subagent-executor.d.ts.map +1 -0
- package/src/runs/foreground/subagent-executor.js +7047 -0
- package/src/runs/foreground/subagent-executor.js.map +1 -0
- package/src/runs/foreground/workflow-detach-reconcile.d.ts +16 -0
- package/src/runs/foreground/workflow-detach-reconcile.d.ts.map +1 -0
- package/src/runs/foreground/workflow-detach-reconcile.js +284 -0
- package/src/runs/foreground/workflow-detach-reconcile.js.map +1 -0
- package/src/runs/foreground/workflow-foreground-steering.d.ts +44 -0
- package/src/runs/foreground/workflow-foreground-steering.d.ts.map +1 -0
- package/src/runs/foreground/workflow-foreground-steering.js +149 -0
- package/src/runs/foreground/workflow-foreground-steering.js.map +1 -0
- package/src/runs/shared/abort-recovery.d.ts +27 -0
- package/src/runs/shared/abort-recovery.d.ts.map +1 -0
- package/src/runs/shared/abort-recovery.js +109 -0
- package/src/runs/shared/abort-recovery.js.map +1 -0
- package/src/runs/shared/acceptance.d.ts +145 -0
- package/src/runs/shared/acceptance.d.ts.map +1 -0
- package/src/runs/shared/acceptance.js +1650 -0
- package/src/runs/shared/acceptance.js.map +1 -0
- package/src/runs/shared/agent-contract.d.ts +6 -0
- package/src/runs/shared/agent-contract.d.ts.map +1 -0
- package/src/runs/shared/agent-contract.js +36 -0
- package/src/runs/shared/agent-contract.js.map +1 -0
- package/src/runs/shared/async-status-projection.d.ts +94 -0
- package/src/runs/shared/async-status-projection.d.ts.map +1 -0
- package/src/runs/shared/async-status-projection.js +542 -0
- package/src/runs/shared/async-status-projection.js.map +1 -0
- package/src/runs/shared/background-process-options.d.ts +5 -0
- package/src/runs/shared/background-process-options.d.ts.map +1 -0
- package/src/runs/shared/background-process-options.js +7 -0
- package/src/runs/shared/background-process-options.js.map +1 -0
- package/src/runs/shared/capability-ceiling.d.ts +58 -0
- package/src/runs/shared/capability-ceiling.d.ts.map +1 -0
- package/src/runs/shared/capability-ceiling.js +179 -0
- package/src/runs/shared/capability-ceiling.js.map +1 -0
- package/src/runs/shared/chain-outputs.d.ts +19 -0
- package/src/runs/shared/chain-outputs.d.ts.map +1 -0
- package/src/runs/shared/chain-outputs.js +105 -0
- package/src/runs/shared/chain-outputs.js.map +1 -0
- package/src/runs/shared/child-hooks.d.ts +34 -0
- package/src/runs/shared/child-hooks.d.ts.map +1 -0
- package/src/runs/shared/child-hooks.js +188 -0
- package/src/runs/shared/child-hooks.js.map +1 -0
- package/src/runs/shared/child-identity.d.ts +24 -0
- package/src/runs/shared/child-identity.d.ts.map +1 -0
- package/src/runs/shared/child-identity.js +41 -0
- package/src/runs/shared/child-identity.js.map +1 -0
- package/src/runs/shared/child-launch-plan.d.ts +71 -0
- package/src/runs/shared/child-launch-plan.d.ts.map +1 -0
- package/src/runs/shared/child-launch-plan.js +89 -0
- package/src/runs/shared/child-launch-plan.js.map +1 -0
- package/src/runs/shared/child-launch.d.ts +114 -0
- package/src/runs/shared/child-launch.d.ts.map +1 -0
- package/src/runs/shared/child-launch.js +231 -0
- package/src/runs/shared/child-launch.js.map +1 -0
- package/src/runs/shared/child-lifecycle.d.ts +14 -0
- package/src/runs/shared/child-lifecycle.d.ts.map +1 -0
- package/src/runs/shared/child-lifecycle.js +23 -0
- package/src/runs/shared/child-lifecycle.js.map +1 -0
- package/src/runs/shared/child-runtime-config.d.ts +102 -0
- package/src/runs/shared/child-runtime-config.d.ts.map +1 -0
- package/src/runs/shared/child-runtime-config.js +39 -0
- package/src/runs/shared/child-runtime-config.js.map +1 -0
- package/src/runs/shared/child-session.d.ts +155 -0
- package/src/runs/shared/child-session.d.ts.map +1 -0
- package/src/runs/shared/child-session.js +347 -0
- package/src/runs/shared/child-session.js.map +1 -0
- package/src/runs/shared/child-tool-plan.d.ts +73 -0
- package/src/runs/shared/child-tool-plan.d.ts.map +1 -0
- package/src/runs/shared/child-tool-plan.js +380 -0
- package/src/runs/shared/child-tool-plan.js.map +1 -0
- package/src/runs/shared/claude-code-adapter.d.ts +25 -0
- package/src/runs/shared/claude-code-adapter.d.ts.map +1 -0
- package/src/runs/shared/claude-code-adapter.js +120 -0
- package/src/runs/shared/claude-code-adapter.js.map +1 -0
- package/src/runs/shared/codex-exec-adapter.d.ts +26 -0
- package/src/runs/shared/codex-exec-adapter.d.ts.map +1 -0
- package/src/runs/shared/codex-exec-adapter.js +128 -0
- package/src/runs/shared/codex-exec-adapter.js.map +1 -0
- package/src/runs/shared/completion-evidence.d.ts +31 -0
- package/src/runs/shared/completion-evidence.d.ts.map +1 -0
- package/src/runs/shared/completion-evidence.js +54 -0
- package/src/runs/shared/completion-evidence.js.map +1 -0
- package/src/runs/shared/completion-guard.d.ts +35 -0
- package/src/runs/shared/completion-guard.d.ts.map +1 -0
- package/src/runs/shared/completion-guard.js +214 -0
- package/src/runs/shared/completion-guard.js.map +1 -0
- package/src/runs/shared/context-mode.d.ts +13 -0
- package/src/runs/shared/context-mode.d.ts.map +1 -0
- package/src/runs/shared/context-mode.js +39 -0
- package/src/runs/shared/context-mode.js.map +1 -0
- package/src/runs/shared/cursor-agent-adapter.d.ts +27 -0
- package/src/runs/shared/cursor-agent-adapter.d.ts.map +1 -0
- package/src/runs/shared/cursor-agent-adapter.js +100 -0
- package/src/runs/shared/cursor-agent-adapter.js.map +1 -0
- package/src/runs/shared/dynamic-fanout.d.ts +50 -0
- package/src/runs/shared/dynamic-fanout.d.ts.map +1 -0
- package/src/runs/shared/dynamic-fanout.js +274 -0
- package/src/runs/shared/dynamic-fanout.js.map +1 -0
- package/src/runs/shared/effective-system-prompt.d.ts +18 -0
- package/src/runs/shared/effective-system-prompt.d.ts.map +1 -0
- package/src/runs/shared/effective-system-prompt.js +23 -0
- package/src/runs/shared/effective-system-prompt.js.map +1 -0
- package/src/runs/shared/extension-bindings.d.ts +17 -0
- package/src/runs/shared/extension-bindings.d.ts.map +1 -0
- package/src/runs/shared/extension-bindings.js +83 -0
- package/src/runs/shared/extension-bindings.js.map +1 -0
- package/src/runs/shared/external-cli-contract.d.ts +30 -0
- package/src/runs/shared/external-cli-contract.d.ts.map +1 -0
- package/src/runs/shared/external-cli-contract.js +146 -0
- package/src/runs/shared/external-cli-contract.js.map +1 -0
- package/src/runs/shared/external-cli-preflight.d.ts +32 -0
- package/src/runs/shared/external-cli-preflight.d.ts.map +1 -0
- package/src/runs/shared/external-cli-preflight.js +116 -0
- package/src/runs/shared/external-cli-preflight.js.map +1 -0
- package/src/runs/shared/external-cli-runner.d.ts +66 -0
- package/src/runs/shared/external-cli-runner.d.ts.map +1 -0
- package/src/runs/shared/external-cli-runner.js +421 -0
- package/src/runs/shared/external-cli-runner.js.map +1 -0
- package/src/runs/shared/external-job-bridge.d.ts +18 -0
- package/src/runs/shared/external-job-bridge.d.ts.map +1 -0
- package/src/runs/shared/external-job-bridge.js +424 -0
- package/src/runs/shared/external-job-bridge.js.map +1 -0
- package/src/runs/shared/external-job-runner.d.ts +45 -0
- package/src/runs/shared/external-job-runner.d.ts.map +1 -0
- package/src/runs/shared/external-job-runner.js +353 -0
- package/src/runs/shared/external-job-runner.js.map +1 -0
- package/src/runs/shared/fast-mode-extension.d.ts +4 -0
- package/src/runs/shared/fast-mode-extension.d.ts.map +1 -0
- package/src/runs/shared/fast-mode-extension.js +9 -0
- package/src/runs/shared/fast-mode-extension.js.map +1 -0
- package/src/runs/shared/herdr-connection.d.ts +71 -0
- package/src/runs/shared/herdr-connection.d.ts.map +1 -0
- package/src/runs/shared/herdr-connection.js +258 -0
- package/src/runs/shared/herdr-connection.js.map +1 -0
- package/src/runs/shared/herdr-external-adapters.d.ts +148 -0
- package/src/runs/shared/herdr-external-adapters.d.ts.map +1 -0
- package/src/runs/shared/herdr-external-adapters.js +405 -0
- package/src/runs/shared/herdr-external-adapters.js.map +1 -0
- package/src/runs/shared/herdr-machine.d.ts +48 -0
- package/src/runs/shared/herdr-machine.d.ts.map +1 -0
- package/src/runs/shared/herdr-machine.js +247 -0
- package/src/runs/shared/herdr-machine.js.map +1 -0
- package/src/runs/shared/herdr-pi-protocol.d.ts +22 -0
- package/src/runs/shared/herdr-pi-protocol.d.ts.map +1 -0
- package/src/runs/shared/herdr-pi-protocol.js +58 -0
- package/src/runs/shared/herdr-pi-protocol.js.map +1 -0
- package/src/runs/shared/herdr-placed-run.d.ts +267 -0
- package/src/runs/shared/herdr-placed-run.d.ts.map +1 -0
- package/src/runs/shared/herdr-placed-run.js +716 -0
- package/src/runs/shared/herdr-placed-run.js.map +1 -0
- package/src/runs/shared/host-step-status.d.ts +34 -0
- package/src/runs/shared/host-step-status.d.ts.map +1 -0
- package/src/runs/shared/host-step-status.js +245 -0
- package/src/runs/shared/host-step-status.js.map +1 -0
- package/src/runs/shared/lane-metadata.d.ts +24 -0
- package/src/runs/shared/lane-metadata.d.ts.map +1 -0
- package/src/runs/shared/lane-metadata.js +127 -0
- package/src/runs/shared/lane-metadata.js.map +1 -0
- package/src/runs/shared/launch-cwd.d.ts +2 -0
- package/src/runs/shared/launch-cwd.d.ts.map +1 -0
- package/src/runs/shared/launch-cwd.js +17 -0
- package/src/runs/shared/launch-cwd.js.map +1 -0
- package/src/runs/shared/llm-intent-arbiter.d.ts +48 -0
- package/src/runs/shared/llm-intent-arbiter.d.ts.map +1 -0
- package/src/runs/shared/llm-intent-arbiter.js +235 -0
- package/src/runs/shared/llm-intent-arbiter.js.map +1 -0
- package/src/runs/shared/long-running-guard.d.ts +33 -0
- package/src/runs/shared/long-running-guard.d.ts.map +1 -0
- package/src/runs/shared/long-running-guard.js +199 -0
- package/src/runs/shared/long-running-guard.js.map +1 -0
- package/src/runs/shared/mcp-config-sources.d.ts +30 -0
- package/src/runs/shared/mcp-config-sources.d.ts.map +1 -0
- package/src/runs/shared/mcp-config-sources.js +419 -0
- package/src/runs/shared/mcp-config-sources.js.map +1 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.d.ts +59 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.d.ts.map +1 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.js +400 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.js.map +1 -0
- package/src/runs/shared/mcp-direct-tool-grant.d.ts +41 -0
- package/src/runs/shared/mcp-direct-tool-grant.d.ts.map +1 -0
- package/src/runs/shared/mcp-direct-tool-grant.js +146 -0
- package/src/runs/shared/mcp-direct-tool-grant.js.map +1 -0
- package/src/runs/shared/model-resolution-diagnostic.d.ts +22 -0
- package/src/runs/shared/model-resolution-diagnostic.d.ts.map +1 -0
- package/src/runs/shared/model-resolution-diagnostic.js +65 -0
- package/src/runs/shared/model-resolution-diagnostic.js.map +1 -0
- package/src/runs/shared/model-resolution.d.ts +92 -0
- package/src/runs/shared/model-resolution.d.ts.map +1 -0
- package/src/runs/shared/model-resolution.js +343 -0
- package/src/runs/shared/model-resolution.js.map +1 -0
- package/src/runs/shared/model-scope.d.ts +68 -0
- package/src/runs/shared/model-scope.d.ts.map +1 -0
- package/src/runs/shared/model-scope.js +156 -0
- package/src/runs/shared/model-scope.js.map +1 -0
- package/src/runs/shared/mutation-evidence.d.ts +19 -0
- package/src/runs/shared/mutation-evidence.d.ts.map +1 -0
- package/src/runs/shared/mutation-evidence.js +199 -0
- package/src/runs/shared/mutation-evidence.js.map +1 -0
- package/src/runs/shared/nested-events.d.ts +134 -0
- package/src/runs/shared/nested-events.d.ts.map +1 -0
- package/src/runs/shared/nested-events.js +1056 -0
- package/src/runs/shared/nested-events.js.map +1 -0
- package/src/runs/shared/nested-path.d.ts +9 -0
- package/src/runs/shared/nested-path.d.ts.map +1 -0
- package/src/runs/shared/nested-path.js +35 -0
- package/src/runs/shared/nested-path.js.map +1 -0
- package/src/runs/shared/nested-render.d.ts +21 -0
- package/src/runs/shared/nested-render.d.ts.map +1 -0
- package/src/runs/shared/nested-render.js +116 -0
- package/src/runs/shared/nested-render.js.map +1 -0
- package/src/runs/shared/orca-progress-tabs.d.ts +33 -0
- package/src/runs/shared/orca-progress-tabs.d.ts.map +1 -0
- package/src/runs/shared/orca-progress-tabs.js +527 -0
- package/src/runs/shared/orca-progress-tabs.js.map +1 -0
- package/src/runs/shared/parallel-handoff.d.ts +73 -0
- package/src/runs/shared/parallel-handoff.d.ts.map +1 -0
- package/src/runs/shared/parallel-handoff.js +733 -0
- package/src/runs/shared/parallel-handoff.js.map +1 -0
- package/src/runs/shared/parallel-utils.d.ts +165 -0
- package/src/runs/shared/parallel-utils.d.ts.map +1 -0
- package/src/runs/shared/parallel-utils.js +126 -0
- package/src/runs/shared/parallel-utils.js.map +1 -0
- package/src/runs/shared/permissions.d.ts +13 -0
- package/src/runs/shared/permissions.d.ts.map +1 -0
- package/src/runs/shared/permissions.js +93 -0
- package/src/runs/shared/permissions.js.map +1 -0
- package/src/runs/shared/pi-spawn.d.ts +28 -0
- package/src/runs/shared/pi-spawn.d.ts.map +1 -0
- package/src/runs/shared/pi-spawn.js +156 -0
- package/src/runs/shared/pi-spawn.js.map +1 -0
- package/src/runs/shared/process-signal.d.ts +16 -0
- package/src/runs/shared/process-signal.d.ts.map +1 -0
- package/src/runs/shared/process-signal.js +22 -0
- package/src/runs/shared/process-signal.js.map +1 -0
- package/src/runs/shared/readonly-drain-observation.d.ts +26 -0
- package/src/runs/shared/readonly-drain-observation.d.ts.map +1 -0
- package/src/runs/shared/readonly-drain-observation.js +51 -0
- package/src/runs/shared/readonly-drain-observation.js.map +1 -0
- package/src/runs/shared/run-fanout-budget.d.ts +15 -0
- package/src/runs/shared/run-fanout-budget.d.ts.map +1 -0
- package/src/runs/shared/run-fanout-budget.js +259 -0
- package/src/runs/shared/run-fanout-budget.js.map +1 -0
- package/src/runs/shared/run-history.d.ts +20 -0
- package/src/runs/shared/run-history.d.ts.map +1 -0
- package/src/runs/shared/run-history.js +200 -0
- package/src/runs/shared/run-history.js.map +1 -0
- package/src/runs/shared/runtime-acknowledged-extensions.d.ts +8 -0
- package/src/runs/shared/runtime-acknowledged-extensions.d.ts.map +1 -0
- package/src/runs/shared/runtime-acknowledged-extensions.js +45 -0
- package/src/runs/shared/runtime-acknowledged-extensions.js.map +1 -0
- package/src/runs/shared/session-lease.d.ts +70 -0
- package/src/runs/shared/session-lease.d.ts.map +1 -0
- package/src/runs/shared/session-lease.js +251 -0
- package/src/runs/shared/session-lease.js.map +1 -0
- package/src/runs/shared/single-output.d.ts +61 -0
- package/src/runs/shared/single-output.d.ts.map +1 -0
- package/src/runs/shared/single-output.js +263 -0
- package/src/runs/shared/single-output.js.map +1 -0
- package/src/runs/shared/spawn-budget.d.ts +21 -0
- package/src/runs/shared/spawn-budget.d.ts.map +1 -0
- package/src/runs/shared/spawn-budget.js +94 -0
- package/src/runs/shared/spawn-budget.js.map +1 -0
- package/src/runs/shared/structured-output.d.ts +57 -0
- package/src/runs/shared/structured-output.d.ts.map +1 -0
- package/src/runs/shared/structured-output.js +391 -0
- package/src/runs/shared/structured-output.js.map +1 -0
- package/src/runs/shared/subagent-control.d.ts +50 -0
- package/src/runs/shared/subagent-control.d.ts.map +1 -0
- package/src/runs/shared/subagent-control.js +247 -0
- package/src/runs/shared/subagent-control.js.map +1 -0
- package/src/runs/shared/subagent-prompt-runtime.d.ts +28 -0
- package/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -0
- package/src/runs/shared/subagent-prompt-runtime.js +548 -0
- package/src/runs/shared/subagent-prompt-runtime.js.map +1 -0
- package/src/runs/shared/task-intent.d.ts +38 -0
- package/src/runs/shared/task-intent.d.ts.map +1 -0
- package/src/runs/shared/task-intent.js +213 -0
- package/src/runs/shared/task-intent.js.map +1 -0
- package/src/runs/shared/tool-availability.d.ts +17 -0
- package/src/runs/shared/tool-availability.d.ts.map +1 -0
- package/src/runs/shared/tool-availability.js +30 -0
- package/src/runs/shared/tool-availability.js.map +1 -0
- package/src/runs/shared/tool-budget.d.ts +22 -0
- package/src/runs/shared/tool-budget.d.ts.map +1 -0
- package/src/runs/shared/tool-budget.js +79 -0
- package/src/runs/shared/tool-budget.js.map +1 -0
- package/src/runs/shared/tool-timeout.d.ts +32 -0
- package/src/runs/shared/tool-timeout.d.ts.map +1 -0
- package/src/runs/shared/tool-timeout.js +74 -0
- package/src/runs/shared/tool-timeout.js.map +1 -0
- package/src/runs/shared/usage-budget.d.ts +8 -0
- package/src/runs/shared/usage-budget.d.ts.map +1 -0
- package/src/runs/shared/usage-budget.js +75 -0
- package/src/runs/shared/usage-budget.js.map +1 -0
- package/src/runs/shared/usage-reconciliation.d.ts +9 -0
- package/src/runs/shared/usage-reconciliation.d.ts.map +1 -0
- package/src/runs/shared/usage-reconciliation.js +72 -0
- package/src/runs/shared/usage-reconciliation.js.map +1 -0
- package/src/runs/shared/workflow-async-child-guidance.d.ts +4 -0
- package/src/runs/shared/workflow-async-child-guidance.d.ts.map +1 -0
- package/src/runs/shared/workflow-async-child-guidance.js +18 -0
- package/src/runs/shared/workflow-async-child-guidance.js.map +1 -0
- package/src/runs/shared/workflow-graph.d.ts +32 -0
- package/src/runs/shared/workflow-graph.d.ts.map +1 -0
- package/src/runs/shared/workflow-graph.js +222 -0
- package/src/runs/shared/workflow-graph.js.map +1 -0
- package/src/runs/shared/worktree-cleanup-plan.d.ts +78 -0
- package/src/runs/shared/worktree-cleanup-plan.d.ts.map +1 -0
- package/src/runs/shared/worktree-cleanup-plan.js +782 -0
- package/src/runs/shared/worktree-cleanup-plan.js.map +1 -0
- package/src/runs/shared/worktree-setup-command.d.ts +39 -0
- package/src/runs/shared/worktree-setup-command.d.ts.map +1 -0
- package/src/runs/shared/worktree-setup-command.js +201 -0
- package/src/runs/shared/worktree-setup-command.js.map +1 -0
- package/src/runs/shared/worktree.d.ts +179 -0
- package/src/runs/shared/worktree.d.ts.map +1 -0
- package/src/runs/shared/worktree.js +1333 -0
- package/src/runs/shared/worktree.js.map +1 -0
- package/src/shared/accessible-dir.d.ts +12 -0
- package/src/shared/accessible-dir.d.ts.map +1 -0
- package/src/shared/accessible-dir.js +37 -0
- package/src/shared/accessible-dir.js.map +1 -0
- package/src/shared/agent-stream-options.d.ts +6 -0
- package/src/shared/agent-stream-options.d.ts.map +1 -0
- package/src/shared/agent-stream-options.js +4 -0
- package/src/shared/agent-stream-options.js.map +1 -0
- package/src/shared/artifacts.d.ts +23 -0
- package/src/shared/artifacts.d.ts.map +1 -0
- package/src/shared/artifacts.js +273 -0
- package/src/shared/artifacts.js.map +1 -0
- package/src/shared/atomic-json.d.ts +19 -0
- package/src/shared/atomic-json.d.ts.map +1 -0
- package/src/shared/atomic-json.js +60 -0
- package/src/shared/atomic-json.js.map +1 -0
- package/src/shared/capacity-resilient-json.d.ts +27 -0
- package/src/shared/capacity-resilient-json.d.ts.map +1 -0
- package/src/shared/capacity-resilient-json.js +87 -0
- package/src/shared/capacity-resilient-json.js.map +1 -0
- package/src/shared/child-cache-retention.d.ts +30 -0
- package/src/shared/child-cache-retention.d.ts.map +1 -0
- package/src/shared/child-cache-retention.js +41 -0
- package/src/shared/child-cache-retention.js.map +1 -0
- package/src/shared/child-session-name.d.ts +9 -0
- package/src/shared/child-session-name.d.ts.map +1 -0
- package/src/shared/child-session-name.js +39 -0
- package/src/shared/child-session-name.js.map +1 -0
- package/src/shared/child-transcript.d.ts +38 -0
- package/src/shared/child-transcript.d.ts.map +1 -0
- package/src/shared/child-transcript.js +226 -0
- package/src/shared/child-transcript.js.map +1 -0
- package/src/shared/completion-owner.d.ts +3 -0
- package/src/shared/completion-owner.d.ts.map +1 -0
- package/src/shared/completion-owner.js +9 -0
- package/src/shared/completion-owner.js.map +1 -0
- package/src/shared/display-text.d.ts +6 -0
- package/src/shared/display-text.d.ts.map +1 -0
- package/src/shared/display-text.js +155 -0
- package/src/shared/display-text.js.map +1 -0
- package/src/shared/extension-context.d.ts +6 -0
- package/src/shared/extension-context.d.ts.map +1 -0
- package/src/shared/extension-context.js +22 -0
- package/src/shared/extension-context.js.map +1 -0
- package/src/shared/file-coalescer.d.ts +12 -0
- package/src/shared/file-coalescer.d.ts.map +1 -0
- package/src/shared/file-coalescer.js +35 -0
- package/src/shared/file-coalescer.js.map +1 -0
- package/src/shared/file-system-retry.d.ts +32 -0
- package/src/shared/file-system-retry.d.ts.map +1 -0
- package/src/shared/file-system-retry.js +85 -0
- package/src/shared/file-system-retry.js.map +1 -0
- package/src/shared/fork-context.d.ts +59 -0
- package/src/shared/fork-context.d.ts.map +1 -0
- package/src/shared/fork-context.js +171 -0
- package/src/shared/fork-context.js.map +1 -0
- package/src/shared/fork-session-cwd.d.ts +3 -0
- package/src/shared/fork-session-cwd.d.ts.map +1 -0
- package/src/shared/fork-session-cwd.js +24 -0
- package/src/shared/fork-session-cwd.js.map +1 -0
- package/src/shared/formatters.d.ts +36 -0
- package/src/shared/formatters.d.ts.map +1 -0
- package/src/shared/formatters.js +143 -0
- package/src/shared/formatters.js.map +1 -0
- package/src/shared/jsonl-writer.d.ts +21 -0
- package/src/shared/jsonl-writer.d.ts.map +1 -0
- package/src/shared/jsonl-writer.js +68 -0
- package/src/shared/jsonl-writer.js.map +1 -0
- package/src/shared/launch-contract.d.ts +64 -0
- package/src/shared/launch-contract.d.ts.map +1 -0
- package/src/shared/launch-contract.js +141 -0
- package/src/shared/launch-contract.js.map +1 -0
- package/src/shared/model-info.d.ts +44 -0
- package/src/shared/model-info.d.ts.map +1 -0
- package/src/shared/model-info.js +73 -0
- package/src/shared/model-info.js.map +1 -0
- package/src/shared/model-response-aliases.d.ts +2 -0
- package/src/shared/model-response-aliases.d.ts.map +1 -0
- package/src/shared/model-response-aliases.js +16 -0
- package/src/shared/model-response-aliases.js.map +1 -0
- package/src/shared/node-executable.d.ts +2 -0
- package/src/shared/node-executable.d.ts.map +1 -0
- package/src/shared/node-executable.js +21 -0
- package/src/shared/node-executable.js.map +1 -0
- package/src/shared/opencode-session-headers.d.ts +13 -0
- package/src/shared/opencode-session-headers.d.ts.map +1 -0
- package/src/shared/opencode-session-headers.js +27 -0
- package/src/shared/opencode-session-headers.js.map +1 -0
- package/src/shared/prompt-resources.d.ts +6 -0
- package/src/shared/prompt-resources.d.ts.map +1 -0
- package/src/shared/prompt-resources.js +11 -0
- package/src/shared/prompt-resources.js.map +1 -0
- package/src/shared/pruned-fork.d.ts +35 -0
- package/src/shared/pruned-fork.d.ts.map +1 -0
- package/src/shared/pruned-fork.js +424 -0
- package/src/shared/pruned-fork.js.map +1 -0
- package/src/shared/required-child-extensions.d.ts +20 -0
- package/src/shared/required-child-extensions.d.ts.map +1 -0
- package/src/shared/required-child-extensions.js +74 -0
- package/src/shared/required-child-extensions.js.map +1 -0
- package/src/shared/session-file-trust.d.ts +2 -0
- package/src/shared/session-file-trust.d.ts.map +1 -0
- package/src/shared/session-file-trust.js +21 -0
- package/src/shared/session-file-trust.js.map +1 -0
- package/src/shared/session-identity.d.ts +7 -0
- package/src/shared/session-identity.d.ts.map +1 -0
- package/src/shared/session-identity.js +7 -0
- package/src/shared/session-identity.js.map +1 -0
- package/src/shared/session-tokens.d.ts +3 -0
- package/src/shared/session-tokens.d.ts.map +1 -0
- package/src/shared/session-tokens.js +59 -0
- package/src/shared/session-tokens.js.map +1 -0
- package/src/shared/settings.d.ts +147 -0
- package/src/shared/settings.d.ts.map +1 -0
- package/src/shared/settings.js +248 -0
- package/src/shared/settings.js.map +1 -0
- package/src/shared/shortcuts.d.ts +2 -0
- package/src/shared/shortcuts.d.ts.map +1 -0
- package/src/shared/shortcuts.js +18 -0
- package/src/shared/shortcuts.js.map +1 -0
- package/src/shared/status-format.d.ts +10 -0
- package/src/shared/status-format.d.ts.map +1 -0
- package/src/shared/status-format.js +61 -0
- package/src/shared/status-format.js.map +1 -0
- package/src/shared/thinking-ceiling.d.ts +14 -0
- package/src/shared/thinking-ceiling.d.ts.map +1 -0
- package/src/shared/thinking-ceiling.js +38 -0
- package/src/shared/thinking-ceiling.js.map +1 -0
- package/src/shared/types.d.ts +2667 -0
- package/src/shared/types.d.ts.map +1 -0
- package/src/shared/types.js +265 -0
- package/src/shared/types.js.map +1 -0
- package/src/shared/utf8.d.ts +6 -0
- package/src/shared/utf8.d.ts.map +1 -0
- package/src/shared/utf8.js +13 -0
- package/src/shared/utf8.js.map +1 -0
- package/src/shared/utils.d.ts +71 -0
- package/src/shared/utils.d.ts.map +1 -0
- package/src/shared/utils.js +593 -0
- package/src/shared/utils.js.map +1 -0
- package/src/shared/watch-strategy.d.ts +3 -0
- package/src/shared/watch-strategy.d.ts.map +1 -0
- package/src/shared/watch-strategy.js +6 -0
- package/src/shared/watch-strategy.js.map +1 -0
- package/src/shared/workflow-child-permit.d.ts +59 -0
- package/src/shared/workflow-child-permit.d.ts.map +1 -0
- package/src/shared/workflow-child-permit.js +160 -0
- package/src/shared/workflow-child-permit.js.map +1 -0
- package/src/slash/delegation-adapters.d.ts +147 -0
- package/src/slash/delegation-adapters.d.ts.map +1 -0
- package/src/slash/delegation-adapters.js +293 -0
- package/src/slash/delegation-adapters.js.map +1 -0
- package/src/slash/delegation-json.d.ts +11 -0
- package/src/slash/delegation-json.d.ts.map +1 -0
- package/src/slash/delegation-json.js +118 -0
- package/src/slash/delegation-json.js.map +1 -0
- package/src/slash/delegation-request.d.ts +13 -0
- package/src/slash/delegation-request.d.ts.map +1 -0
- package/src/slash/delegation-request.js +175 -0
- package/src/slash/delegation-request.js.map +1 -0
- package/src/slash/prompt-template-bridge.d.ts +27 -0
- package/src/slash/prompt-template-bridge.d.ts.map +1 -0
- package/src/slash/prompt-template-bridge.js +380 -0
- package/src/slash/prompt-template-bridge.js.map +1 -0
- package/src/slash/prompt-workflows.d.ts +22 -0
- package/src/slash/prompt-workflows.d.ts.map +1 -0
- package/src/slash/prompt-workflows.js +261 -0
- package/src/slash/prompt-workflows.js.map +1 -0
- package/src/slash/selector.d.ts +48 -0
- package/src/slash/selector.d.ts.map +1 -0
- package/src/slash/selector.js +118 -0
- package/src/slash/selector.js.map +1 -0
- package/src/slash/slash-bridge.d.ts +31 -0
- package/src/slash/slash-bridge.d.ts.map +1 -0
- package/src/slash/slash-bridge.js +133 -0
- package/src/slash/slash-bridge.js.map +1 -0
- package/src/slash/slash-commands.d.ts +9 -0
- package/src/slash/slash-commands.d.ts.map +1 -0
- package/src/slash/slash-commands.js +1295 -0
- package/src/slash/slash-commands.js.map +1 -0
- package/src/slash/slash-live-state.d.ts +22 -0
- package/src/slash/slash-live-state.d.ts.map +1 -0
- package/src/slash/slash-live-state.js +264 -0
- package/src/slash/slash-live-state.js.map +1 -0
- package/src/slash/subagents-admin.d.ts +3 -0
- package/src/slash/subagents-admin.d.ts.map +1 -0
- package/src/slash/subagents-admin.js +454 -0
- package/src/slash/subagents-admin.js.map +1 -0
- package/src/tui/fleet-status.d.ts +86 -0
- package/src/tui/fleet-status.d.ts.map +1 -0
- package/src/tui/fleet-status.js +1083 -0
- package/src/tui/fleet-status.js.map +1 -0
- package/src/tui/fleet-transcript.d.ts +50 -0
- package/src/tui/fleet-transcript.d.ts.map +1 -0
- package/src/tui/fleet-transcript.js +497 -0
- package/src/tui/fleet-transcript.js.map +1 -0
- package/src/tui/fleet.d.ts +169 -0
- package/src/tui/fleet.d.ts.map +1 -0
- package/src/tui/fleet.js +1412 -0
- package/src/tui/fleet.js.map +1 -0
- package/src/tui/render-helpers.d.ts +24 -0
- package/src/tui/render-helpers.d.ts.map +1 -0
- package/src/tui/render-helpers.js +101 -0
- package/src/tui/render-helpers.js.map +1 -0
- package/src/tui/render.d.ts +61 -0
- package/src/tui/render.d.ts.map +1 -0
- package/src/tui/render.js +3607 -0
- package/src/tui/render.js.map +1 -0
- package/src/watchdog/change-signature.d.ts +8 -0
- package/src/watchdog/change-signature.d.ts.map +1 -0
- package/src/watchdog/change-signature.js +246 -0
- package/src/watchdog/change-signature.js.map +1 -0
- package/src/watchdog/child-status.d.ts +54 -0
- package/src/watchdog/child-status.d.ts.map +1 -0
- package/src/watchdog/child-status.js +188 -0
- package/src/watchdog/child-status.js.map +1 -0
- package/src/watchdog/diff-tool.d.ts +23 -0
- package/src/watchdog/diff-tool.d.ts.map +1 -0
- package/src/watchdog/diff-tool.js +84 -0
- package/src/watchdog/diff-tool.js.map +1 -0
- package/src/watchdog/emission-guard.d.ts +37 -0
- package/src/watchdog/emission-guard.d.ts.map +1 -0
- package/src/watchdog/emission-guard.js +98 -0
- package/src/watchdog/emission-guard.js.map +1 -0
- package/src/watchdog/guidance.d.ts +4 -0
- package/src/watchdog/guidance.d.ts.map +1 -0
- package/src/watchdog/guidance.js +20 -0
- package/src/watchdog/guidance.js.map +1 -0
- package/src/watchdog/lsp-diagnostics.d.ts +18 -0
- package/src/watchdog/lsp-diagnostics.d.ts.map +1 -0
- package/src/watchdog/lsp-diagnostics.js +490 -0
- package/src/watchdog/lsp-diagnostics.js.map +1 -0
- package/src/watchdog/model-selection.d.ts +25 -0
- package/src/watchdog/model-selection.d.ts.map +1 -0
- package/src/watchdog/model-selection.js +168 -0
- package/src/watchdog/model-selection.js.map +1 -0
- package/src/watchdog/permission-arbiter.d.ts +21 -0
- package/src/watchdog/permission-arbiter.d.ts.map +1 -0
- package/src/watchdog/permission-arbiter.js +136 -0
- package/src/watchdog/permission-arbiter.js.map +1 -0
- package/src/watchdog/register-child.d.ts +12 -0
- package/src/watchdog/register-child.d.ts.map +1 -0
- package/src/watchdog/register-child.js +120 -0
- package/src/watchdog/register-child.js.map +1 -0
- package/src/watchdog/register-main.d.ts +10 -0
- package/src/watchdog/register-main.d.ts.map +1 -0
- package/src/watchdog/register-main.js +419 -0
- package/src/watchdog/register-main.js.map +1 -0
- package/src/watchdog/render.d.ts +12 -0
- package/src/watchdog/render.d.ts.map +1 -0
- package/src/watchdog/render.js +52 -0
- package/src/watchdog/render.js.map +1 -0
- package/src/watchdog/review.d.ts +36 -0
- package/src/watchdog/review.d.ts.map +1 -0
- package/src/watchdog/review.js +318 -0
- package/src/watchdog/review.js.map +1 -0
- package/src/watchdog/rules.d.ts +22 -0
- package/src/watchdog/rules.d.ts.map +1 -0
- package/src/watchdog/rules.js +59 -0
- package/src/watchdog/rules.js.map +1 -0
- package/src/watchdog/runtime.d.ts +196 -0
- package/src/watchdog/runtime.d.ts.map +1 -0
- package/src/watchdog/runtime.js +862 -0
- package/src/watchdog/runtime.js.map +1 -0
- package/src/watchdog/scope.d.ts +15 -0
- package/src/watchdog/scope.d.ts.map +1 -0
- package/src/watchdog/scope.js +45 -0
- package/src/watchdog/scope.js.map +1 -0
- package/src/watchdog/settings.d.ts +30 -0
- package/src/watchdog/settings.d.ts.map +1 -0
- package/src/watchdog/settings.js +476 -0
- package/src/watchdog/settings.js.map +1 -0
- package/src/watchdog/tool-actions.d.ts +18 -0
- package/src/watchdog/tool-actions.d.ts.map +1 -0
- package/src/watchdog/tool-actions.js +151 -0
- package/src/watchdog/tool-actions.js.map +1 -0
- package/src/watchdog/turn-delta.d.ts +12 -0
- package/src/watchdog/turn-delta.d.ts.map +1 -0
- package/src/watchdog/turn-delta.js +185 -0
- package/src/watchdog/turn-delta.js.map +1 -0
- package/src/watchdog/types.d.ts +142 -0
- package/src/watchdog/types.d.ts.map +1 -0
- package/src/watchdog/types.js +28 -0
- package/src/watchdog/types.js.map +1 -0
- package/src/watchdog/warning-format.d.ts +8 -0
- package/src/watchdog/warning-format.d.ts.map +1 -0
- package/src/watchdog/warning-format.js +60 -0
- package/src/watchdog/warning-format.js.map +1 -0
- package/src/workflows/chat-progress.d.ts +38 -0
- package/src/workflows/chat-progress.d.ts.map +1 -0
- package/src/workflows/chat-progress.js +130 -0
- package/src/workflows/chat-progress.js.map +1 -0
- package/src/workflows/host-command.d.ts +31 -0
- package/src/workflows/host-command.d.ts.map +1 -0
- package/src/workflows/host-command.js +228 -0
- package/src/workflows/host-command.js.map +1 -0
- package/src/workflows/scripted-workflow.d.ts +195 -0
- package/src/workflows/scripted-workflow.d.ts.map +1 -0
- package/src/workflows/scripted-workflow.js +2636 -0
- package/src/workflows/scripted-workflow.js.map +1 -0
- package/src/workflows/workflow-checklist.d.ts +124 -0
- package/src/workflows/workflow-checklist.d.ts.map +1 -0
- package/src/workflows/workflow-checklist.js +312 -0
- package/src/workflows/workflow-checklist.js.map +1 -0
- package/src/workflows/workflow-child-summary.d.ts +20 -0
- package/src/workflows/workflow-child-summary.d.ts.map +1 -0
- package/src/workflows/workflow-child-summary.js +179 -0
- package/src/workflows/workflow-child-summary.js.map +1 -0
- package/src/workflows/workflow-preflight.d.ts +59 -0
- package/src/workflows/workflow-preflight.d.ts.map +1 -0
- package/src/workflows/workflow-preflight.js +289 -0
- package/src/workflows/workflow-preflight.js.map +1 -0
- package/src/workflows/workflow-receipt.d.ts +35 -0
- package/src/workflows/workflow-receipt.d.ts.map +1 -0
- package/src/workflows/workflow-receipt.js +449 -0
- package/src/workflows/workflow-receipt.js.map +1 -0
- package/src/workflows/workflow-resources.d.ts +43 -0
- package/src/workflows/workflow-resources.d.ts.map +1 -0
- package/src/workflows/workflow-resources.js +230 -0
- package/src/workflows/workflow-resources.js.map +1 -0
- package/src/workflows/workflow-settlement.d.ts +85 -0
- package/src/workflows/workflow-settlement.d.ts.map +1 -0
- package/src/workflows/workflow-settlement.js +204 -0
- package/src/workflows/workflow-settlement.js.map +1 -0
- package/index.ts +0 -13
- package/src/agents/advertised-agent-prompt.ts +0 -94
- package/src/agents/agent-management.ts +0 -1417
- package/src/agents/agent-memory.ts +0 -254
- package/src/agents/agent-refinements.ts +0 -624
- package/src/agents/agent-scope.ts +0 -6
- package/src/agents/agent-selection.ts +0 -25
- package/src/agents/agent-serializer.ts +0 -182
- package/src/agents/agents.ts +0 -2917
- package/src/agents/builtin-names.ts +0 -16
- package/src/agents/chain-serializer.ts +0 -285
- package/src/agents/frontmatter.ts +0 -153
- package/src/agents/identity.ts +0 -30
- package/src/agents/proactive-skills.ts +0 -194
- package/src/agents/runtime-agent-events.ts +0 -70
- package/src/agents/runtime-agent-registry.ts +0 -430
- package/src/agents/skills.ts +0 -754
- package/src/api/agents.ts +0 -12
- package/src/api/background-work.ts +0 -206
- package/src/api/capability-ceiling.ts +0 -16
- package/src/api/child-tool-plan.ts +0 -5
- package/src/api/control-channel.ts +0 -4
- package/src/api/delegation.ts +0 -116
- package/src/api/external-job-provider.ts +0 -195
- package/src/api/external-runs.ts +0 -282
- package/src/api/intercom-bridge.ts +0 -3
- package/src/api/preflight.ts +0 -539
- package/src/api/project-panes.ts +0 -32
- package/src/api/required-child-extensions.ts +0 -6
- package/src/api/shared-types.ts +0 -29
- package/src/api/workflow-resources.ts +0 -6
- package/src/extension/config.ts +0 -230
- package/src/extension/control-notices.ts +0 -58
- package/src/extension/doctor.ts +0 -270
- package/src/extension/fanout-child.ts +0 -265
- package/src/extension/herdr-pi-bridge.ts +0 -160
- package/src/extension/index.ts +0 -1205
- package/src/extension/public-execution.ts +0 -225
- package/src/extension/rpc.ts +0 -848
- package/src/extension/schemas.ts +0 -428
- package/src/extension/steering-notices.ts +0 -35
- package/src/extension/subagent-guide.ts +0 -39
- package/src/extension/tool-description.ts +0 -175
- package/src/extension/tool-result.ts +0 -19
- package/src/inspectors/actions.ts +0 -148
- package/src/inspectors/ghostty/actions.ts +0 -74
- package/src/inspectors/ghostty/plugin.ts +0 -29
- package/src/inspectors/herdr/actions.ts +0 -155
- package/src/inspectors/herdr/client.ts +0 -130
- package/src/inspectors/herdr/focus.ts +0 -55
- package/src/inspectors/herdr/plugin.ts +0 -20
- package/src/inspectors/herdr/project-panes.ts +0 -730
- package/src/inspectors/inspector-runner.ts +0 -153
- package/src/inspectors/plugins.ts +0 -8
- package/src/inspectors/session-roots-codec.ts +0 -31
- package/src/inspectors/shell-command.ts +0 -16
- package/src/inspectors/types.ts +0 -51
- package/src/integrations/herdr-status.ts +0 -400
- package/src/integrations/pi-web-session-liveness.ts +0 -73
- package/src/intercom/intercom-bridge.ts +0 -233
- package/src/intercom/native-supervisor-channel.ts +0 -917
- package/src/intercom/result-intercom.ts +0 -423
- package/src/intercom/supervisor-ui.ts +0 -244
- package/src/missions/actions.ts +0 -433
- package/src/missions/goal-driver.ts +0 -164
- package/src/missions/lifecycle.ts +0 -367
- package/src/missions/store.ts +0 -584
- package/src/missions/types.ts +0 -190
- package/src/missions/workflow-state.ts +0 -281
- package/src/policy/authority.ts +0 -50
- package/src/profiles/profiles.ts +0 -668
- package/src/runs/background/active-async-capacity.ts +0 -520
- package/src/runs/background/active-run-index.ts +0 -155
- package/src/runs/background/async-execution.ts +0 -2278
- package/src/runs/background/async-job-tracker.ts +0 -826
- package/src/runs/background/async-resume.ts +0 -647
- package/src/runs/background/async-retention.ts +0 -912
- package/src/runs/background/async-status-snapshot.ts +0 -46
- package/src/runs/background/async-status.ts +0 -771
- package/src/runs/background/auto-drain.ts +0 -92
- package/src/runs/background/binary-bootstrap.ts +0 -38
- package/src/runs/background/chain-append.ts +0 -321
- package/src/runs/background/chain-root-attachment.ts +0 -259
- package/src/runs/background/completion-batcher.ts +0 -168
- package/src/runs/background/completion-dedupe.ts +0 -58
- package/src/runs/background/completion-replay.ts +0 -287
- package/src/runs/background/control-channel.ts +0 -600
- package/src/runs/background/fleet-view.ts +0 -648
- package/src/runs/background/index-segment.ts +0 -59
- package/src/runs/background/inspect-rpc.ts +0 -443
- package/src/runs/background/notify.ts +0 -819
- package/src/runs/background/owned-process-tree.ts +0 -131
- package/src/runs/background/parallel-groups.ts +0 -45
- package/src/runs/background/process-terminal.ts +0 -310
- package/src/runs/background/result-delivery-ownership.ts +0 -45
- package/src/runs/background/result-files.ts +0 -523
- package/src/runs/background/result-watcher.ts +0 -809
- package/src/runs/background/resume-guidance.ts +0 -56
- package/src/runs/background/retained-children.ts +0 -135
- package/src/runs/background/retained-nested-route-tracker.ts +0 -96
- package/src/runs/background/run-child-session.ts +0 -690
- package/src/runs/background/run-id-query.ts +0 -7
- package/src/runs/background/run-id-resolver.ts +0 -175
- package/src/runs/background/run-status.ts +0 -786
- package/src/runs/background/runner-aliases.ts +0 -142
- package/src/runs/background/runner-child-launch.ts +0 -91
- package/src/runs/background/runner-child-sessions.ts +0 -32
- package/src/runs/background/runner-http-dispatcher.ts +0 -119
- package/src/runs/background/scheduled-runs.ts +0 -1012
- package/src/runs/background/stale-run-reconciler.ts +0 -436
- package/src/runs/background/steering.ts +0 -260
- package/src/runs/background/subagent-runner.ts +0 -5357
- package/src/runs/background/subagent-wait.ts +0 -876
- package/src/runs/background/terminal-run-index.ts +0 -138
- package/src/runs/background/top-level-async.ts +0 -14
- package/src/runs/background/wait-completions.ts +0 -261
- package/src/runs/background/wait-config.ts +0 -50
- package/src/runs/background/wait-subscriptions.ts +0 -354
- package/src/runs/background/wait-tool.ts +0 -45
- package/src/runs/foreground/async-dismiss-action.ts +0 -86
- package/src/runs/foreground/async-steering-action.ts +0 -276
- package/src/runs/foreground/async-stop-action.ts +0 -176
- package/src/runs/foreground/execution.ts +0 -2254
- package/src/runs/foreground/foreground-control.ts +0 -157
- package/src/runs/foreground/foreground-history.ts +0 -163
- package/src/runs/foreground/prompt-audit.ts +0 -178
- package/src/runs/foreground/subagent-executor.ts +0 -7526
- package/src/runs/foreground/workflow-detach-reconcile.ts +0 -304
- package/src/runs/foreground/workflow-foreground-steering.ts +0 -169
- package/src/runs/shared/abort-recovery.ts +0 -119
- package/src/runs/shared/acceptance.ts +0 -1698
- package/src/runs/shared/agent-contract.ts +0 -38
- package/src/runs/shared/async-status-projection.ts +0 -659
- package/src/runs/shared/background-process-options.ts +0 -9
- package/src/runs/shared/capability-ceiling.ts +0 -211
- package/src/runs/shared/chain-outputs.ts +0 -116
- package/src/runs/shared/child-hooks.ts +0 -189
- package/src/runs/shared/child-identity.ts +0 -62
- package/src/runs/shared/child-launch-plan.ts +0 -163
- package/src/runs/shared/child-launch.ts +0 -342
- package/src/runs/shared/child-lifecycle.ts +0 -28
- package/src/runs/shared/child-runtime-config.ts +0 -133
- package/src/runs/shared/child-session.ts +0 -448
- package/src/runs/shared/child-tool-plan.ts +0 -661
- package/src/runs/shared/claude-code-adapter.ts +0 -133
- package/src/runs/shared/codex-exec-adapter.ts +0 -129
- package/src/runs/shared/completion-evidence.ts +0 -89
- package/src/runs/shared/completion-guard.ts +0 -255
- package/src/runs/shared/context-mode.ts +0 -44
- package/src/runs/shared/cursor-agent-adapter.ts +0 -114
- package/src/runs/shared/dynamic-fanout.ts +0 -297
- package/src/runs/shared/effective-system-prompt.ts +0 -33
- package/src/runs/shared/extension-bindings.ts +0 -78
- package/src/runs/shared/external-cli-contract.ts +0 -177
- package/src/runs/shared/external-cli-preflight.ts +0 -142
- package/src/runs/shared/external-cli-runner.ts +0 -431
- package/src/runs/shared/external-job-bridge.ts +0 -460
- package/src/runs/shared/external-job-runner.ts +0 -389
- package/src/runs/shared/fast-mode-extension.ts +0 -10
- package/src/runs/shared/herdr-connection.ts +0 -134
- package/src/runs/shared/herdr-external-adapters.ts +0 -169
- package/src/runs/shared/herdr-machine.ts +0 -279
- package/src/runs/shared/herdr-pi-protocol.ts +0 -59
- package/src/runs/shared/herdr-placed-run.ts +0 -263
- package/src/runs/shared/host-step-status.ts +0 -231
- package/src/runs/shared/lane-metadata.ts +0 -126
- package/src/runs/shared/launch-cwd.ts +0 -16
- package/src/runs/shared/llm-intent-arbiter.ts +0 -321
- package/src/runs/shared/long-running-guard.ts +0 -221
- package/src/runs/shared/mcp-config-sources.ts +0 -422
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -484
- package/src/runs/shared/mcp-direct-tool-grant.ts +0 -194
- package/src/runs/shared/model-resolution-diagnostic.ts +0 -76
- package/src/runs/shared/model-resolution.ts +0 -441
- package/src/runs/shared/model-scope.ts +0 -205
- package/src/runs/shared/mutation-evidence.ts +0 -199
- package/src/runs/shared/nested-events.ts +0 -1079
- package/src/runs/shared/nested-path.ts +0 -38
- package/src/runs/shared/nested-render.ts +0 -127
- package/src/runs/shared/orca-progress-tabs.ts +0 -510
- package/src/runs/shared/parallel-handoff.ts +0 -741
- package/src/runs/shared/parallel-utils.ts +0 -279
- package/src/runs/shared/permissions.ts +0 -86
- package/src/runs/shared/pi-spawn.ts +0 -207
- package/src/runs/shared/process-signal.ts +0 -35
- package/src/runs/shared/readonly-drain-observation.ts +0 -42
- package/src/runs/shared/run-fanout-budget.ts +0 -267
- package/src/runs/shared/run-history.ts +0 -201
- package/src/runs/shared/runtime-acknowledged-extensions.ts +0 -44
- package/src/runs/shared/session-lease.ts +0 -293
- package/src/runs/shared/single-output.ts +0 -304
- package/src/runs/shared/spawn-budget.ts +0 -128
- package/src/runs/shared/structured-output.ts +0 -236
- package/src/runs/shared/subagent-control.ts +0 -294
- package/src/runs/shared/subagent-prompt-runtime.ts +0 -545
- package/src/runs/shared/task-intent.ts +0 -244
- package/src/runs/shared/tool-availability.ts +0 -37
- package/src/runs/shared/tool-budget.ts +0 -66
- package/src/runs/shared/tool-timeout.ts +0 -93
- package/src/runs/shared/usage-budget.ts +0 -65
- package/src/runs/shared/workflow-async-child-guidance.ts +0 -18
- package/src/runs/shared/workflow-graph.ts +0 -225
- package/src/runs/shared/worktree-cleanup-plan.ts +0 -869
- package/src/runs/shared/worktree-setup-command.ts +0 -213
- package/src/runs/shared/worktree.ts +0 -1538
- package/src/shared/accessible-dir.ts +0 -47
- package/src/shared/agent-stream-options.ts +0 -5
- package/src/shared/artifacts.ts +0 -281
- package/src/shared/atomic-json.ts +0 -83
- package/src/shared/capacity-resilient-json.ts +0 -102
- package/src/shared/child-cache-retention.ts +0 -43
- package/src/shared/child-session-name.ts +0 -46
- package/src/shared/child-transcript.ts +0 -264
- package/src/shared/completion-owner.ts +0 -14
- package/src/shared/display-text.ts +0 -150
- package/src/shared/extension-context.ts +0 -24
- package/src/shared/file-coalescer.ts +0 -49
- package/src/shared/file-system-retry.ts +0 -95
- package/src/shared/fork-context.ts +0 -236
- package/src/shared/fork-session-cwd.ts +0 -27
- package/src/shared/formatters.ts +0 -146
- package/src/shared/jsonl-writer.ts +0 -92
- package/src/shared/launch-contract.ts +0 -198
- package/src/shared/model-info.ts +0 -101
- package/src/shared/model-response-aliases.ts +0 -13
- package/src/shared/node-executable.ts +0 -21
- package/src/shared/opencode-session-headers.ts +0 -30
- package/src/shared/prompt-resources.ts +0 -11
- package/src/shared/pruned-fork.ts +0 -450
- package/src/shared/required-child-extensions.ts +0 -81
- package/src/shared/session-file-trust.ts +0 -19
- package/src/shared/session-identity.ts +0 -10
- package/src/shared/session-tokens.ts +0 -55
- package/src/shared/settings.ts +0 -412
- package/src/shared/shortcuts.ts +0 -13
- package/src/shared/status-format.ts +0 -55
- package/src/shared/thinking-ceiling.ts +0 -46
- package/src/shared/types.ts +0 -2983
- package/src/shared/utf8.ts +0 -11
- package/src/shared/utils.ts +0 -608
- package/src/shared/watch-strategy.ts +0 -12
- package/src/shared/workflow-child-permit.ts +0 -212
- package/src/slash/delegation-adapters.ts +0 -428
- package/src/slash/delegation-json.ts +0 -108
- package/src/slash/delegation-request.ts +0 -176
- package/src/slash/prompt-template-bridge.ts +0 -419
- package/src/slash/prompt-workflows.ts +0 -287
- package/src/slash/selector.ts +0 -147
- package/src/slash/slash-bridge.ts +0 -192
- package/src/slash/slash-commands.ts +0 -1325
- package/src/slash/slash-live-state.ts +0 -310
- package/src/slash/subagents-admin.ts +0 -460
- package/src/tui/fleet-status.ts +0 -1109
- package/src/tui/fleet-transcript.ts +0 -536
- package/src/tui/fleet.ts +0 -1448
- package/src/tui/render-helpers.ts +0 -111
- package/src/tui/render.ts +0 -3721
- package/src/types/pi-runtime-compat.d.ts +0 -8
- package/src/watchdog/change-signature.ts +0 -260
- package/src/watchdog/child-status.ts +0 -225
- package/src/watchdog/diff-tool.ts +0 -77
- package/src/watchdog/emission-guard.ts +0 -125
- package/src/watchdog/guidance.ts +0 -20
- package/src/watchdog/lsp-diagnostics.ts +0 -538
- package/src/watchdog/model-selection.ts +0 -187
- package/src/watchdog/permission-arbiter.ts +0 -156
- package/src/watchdog/register-child.ts +0 -128
- package/src/watchdog/register-main.ts +0 -445
- package/src/watchdog/render.ts +0 -53
- package/src/watchdog/review.ts +0 -363
- package/src/watchdog/rules.ts +0 -70
- package/src/watchdog/runtime.ts +0 -924
- package/src/watchdog/scope.ts +0 -51
- package/src/watchdog/settings.ts +0 -515
- package/src/watchdog/tool-actions.ts +0 -156
- package/src/watchdog/turn-delta.ts +0 -184
- package/src/watchdog/types.ts +0 -186
- package/src/watchdog/warning-format.ts +0 -72
- package/src/workflows/chat-progress.ts +0 -152
- package/src/workflows/host-command.ts +0 -235
- package/src/workflows/scripted-workflow.ts +0 -2575
- package/src/workflows/workflow-checklist.ts +0 -436
- package/src/workflows/workflow-child-summary.ts +0 -170
- package/src/workflows/workflow-preflight.ts +0 -297
- package/src/workflows/workflow-receipt.ts +0 -384
- package/src/workflows/workflow-resources.ts +0 -236
- package/src/workflows/workflow-settlement.ts +0 -249
|
@@ -1,876 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `bg_wait` tool: block the current turn until outstanding async runs
|
|
3
|
-
* or a named remembered detached foreground run finishes.
|
|
4
|
-
*
|
|
5
|
-
* Background subagent runs are detached. In an interactive session the parent
|
|
6
|
-
* can end its turn and Pi will wake it with a completion notification. That
|
|
7
|
-
* does not work when the parent is a skill that must run to completion, and it
|
|
8
|
-
* cannot work at all non-interactively (`pi -p ...`), where the run is a single
|
|
9
|
-
* turn: once the turn ends there is nothing left to receive the notification.
|
|
10
|
-
*
|
|
11
|
-
* `bg_wait` closes that gap. It keeps the turn alive until a tracked async
|
|
12
|
-
* run for this session reaches a terminal state (complete / failed / paused),
|
|
13
|
-
* the caller-supplied timeout elapses, or the turn is aborted. Because it awaits
|
|
14
|
-
* inside the turn, the completion the model was told to wait for is actually
|
|
15
|
-
* observed before the tool returns.
|
|
16
|
-
*
|
|
17
|
-
* By default `bg_wait` returns as soon as ONE run finishes, so a fleet
|
|
18
|
-
* manager can use it in a rolling-replacement loop: launch N workers, wait for
|
|
19
|
-
* the next one to finish, spawn its replacement, then call `bg_wait`
|
|
20
|
-
* again — keeping N in flight instead of draining to zero between batches.
|
|
21
|
-
* Pass `all: true` to block until every tracked async run is terminal, or `id`
|
|
22
|
-
* to block on one specific async or remembered detached foreground run.
|
|
23
|
-
*
|
|
24
|
-
* `bg_wait` also returns when a run needs attention — not just on
|
|
25
|
-
* completion. A child that goes idle or blocks for a decision surfaces
|
|
26
|
-
* `needs_attention` (the same signal Pi shows as a control notice and,
|
|
27
|
-
* interactively, wakes the parent with). Since `bg_wait` is used exactly
|
|
28
|
-
* where there is no next turn to receive that notice, it must break on it too,
|
|
29
|
-
* or a stuck child would stall the loop until the timeout. Attention runs are
|
|
30
|
-
* reported so the caller can inspect / nudge / resume / interrupt them.
|
|
31
|
-
*
|
|
32
|
-
* Wake mechanism: when given Pi's event bus (`deps.events`), `bg_wait`
|
|
33
|
-
* subscribes to the subagent completion/control channels and wakes the instant
|
|
34
|
-
* any fires, rather than waiting out a fixed poll interval. A poll still runs
|
|
35
|
-
* on the interval as a reconciliation fallback (crashed runners, missed
|
|
36
|
-
* events), and the poll is the source of truth for what actually changed — the
|
|
37
|
-
* event only ends the sleep early. With no bus, `bg_wait` degrades to pure
|
|
38
|
-
* polling.
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
import * as fs from "node:fs";
|
|
42
|
-
import * as path from "node:path";
|
|
43
|
-
import type { AgentToolResult } from "@earendil-works/pi-agent-core";
|
|
44
|
-
import {
|
|
45
|
-
listBackgroundWorkWakeChannels,
|
|
46
|
-
snapshotBackgroundWork,
|
|
47
|
-
type BackgroundWorkSnapshot,
|
|
48
|
-
type RegisteredBackgroundWorkItem,
|
|
49
|
-
} from "../../api/background-work.ts";
|
|
50
|
-
import { formatAsyncRunList, listAsyncRuns, type AsyncRunSummary } from "./async-status.ts";
|
|
51
|
-
import {
|
|
52
|
-
DIRS,
|
|
53
|
-
INTERCOM_DETACH_REQUEST_EVENT,
|
|
54
|
-
SUBAGENT_ASYNC_COMPLETE_EVENT,
|
|
55
|
-
SUBAGENT_FOREGROUND_COMPLETE_EVENT,
|
|
56
|
-
SUBAGENT_CONTROL_EVENT,
|
|
57
|
-
SUBAGENT_CONTROL_INTERCOM_EVENT,
|
|
58
|
-
SUBAGENT_RESULT_INTERCOM_EVENT,
|
|
59
|
-
type Details,
|
|
60
|
-
type ForegroundResumeRun,
|
|
61
|
-
type SubagentState,
|
|
62
|
-
type Usage,
|
|
63
|
-
type WaitCompletion,
|
|
64
|
-
} from "../../shared/types.ts";
|
|
65
|
-
import { nestedRunScope } from "../shared/nested-events.ts";
|
|
66
|
-
import { formatDuration, shortenPath } from "../../shared/formatters.ts";
|
|
67
|
-
import { toAgentToolUsage } from "../../shared/utils.ts";
|
|
68
|
-
import { collectWaitCompletions } from "./wait-completions.ts";
|
|
69
|
-
import { formatResumeFirstFailedRunsNote } from "./resume-guidance.ts";
|
|
70
|
-
import { formatTimeoutRecoveryLines } from "../shared/mutation-evidence.ts";
|
|
71
|
-
export { WAIT_TOOL_DEFAULT_TIMEOUT_MS_ENV, WAIT_TOOL_ENABLED_ENV, resolveWaitToolConfig, type ResolvedWaitToolConfig } from "./wait-config.ts";
|
|
72
|
-
|
|
73
|
-
/** States that mean a run is still in flight (not yet resolved). */
|
|
74
|
-
const ACTIVE_STATES: ReadonlyArray<AsyncRunSummary["state"]> = ["queued", "running"];
|
|
75
|
-
|
|
76
|
-
const DEFAULT_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
|
|
77
|
-
const MIN_POLL_INTERVAL_MS = 250;
|
|
78
|
-
const DEFAULT_POLL_INTERVAL_MS = 1000;
|
|
79
|
-
|
|
80
|
-
export interface SubagentWaitParams {
|
|
81
|
-
/** Optional run id/prefix to wait for. When omitted, waits across every active run in this session. */
|
|
82
|
-
id?: string;
|
|
83
|
-
/** Arm a durable exact-run wake subscription and return immediately. Requires id. */
|
|
84
|
-
nonBlocking?: boolean;
|
|
85
|
-
/**
|
|
86
|
-
* When true, block until EVERY active run in this session (or matching `id`)
|
|
87
|
-
* is terminal. Default false: return when the first tracked run or provider
|
|
88
|
-
* item finishes or needs attention. Ignored when `id` targets a single run.
|
|
89
|
-
*/
|
|
90
|
-
all?: boolean;
|
|
91
|
-
/** Give up after this many milliseconds. Defaults to waitTool.defaultTimeoutMs, then 30 minutes. */
|
|
92
|
-
timeoutMs?: number;
|
|
93
|
-
/** False keeps a blocking wait open through idle attention; supervisor/contact requests still stop the wait. */
|
|
94
|
-
stopOnAttention?: boolean;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/** Minimal event-bus surface wait subscribes to (matches pi.events). */
|
|
98
|
-
export interface WaitEventBus {
|
|
99
|
-
on(channel: string, handler: (data: unknown) => void): () => void;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export interface SubagentWaitDeps {
|
|
103
|
-
state: SubagentState;
|
|
104
|
-
/** Stream live wait status into Pi's pending tool row. */
|
|
105
|
-
onUpdate?: (result: AgentToolResult<Details>) => void;
|
|
106
|
-
asyncDirRoot?: string;
|
|
107
|
-
resultsDir?: string;
|
|
108
|
-
/** Root from the child's validated inherited route, not a tool argument. */
|
|
109
|
-
nestedRootRunId?: string;
|
|
110
|
-
kill?: (pid: number, signal?: NodeJS.Signals | 0) => boolean;
|
|
111
|
-
now?: () => number;
|
|
112
|
-
pollIntervalMs?: number;
|
|
113
|
-
/** False makes the tool return immediately without blocking active async runs. */
|
|
114
|
-
enabled?: boolean;
|
|
115
|
-
/** Configured blocking window used when the call omits timeoutMs. */
|
|
116
|
-
defaultTimeoutMs?: number;
|
|
117
|
-
/** Injectable sleep for tests. */
|
|
118
|
-
sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
119
|
-
/** Internal auto-drain mode waits through needs-attention states. */
|
|
120
|
-
stopOnAttention?: boolean;
|
|
121
|
-
/** Internal auto-drain mode surfaces failed terminal subagent runs as errors. */
|
|
122
|
-
failOnFailedRuns?: boolean;
|
|
123
|
-
/** Internal auto-drain mode surfaces actionable attention as an error. */
|
|
124
|
-
failOnAttention?: boolean;
|
|
125
|
-
/** Durable owned supervisor-request barrier used by headless auto-drain. */
|
|
126
|
-
hasPendingSupervisorRequest?: () => boolean;
|
|
127
|
-
/** Arm a durable exact-target wait subscription in a long-lived interactive runtime. */
|
|
128
|
-
subscribe?: (input: { targetKind: "async" | "foreground"; runId: string; requestedId: string; timeoutMs: number }) => { token: string; expiresAt: number };
|
|
129
|
-
/** Injectable provider protocol surfaces for deterministic tests. */
|
|
130
|
-
backgroundWork?: {
|
|
131
|
-
snapshot(sessionId: string, nowMs: number): BackgroundWorkSnapshot;
|
|
132
|
-
wakeChannels(): readonly string[];
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* Optional event bus (pi.events). When provided, wait wakes immediately on a
|
|
136
|
-
* subagent completion/control event instead of waiting out the poll interval;
|
|
137
|
-
* the poll then remains as a reconciliation fallback (crashed runners, missed
|
|
138
|
-
* events). Omit in tests that want pure poll behavior.
|
|
139
|
-
*/
|
|
140
|
-
events?: WaitEventBus;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/** Bus channels that indicate a run changed state or needs attention. */
|
|
144
|
-
const WAKE_CHANNELS = [
|
|
145
|
-
INTERCOM_DETACH_REQUEST_EVENT,
|
|
146
|
-
SUBAGENT_ASYNC_COMPLETE_EVENT,
|
|
147
|
-
SUBAGENT_FOREGROUND_COMPLETE_EVENT,
|
|
148
|
-
SUBAGENT_CONTROL_EVENT,
|
|
149
|
-
SUBAGENT_CONTROL_INTERCOM_EVENT,
|
|
150
|
-
SUBAGENT_RESULT_INTERCOM_EVENT,
|
|
151
|
-
];
|
|
152
|
-
|
|
153
|
-
function defaultSleep(ms: number, signal?: AbortSignal): Promise<void> {
|
|
154
|
-
return new Promise((resolve) => {
|
|
155
|
-
if (signal?.aborted) {
|
|
156
|
-
resolve();
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
const timer = setTimeout(() => {
|
|
160
|
-
signal?.removeEventListener("abort", onAbort);
|
|
161
|
-
resolve();
|
|
162
|
-
}, ms);
|
|
163
|
-
const onAbort = () => {
|
|
164
|
-
clearTimeout(timer);
|
|
165
|
-
resolve();
|
|
166
|
-
};
|
|
167
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Sleep up to `ms`, but wake early if a subagent event fires on the bus (or the
|
|
173
|
-
* turn aborts). Returns when the first of those happens. With no bus this is a
|
|
174
|
-
* plain sleep, so the poll interval alone drives progress.
|
|
175
|
-
*/
|
|
176
|
-
function waitForWake(ms: number, signal: AbortSignal | undefined, deps: SubagentWaitDeps): Promise<void> {
|
|
177
|
-
const sleep = deps.sleep ?? defaultSleep;
|
|
178
|
-
const events = deps.events;
|
|
179
|
-
if (!events) return sleep(ms, signal);
|
|
180
|
-
const providerChannels = deps.backgroundWork?.wakeChannels() ?? listBackgroundWorkWakeChannels();
|
|
181
|
-
return new Promise((resolve, reject) => {
|
|
182
|
-
let settled = false;
|
|
183
|
-
const unsubs: Array<() => void> = [];
|
|
184
|
-
const wakeController = new AbortController();
|
|
185
|
-
const done = () => {
|
|
186
|
-
if (settled) return;
|
|
187
|
-
settled = true;
|
|
188
|
-
wakeController.abort();
|
|
189
|
-
signal?.removeEventListener("abort", done);
|
|
190
|
-
for (const u of unsubs) {
|
|
191
|
-
try { u(); } catch { /* best effort */ }
|
|
192
|
-
}
|
|
193
|
-
resolve();
|
|
194
|
-
};
|
|
195
|
-
if (signal?.aborted) {
|
|
196
|
-
done();
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
signal?.addEventListener("abort", done, { once: true });
|
|
200
|
-
try {
|
|
201
|
-
for (const channel of [...new Set([...WAKE_CHANNELS, ...providerChannels])]) {
|
|
202
|
-
unsubs.push(events.on(channel, done));
|
|
203
|
-
}
|
|
204
|
-
} catch (error) {
|
|
205
|
-
signal?.removeEventListener("abort", done);
|
|
206
|
-
for (const unsubscribe of unsubs) {
|
|
207
|
-
try { unsubscribe(); } catch { /* best effort cleanup */ }
|
|
208
|
-
}
|
|
209
|
-
reject(error);
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
// Poll-interval fallback so we still reconcile even if no event arrives.
|
|
213
|
-
// The local signal cancels that fallback timer when an event wakes us first.
|
|
214
|
-
void sleep(ms, wakeController.signal).then(done);
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
function matchesId(run: AsyncRunSummary, id: string): boolean {
|
|
219
|
-
return run.id === id || run.id.startsWith(id);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
function activeDetachedForegroundRuns(params: SubagentWaitParams, deps: SubagentWaitDeps): ForegroundResumeRun[] {
|
|
223
|
-
const sessionId = deps.state.currentSessionId;
|
|
224
|
-
if (!sessionId || !deps.state.foregroundRuns) return [];
|
|
225
|
-
const runs = [...deps.state.foregroundRuns.values()].filter((run) =>
|
|
226
|
-
run.sessionId === sessionId && run.children.some((child) => child.status === "detached")
|
|
227
|
-
);
|
|
228
|
-
if (params.id) return runs.filter((run) => run.runId === params.id || run.runId.startsWith(params.id!));
|
|
229
|
-
return params.all === true ? runs : [];
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
function summarizeForegroundChildren(run: ForegroundResumeRun, indices: Set<number>): string {
|
|
233
|
-
const counts = new Map<string, number>();
|
|
234
|
-
for (const child of run.children) {
|
|
235
|
-
if (!indices.has(child.index) || child.status === "detached") continue;
|
|
236
|
-
counts.set(child.status, (counts.get(child.status) ?? 0) + 1);
|
|
237
|
-
}
|
|
238
|
-
return [...counts.entries()].map(([status, count]) => `${count} ${status}`).join(", ");
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
function foregroundChildrenNeedingAttention(run: ForegroundResumeRun, indices: Set<number>) {
|
|
242
|
-
return run.children.filter((child) => indices.has(child.index) && child.status === "detached" && child.activityState === "needs_attention" && child.currentTool === "contact_supervisor");
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
function formatForegroundAttention(run: ForegroundResumeRun, children: ReturnType<typeof foregroundChildrenNeedingAttention>, elapsedMs: number): AgentToolResult<Details> {
|
|
246
|
-
const childList = children.map((child) => `${child.agent}${child.index !== undefined ? `#${child.index}` : ""}`).join(", ");
|
|
247
|
-
return result(
|
|
248
|
-
`Waited ${formatDuration(elapsedMs)} for remembered detached foreground run "${run.runId}"; attention required. ${children.length} child run(s) need attention: ${childList}. Reply to any pending supervisor request, then call bg_wait({ id: "${run.runId}" }) again or inspect status; do not resume or launch a replacement while it remains detached.`,
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/** A running run that has flagged it needs the parent's attention. */
|
|
253
|
-
function needsAttention(run: AsyncRunSummary): boolean {
|
|
254
|
-
return run.activityState === "needs_attention" || run.steps.some((step) => step.activityState === "needs_attention");
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
function hasSupervisorTool(run: AsyncRunSummary): boolean {
|
|
258
|
-
return run.currentTool === "contact_supervisor"
|
|
259
|
-
|| run.currentTool === "intercom"
|
|
260
|
-
|| run.steps.some((step) => step.currentTool === "contact_supervisor" || step.currentTool === "intercom");
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
function backgroundWorkIdentity(item: RegisteredBackgroundWorkItem): string {
|
|
264
|
-
return `${item.provider}\0${item.sessionId}\0${item.id}`;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
function backgroundWorkForSession(deps: SubagentWaitDeps, nowMs: number): BackgroundWorkSnapshot {
|
|
268
|
-
const sessionId = deps.state.currentSessionId;
|
|
269
|
-
if (!sessionId) throw new Error("bg_wait requires an active session identity to scope background work safely.");
|
|
270
|
-
return deps.backgroundWork?.snapshot(sessionId, nowMs) ?? snapshotBackgroundWork(sessionId, nowMs);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
export function waitRunScopes(deps: Pick<SubagentWaitDeps, "asyncDirRoot" | "resultsDir" | "nestedRootRunId">): Array<{ asyncDirRoot: string; resultsDir: string }> {
|
|
274
|
-
return [
|
|
275
|
-
{ asyncDirRoot: deps.asyncDirRoot ?? DIRS.async, resultsDir: deps.resultsDir ?? DIRS.results },
|
|
276
|
-
...(deps.nestedRootRunId ? [nestedRunScope(deps.nestedRootRunId)] : []),
|
|
277
|
-
];
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
function collectScopedCompletions(terminal: AsyncRunSummary[], deps: SubagentWaitDeps, references: string[]): WaitCompletion[] | undefined {
|
|
281
|
-
const completions = waitRunScopes(deps).flatMap((scope) => collectWaitCompletions(
|
|
282
|
-
terminal.filter((run) => path.resolve(path.dirname(run.asyncDir)) === path.resolve(scope.asyncDirRoot)),
|
|
283
|
-
deps.state, scope.resultsDir, (reference) => references.push(reference),
|
|
284
|
-
) ?? []);
|
|
285
|
-
return completions.length ? completions : undefined;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
/** Immediate-session runs only; named lookups can also recover already-terminal results. */
|
|
289
|
-
function runsForSession(params: SubagentWaitParams, deps: SubagentWaitDeps, activeOnly = true): AsyncRunSummary[] {
|
|
290
|
-
const runs = waitRunScopes(deps).flatMap(({ asyncDirRoot, resultsDir }) => listAsyncRuns(asyncDirRoot, {
|
|
291
|
-
states: activeOnly ? [...ACTIVE_STATES] : undefined,
|
|
292
|
-
sessionId: deps.state.currentSessionId ?? undefined,
|
|
293
|
-
resultsDir,
|
|
294
|
-
kill: deps.kill,
|
|
295
|
-
now: deps.now,
|
|
296
|
-
includeNested: false,
|
|
297
|
-
...(params.id ? { runId: params.id } : {}),
|
|
298
|
-
}));
|
|
299
|
-
return params.id ? runs.filter((run) => matchesId(run, params.id!)) : runs;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
function activeRunsForSession(params: SubagentWaitParams, deps: SubagentWaitDeps): AsyncRunSummary[] {
|
|
303
|
-
return runsForSession(params, deps);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/** Runs (from the initial set) currently flagged needs_attention, for reporting. */
|
|
307
|
-
function attentionRunsForSession(params: SubagentWaitParams, deps: SubagentWaitDeps, initialIds: Set<string>): AsyncRunSummary[] {
|
|
308
|
-
return activeRunsForSession(params, deps).filter((run) => needsAttention(run) && initialIds.has(run.id));
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/** Exact initial runs in any state, for the final summary. */
|
|
312
|
-
function runsForIds(runIds: Iterable<string>, deps: SubagentWaitDeps): AsyncRunSummary[] {
|
|
313
|
-
return waitRunScopes(deps).flatMap(({ asyncDirRoot, resultsDir }) => [...runIds].flatMap((runId) => listAsyncRuns(asyncDirRoot, {
|
|
314
|
-
sessionId: deps.state.currentSessionId ?? undefined,
|
|
315
|
-
resultsDir,
|
|
316
|
-
kill: deps.kill,
|
|
317
|
-
now: deps.now,
|
|
318
|
-
includeNested: false,
|
|
319
|
-
runId,
|
|
320
|
-
exactRunId: true,
|
|
321
|
-
})));
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
function summarizeTerminalRuns(runs: AsyncRunSummary[], providerFinishedCount = 0): string {
|
|
325
|
-
if (runs.length === 0 && providerFinishedCount === 0) return "";
|
|
326
|
-
const counts = { complete: 0, failed: 0, paused: 0 } as Record<string, number>;
|
|
327
|
-
for (const run of runs) {
|
|
328
|
-
const count = counts[run.state];
|
|
329
|
-
if (count !== undefined) counts[run.state] = count + 1;
|
|
330
|
-
}
|
|
331
|
-
const parts: string[] = [];
|
|
332
|
-
if (counts.complete) parts.push(`${counts.complete} complete`);
|
|
333
|
-
if (counts.failed) parts.push(`${counts.failed} failed`);
|
|
334
|
-
if (counts.paused) parts.push(`${counts.paused} paused`);
|
|
335
|
-
if (providerFinishedCount > 0) parts.push(`${providerFinishedCount} provider item(s) finished`);
|
|
336
|
-
return parts.join(", ");
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
function completionUsage(completions: WaitCompletion[] | undefined): Usage | undefined {
|
|
340
|
-
if (!completions?.length) return undefined;
|
|
341
|
-
const usage: Usage = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 0 };
|
|
342
|
-
let projected = false;
|
|
343
|
-
for (const completion of completions) {
|
|
344
|
-
for (const child of completion.results ?? []) {
|
|
345
|
-
if (!child.usage || (child.usage.input === 0 && child.usage.output === 0 && child.usage.cacheRead === 0 && child.usage.cacheWrite === 0 && child.usage.cost === 0 && child.usage.turns === 0)) continue;
|
|
346
|
-
projected = true;
|
|
347
|
-
usage.input += child.usage.input;
|
|
348
|
-
usage.output += child.usage.output;
|
|
349
|
-
usage.cacheRead += child.usage.cacheRead;
|
|
350
|
-
usage.cacheWrite += child.usage.cacheWrite;
|
|
351
|
-
usage.cost += child.usage.cost;
|
|
352
|
-
usage.turns += child.usage.turns;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
return projected ? usage : undefined;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
function result(text: string, isError = false, completions?: WaitCompletion[]): AgentToolResult<Details> {
|
|
359
|
-
const usage = completionUsage(completions);
|
|
360
|
-
for (const completion of completions ?? []) {
|
|
361
|
-
if (completion.workflowReceiptPath) text += `\nWorkflow receipt [${completion.runId}]: ${completion.workflowReceiptPath}`;
|
|
362
|
-
}
|
|
363
|
-
return {
|
|
364
|
-
content: [{ type: "text", text }],
|
|
365
|
-
...(isError ? { isError: true } : {}),
|
|
366
|
-
...(usage ? { usage: toAgentToolUsage(usage) } : {}),
|
|
367
|
-
details: {
|
|
368
|
-
mode: "management",
|
|
369
|
-
results: [],
|
|
370
|
-
...(completions && completions.length > 0 ? { completions } : {}),
|
|
371
|
-
},
|
|
372
|
-
};
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
function formatCompletionRecovery(completions: WaitCompletion[] | undefined): string {
|
|
376
|
-
const lines = (completions ?? []).flatMap((completion) =>
|
|
377
|
-
(completion.results ?? []).flatMap((child) => formatTimeoutRecoveryLines(child.timeoutRecovery)));
|
|
378
|
-
return lines.length > 0 ? `\n${lines.join("\n")}` : "";
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
function windowElapsedResult(
|
|
382
|
-
text: string,
|
|
383
|
-
activeRunIds: string[],
|
|
384
|
-
activeProviderItems: readonly RegisteredBackgroundWorkItem[] = [],
|
|
385
|
-
): AgentToolResult<Details> {
|
|
386
|
-
return {
|
|
387
|
-
content: [{ type: "text", text }],
|
|
388
|
-
details: {
|
|
389
|
-
mode: "management",
|
|
390
|
-
results: [],
|
|
391
|
-
wait: {
|
|
392
|
-
reason: "window_elapsed",
|
|
393
|
-
timedOut: true,
|
|
394
|
-
activeRunIds,
|
|
395
|
-
activeProviderItems: activeProviderItems.map(({ provider, id }) => ({ provider, id })),
|
|
396
|
-
},
|
|
397
|
-
},
|
|
398
|
-
};
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
function supervisorYieldResult(
|
|
402
|
-
activeRunIds: string[],
|
|
403
|
-
activeProviderItems: readonly RegisteredBackgroundWorkItem[] = [],
|
|
404
|
-
): AgentToolResult<Details> {
|
|
405
|
-
return {
|
|
406
|
-
content: [{ type: "text", text: "Wait yielded for a pending supervisor request. Background work remains active and will continue after the supervisor reply." }],
|
|
407
|
-
details: {
|
|
408
|
-
mode: "management",
|
|
409
|
-
results: [],
|
|
410
|
-
wait: {
|
|
411
|
-
reason: "supervisor_request",
|
|
412
|
-
timedOut: false,
|
|
413
|
-
activeRunIds,
|
|
414
|
-
activeProviderItems: activeProviderItems.map(({ provider, id }) => ({ provider, id })),
|
|
415
|
-
},
|
|
416
|
-
},
|
|
417
|
-
};
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
interface InitialWaitScope {
|
|
421
|
-
asyncRunIds: Set<string>;
|
|
422
|
-
foregroundRuns: Array<{ runId: string; sessionId?: string; detachedIndices: Set<number> }>;
|
|
423
|
-
providerIds: Set<string>;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
function supervisorYieldForScope(scope: InitialWaitScope, params: SubagentWaitParams, deps: SubagentWaitDeps, nowMs: number): AgentToolResult<Details> {
|
|
427
|
-
try {
|
|
428
|
-
const activeAsyncIds = new Set(activeRunsForSession(params.id ? { id: params.id } : {}, deps).map((run) => run.id));
|
|
429
|
-
const activeRunIds = new Set([...scope.asyncRunIds].filter((id) => activeAsyncIds.has(id)));
|
|
430
|
-
for (const initial of scope.foregroundRuns) {
|
|
431
|
-
const current = deps.state.foregroundRuns?.get(initial.runId);
|
|
432
|
-
if (!current || current.sessionId !== initial.sessionId) continue;
|
|
433
|
-
if (current.children.some((child) => initial.detachedIndices.has(child.index) && child.status === "detached")) activeRunIds.add(initial.runId);
|
|
434
|
-
}
|
|
435
|
-
const activeProviderItems = scope.providerIds.size > 0
|
|
436
|
-
? backgroundWorkForSession(deps, nowMs).items.filter((item) => scope.providerIds.has(backgroundWorkIdentity(item)))
|
|
437
|
-
: [];
|
|
438
|
-
return supervisorYieldResult([...activeRunIds], activeProviderItems);
|
|
439
|
-
} catch (error) {
|
|
440
|
-
return result(error instanceof Error ? error.message : String(error), true);
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
/** Build the live status shown while async work keeps bg_wait blocked. */
|
|
445
|
-
function asyncWaitUpdate(runs: AsyncRunSummary[], providerCount: number, elapsedMs: number): AgentToolResult<Details> {
|
|
446
|
-
const activity = runs.flatMap((run) => {
|
|
447
|
-
const activeSteps = run.steps.filter((step) => step.status === "pending" || step.status === "running");
|
|
448
|
-
if (activeSteps.length === 0) {
|
|
449
|
-
return [`${run.id}: ${run.state}`];
|
|
450
|
-
}
|
|
451
|
-
return activeSteps.map((step) => {
|
|
452
|
-
const current = step.currentTool ?? (step.status === "pending" ? "queued" : "thinking…");
|
|
453
|
-
return `${step.agent}: ${current}${step.currentPath ? ` ${shortenPath(step.currentPath)}` : ""}`;
|
|
454
|
-
});
|
|
455
|
-
});
|
|
456
|
-
const headline = [
|
|
457
|
-
`Waiting ${formatDuration(elapsedMs)} for ${runs.length} async run(s) and ${providerCount} provider item(s).`,
|
|
458
|
-
...activity,
|
|
459
|
-
].join(" · ");
|
|
460
|
-
return result([headline, runs.length > 0 ? formatAsyncRunList(runs) : ""].filter(Boolean).join("\n"));
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
const TRANSCRIPT_TAIL_BYTES = 128 * 1024;
|
|
464
|
-
const TRANSCRIPT_PREVIEW_LINES = 3;
|
|
465
|
-
const TRANSCRIPT_PREVIEW_WIDTH = 220;
|
|
466
|
-
|
|
467
|
-
interface TranscriptActivity {
|
|
468
|
-
currentTool?: string;
|
|
469
|
-
currentToolArgs?: string;
|
|
470
|
-
latestAt?: number;
|
|
471
|
-
recent: string[];
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
function compactTranscriptText(value: unknown, maxWidth = TRANSCRIPT_PREVIEW_WIDTH): string | undefined {
|
|
475
|
-
if (typeof value !== "string") return undefined;
|
|
476
|
-
const compact = value.replace(/\s+/g, " ").trim();
|
|
477
|
-
if (!compact) return undefined;
|
|
478
|
-
return compact.length <= maxWidth ? compact : `${compact.slice(0, Math.max(1, maxWidth - 1))}…`;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
function readTranscriptActivity(transcriptPath: string | undefined): TranscriptActivity | undefined {
|
|
482
|
-
if (!transcriptPath) return undefined;
|
|
483
|
-
let fd: number | undefined;
|
|
484
|
-
try {
|
|
485
|
-
const stat = fs.statSync(transcriptPath);
|
|
486
|
-
if (!stat.isFile() || stat.size <= 0) return undefined;
|
|
487
|
-
const start = Math.max(0, stat.size - TRANSCRIPT_TAIL_BYTES);
|
|
488
|
-
const length = stat.size - start;
|
|
489
|
-
const buffer = Buffer.allocUnsafe(length);
|
|
490
|
-
fd = fs.openSync(transcriptPath, "r");
|
|
491
|
-
const bytesRead = fs.readSync(fd, buffer, 0, length, start);
|
|
492
|
-
let lines = buffer.subarray(0, bytesRead).toString("utf-8").split(/\r?\n/);
|
|
493
|
-
if (start > 0) lines = lines.slice(1); // The first tail line may be partial JSON.
|
|
494
|
-
|
|
495
|
-
let currentTool: string | undefined;
|
|
496
|
-
let currentToolArgs: string | undefined;
|
|
497
|
-
let latestAt: number | undefined;
|
|
498
|
-
const recent: string[] = [];
|
|
499
|
-
for (const line of lines) {
|
|
500
|
-
if (!line.trim()) continue;
|
|
501
|
-
let record: Record<string, unknown>;
|
|
502
|
-
try {
|
|
503
|
-
record = JSON.parse(line) as Record<string, unknown>;
|
|
504
|
-
} catch {
|
|
505
|
-
continue; // Concurrent append can leave the final line temporarily incomplete.
|
|
506
|
-
}
|
|
507
|
-
if (typeof record.ts === "number" && Number.isFinite(record.ts)) latestAt = record.ts;
|
|
508
|
-
if (record.recordType === "tool_start" && typeof record.toolName === "string") {
|
|
509
|
-
currentTool = record.toolName;
|
|
510
|
-
currentToolArgs = compactTranscriptText(record.argsPreview, 140);
|
|
511
|
-
const preview = currentToolArgs ? `${currentTool}: ${currentToolArgs}` : currentTool;
|
|
512
|
-
recent.push(`tool: ${preview}`);
|
|
513
|
-
continue;
|
|
514
|
-
}
|
|
515
|
-
if (record.recordType === "tool_end") {
|
|
516
|
-
currentTool = undefined;
|
|
517
|
-
currentToolArgs = undefined;
|
|
518
|
-
continue;
|
|
519
|
-
}
|
|
520
|
-
if (record.recordType === "message") {
|
|
521
|
-
if (record.sourceEventType === "initial_prompt" || record.role === "user") continue;
|
|
522
|
-
const text = compactTranscriptText(record.text);
|
|
523
|
-
if (text) recent.push(`${typeof record.role === "string" ? record.role : "message"}: ${text}`);
|
|
524
|
-
continue;
|
|
525
|
-
}
|
|
526
|
-
if (record.recordType === "stdout" || record.recordType === "stderr") {
|
|
527
|
-
const text = compactTranscriptText(record.text);
|
|
528
|
-
if (text) recent.push(`${record.recordType}: ${text}`);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
return { currentTool, currentToolArgs, latestAt, recent: recent.slice(-TRANSCRIPT_PREVIEW_LINES) };
|
|
532
|
-
} catch {
|
|
533
|
-
return undefined;
|
|
534
|
-
} finally {
|
|
535
|
-
if (fd !== undefined) {
|
|
536
|
-
try { fs.closeSync(fd); } catch { /* best-effort close */ }
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
function detachedForegroundWaitUpdate(run: ForegroundResumeRun, pendingIndices: Set<number>, nowMs: number, elapsedMs: number): AgentToolResult<Details> {
|
|
542
|
-
const lines = [`Waiting for detached foreground run "${run.runId}" · ${formatDuration(elapsedMs)}`];
|
|
543
|
-
for (const child of run.children) {
|
|
544
|
-
if (!pendingIndices.has(child.index) || child.status !== "detached") continue;
|
|
545
|
-
const activity = readTranscriptActivity(child.transcriptPath);
|
|
546
|
-
const age = activity?.latestAt !== undefined ? ` · activity ${formatDuration(Math.max(0, nowMs - activity.latestAt))} ago` : "";
|
|
547
|
-
lines.push(`${child.agent} · working after supervisor handoff${age}`);
|
|
548
|
-
if (activity?.currentTool) {
|
|
549
|
-
lines.push(` current: ${activity.currentTool}${activity.currentToolArgs ? `: ${activity.currentToolArgs}` : ""}`);
|
|
550
|
-
}
|
|
551
|
-
for (const preview of activity?.recent ?? []) lines.push(` ${preview}`);
|
|
552
|
-
if (!activity && child.transcriptPath) lines.push(" live transcript has no new activity yet");
|
|
553
|
-
if (!child.transcriptPath) lines.push(" live transcript unavailable; waiting for completion event");
|
|
554
|
-
}
|
|
555
|
-
return result(lines.join("\n"));
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
async function waitForDetachedForegroundRun(
|
|
559
|
-
run: ForegroundResumeRun,
|
|
560
|
-
signal: AbortSignal | undefined,
|
|
561
|
-
deps: SubagentWaitDeps,
|
|
562
|
-
startedAt: number,
|
|
563
|
-
now: () => number,
|
|
564
|
-
pollIntervalMs: number,
|
|
565
|
-
timeoutMs: number,
|
|
566
|
-
supervisorYield: () => AgentToolResult<Details>,
|
|
567
|
-
): Promise<AgentToolResult<Details>> {
|
|
568
|
-
const initialDetachedIndices = new Set(run.children.filter((child) => child.status === "detached").map((child) => child.index));
|
|
569
|
-
while (true) {
|
|
570
|
-
if (deps.state.currentSessionId !== run.sessionId) {
|
|
571
|
-
return result(`Wait stopped because the active session changed while remembered foreground run "${run.runId}" was still detached. Return to the originating session to inspect or wait for it. Reply to any pending supervisor request before resuming or launching a replacement.`, true);
|
|
572
|
-
}
|
|
573
|
-
const current = deps.state.foregroundRuns?.get(run.runId);
|
|
574
|
-
if (!current || current.sessionId !== run.sessionId) {
|
|
575
|
-
return result(`Remembered foreground run "${run.runId}" disappeared before a terminal child result was recorded. Completion cannot be confirmed; do not launch a replacement without checking the originating child session.`, true);
|
|
576
|
-
}
|
|
577
|
-
if (deps.hasPendingSupervisorRequest?.()) return supervisorYield();
|
|
578
|
-
const pending = current.children.filter((child) => initialDetachedIndices.has(child.index) && child.status === "detached");
|
|
579
|
-
const attention = foregroundChildrenNeedingAttention(current, initialDetachedIndices);
|
|
580
|
-
if (attention.length > 0) return formatForegroundAttention(current, attention, now() - startedAt);
|
|
581
|
-
if (pending.length === 0) {
|
|
582
|
-
const outcome = summarizeForegroundChildren(current, initialDetachedIndices);
|
|
583
|
-
return result(
|
|
584
|
-
`Waited ${formatDuration(now() - startedAt)} for remembered detached foreground run "${run.runId}"; done. Outcome: ${outcome || "no recovered child status"}. Completion event observed; inspect with subagent({ action: "status", id: "${run.runId}" }) for recovered output.`,
|
|
585
|
-
);
|
|
586
|
-
}
|
|
587
|
-
const updateNow = now();
|
|
588
|
-
deps.onUpdate?.(detachedForegroundWaitUpdate(current, initialDetachedIndices, updateNow, updateNow - startedAt));
|
|
589
|
-
if (signal?.aborted) {
|
|
590
|
-
return result(`Wait aborted after ${formatDuration(now() - startedAt)}. Remembered foreground run "${run.runId}" remains detached. Reply to any pending supervisor request before resuming or launching a replacement.`, true);
|
|
591
|
-
}
|
|
592
|
-
if (now() - startedAt >= timeoutMs) {
|
|
593
|
-
return windowElapsedResult(
|
|
594
|
-
`Wait window elapsed after ${formatDuration(timeoutMs)} with remembered foreground run "${run.runId}" still detached. Reply to any pending supervisor request, then call bg_wait({ id: "${run.runId}" }) again or inspect status; do not resume or launch a replacement while it remains detached.`,
|
|
595
|
-
[run.runId],
|
|
596
|
-
);
|
|
597
|
-
}
|
|
598
|
-
await waitForWake(pollIntervalMs, signal, deps);
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
async function waitForSessionDetachedForegroundRuns(
|
|
603
|
-
runs: ForegroundResumeRun[],
|
|
604
|
-
signal: AbortSignal | undefined,
|
|
605
|
-
deps: SubagentWaitDeps,
|
|
606
|
-
startedAt: number,
|
|
607
|
-
now: () => number,
|
|
608
|
-
pollIntervalMs: number,
|
|
609
|
-
timeoutMs: number,
|
|
610
|
-
supervisorYield: () => AgentToolResult<Details>,
|
|
611
|
-
): Promise<AgentToolResult<Details>> {
|
|
612
|
-
const texts: string[] = [];
|
|
613
|
-
for (const run of runs) {
|
|
614
|
-
const one = await waitForDetachedForegroundRun(run, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield);
|
|
615
|
-
if (one.isError) return one;
|
|
616
|
-
if (one.details.wait?.reason === "supervisor_request") return one;
|
|
617
|
-
if (one.details.wait?.reason === "window_elapsed") {
|
|
618
|
-
const activeRunIds = runs.filter((initial) => {
|
|
619
|
-
const current = deps.state.foregroundRuns?.get(initial.runId);
|
|
620
|
-
if (!current || current.sessionId !== initial.sessionId) return false;
|
|
621
|
-
return initial.children.some((child) => child.status === "detached"
|
|
622
|
-
&& current.children.some((candidate) => candidate.index === child.index && candidate.status === "detached"));
|
|
623
|
-
}).map((activeRun) => activeRun.runId);
|
|
624
|
-
return windowElapsedResult(
|
|
625
|
-
one.content.map((part) => part.type === "text" ? part.text : "").join("\n"),
|
|
626
|
-
activeRunIds,
|
|
627
|
-
);
|
|
628
|
-
}
|
|
629
|
-
texts.push(one.content.map((part) => part.type === "text" ? part.text : "").join("\n").trim());
|
|
630
|
-
}
|
|
631
|
-
return result(texts.filter(Boolean).join("\n") || `Waited ${formatDuration(now() - startedAt)} for remembered detached foreground run(s); done.`);
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
/**
|
|
635
|
-
* Block until the targeted async or remembered detached foreground run finishes,
|
|
636
|
-
* the timeout elapses, or the turn is aborted. Resolves with a short
|
|
637
|
-
* human-readable summary either way.
|
|
638
|
-
*/
|
|
639
|
-
export async function waitForSubagents(
|
|
640
|
-
params: SubagentWaitParams,
|
|
641
|
-
signal: AbortSignal | undefined,
|
|
642
|
-
deps: SubagentWaitDeps,
|
|
643
|
-
): Promise<AgentToolResult<Details>> {
|
|
644
|
-
if (deps.enabled === false) {
|
|
645
|
-
return result("bg_wait is disabled by config.waitTool or PI_SUBAGENT_WAIT_TOOL_ENABLED; returning immediately without blocking background work. Active work keeps going, and you can inspect subagents with subagent({ action: \"status\" }) or rely on completion notifications.");
|
|
646
|
-
}
|
|
647
|
-
if (!deps.state.currentSessionId) {
|
|
648
|
-
return result("bg_wait requires an active session identity to scope background work safely.", true);
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
const now = deps.now ?? Date.now;
|
|
652
|
-
const pollIntervalMs = Math.max(MIN_POLL_INTERVAL_MS, deps.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
|
|
653
|
-
const timeoutMs = params.timeoutMs !== undefined && params.timeoutMs > 0
|
|
654
|
-
? params.timeoutMs
|
|
655
|
-
: deps.defaultTimeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
656
|
-
const startedAt = now();
|
|
657
|
-
const sessionId = deps.state.currentSessionId;
|
|
658
|
-
const waitForAll = params.id ? true : params.all === true;
|
|
659
|
-
if (params.nonBlocking && !params.id) {
|
|
660
|
-
return result("Non-blocking wait subscriptions require id so the registration can bind one exact run identity.", true);
|
|
661
|
-
}
|
|
662
|
-
if (params.nonBlocking && params.all) {
|
|
663
|
-
return result("nonBlocking cannot be combined with all; subscribe to one exact run id.", true);
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
let active: AsyncRunSummary[];
|
|
667
|
-
let foreground: ForegroundResumeRun[];
|
|
668
|
-
let providerSnapshot: BackgroundWorkSnapshot;
|
|
669
|
-
try {
|
|
670
|
-
active = runsForSession(params, deps, !params.id);
|
|
671
|
-
foreground = activeDetachedForegroundRuns(params, deps).map((run) => ({
|
|
672
|
-
...run,
|
|
673
|
-
children: run.children.map((child) => ({ ...child })),
|
|
674
|
-
}));
|
|
675
|
-
providerSnapshot = params.id ? { providers: [], items: [] } : backgroundWorkForSession(deps, startedAt);
|
|
676
|
-
} catch (error) {
|
|
677
|
-
return result(error instanceof Error ? error.message : String(error), true);
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
let selectedForeground: ForegroundResumeRun | undefined;
|
|
681
|
-
if (params.id) {
|
|
682
|
-
const candidates = [
|
|
683
|
-
...active.map((run) => ({ kind: "async" as const, id: run.id, run })),
|
|
684
|
-
...foreground.map((run) => ({ kind: "foreground" as const, id: run.runId, run })),
|
|
685
|
-
];
|
|
686
|
-
const exact = candidates.filter((candidate) => candidate.id === params.id);
|
|
687
|
-
const matches = exact.length > 0 ? exact : candidates;
|
|
688
|
-
if (matches.length > 1) {
|
|
689
|
-
return result(`Ambiguous subagent run id prefix "${params.id}" matched ${matches.length} runs: ${matches.map((candidate) => candidate.id).join(", ")}. Pass a longer id.`, true);
|
|
690
|
-
}
|
|
691
|
-
const selected = matches[0];
|
|
692
|
-
if (selected?.kind === "async" && !ACTIVE_STATES.includes(selected.run.state)) {
|
|
693
|
-
try {
|
|
694
|
-
const references: string[] = [];
|
|
695
|
-
const completions = collectScopedCompletions([selected.run], deps, references);
|
|
696
|
-
return result(
|
|
697
|
-
`Run "${selected.id}" is terminal. Outcome: ${summarizeTerminalRuns([selected.run])}.${formatCompletionRecovery(completions)}${references.length ? `\n${references.join("\n")}` : ""}`,
|
|
698
|
-
deps.failOnFailedRuns === true && (selected.run.state === "failed" || selected.run.state === "partial"), completions,
|
|
699
|
-
);
|
|
700
|
-
} catch (error) {
|
|
701
|
-
return result(error instanceof Error ? error.message : String(error), true);
|
|
702
|
-
}
|
|
703
|
-
}
|
|
704
|
-
if (selected && params.nonBlocking) {
|
|
705
|
-
if (!deps.subscribe) {
|
|
706
|
-
return result("Non-blocking wait subscriptions require a long-lived interactive subagent runtime; this runtime can only use blocking bg_wait calls.", true);
|
|
707
|
-
}
|
|
708
|
-
try {
|
|
709
|
-
const registration = deps.subscribe({ targetKind: selected.kind, runId: selected.id, requestedId: params.id, timeoutMs });
|
|
710
|
-
return result(`Armed wait subscription ${registration.token} for exact ${selected.kind} run ${selected.id}. Returning immediately; this session will be woken on completion, failure, attention, reconciliation failure, or timeout. Inspect armed subscriptions with subagent({ action: "status" }).`);
|
|
711
|
-
} catch (error) {
|
|
712
|
-
return result(error instanceof Error ? error.message : String(error), true);
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
|
-
selectedForeground = selected?.kind === "foreground" ? selected.run : undefined;
|
|
716
|
-
active = selected?.kind === "async" ? [selected.run] : [];
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
let providerActive = providerSnapshot.items;
|
|
720
|
-
const scopedForeground = selectedForeground ? [selectedForeground] : params.id ? [] : foreground;
|
|
721
|
-
const initialAsyncIds = new Set(active.map((run) => run.id));
|
|
722
|
-
const initialProviderIds = new Set(providerActive.map(backgroundWorkIdentity));
|
|
723
|
-
const initialScope: InitialWaitScope = {
|
|
724
|
-
asyncRunIds: initialAsyncIds,
|
|
725
|
-
foregroundRuns: scopedForeground.map((run) => ({
|
|
726
|
-
runId: run.runId,
|
|
727
|
-
sessionId: run.sessionId,
|
|
728
|
-
detachedIndices: new Set(run.children.filter((child) => child.status === "detached").map((child) => child.index)),
|
|
729
|
-
})),
|
|
730
|
-
providerIds: initialProviderIds,
|
|
731
|
-
};
|
|
732
|
-
const supervisorYield = () => supervisorYieldForScope(initialScope, params, deps, now());
|
|
733
|
-
if (selectedForeground) {
|
|
734
|
-
return waitForDetachedForegroundRun(selectedForeground, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield);
|
|
735
|
-
}
|
|
736
|
-
if (active.length === 0 && providerActive.length === 0) {
|
|
737
|
-
if (waitForAll && !params.id && foreground.length > 0) {
|
|
738
|
-
return waitForSessionDetachedForegroundRuns(foreground, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield);
|
|
739
|
-
}
|
|
740
|
-
return result(params.id
|
|
741
|
-
? `No active run matched "${params.id}". Nothing to wait for.`
|
|
742
|
-
: "No active async runs or registered provider work in this session. Nothing to wait for.");
|
|
743
|
-
}
|
|
744
|
-
const waitParams = params.id ? { ...params, id: active[0]!.id } : params;
|
|
745
|
-
const initialProviderNames = new Set(providerActive.map((item) => item.provider));
|
|
746
|
-
const initialCount = initialAsyncIds.size + initialProviderIds.size;
|
|
747
|
-
const stopOnAttention = params.stopOnAttention ?? deps.stopOnAttention !== false;
|
|
748
|
-
let attention = active.filter((run) => needsAttention(run));
|
|
749
|
-
let supervisorBarrier = false;
|
|
750
|
-
|
|
751
|
-
const isDone = (): boolean => {
|
|
752
|
-
if (deps.hasPendingSupervisorRequest?.()) {
|
|
753
|
-
supervisorBarrier = true;
|
|
754
|
-
return true;
|
|
755
|
-
}
|
|
756
|
-
if (attention.some((run) => initialAsyncIds.has(run.id) && (stopOnAttention || hasSupervisorTool(run)))) return true;
|
|
757
|
-
const activeAsyncIds = new Set(active.map((run) => run.id));
|
|
758
|
-
const activeProviderIds = new Set(providerActive.map(backgroundWorkIdentity));
|
|
759
|
-
if (waitForAll) {
|
|
760
|
-
return [...initialAsyncIds].every((id) => !activeAsyncIds.has(id))
|
|
761
|
-
&& [...initialProviderIds].every((id) => !activeProviderIds.has(id));
|
|
762
|
-
}
|
|
763
|
-
return [...initialAsyncIds].some((id) => !activeAsyncIds.has(id))
|
|
764
|
-
|| [...initialProviderIds].some((id) => !activeProviderIds.has(id));
|
|
765
|
-
};
|
|
766
|
-
|
|
767
|
-
while (!isDone()) {
|
|
768
|
-
const activeInitialRuns = active.filter((run) => initialAsyncIds.has(run.id));
|
|
769
|
-
const activeInitialProviderItems = providerActive.filter((item) => initialProviderIds.has(backgroundWorkIdentity(item)));
|
|
770
|
-
const stillActive = [
|
|
771
|
-
...activeInitialRuns.map((run) => `${run.id} (${run.state})`),
|
|
772
|
-
...activeInitialProviderItems.map((item) => `${item.provider}/${item.id}`),
|
|
773
|
-
].join(", ");
|
|
774
|
-
deps.onUpdate?.(asyncWaitUpdate(activeInitialRuns, activeInitialProviderItems.length, now() - startedAt));
|
|
775
|
-
if (signal?.aborted) {
|
|
776
|
-
return result(`Wait aborted after ${formatDuration(now() - startedAt)}. Still active: ${stillActive}.`, true);
|
|
777
|
-
}
|
|
778
|
-
if (now() - startedAt >= timeoutMs) {
|
|
779
|
-
return windowElapsedResult(
|
|
780
|
-
`Wait window elapsed after ${formatDuration(timeoutMs)} with ${activeInitialRuns.length} async run(s) and ${activeInitialProviderItems.length} provider item(s) still active: ${stillActive}. The work keeps going; call bg_wait again or inspect subagent status.`,
|
|
781
|
-
activeInitialRuns.map((run) => run.id),
|
|
782
|
-
activeInitialProviderItems,
|
|
783
|
-
);
|
|
784
|
-
}
|
|
785
|
-
try {
|
|
786
|
-
await waitForWake(pollIntervalMs, signal, deps);
|
|
787
|
-
if (deps.state.currentSessionId !== sessionId) return result("Wait stopped because the active session changed.", true);
|
|
788
|
-
active = activeRunsForSession(waitParams, deps);
|
|
789
|
-
attention = attentionRunsForSession(waitParams, deps, initialAsyncIds);
|
|
790
|
-
providerSnapshot = params.id ? providerSnapshot : backgroundWorkForSession(deps, now());
|
|
791
|
-
for (const provider of initialProviderNames) {
|
|
792
|
-
if (!providerSnapshot.providers.includes(provider)) {
|
|
793
|
-
return result(`Background-work provider '${provider}' disappeared while bg_wait was tracking its active work; completion cannot be confirmed.`, true);
|
|
794
|
-
}
|
|
795
|
-
}
|
|
796
|
-
providerActive = providerSnapshot.items;
|
|
797
|
-
} catch (error) {
|
|
798
|
-
return result(error instanceof Error ? error.message : String(error), true);
|
|
799
|
-
}
|
|
800
|
-
}
|
|
801
|
-
if (supervisorBarrier) {
|
|
802
|
-
return supervisorYield();
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
let terminalSummary: string;
|
|
806
|
-
let finishedAsyncCount: number;
|
|
807
|
-
let failedAsyncCount: number;
|
|
808
|
-
let completions: WaitCompletion[] | undefined;
|
|
809
|
-
let resumeGuidance = "";
|
|
810
|
-
const references: string[] = [];
|
|
811
|
-
const activeProviderIds = new Set(providerActive.map(backgroundWorkIdentity));
|
|
812
|
-
const providerFinishedCount = [...initialProviderIds].filter((id) => !activeProviderIds.has(id)).length;
|
|
813
|
-
try {
|
|
814
|
-
const allNow = runsForIds(initialAsyncIds, deps);
|
|
815
|
-
const terminal = allNow.filter((run) => !ACTIVE_STATES.includes(run.state) && initialAsyncIds.has(run.id));
|
|
816
|
-
finishedAsyncCount = terminal.length;
|
|
817
|
-
failedAsyncCount = terminal.filter((run) => run.state === "failed" || run.state === "partial").length;
|
|
818
|
-
terminalSummary = summarizeTerminalRuns(terminal, providerFinishedCount);
|
|
819
|
-
resumeGuidance = formatResumeFirstFailedRunsNote(terminal);
|
|
820
|
-
completions = collectScopedCompletions(terminal, deps, references);
|
|
821
|
-
} catch (error) {
|
|
822
|
-
return result(error instanceof Error ? error.message : String(error), true);
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
const relevantAttention = attention.filter((run) => initialAsyncIds.has(run.id));
|
|
826
|
-
const supervisorAttentionHint = relevantAttention.some(hasSupervisorTool)
|
|
827
|
-
? " Reply to any pending supervisor request. If subagent_supervisor({ action: \"pending\" }) is empty, check intercom({ action: \"pending\" }) because an external intercom tool may own the request."
|
|
828
|
-
: "";
|
|
829
|
-
const attentionNote = relevantAttention.length > 0
|
|
830
|
-
? ` ${relevantAttention.length} run(s) need attention: ${relevantAttention.map((run) => run.id).join(", ")} —${supervisorAttentionHint} inspect with subagent({ action: "status" }) then steer a top-level live async child, resume a paused/completed/failed child, or interrupt explicitly.`
|
|
831
|
-
: "";
|
|
832
|
-
const stillRunning = active.filter((run) => initialAsyncIds.has(run.id)).length
|
|
833
|
-
+ providerActive.filter((item) => initialProviderIds.has(backgroundWorkIdentity(item))).length;
|
|
834
|
-
const elapsed = formatDuration(now() - startedAt);
|
|
835
|
-
const outcome = terminalSummary ? ` Outcome: ${terminalSummary}.` : "";
|
|
836
|
-
const recoveryNote = formatCompletionRecovery(completions) + (references.length ? `\n${references.join("\n")}\n` : "");
|
|
837
|
-
|
|
838
|
-
if (waitForAll) {
|
|
839
|
-
const foregroundResult = !params.id && foreground.length > 0 && relevantAttention.length === 0
|
|
840
|
-
? await waitForSessionDetachedForegroundRuns(foreground, signal, deps, startedAt, now, pollIntervalMs, timeoutMs, supervisorYield)
|
|
841
|
-
: undefined;
|
|
842
|
-
if (foregroundResult?.isError) return foregroundResult;
|
|
843
|
-
if (foregroundResult?.details.wait?.reason === "supervisor_request") return foregroundResult;
|
|
844
|
-
if (foregroundResult?.details.wait?.reason === "window_elapsed") return foregroundResult;
|
|
845
|
-
const foregroundNote = foregroundResult
|
|
846
|
-
? `\n${foregroundResult.content.map((part) => part.type === "text" ? part.text : "").join("\n")}`
|
|
847
|
-
: "";
|
|
848
|
-
const scope = params.id
|
|
849
|
-
? `run "${params.id}"`
|
|
850
|
-
: initialProviderIds.size === 0
|
|
851
|
-
? `${initialAsyncIds.size} async run(s)`
|
|
852
|
-
: `${initialAsyncIds.size} async run(s) and ${initialProviderIds.size} provider item(s)`;
|
|
853
|
-
const status = relevantAttention.length > 0 ? "attention required" : "done";
|
|
854
|
-
return result(
|
|
855
|
-
`Waited ${elapsed} for ${scope}; ${status}.${outcome}${recoveryNote}${resumeGuidance}${attentionNote}${foregroundNote} Completion/control events have been observed; inspect status if a notification is not visible yet.`,
|
|
856
|
-
(deps.failOnFailedRuns === true && failedAsyncCount > 0) || (deps.failOnAttention === true && relevantAttention.length > 0),
|
|
857
|
-
completions,
|
|
858
|
-
);
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
const finishedCount = finishedAsyncCount + providerFinishedCount;
|
|
862
|
-
const subject = initialProviderIds.size === 0 ? "run(s)" : "item(s)";
|
|
863
|
-
const remainder = stillRunning > 0
|
|
864
|
-
? ` ${stillRunning} ${subject} still in flight — call bg_wait again to catch the next one.`
|
|
865
|
-
: relevantAttention.length > 0
|
|
866
|
-
? " No other work is waitable until attention is handled."
|
|
867
|
-
: initialProviderIds.size === 0 ? " No runs remain in flight." : " No work remains in flight.";
|
|
868
|
-
const progress = relevantAttention.length > 0 && finishedCount === 0
|
|
869
|
-
? `${relevantAttention.length} of ${initialCount} ${subject} need attention`
|
|
870
|
-
: `${finishedCount} of ${initialCount} ${subject} finished`;
|
|
871
|
-
return result(
|
|
872
|
-
`Waited ${elapsed}; ${progress}.${outcome}${recoveryNote}${resumeGuidance}${attentionNote}${remainder} Relevant completion/control events have been observed; inspect status if a notification is not visible yet.`,
|
|
873
|
-
(deps.failOnFailedRuns === true && failedAsyncCount > 0) || (deps.failOnAttention === true && relevantAttention.length > 0),
|
|
874
|
-
completions,
|
|
875
|
-
);
|
|
876
|
-
}
|