@selesai/code 0.12.0 → 0.13.1
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 +17 -0
- package/dist/core/agent-session.d.ts +1 -1
- package/dist/core/agent-session.js +1 -1
- package/dist/core/sdk.d.ts +2 -2
- package/dist/core/sdk.js +1 -1
- package/dist/core/system-prompt.d.ts +1 -1
- package/dist/core/system-prompt.js +1 -1
- package/dist/core/usage-totals.d.ts +2 -0
- package/dist/core/usage-totals.js +10 -0
- package/dist/extensions/ascii.txt +9 -0
- package/dist/extensions/package.json +1 -2
- package/dist/extensions/pi-hermes-memory/CHANGELOG.md +371 -0
- package/dist/extensions/pi-hermes-memory/LICENSE +21 -0
- package/dist/extensions/pi-hermes-memory/README.md +643 -0
- package/dist/extensions/pi-hermes-memory/docs/0.1/TASKS.md +197 -0
- package/dist/extensions/pi-hermes-memory/docs/0.2/PLAN.md +290 -0
- package/dist/extensions/pi-hermes-memory/docs/0.2/TASKS.md +134 -0
- package/dist/extensions/pi-hermes-memory/docs/0.2/TEST-PLAN.md +216 -0
- package/dist/extensions/pi-hermes-memory/docs/0.3/PLAN.md +330 -0
- package/dist/extensions/pi-hermes-memory/docs/0.3/TASKS.md +125 -0
- package/dist/extensions/pi-hermes-memory/docs/0.4/PLAN.md +160 -0
- package/dist/extensions/pi-hermes-memory/docs/0.4/TASKS.md +113 -0
- package/dist/extensions/pi-hermes-memory/docs/0.6/CHANGELOG.md +57 -0
- package/dist/extensions/pi-hermes-memory/docs/0.6/PLAN.md +202 -0
- package/dist/extensions/pi-hermes-memory/docs/0.6/TASKS.md +144 -0
- package/dist/extensions/pi-hermes-memory/docs/0.7/PLAN.md +349 -0
- package/dist/extensions/pi-hermes-memory/docs/0.7/TASKS.md +110 -0
- package/dist/extensions/pi-hermes-memory/docs/PUBLISHING.md +149 -0
- package/dist/extensions/pi-hermes-memory/docs/ROADMAP.md +468 -0
- package/dist/extensions/pi-hermes-memory/docs/images/memory-architecture.svg +1 -0
- package/dist/extensions/pi-hermes-memory/docs/images/pi-logo.svg +22 -0
- package/dist/extensions/pi-hermes-memory/docs/images/pi_memory.png +0 -0
- package/dist/extensions/pi-hermes-memory/docs/images/pi_memory.svg +19 -0
- package/dist/extensions/pi-hermes-memory/docs/images/security-flow.svg +1 -0
- package/dist/extensions/pi-hermes-memory/docs/images/session-lifecycle.svg +1 -0
- package/dist/extensions/pi-hermes-memory/docs/images/source-architecture.svg +1 -0
- package/dist/extensions/pi-hermes-memory/docs/mermaid/memory-architecture.mmd +49 -0
- package/dist/extensions/pi-hermes-memory/docs/mermaid/security-flow.mmd +40 -0
- package/dist/extensions/pi-hermes-memory/docs/mermaid/session-lifecycle.mmd +56 -0
- package/dist/extensions/pi-hermes-memory/docs/mermaid/source-architecture.mmd +54 -0
- package/dist/extensions/pi-hermes-memory/package-lock.json +3799 -0
- package/dist/extensions/pi-hermes-memory/package.json +66 -0
- package/dist/extensions/pi-hermes-memory/scripts/check-min-sdk.mjs +99 -0
- package/dist/extensions/pi-hermes-memory/scripts/ensure-dev.mjs +57 -0
- package/dist/extensions/pi-hermes-memory/src/auto-consolidation-warning.ts +6 -0
- package/dist/extensions/pi-hermes-memory/src/config.ts +178 -0
- package/dist/extensions/pi-hermes-memory/src/constants.ts +424 -0
- package/dist/extensions/pi-hermes-memory/src/extension-root-migration.ts +639 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/auto-consolidate.ts +401 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/background-review.ts +297 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/child-process-watchdog.mjs +90 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/correction-detector.ts +300 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/index-sessions.ts +86 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/insights.ts +78 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/interview.ts +37 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/learn-memory.ts +186 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/message-parts.ts +27 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/pi-child-process.ts +485 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/preview-context.ts +105 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/review-memory-ops.ts +506 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/session-backfill.ts +145 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/session-flush.ts +151 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/session-live-index.ts +94 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/skills-command.ts +1334 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/standing-pin.ts +111 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/switch-project.ts +75 -0
- package/dist/extensions/pi-hermes-memory/src/handlers/sync-markdown-memories.ts +266 -0
- package/dist/extensions/pi-hermes-memory/src/index.ts +378 -0
- package/dist/extensions/pi-hermes-memory/src/lifecycle-timing.ts +54 -0
- package/dist/extensions/pi-hermes-memory/src/paths.ts +61 -0
- package/dist/extensions/pi-hermes-memory/src/project-context.ts +13 -0
- package/dist/extensions/pi-hermes-memory/src/project-memory-migration.ts +93 -0
- package/dist/extensions/pi-hermes-memory/src/project.ts +157 -0
- package/dist/extensions/pi-hermes-memory/src/prompt-context.ts +55 -0
- package/dist/extensions/pi-hermes-memory/src/store/atomic-lock-coordinator.ts +375 -0
- package/dist/extensions/pi-hermes-memory/src/store/canonical-storage-path.ts +54 -0
- package/dist/extensions/pi-hermes-memory/src/store/content-scanner.ts +101 -0
- package/dist/extensions/pi-hermes-memory/src/store/db.ts +1180 -0
- package/dist/extensions/pi-hermes-memory/src/store/fts-query.ts +101 -0
- package/dist/extensions/pi-hermes-memory/src/store/markdown-mutation-lock.ts +38 -0
- package/dist/extensions/pi-hermes-memory/src/store/memory-lookup.ts +24 -0
- package/dist/extensions/pi-hermes-memory/src/store/memory-store.ts +1191 -0
- package/dist/extensions/pi-hermes-memory/src/store/recovery-maintenance.ts +66 -0
- package/dist/extensions/pi-hermes-memory/src/store/schema.ts +118 -0
- package/dist/extensions/pi-hermes-memory/src/store/session-anchor-search.ts +472 -0
- package/dist/extensions/pi-hermes-memory/src/store/session-indexer.ts +511 -0
- package/dist/extensions/pi-hermes-memory/src/store/session-parser.ts +213 -0
- package/dist/extensions/pi-hermes-memory/src/store/session-search.ts +234 -0
- package/dist/extensions/pi-hermes-memory/src/store/skill-store.ts +950 -0
- package/dist/extensions/pi-hermes-memory/src/store/skill-utils.ts +133 -0
- package/dist/extensions/pi-hermes-memory/src/store/sqlite-memory-store.ts +1002 -0
- package/dist/extensions/pi-hermes-memory/src/store/sqlite-native.ts +241 -0
- package/dist/extensions/pi-hermes-memory/src/store/standing-instructions.ts +247 -0
- package/dist/extensions/pi-hermes-memory/src/tools/memory-search-tool.ts +95 -0
- package/dist/extensions/pi-hermes-memory/src/tools/memory-tool.ts +469 -0
- package/dist/extensions/pi-hermes-memory/src/tools/session-search-tool.ts +246 -0
- package/dist/extensions/pi-hermes-memory/src/tools/shared-output-view.ts +170 -0
- package/dist/extensions/pi-hermes-memory/src/tools/skill-tool.ts +333 -0
- package/dist/extensions/pi-hermes-memory/src/tools/tool-result-views.ts +105 -0
- package/dist/extensions/pi-hermes-memory/src/types.ts +214 -0
- package/dist/extensions/pi-hermes-memory/tests/config.test.ts +434 -0
- package/dist/extensions/pi-hermes-memory/tests/extension-root-migration.test.ts +368 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/auto-consolidate.test.ts +984 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/background-review.test.ts +950 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/correction-detector.test.ts +671 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/insights.test.ts +157 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/interview.test.ts +127 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/pi-child-process.test.ts +905 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/preview-context.test.ts +152 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/prompt-context.test.ts +166 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/resources-discover.test.ts +71 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/review-memory-ops.test.ts +614 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/session-backfill.test.ts +192 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/session-flush.test.ts +677 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/session-live-index.test.ts +225 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/skills-command.test.ts +827 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/standing-pin.test.ts +134 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/sync-markdown-memories.test.ts +491 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/system-prompt.test.ts +199 -0
- package/dist/extensions/pi-hermes-memory/tests/handlers/thinking-max.test.ts +64 -0
- package/dist/extensions/pi-hermes-memory/tests/index.test.ts +30 -0
- package/dist/extensions/pi-hermes-memory/tests/integration/flow.test.ts +126 -0
- package/dist/extensions/pi-hermes-memory/tests/lifecycle-timing.test.ts +76 -0
- package/dist/extensions/pi-hermes-memory/tests/paths.test.ts +23 -0
- package/dist/extensions/pi-hermes-memory/tests/project-memory-migration.test.ts +80 -0
- package/dist/extensions/pi-hermes-memory/tests/project-rebinding.test.ts +115 -0
- package/dist/extensions/pi-hermes-memory/tests/project.test.ts +120 -0
- package/dist/extensions/pi-hermes-memory/tests/run-all-timeout.test.ts +107 -0
- package/dist/extensions/pi-hermes-memory/tests/run-all.sh +45 -0
- package/dist/extensions/pi-hermes-memory/tests/store/atomic-lock-coordinator.test.ts +381 -0
- package/dist/extensions/pi-hermes-memory/tests/store/content-scanner.test.ts +388 -0
- package/dist/extensions/pi-hermes-memory/tests/store/db.test.ts +1046 -0
- package/dist/extensions/pi-hermes-memory/tests/store/markdown-mutation-lock.test.ts +34 -0
- package/dist/extensions/pi-hermes-memory/tests/store/memory-store.test.ts +2150 -0
- package/dist/extensions/pi-hermes-memory/tests/store/recovery-maintenance.test.ts +170 -0
- package/dist/extensions/pi-hermes-memory/tests/store/session-anchor-search.test.ts +210 -0
- package/dist/extensions/pi-hermes-memory/tests/store/session-indexer.test.ts +643 -0
- package/dist/extensions/pi-hermes-memory/tests/store/session-parser.test.ts +282 -0
- package/dist/extensions/pi-hermes-memory/tests/store/session-search.test.ts +287 -0
- package/dist/extensions/pi-hermes-memory/tests/store/skill-store.test.ts +678 -0
- package/dist/extensions/pi-hermes-memory/tests/store/skill-utils.test.ts +21 -0
- package/dist/extensions/pi-hermes-memory/tests/store/sqlite-lazy-load.test.ts +78 -0
- package/dist/extensions/pi-hermes-memory/tests/store/sqlite-memory-store.test.ts +543 -0
- package/dist/extensions/pi-hermes-memory/tests/store/sqlite-native.test.ts +164 -0
- package/dist/extensions/pi-hermes-memory/tests/store/standing-instructions.test.ts +171 -0
- package/dist/extensions/pi-hermes-memory/tests/tools/memory-search-tool.test.ts +84 -0
- package/dist/extensions/pi-hermes-memory/tests/tools/memory-tool.test.ts +709 -0
- package/dist/extensions/pi-hermes-memory/tests/tools/session-search-tool.test.ts +345 -0
- package/dist/extensions/pi-hermes-memory/tests/tools/shared-output-view.test.ts +362 -0
- package/dist/extensions/pi-hermes-memory/tests/tools/skill-tool.test.ts +478 -0
- package/dist/extensions/pi-hermes-memory/tests/tools/tool-result-renderer-wiring.test.ts +40 -0
- package/dist/extensions/pi-hermes-memory/tsconfig.json +19 -0
- package/dist/extensions/pi-subagents/.oxlintrc.json +43 -0
- package/dist/extensions/pi-subagents/AGENTS.md +5 -0
- package/dist/extensions/pi-subagents/CHANGELOG.md +157 -0
- package/dist/extensions/pi-subagents/README.md +12 -6
- package/dist/extensions/pi-subagents/VISION.md +81 -0
- package/dist/extensions/pi-subagents/agents/claude-code-writer.md +15 -0
- package/dist/extensions/pi-subagents/agents/claude-code.md +15 -0
- package/dist/extensions/pi-subagents/agents/codex-exec-writer.md +15 -0
- package/dist/extensions/pi-subagents/agents/codex-exec.md +15 -0
- package/dist/extensions/pi-subagents/agents/cursor-agent-writer.md +14 -0
- package/dist/extensions/pi-subagents/agents/cursor-agent.md +14 -0
- package/dist/extensions/pi-subagents/agents/reviewer.md +1 -3
- package/dist/extensions/pi-subagents/docs/agents.md +488 -0
- package/dist/extensions/pi-subagents/docs/configuration.md +46 -9
- package/dist/extensions/pi-subagents/docs/extension-api.md +42 -3
- package/dist/extensions/pi-subagents/docs/models.md +27 -4
- package/dist/extensions/pi-subagents/docs/observability.md +10 -9
- package/dist/extensions/pi-subagents/docs/tool-reference.md +102 -6
- package/dist/extensions/pi-subagents/docs/workflows.md +135 -0
- package/dist/extensions/pi-subagents/package-lock.json +389 -2
- package/dist/extensions/pi-subagents/package.json +3 -1
- package/dist/extensions/pi-subagents/prompts/review-loop.md +2 -2
- package/dist/extensions/pi-subagents/skills/council-mode/SKILL.md +1 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +3 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +7 -3
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +2 -2
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +26 -5
- package/dist/extensions/pi-subagents/src/agents/agent-management.ts +41 -22
- package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +4 -4
- package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +9 -2
- package/dist/extensions/pi-subagents/src/agents/agents.ts +322 -75
- package/dist/extensions/pi-subagents/src/agents/builtin-names.ts +6 -0
- package/dist/extensions/pi-subagents/src/agents/runtime-agent-events.ts +70 -0
- package/dist/extensions/pi-subagents/src/agents/runtime-agent-registry.ts +27 -20
- package/dist/extensions/pi-subagents/src/api/agents.ts +10 -5
- package/dist/extensions/pi-subagents/src/api/background-work.ts +5 -1
- package/dist/extensions/pi-subagents/src/api/delegation.ts +0 -7
- package/dist/extensions/pi-subagents/src/api/preflight.ts +34 -12
- package/dist/extensions/pi-subagents/src/extension/config.ts +70 -0
- package/dist/extensions/pi-subagents/src/extension/doctor.ts +3 -3
- package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +5 -3
- package/dist/extensions/pi-subagents/src/extension/index.ts +83 -30
- package/dist/extensions/pi-subagents/src/extension/public-execution.ts +44 -15
- package/dist/extensions/pi-subagents/src/extension/rpc.ts +55 -19
- package/dist/extensions/pi-subagents/src/extension/schemas.ts +41 -15
- package/dist/extensions/pi-subagents/src/extension/tool-description.ts +28 -31
- package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +2 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/inspector-runner.ts +2 -10
- package/dist/extensions/pi-subagents/src/inspectors/herdr/session-roots-codec.ts +42 -0
- package/dist/extensions/pi-subagents/src/integrations/herdr-status.ts +51 -3
- package/dist/extensions/pi-subagents/src/intercom/result-intercom.ts +2 -0
- package/dist/extensions/pi-subagents/src/profiles/profiles.ts +5 -6
- package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +77 -10
- package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +176 -53
- package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +19 -12
- package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +29 -27
- package/dist/extensions/pi-subagents/src/runs/background/async-retention.ts +20 -3
- package/dist/extensions/pi-subagents/src/runs/background/async-status-snapshot.ts +23 -261
- package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +73 -7
- package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +8 -3
- package/dist/extensions/pi-subagents/src/runs/background/chain-root-attachment.ts +74 -8
- package/dist/extensions/pi-subagents/src/runs/background/fleet-view.ts +37 -21
- package/dist/extensions/pi-subagents/src/runs/background/inspect-rpc.ts +8 -8
- package/dist/extensions/pi-subagents/src/runs/background/notify.ts +184 -9
- package/dist/extensions/pi-subagents/src/runs/background/result-delivery-ownership.ts +45 -0
- package/dist/extensions/pi-subagents/src/runs/background/result-files.ts +28 -14
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +38 -15
- package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +50 -13
- package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +93 -8
- package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +10 -4
- package/dist/extensions/pi-subagents/src/runs/background/steering.ts +4 -14
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +549 -377
- package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +58 -10
- package/dist/extensions/pi-subagents/src/runs/background/terminal-run-index.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +26 -1
- package/dist/extensions/pi-subagents/src/runs/background/wait-config.ts +23 -9
- package/dist/extensions/pi-subagents/src/runs/background/wait-tool.ts +9 -2
- package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +204 -129
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +9 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +23 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +773 -311
- package/dist/extensions/pi-subagents/src/runs/foreground/workflow-detach-reconcile.ts +140 -115
- package/dist/extensions/pi-subagents/src/runs/shared/abort-recovery.ts +119 -0
- package/dist/extensions/pi-subagents/src/runs/shared/async-status-projection.ts +463 -0
- package/dist/extensions/pi-subagents/src/runs/shared/child-identity.ts +19 -4
- package/dist/extensions/pi-subagents/src/runs/shared/child-launch-plan.ts +151 -0
- package/dist/extensions/pi-subagents/src/runs/shared/child-protocol.ts +21 -7
- package/dist/extensions/pi-subagents/src/runs/shared/claude-code-adapter.ts +129 -0
- package/dist/extensions/pi-subagents/src/runs/shared/codex-exec-adapter.ts +129 -0
- package/dist/extensions/pi-subagents/src/runs/shared/completion-evidence.ts +89 -0
- package/dist/extensions/pi-subagents/src/runs/shared/completion-guard.ts +5 -4
- package/dist/extensions/pi-subagents/src/runs/shared/cursor-agent-adapter.ts +114 -0
- package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +3 -3
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-contract.ts +167 -0
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-preflight.ts +122 -0
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-runner.ts +348 -55
- package/dist/extensions/pi-subagents/src/runs/shared/fast-mode-extension.ts +5 -5
- package/dist/extensions/pi-subagents/src/runs/shared/host-step-status.ts +230 -0
- package/dist/extensions/pi-subagents/src/runs/shared/lane-metadata.ts +105 -0
- package/dist/extensions/pi-subagents/src/runs/shared/launch-cwd.ts +16 -0
- package/dist/extensions/pi-subagents/src/runs/shared/long-running-guard.ts +2 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-config-sources.ts +422 -0
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +221 -158
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-grant.ts +197 -0
- package/dist/extensions/pi-subagents/src/runs/shared/model-exclusions.ts +69 -7
- package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +47 -6
- package/dist/extensions/pi-subagents/src/runs/shared/mutation-evidence.ts +7 -2
- package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +9 -3
- package/dist/extensions/pi-subagents/src/runs/shared/nested-render.ts +9 -5
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-handoff.ts +419 -7
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +15 -1
- package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +81 -8
- package/dist/extensions/pi-subagents/src/runs/shared/process-signal.ts +13 -0
- package/dist/extensions/pi-subagents/src/runs/shared/run-history.ts +21 -1
- package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +44 -4
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +98 -13
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-startup-retry.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/worktree-cleanup-plan.ts +847 -0
- package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +18 -0
- package/dist/extensions/pi-subagents/src/shared/child-session-name.ts +46 -0
- package/dist/extensions/pi-subagents/src/shared/extension-context.ts +24 -0
- package/dist/extensions/pi-subagents/src/shared/fork-context.ts +21 -0
- package/dist/extensions/pi-subagents/src/shared/formatters.ts +18 -3
- package/dist/extensions/pi-subagents/src/shared/launch-contract.ts +5 -1
- package/dist/extensions/pi-subagents/src/shared/pruned-fork.ts +450 -0
- package/dist/extensions/pi-subagents/src/shared/session-file-trust.ts +19 -0
- package/dist/extensions/pi-subagents/src/shared/session-tokens.ts +14 -3
- package/dist/extensions/pi-subagents/src/shared/settings.ts +19 -105
- package/dist/extensions/pi-subagents/src/shared/shortcuts.ts +17 -0
- package/dist/extensions/pi-subagents/src/shared/types.ts +359 -40
- package/dist/extensions/pi-subagents/src/shared/utils.ts +41 -84
- package/dist/extensions/pi-subagents/src/shared/workflow-child-permit.ts +116 -0
- package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -9
- package/dist/extensions/pi-subagents/src/slash/delegation-request.ts +0 -4
- package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +1 -2
- package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +378 -88
- package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +22 -11
- package/dist/extensions/pi-subagents/src/slash/subagents-admin.ts +3 -0
- package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +147 -79
- package/dist/extensions/pi-subagents/src/tui/fleet-transcript.ts +11 -5
- package/dist/extensions/pi-subagents/src/tui/fleet.ts +39 -18
- package/dist/extensions/pi-subagents/src/tui/render.ts +369 -46
- package/dist/extensions/pi-subagents/src/watchdog/turn-delta.ts +1 -1
- package/dist/extensions/pi-subagents/src/workflows/chat-progress.ts +6 -3
- package/dist/extensions/pi-subagents/src/workflows/host-command.ts +230 -0
- package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +740 -58
- package/dist/extensions/pi-subagents/src/workflows/workflow-child-summary.ts +121 -0
- package/dist/extensions/pi-subagents/src/workflows/workflow-preflight.ts +270 -0
- package/dist/extensions/pi-subagents/src/workflows/workflow-receipt.ts +195 -6
- package/dist/extensions/pi-subagents/src/workflows/workflow-settlement.ts +246 -0
- package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +1114 -260
- package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +34 -0
- package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +150 -3
- package/dist/extensions/pi-subagents/test/integration/claude-code-smoke.test.ts +52 -0
- package/dist/extensions/pi-subagents/test/integration/claude-code-writer-smoke.test.ts +55 -0
- package/dist/extensions/pi-subagents/test/integration/codex-exec-smoke.test.ts +53 -0
- package/dist/extensions/pi-subagents/test/integration/codex-exec-writer-smoke.test.ts +57 -0
- package/dist/extensions/pi-subagents/test/integration/cursor-agent-smoke.test.ts +59 -0
- package/dist/extensions/pi-subagents/test/integration/cursor-agent-writer-smoke.test.ts +62 -0
- package/dist/extensions/pi-subagents/test/integration/error-handling.test.ts +57 -1
- package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +20 -0
- package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +4 -3
- package/dist/extensions/pi-subagents/test/integration/orca-progress-tabs.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +54 -4
- package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +482 -4
- package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +157 -9
- package/dist/extensions/pi-subagents/test/integration/session-tokens.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +1508 -291
- package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +423 -1
- package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +8 -0
- package/dist/extensions/pi-subagents/test/support/cursor-smoke-inputs.ts +51 -0
- package/dist/extensions/pi-subagents/test/support/helpers.ts +2 -0
- package/dist/extensions/pi-subagents/test/support/mock-pi.ts +5 -5
- package/dist/extensions/pi-subagents/test/support/real-session-runner.ts +6 -6
- package/dist/extensions/pi-subagents/test/unit/abort-recovery.test.ts +152 -0
- package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +48 -0
- package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +184 -6
- package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +66 -6
- package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +77 -0
- package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +18 -0
- package/dist/extensions/pi-subagents/test/unit/anti-slop-oxlint.test.ts +86 -0
- package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +101 -1
- package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +121 -0
- package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +28 -0
- package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +14 -7
- package/dist/extensions/pi-subagents/test/unit/async-retention.test.ts +53 -0
- package/dist/extensions/pi-subagents/test/unit/async-status-projection.test.ts +190 -0
- package/dist/extensions/pi-subagents/test/unit/async-status-snapshot.test.ts +42 -0
- package/dist/extensions/pi-subagents/test/unit/auto-drain.test.ts +8 -4
- package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +23 -0
- package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +78 -1
- package/dist/extensions/pi-subagents/test/unit/child-launch-plan.test.ts +94 -0
- package/dist/extensions/pi-subagents/test/unit/child-protocol.test.ts +21 -0
- package/dist/extensions/pi-subagents/test/unit/child-session-name.test.ts +50 -0
- package/dist/extensions/pi-subagents/test/unit/claude-code-adapter.test.ts +245 -0
- package/dist/extensions/pi-subagents/test/unit/codex-exec-adapter.test.ts +192 -0
- package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +27 -0
- package/dist/extensions/pi-subagents/test/unit/completion-evidence.test.ts +150 -0
- package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +21 -0
- package/dist/extensions/pi-subagents/test/unit/cursor-agent-adapter.test.ts +259 -0
- package/dist/extensions/pi-subagents/test/unit/cursor-smoke-inputs.test.ts +77 -0
- package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +1 -4
- package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/extension-context.test.ts +27 -0
- package/dist/extensions/pi-subagents/test/unit/external-cli-runner.test.ts +223 -0
- package/dist/extensions/pi-subagents/test/unit/fast-mode-extension.test.ts +27 -0
- package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +208 -2
- package/dist/extensions/pi-subagents/test/unit/fleet-transcript.test.ts +29 -1
- package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +110 -1
- package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +10 -0
- package/dist/extensions/pi-subagents/test/unit/formatters.test.ts +14 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +18 -9
- package/dist/extensions/pi-subagents/test/unit/herdr-session-roots-codec.test.ts +63 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-shell-command.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +132 -0
- package/dist/extensions/pi-subagents/test/unit/host-command.test.ts +156 -0
- package/dist/extensions/pi-subagents/test/unit/host-step-status.test.ts +98 -0
- package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +178 -26
- package/dist/extensions/pi-subagents/test/unit/index-segment.test.ts +2 -1
- package/dist/extensions/pi-subagents/test/unit/inspect-rpc.test.ts +21 -0
- package/dist/extensions/pi-subagents/test/unit/mcp-direct-tool-grant.test.ts +138 -0
- package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/model-exclusions.test.ts +91 -0
- package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +72 -7
- package/dist/extensions/pi-subagents/test/unit/mutation-evidence.test.ts +21 -0
- package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +20 -2
- package/dist/extensions/pi-subagents/test/unit/notify.test.ts +129 -1
- package/dist/extensions/pi-subagents/test/unit/orca-progress-tabs.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +4 -0
- package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +358 -0
- package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +574 -21
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +109 -1
- package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +71 -1
- package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +7 -7
- package/dist/extensions/pi-subagents/test/unit/pruned-fork.test.ts +214 -0
- package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +29 -8
- package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +53 -0
- package/dist/extensions/pi-subagents/test/unit/result-delivery-ownership.test.ts +34 -0
- package/dist/extensions/pi-subagents/test/unit/result-files.test.ts +101 -3
- package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +10 -8
- package/dist/extensions/pi-subagents/test/unit/run-fanout-budget.test.ts +71 -1
- package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +41 -7
- package/dist/extensions/pi-subagents/test/unit/runtime-agent-registration.test.ts +136 -2
- package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +137 -0
- package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +33 -12
- package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +504 -1
- package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +8 -0
- package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +12 -1
- package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +3 -5
- package/dist/extensions/pi-subagents/test/unit/steering.test.ts +5 -6
- package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +0 -8
- package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +5 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +157 -2
- package/dist/extensions/pi-subagents/test/unit/subagent-startup-retry.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +63 -4
- package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +27 -23
- package/dist/extensions/pi-subagents/test/unit/wait-completions.test.ts +44 -0
- package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +7 -5
- package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +106 -0
- package/dist/extensions/pi-subagents/test/unit/workflow-detach-reconcile.test.ts +484 -9
- package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +38 -4
- package/dist/extensions/pi-subagents/test/unit/workflow-preflight.test.ts +155 -0
- package/dist/extensions/pi-subagents/test/unit/workflow-receipt.test.ts +318 -0
- package/dist/extensions/pi-subagents/test/unit/workflow-resume-hint.test.ts +365 -0
- package/dist/extensions/pi-subagents/test/unit/worktree-cleanup-plan.test.ts +349 -0
- package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +21 -0
- package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +2 -7
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/effect/index.ts +13 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/effect/rules/no-service-constructor-imports.ts +52 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/index.ts +41 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-chained-type-assertions.ts +77 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-conditional-empty-object-spread.ts +49 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-known-value-widening.ts +247 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-module-mocking.ts +91 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-object-parameters.ts +126 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-reflect-apply.ts +28 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-reflect-get.ts +28 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-runtime-typeof.ts +67 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-shape-in-symbol-names.ts +39 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-parameters.ts +83 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-returns.ts +115 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-type-aliases.ts +72 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unsafe-dictionary-type.ts +134 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-widen-then-assert.ts +366 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/require-safety-comment-for-type-assertion.ts +62 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/dictionary-types.ts +502 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/lexical-type-parameters.ts +60 -0
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/reflect-method.ts +35 -0
- package/dist/extensions/pi-tool-display/tests/capabilities.test.ts +1 -1
- package/dist/extensions/pi-tool-display/tests/settings-inspector.test.ts +2 -2
- package/dist/extensions/pi-tool-display/tests/tool-overrides-mcp.test.ts +1 -1
- package/dist/extensions/pi-zentui/extensions/zentui/format.ts +2 -1
- package/dist/extensions/pi-zentui/test/format.test.ts +15 -1
- package/dist/modes/interactive/components/footer.js +2 -2
- package/dist/modes/interactive/interactive-mode.js +11 -11
- package/dist/skills/workflow/SKILL.md +65 -50
- package/package.json +112 -110
- package/dist/extensions/enable-readonly-tools.test.ts +0 -63
- package/dist/extensions/enable-readonly-tools.ts +0 -24
- package/dist/extensions/model-prompt-injector/config.json +0 -16
- package/dist/extensions/model-prompt-injector/index.test.ts +0 -102
- package/dist/extensions/model-prompt-injector/index.ts +0 -148
- package/dist/extensions/pi-subagents/src/runs/shared/turn-budget.ts +0 -98
- package/dist/extensions/pi-subagents/test/unit/turn-budget.test.ts +0 -250
|
@@ -5,29 +5,30 @@
|
|
|
5
5
|
import { spawn } from "node:child_process";
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
7
7
|
import * as fs from "node:fs";
|
|
8
|
-
import * as os from "node:os";
|
|
9
8
|
import * as path from "node:path";
|
|
10
9
|
import { fileURLToPath } from "node:url";
|
|
11
10
|
import { createRequire } from "node:module";
|
|
12
11
|
import type { ExtensionAPI } from "@selesai/code";
|
|
13
|
-
import type
|
|
12
|
+
import { discoverAgents, formatUnknownAgentError, unknownAgentDiagnosticContext, type AgentConfig, type UnknownAgentDiagnosticContext } from "../../agents/agents.ts";
|
|
14
13
|
import { appendAgentRefinementOverlay } from "../../agents/agent-refinements.ts";
|
|
15
14
|
import { writePrivateAtomicJson } from "../../shared/atomic-json.ts";
|
|
16
15
|
import { currentCompletionOwnerId } from "../../shared/completion-owner.ts";
|
|
16
|
+
import { planChildLaunch, resolveStepBehavior, suppressProgressForReadOnlyTask, type ResolvedStepBehavior } from "../shared/child-launch-plan.ts";
|
|
17
17
|
import { applyThinkingSuffix, projectLaunchResolvedChildExtensions, resolvePiLaunchToolPlan } from "../shared/pi-args.ts";
|
|
18
18
|
import { injectOutputPathSystemPrompt, injectSingleOutputInstruction, normalizeSingleOutputOverride, resolveSingleOutputPath, validateFileOnlyOutputMode } from "../shared/single-output.ts";
|
|
19
|
-
import { buildChainInstructions, isDynamicParallelStep, isParallelStep,
|
|
19
|
+
import { buildChainInstructions, isDynamicParallelStep, isParallelStep, resolveExistingReadPaths, writeInitialProgressFile, type ChainStep, type SequentialStep, type StepOverrides } from "../../shared/settings.ts";
|
|
20
20
|
import type { RunnerStep } from "../shared/parallel-utils.ts";
|
|
21
21
|
import type { ContextMode } from "../shared/context-mode.ts";
|
|
22
22
|
import { resolvePiPackageRoot } from "../shared/pi-spawn.ts";
|
|
23
|
+
import { preflightLaunchCwd } from "../shared/launch-cwd.ts";
|
|
23
24
|
import { resolveNodeExecutable } from "../../shared/node-executable.ts";
|
|
24
25
|
import { buildSkillInjection, normalizeSkillInput, resolveSkillsWithFallback } from "../../agents/skills.ts";
|
|
25
26
|
import { buildAgentMemoryInjection } from "../../agents/agent-memory.ts";
|
|
26
27
|
import { SELESAI_CODING_AGENT_PACKAGE_ROOT_ENV, PROMPT_REDACTED, resolveChildCwd } from "../../shared/utils.ts";
|
|
27
|
-
import { buildModelCandidates, inheritsParentModel, resolveEffectiveSubagentModel,
|
|
28
|
+
import { buildModelCandidates, inheritsParentModel, resolveEffectiveSubagentModel, resolveSubagentModelOverride, type AvailableModelInfo, type ParentModel } from "../shared/model-fallback.ts";
|
|
28
29
|
import { resolveToolTimeoutMs, toolTimeoutFromEnv } from "../shared/tool-timeout.ts";
|
|
29
30
|
import { resolveModelScopesForAgent, type ModelScopeConfig } from "../shared/model-scope.ts";
|
|
30
|
-
import { resolveEffectiveThinking } from "../../shared/model-info.ts";
|
|
31
|
+
import { findModelInfo, resolveEffectiveThinking } from "../../shared/model-info.ts";
|
|
31
32
|
import { assertThinkingWithinCeiling, decodeThinkingCeiling, intersectThinkingCeilings, SUBAGENT_THINKING_CEILING_ENV, type ThinkingLevel } from "../../shared/thinking-ceiling.ts";
|
|
32
33
|
import { resolveExpectedWorktreeAgentCwd } from "../shared/worktree.ts";
|
|
33
34
|
import { buildWorkflowGraphSnapshot } from "../shared/workflow-graph.ts";
|
|
@@ -39,6 +40,7 @@ import { validateImplementationToolContract } from "../shared/completion-guard.t
|
|
|
39
40
|
import {
|
|
40
41
|
type AcceptanceInput,
|
|
41
42
|
type AgentContract,
|
|
43
|
+
type AsyncParallelGroupStatus,
|
|
42
44
|
type AsyncStatus,
|
|
43
45
|
type ArtifactConfig,
|
|
44
46
|
type Details,
|
|
@@ -47,12 +49,12 @@ import {
|
|
|
47
49
|
type MaxOutputConfig,
|
|
48
50
|
type NestedRouteInfo,
|
|
49
51
|
type ResolvedControlConfig,
|
|
50
|
-
type ResolvedTurnBudget,
|
|
51
52
|
type ResolvedToolBudget,
|
|
52
53
|
type RunFanoutBudgetDescriptor,
|
|
53
54
|
type ToolBudgetConfig,
|
|
54
55
|
type SubagentRunMode,
|
|
55
56
|
type SteeringRecoveryDescriptor,
|
|
57
|
+
type WorkflowLaneMetadata,
|
|
56
58
|
type UsageBudgetConfig,
|
|
57
59
|
DIRS,
|
|
58
60
|
SUBAGENT_ASYNC_STARTED_EVENT,
|
|
@@ -63,18 +65,19 @@ import {
|
|
|
63
65
|
} from "../../shared/types.ts";
|
|
64
66
|
import { nestedResultsPath, nestedSummaryFromAsyncStatus, resolveInheritedNestedRouteFromEnv, resolveNestedParentAddressFromEnv, writeNestedEvent } from "../shared/nested-events.ts";
|
|
65
67
|
import { resultFilePath } from "./result-files.ts";
|
|
66
|
-
import { appendTurnBudgetSystemPrompt, initialTurnBudgetState } from "../shared/turn-budget.ts";
|
|
67
68
|
import { validateToolBudgetConfig } from "../shared/tool-budget.ts";
|
|
68
69
|
import { usageBudgetState } from "../shared/usage-budget.ts";
|
|
69
70
|
import type { ImportedAsyncRoot } from "./chain-root-attachment.ts";
|
|
70
71
|
import type { SessionLeaseRequest } from "../shared/session-lease.ts";
|
|
71
72
|
import { finalizeProcessTerminal, readProcessTerminal } from "./process-terminal.ts";
|
|
72
73
|
import type { ActiveAsyncCapacityHandle } from "./active-async-capacity.ts";
|
|
74
|
+
import { statusStepDescription } from "./chain-append.ts";
|
|
73
75
|
import { SUBAGENT_PROCESS_TERMINAL_EVENT } from "../../shared/types.ts";
|
|
74
76
|
import { assertAgentAllowedByCapabilityCeiling, decodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, resolveCurrentSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV, type ResolvedSubagentCapabilityCeiling } from "../shared/capability-ceiling.ts";
|
|
75
77
|
import { agentDefinitionDigest, launchBindingDigest } from "../../shared/launch-contract.ts";
|
|
76
78
|
import { resolvePermissionRules, type PermissionConfig } from "../shared/permissions.ts";
|
|
77
79
|
import { normalizeExtensionBindings, omitExtensionBindingsEnv, type ExtensionBindings } from "../shared/extension-bindings.ts";
|
|
80
|
+
import { assertWorkflowLaneKey, normalizeWorkflowLaneMetadata } from "../shared/lane-metadata.ts";
|
|
78
81
|
|
|
79
82
|
const require = createRequire(import.meta.url);
|
|
80
83
|
const piPackageRoot = resolvePiPackageRoot();
|
|
@@ -151,6 +154,8 @@ interface AsyncChainParams {
|
|
|
151
154
|
attachRoot?: ImportedAsyncRoot & { agent: string; outputName?: string; label?: string };
|
|
152
155
|
resultMode?: SubagentRunMode;
|
|
153
156
|
agents: AgentConfig[];
|
|
157
|
+
/** Original discovery provenance, retained by normal callers for unknown-agent diagnostics. */
|
|
158
|
+
unknownAgentDiagnosticContext?: UnknownAgentDiagnosticContext;
|
|
154
159
|
ctx: AsyncExecutionContext;
|
|
155
160
|
availableModels?: AvailableModelInfo[];
|
|
156
161
|
cwd?: string;
|
|
@@ -168,6 +173,7 @@ interface AsyncChainParams {
|
|
|
168
173
|
dynamicFanoutMaxItems?: number;
|
|
169
174
|
maxSubagentDepth: number;
|
|
170
175
|
waitToolEnabled?: boolean;
|
|
176
|
+
waitToolDefaultTimeoutMs?: number;
|
|
171
177
|
worktreeSetupHook?: string;
|
|
172
178
|
worktreeSetupHookTimeoutMs?: number;
|
|
173
179
|
worktreeBaseDir?: string;
|
|
@@ -178,7 +184,6 @@ interface AsyncChainParams {
|
|
|
178
184
|
acceptance?: AcceptanceInput;
|
|
179
185
|
fast?: boolean;
|
|
180
186
|
timeoutMs?: number;
|
|
181
|
-
turnBudget?: ResolvedTurnBudget;
|
|
182
187
|
toolBudget?: ResolvedToolBudget;
|
|
183
188
|
usageBudget?: UsageBudgetConfig;
|
|
184
189
|
configToolBudget?: ResolvedToolBudget;
|
|
@@ -195,6 +200,7 @@ interface AsyncChainParams {
|
|
|
195
200
|
runFanoutBudget?: RunFanoutBudgetDescriptor;
|
|
196
201
|
parentWorkflowRunId?: string;
|
|
197
202
|
workflowKey?: string;
|
|
203
|
+
lane?: WorkflowLaneMetadata;
|
|
198
204
|
activeAsyncCapacity?: ActiveAsyncCapacityHandle;
|
|
199
205
|
}
|
|
200
206
|
|
|
@@ -208,6 +214,7 @@ interface AsyncSingleParams {
|
|
|
208
214
|
recoveryAgentConfig?: AgentConfig;
|
|
209
215
|
ctx: AsyncExecutionContext;
|
|
210
216
|
cwd?: string;
|
|
217
|
+
requestedCwd?: string;
|
|
211
218
|
maxOutput?: MaxOutputConfig;
|
|
212
219
|
artifactsDir?: string;
|
|
213
220
|
artifactConfig: ArtifactConfig;
|
|
@@ -222,6 +229,7 @@ interface AsyncSingleParams {
|
|
|
222
229
|
reads?: string[] | false;
|
|
223
230
|
outputMode?: "inline" | "file-only";
|
|
224
231
|
outputBaseDir?: string;
|
|
232
|
+
outputClaimPath?: string;
|
|
225
233
|
agentContract?: AgentContract;
|
|
226
234
|
structuredOutputSchema?: JsonSchemaObject;
|
|
227
235
|
modelOverride?: string;
|
|
@@ -231,6 +239,7 @@ interface AsyncSingleParams {
|
|
|
231
239
|
availableModels?: AvailableModelInfo[];
|
|
232
240
|
maxSubagentDepth: number;
|
|
233
241
|
waitToolEnabled?: boolean;
|
|
242
|
+
waitToolDefaultTimeoutMs?: number;
|
|
234
243
|
worktreeSetupHook?: string;
|
|
235
244
|
worktreeSetupHookTimeoutMs?: number;
|
|
236
245
|
worktreeBaseDir?: string;
|
|
@@ -245,7 +254,6 @@ interface AsyncSingleParams {
|
|
|
245
254
|
absoluteDeadlineAt?: number;
|
|
246
255
|
/** Optional per-call hard toolTimeoutMs override (highest precedence). */
|
|
247
256
|
toolTimeoutMs?: number;
|
|
248
|
-
turnBudget?: { maxTurns: number; graceTurns?: number };
|
|
249
257
|
toolBudget?: ResolvedToolBudget | ToolBudgetConfig;
|
|
250
258
|
usageBudget?: UsageBudgetConfig;
|
|
251
259
|
configToolBudget?: ResolvedToolBudget;
|
|
@@ -259,6 +267,7 @@ interface AsyncSingleParams {
|
|
|
259
267
|
runFanoutBudget?: RunFanoutBudgetDescriptor;
|
|
260
268
|
parentWorkflowRunId?: string;
|
|
261
269
|
workflowKey?: string;
|
|
270
|
+
lane?: WorkflowLaneMetadata;
|
|
262
271
|
workflowAwaitAsync?: boolean;
|
|
263
272
|
activeAsyncCapacity?: ActiveAsyncCapacityHandle;
|
|
264
273
|
externalJobFollowUp?: {
|
|
@@ -283,6 +292,8 @@ export interface AsyncRunnerStepBuildParams {
|
|
|
283
292
|
attachRoot?: ImportedAsyncRoot & { agent: string; outputName?: string; label?: string };
|
|
284
293
|
resultMode?: SubagentRunMode;
|
|
285
294
|
agents: AgentConfig[];
|
|
295
|
+
/** Exact discovery provenance for failed resolution; omission triggers defensive fallback discovery. */
|
|
296
|
+
unknownAgentDiagnosticContext?: UnknownAgentDiagnosticContext;
|
|
286
297
|
ctx: AsyncExecutionContext;
|
|
287
298
|
availableModels?: AvailableModelInfo[];
|
|
288
299
|
cwd?: string;
|
|
@@ -295,6 +306,7 @@ export interface AsyncRunnerStepBuildParams {
|
|
|
295
306
|
dynamicFanoutMaxItems?: number;
|
|
296
307
|
maxSubagentDepth: number;
|
|
297
308
|
waitToolEnabled?: boolean;
|
|
309
|
+
waitToolDefaultTimeoutMs?: number;
|
|
298
310
|
worktreeBaseDir?: string;
|
|
299
311
|
asyncDir: string;
|
|
300
312
|
outputBaseDir?: string;
|
|
@@ -493,24 +505,33 @@ interface SpawnRunnerResult {
|
|
|
493
505
|
startupDidNotProceed?: boolean;
|
|
494
506
|
}
|
|
495
507
|
|
|
496
|
-
function
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
}
|
|
508
|
+
function isStaleExtensionContextError(error: unknown): boolean {
|
|
509
|
+
return error instanceof Error && /extension ctx is stale|stale after session replacement or reload/i.test(error.message);
|
|
510
|
+
}
|
|
500
511
|
|
|
512
|
+
export function emitProcessTerminalEvent(ctx: AsyncExecutionContext, proof: unknown): void {
|
|
501
513
|
try {
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
}
|
|
507
|
-
|
|
514
|
+
ctx.pi.events.emit(SUBAGENT_PROCESS_TERMINAL_EVENT, proof);
|
|
515
|
+
} catch (error) {
|
|
516
|
+
if (isStaleExtensionContextError(error)) return;
|
|
517
|
+
console.error("Failed to emit subagent process-terminal event:", error);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
function spawnRunner(cfg: object, suffix: string, cwd: string, initialStatus: Omit<AsyncStatus, "pid" | "processTerminal">, initialStatusPath: string, onProcessTerminal?: (proof: unknown) => void, requestedCwd = cwd): SpawnRunnerResult {
|
|
522
|
+
const cwdError = preflightLaunchCwd(requestedCwd, cwd);
|
|
523
|
+
if (cwdError) return { error: cwdError };
|
|
524
|
+
|
|
525
|
+
if (!jitiCliPath) {
|
|
526
|
+
return { error: "upstream jiti for TypeScript execution could not be found; ensure package dependencies are installed" };
|
|
508
527
|
}
|
|
509
528
|
|
|
510
529
|
fs.mkdirSync(TEMP_ROOT_DIR, { recursive: true });
|
|
511
530
|
const cfgPath = getAsyncConfigPath(suffix);
|
|
512
531
|
const runnerProcessInstanceId = randomUUID();
|
|
513
|
-
const
|
|
532
|
+
const hasRevivalLease = typeof (cfg as { revivalLease?: unknown }).revivalLease === "object";
|
|
533
|
+
const launchBarrierToken = hasRevivalLease ? undefined : runnerProcessInstanceId;
|
|
534
|
+
const launchConfig = { ...cfg, runnerProcessInstanceId, ...(launchBarrierToken ? { launchBarrierToken } : {}) };
|
|
514
535
|
writePrivateAtomicJson(cfgPath, launchConfig);
|
|
515
536
|
const runner = path.join(path.dirname(fileURLToPath(import.meta.url)), "subagent-runner.ts");
|
|
516
537
|
const nodeCommand = resolveNodeExecutable();
|
|
@@ -523,7 +544,9 @@ function spawnRunner(cfg: object, suffix: string, cwd: string, onProcessTerminal
|
|
|
523
544
|
? path.join(launchAsyncDir, "runner-startup.json")
|
|
524
545
|
: undefined;
|
|
525
546
|
const startupAckPath = startupPath ? path.join(path.dirname(startupPath), "runner-startup-ack.json") : undefined;
|
|
526
|
-
const startupProceedPath =
|
|
547
|
+
const startupProceedPath = launchAsyncDir && (startupPath || launchBarrierToken)
|
|
548
|
+
? path.join(launchAsyncDir, "runner-startup-proceed.json")
|
|
549
|
+
: undefined;
|
|
527
550
|
if (startupPath) fs.rmSync(startupPath, { force: true });
|
|
528
551
|
if (startupAckPath) fs.rmSync(startupAckPath, { force: true });
|
|
529
552
|
if (startupProceedPath) fs.rmSync(startupProceedPath, { force: true });
|
|
@@ -605,6 +628,27 @@ function spawnRunner(cfg: object, suffix: string, cwd: string, onProcessTerminal
|
|
|
605
628
|
if (typeof proc.pid !== "number") {
|
|
606
629
|
return { error: `async runner did not produce a pid for cwd: ${cwd}` };
|
|
607
630
|
}
|
|
631
|
+
try {
|
|
632
|
+
writePrivateAtomicJson(initialStatusPath, {
|
|
633
|
+
...initialStatus,
|
|
634
|
+
pid: proc.pid,
|
|
635
|
+
processTerminal: { version: 1, state: "pending", runId: initialStatus.runId, runnerProcessInstanceId },
|
|
636
|
+
});
|
|
637
|
+
} catch (error) {
|
|
638
|
+
const message = `Failed to persist initial async status: ${error instanceof Error ? error.message : String(error)}`;
|
|
639
|
+
const terminationObserved = terminateRunnerBeforeProceed(proc.pid);
|
|
640
|
+
return { pid: proc.pid, runnerProcessInstanceId, error: message, terminationObserved, startupDidNotProceed: true };
|
|
641
|
+
}
|
|
642
|
+
if (launchBarrierToken && startupProceedPath) {
|
|
643
|
+
try {
|
|
644
|
+
writeRunnerStartupControl(startupProceedPath, { action: "proceed", token: launchBarrierToken });
|
|
645
|
+
} catch (error) {
|
|
646
|
+
const message = `Failed to authorize async runner startup: ${error instanceof Error ? error.message : String(error)}`;
|
|
647
|
+
if (launchAsyncDir) persistPreProceedStartupFailure(launchAsyncDir, launchRunId, runnerProcessInstanceId, launchSessionId, launchCompletionOwnerId, message);
|
|
648
|
+
const terminationObserved = terminateRunnerBeforeProceed(proc.pid);
|
|
649
|
+
return { pid: proc.pid, runnerProcessInstanceId, error: message, terminationObserved, startupDidNotProceed: true };
|
|
650
|
+
}
|
|
651
|
+
}
|
|
608
652
|
proc.unref();
|
|
609
653
|
if (startupPath && startupAckPath && startupProceedPath) {
|
|
610
654
|
const persistStartupFailure = (message: string) => {
|
|
@@ -709,6 +753,8 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
709
753
|
}
|
|
710
754
|
const workflowGraph = buildWorkflowGraphSnapshot({ runId: id, mode: resultMode, steps: graphChain });
|
|
711
755
|
|
|
756
|
+
const diagnosticContext = params.unknownAgentDiagnosticContext
|
|
757
|
+
?? unknownAgentDiagnosticContext(discoverAgents(path.resolve(runnerCwd), "both"));
|
|
712
758
|
for (const s of chain) {
|
|
713
759
|
const stepAgents = isParallelStep(s)
|
|
714
760
|
? s.parallel.map((t) => t.agent)
|
|
@@ -716,9 +762,7 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
716
762
|
? [s.parallel.agent]
|
|
717
763
|
: [(s as SequentialStep).agent];
|
|
718
764
|
for (const agentName of stepAgents) {
|
|
719
|
-
if (!agents.find((x) => x.name === agentName)) {
|
|
720
|
-
return { error: `Unknown agent: ${agentName}` };
|
|
721
|
-
}
|
|
765
|
+
if (!agents.find((x) => x.name === agentName)) return { error: formatUnknownAgentError(agentName, diagnosticContext) };
|
|
722
766
|
}
|
|
723
767
|
}
|
|
724
768
|
|
|
@@ -764,19 +808,21 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
764
808
|
envValue: params.toolTimeoutMsEnv ?? toolTimeoutFromEnv(),
|
|
765
809
|
});
|
|
766
810
|
if (resolvedToolTimeout.error) throw new AsyncStartValidationError(resolvedToolTimeout.error);
|
|
767
|
-
const
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
811
|
+
const launchPlan = planChildLaunch({
|
|
812
|
+
agentConfig: a,
|
|
813
|
+
stepOverrides: buildStepOverrides(s),
|
|
814
|
+
task: s.task,
|
|
815
|
+
originalTask,
|
|
816
|
+
runnerCwd,
|
|
817
|
+
runtimeCwd: ctx.cwd,
|
|
818
|
+
stepCwdInput: s.cwd,
|
|
819
|
+
behaviorCwd,
|
|
820
|
+
chainSkills,
|
|
821
|
+
outputBaseDir,
|
|
822
|
+
parallelOutputNamespace,
|
|
823
|
+
resolvedBehavior,
|
|
824
|
+
});
|
|
825
|
+
const { stepCwd, instructionCwd, readExistenceCwd, behavior, namespaceOutputPath, outputPath, skillNames } = launchPlan;
|
|
780
826
|
const { resolved: resolvedSkills, missing: missingSkills } = resolveSkillsWithFallback(
|
|
781
827
|
skillNames,
|
|
782
828
|
stepCwd,
|
|
@@ -801,7 +847,6 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
801
847
|
const isFirstProgressAgent = behavior.progress && !progressPrecreated && !progressInstructionCreated;
|
|
802
848
|
if (behavior.progress) progressInstructionCreated = true;
|
|
803
849
|
const progressInstructions = buildChainInstructions({ ...behavior, output: false, reads: false }, progressDir, isFirstProgressAgent);
|
|
804
|
-
const outputPath = resolveSingleOutputPath(behavior.output, ctx.cwd, instructionCwd, outputBaseDir);
|
|
805
850
|
if (!namespaceOutputPath) systemPrompt = injectOutputPathSystemPrompt(systemPrompt, outputPath, a);
|
|
806
851
|
const validationError = validateFileOnlyOutputMode(behavior.outputMode, outputPath, `Async step (${s.agent})`);
|
|
807
852
|
if (validationError) throw new AsyncStartValidationError(validationError);
|
|
@@ -824,6 +869,7 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
824
869
|
const thinkingOverride = flatIndex === undefined ? undefined : thinkingOverridesByFlatIndex?.[flatIndex];
|
|
825
870
|
const effectiveThinking = externalRunner ? undefined : thinkingOverride ?? a.thinking;
|
|
826
871
|
const model = externalRunner ? undefined : applyThinkingSuffix(primaryModel, effectiveThinking, thinkingOverride !== undefined);
|
|
872
|
+
const contextLimit = model ? findModelInfo(model, availableModels, a.modelProvider ?? ctx.currentModelProvider)?.contextWindow : undefined;
|
|
827
873
|
const thinkingCeiling = externalRunner ? undefined : intersectThinkingCeilings(
|
|
828
874
|
params.thinkingCeiling,
|
|
829
875
|
a.maxThinking,
|
|
@@ -855,6 +901,7 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
855
901
|
const fast = s.fast ?? params.fast ?? a.fast;
|
|
856
902
|
const toolPlan = resolvePiLaunchToolPlan({
|
|
857
903
|
tools: a.tools,
|
|
904
|
+
allowNestedSubagents: a.allowNestedSubagents,
|
|
858
905
|
extensions: a.extensions,
|
|
859
906
|
subagentOnlyExtensions: a.subagentOnlyExtensions,
|
|
860
907
|
mcpDirectTools: a.mcpDirectTools,
|
|
@@ -868,6 +915,7 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
868
915
|
inheritedCapabilityCeiling: decodeSubagentCapabilityCeiling(process.env[SUBAGENT_CAPABILITY_CEILING_ENV]),
|
|
869
916
|
agentName: a.name,
|
|
870
917
|
permissionRules,
|
|
918
|
+
runtimeSnapshotHost: ctx.pi,
|
|
871
919
|
});
|
|
872
920
|
const launchResolvedExtensions = externalRunner ? undefined : projectLaunchResolvedChildExtensions(toolPlan);
|
|
873
921
|
if (externalRunner && permissionRules) {
|
|
@@ -902,22 +950,29 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
902
950
|
outputName: s.as,
|
|
903
951
|
structured: Boolean(s.outputSchema),
|
|
904
952
|
cwd: stepCwd,
|
|
953
|
+
requestedCwd: s.cwd ?? stepCwd,
|
|
905
954
|
model,
|
|
955
|
+
...(contextLimit !== undefined ? { contextLimit } : {}),
|
|
906
956
|
...(fast !== undefined ? { fast } : {}),
|
|
907
957
|
thinking: resolveEffectiveThinking(model, effectiveThinking),
|
|
908
958
|
...(thinkingCeiling ? { thinkingCeiling } : {}),
|
|
909
959
|
launchResolvedExtensions,
|
|
960
|
+
...(toolPlan.mcpConfig ? { mcpConfig: toolPlan.mcpConfig } : {}),
|
|
961
|
+
...(toolPlan.runtimeServerNames ? { runtimeServerNames: toolPlan.runtimeServerNames } : {}),
|
|
910
962
|
modelCandidates: externalRunner ? undefined : modelCandidates,
|
|
911
963
|
...(primaryModelFromParent ? { skipPrimaryModelVerification: true } : {}),
|
|
912
964
|
...(availableModels && availableModels.length > 0 ? { modelVerificationRegistry: availableModels } : {}),
|
|
913
965
|
tools: a.tools,
|
|
966
|
+
allowNestedSubagents: a.allowNestedSubagents,
|
|
914
967
|
extensions: a.extensions,
|
|
915
968
|
subagentOnlyExtensions: a.subagentOnlyExtensions,
|
|
916
969
|
mcpDirectTools: a.mcpDirectTools,
|
|
970
|
+
mutationTools: a.mutationTools,
|
|
917
971
|
completionGuard: a.completionGuard,
|
|
918
972
|
systemPrompt,
|
|
919
973
|
systemPromptMode: a.systemPromptMode,
|
|
920
974
|
inheritProjectContext: a.inheritProjectContext,
|
|
975
|
+
inheritGlobalContext: a.inheritGlobalContext,
|
|
921
976
|
inheritSkills: a.inheritSkills,
|
|
922
977
|
skills: resolvedSkills.map((r) => r.name),
|
|
923
978
|
outputPath,
|
|
@@ -928,6 +983,7 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
928
983
|
timeoutMs: a.defaultTimeoutMs ?? DEFAULT_ASYNC_TIMEOUT_MS,
|
|
929
984
|
toolTimeoutMs: resolvedToolTimeout.toolTimeoutMs,
|
|
930
985
|
waitToolEnabled: params.waitToolEnabled,
|
|
986
|
+
waitToolDefaultTimeoutMs: params.waitToolDefaultTimeoutMs,
|
|
931
987
|
effectiveAcceptance: resolveEffectiveAcceptance({
|
|
932
988
|
explicit: s.acceptance,
|
|
933
989
|
agentName: s.agent,
|
|
@@ -1054,6 +1110,7 @@ export function buildAsyncRunnerSteps(id: string, params: AsyncRunnerStepBuildPa
|
|
|
1054
1110
|
index: params.attachRoot.index,
|
|
1055
1111
|
},
|
|
1056
1112
|
inheritProjectContext: false,
|
|
1113
|
+
inheritGlobalContext: false,
|
|
1057
1114
|
inheritSkills: false,
|
|
1058
1115
|
}, ...builtSteps]
|
|
1059
1116
|
: builtSteps;
|
|
@@ -1140,6 +1197,7 @@ export function executeAsyncChain(
|
|
|
1140
1197
|
attachRoot: params.attachRoot,
|
|
1141
1198
|
resultMode,
|
|
1142
1199
|
agents,
|
|
1200
|
+
unknownAgentDiagnosticContext: params.unknownAgentDiagnosticContext,
|
|
1143
1201
|
ctx,
|
|
1144
1202
|
availableModels: params.availableModels,
|
|
1145
1203
|
cwd,
|
|
@@ -1153,6 +1211,7 @@ export function executeAsyncChain(
|
|
|
1153
1211
|
dynamicFanoutMaxItems: params.dynamicFanoutMaxItems,
|
|
1154
1212
|
maxSubagentDepth,
|
|
1155
1213
|
waitToolEnabled: params.waitToolEnabled,
|
|
1214
|
+
waitToolDefaultTimeoutMs: params.waitToolDefaultTimeoutMs,
|
|
1156
1215
|
worktreeBaseDir,
|
|
1157
1216
|
asyncDir,
|
|
1158
1217
|
fast: params.fast,
|
|
@@ -1174,7 +1233,6 @@ export function executeAsyncChain(
|
|
|
1174
1233
|
}
|
|
1175
1234
|
const { steps, runnerCwd, workflowGraph, eventChain } = built;
|
|
1176
1235
|
const deadlineAt = params.timeoutMs !== undefined ? Date.now() + params.timeoutMs : undefined;
|
|
1177
|
-
const initialTurnBudget = params.turnBudget ? initialTurnBudgetState(params.turnBudget) : undefined;
|
|
1178
1236
|
const initialUsageBudget = usageBudgetState(params.usageBudget, undefined);
|
|
1179
1237
|
let childTargetIndex = 0;
|
|
1180
1238
|
const childIntercomTargets = childIntercomTarget ? steps.flatMap((step) => {
|
|
@@ -1191,6 +1249,21 @@ export function executeAsyncChain(
|
|
|
1191
1249
|
}
|
|
1192
1250
|
return "agent" in step ? [childIntercomTarget(step.agent, childTargetIndex++)] : [undefined];
|
|
1193
1251
|
}) : undefined;
|
|
1252
|
+
const initialStatusSteps = eventChain.flatMap((step) => isParallelStep(step)
|
|
1253
|
+
? step.parallel.map((task) => ({ agent: task.agent, ...(statusStepDescription(task.task) ? { description: statusStepDescription(task.task) } : {}), ...(task.label ? { label: task.label } : {}), ...(task.as ? { outputName: task.as } : {}), status: "pending" as const }))
|
|
1254
|
+
: isDynamicParallelStep(step)
|
|
1255
|
+
? [{ agent: `expand:${step.parallel.agent}`, label: step.label ?? step.parallel.label ?? `Dynamic fanout (${step.collect.as})`, outputName: step.collect.as, status: "pending" as const }]
|
|
1256
|
+
: [{ agent: (step as SequentialStep).agent, ...(statusStepDescription((step as SequentialStep).task) ? { description: statusStepDescription((step as SequentialStep).task) } : {}), ...((step as SequentialStep).label ? { label: (step as SequentialStep).label } : {}), ...((step as SequentialStep).as ? { outputName: (step as SequentialStep).as } : {}), status: "pending" as const }]);
|
|
1257
|
+
const initialParallelGroups: AsyncParallelGroupStatus[] = [];
|
|
1258
|
+
let initialFlatIndex = 0;
|
|
1259
|
+
for (let stepIndex = 0; stepIndex < eventChain.length; stepIndex++) {
|
|
1260
|
+
const step = eventChain[stepIndex]!;
|
|
1261
|
+
if (isParallelStep(step)) initialParallelGroups.push({ start: initialFlatIndex, count: step.parallel.length, stepIndex });
|
|
1262
|
+
else if (isDynamicParallelStep(step)) initialParallelGroups.push({ start: initialFlatIndex, count: 1, stepIndex });
|
|
1263
|
+
initialFlatIndex += isParallelStep(step) ? step.parallel.length : 1;
|
|
1264
|
+
}
|
|
1265
|
+
const initialStatusAt = Date.now();
|
|
1266
|
+
const initialCompletionOwnerId = ctx.completionOwnerId ?? currentCompletionOwnerId();
|
|
1194
1267
|
|
|
1195
1268
|
let spawnResult: SpawnRunnerResult = {};
|
|
1196
1269
|
try {
|
|
@@ -1216,7 +1289,6 @@ export function executeAsyncChain(
|
|
|
1216
1289
|
worktreeSetupHookTimeoutMs,
|
|
1217
1290
|
worktreeBaseDir,
|
|
1218
1291
|
controlConfig,
|
|
1219
|
-
turnBudget: params.turnBudget,
|
|
1220
1292
|
toolBudget: params.toolBudget,
|
|
1221
1293
|
usageBudget: params.usageBudget,
|
|
1222
1294
|
controlIntercomTarget,
|
|
@@ -1240,7 +1312,22 @@ export function executeAsyncChain(
|
|
|
1240
1312
|
},
|
|
1241
1313
|
id,
|
|
1242
1314
|
runnerCwd,
|
|
1243
|
-
|
|
1315
|
+
{
|
|
1316
|
+
lifecycleArtifactVersion: SUBAGENT_LIFECYCLE_ARTIFACT_VERSION,
|
|
1317
|
+
runId: id,
|
|
1318
|
+
...(ctx.currentSessionId ? { sessionId: ctx.currentSessionId } : {}),
|
|
1319
|
+
...(initialCompletionOwnerId ? { completionOwnerId: initialCompletionOwnerId } : {}),
|
|
1320
|
+
mode: resultMode,
|
|
1321
|
+
state: "running",
|
|
1322
|
+
startedAt: initialStatusAt,
|
|
1323
|
+
lastUpdate: initialStatusAt,
|
|
1324
|
+
currentStep: 0,
|
|
1325
|
+
chainStepCount: eventChain.length,
|
|
1326
|
+
...(initialParallelGroups.length ? { parallelGroups: initialParallelGroups } : {}),
|
|
1327
|
+
steps: initialStatusSteps,
|
|
1328
|
+
},
|
|
1329
|
+
path.join(asyncDir, "status.json"),
|
|
1330
|
+
(proof) => emitProcessTerminalEvent(ctx, proof),
|
|
1244
1331
|
);
|
|
1245
1332
|
} catch (error) {
|
|
1246
1333
|
params.activeAsyncCapacity?.rollback();
|
|
@@ -1320,7 +1407,6 @@ export function executeAsyncChain(
|
|
|
1320
1407
|
chainStepCount: eventChain.length,
|
|
1321
1408
|
parallelGroups,
|
|
1322
1409
|
...(params.timeoutMs !== undefined ? { timeoutMs: params.timeoutMs, deadlineAt } : {}),
|
|
1323
|
-
...(initialTurnBudget ? { turnBudget: initialTurnBudget } : {}),
|
|
1324
1410
|
startedAt: now,
|
|
1325
1411
|
lastUpdate: now,
|
|
1326
1412
|
...(capabilityCeiling ? { capabilityCeiling } : {}),
|
|
@@ -1351,7 +1437,6 @@ export function executeAsyncChain(
|
|
|
1351
1437
|
asyncDir,
|
|
1352
1438
|
...(sessionRoot ? { sessionRoot } : {}),
|
|
1353
1439
|
...(params.timeoutMs !== undefined ? { timeoutMs: params.timeoutMs, deadlineAt } : {}),
|
|
1354
|
-
...(initialTurnBudget ? { turnBudget: initialTurnBudget } : {}),
|
|
1355
1440
|
...(initialUsageBudget ? { usageBudget: initialUsageBudget } : {}),
|
|
1356
1441
|
...(capabilityCeiling ? { capabilityCeiling } : {}),
|
|
1357
1442
|
...(params.parentWorkflowRunId ? { parentWorkflowRunId: params.parentWorkflowRunId } : {}),
|
|
@@ -1368,7 +1453,7 @@ export function executeAsyncChain(
|
|
|
1368
1453
|
|
|
1369
1454
|
return {
|
|
1370
1455
|
content: [{ type: "text", text: formatAsyncStartedMessage(`Async ${resultMode}: ${chainDesc} [${id}]`, ctx.interactive === true) }],
|
|
1371
|
-
details: { mode: resultMode, runId: id, results: [], asyncId: id, asyncDir, workflowGraph, ...(capabilityCeiling ? { capabilityCeiling } : {}), ...(params.parentWorkflowRunId ? { parentWorkflowRunId: params.parentWorkflowRunId } : {}), ...(params.workflowKey ? { workflowKey: params.workflowKey } : {}), ...(params.timeoutMs !== undefined ? { timeoutMs: params.timeoutMs, deadlineAt } : {}), ...(params.
|
|
1456
|
+
details: { mode: resultMode, runId: id, results: [], asyncId: id, asyncDir, workflowGraph, ...(capabilityCeiling ? { capabilityCeiling } : {}), ...(params.parentWorkflowRunId ? { parentWorkflowRunId: params.parentWorkflowRunId } : {}), ...(params.workflowKey ? { workflowKey: params.workflowKey } : {}), ...(params.timeoutMs !== undefined ? { timeoutMs: params.timeoutMs, deadlineAt } : {}), ...(params.toolBudget ? { toolBudget: params.toolBudget } : {}), ...(initialUsageBudget ? { usageBudget: initialUsageBudget } : {}) },
|
|
1372
1457
|
};
|
|
1373
1458
|
}
|
|
1374
1459
|
|
|
@@ -1403,6 +1488,13 @@ export function executeAsyncSingle(
|
|
|
1403
1488
|
childIntercomTarget,
|
|
1404
1489
|
nestedRoute,
|
|
1405
1490
|
} = params;
|
|
1491
|
+
let lane: WorkflowLaneMetadata | undefined;
|
|
1492
|
+
try {
|
|
1493
|
+
lane = normalizeWorkflowLaneMetadata(params.lane, "lane");
|
|
1494
|
+
assertWorkflowLaneKey(lane, params.workflowKey, "lane");
|
|
1495
|
+
} catch (error) {
|
|
1496
|
+
return formatAsyncStartError("single", error instanceof Error ? error.message : String(error));
|
|
1497
|
+
}
|
|
1406
1498
|
const task = params.task ?? "";
|
|
1407
1499
|
let extensionBindings: ExtensionBindings | undefined;
|
|
1408
1500
|
try {
|
|
@@ -1507,6 +1599,7 @@ export function executeAsyncSingle(
|
|
|
1507
1599
|
);
|
|
1508
1600
|
const effectiveThinking = externalRunner ? undefined : params.thinkingOverride ?? agentConfig.thinking;
|
|
1509
1601
|
const model = externalRunner ? undefined : applyThinkingSuffix(primaryModel, effectiveThinking, params.thinkingOverride !== undefined);
|
|
1602
|
+
const contextLimit = model ? findModelInfo(model, availableModels, agentConfig.modelProvider ?? ctx.currentModelProvider)?.contextWindow : undefined;
|
|
1510
1603
|
const thinkingCeiling = externalRunner ? undefined : intersectThinkingCeilings(
|
|
1511
1604
|
params.thinkingCeiling,
|
|
1512
1605
|
agentConfig.maxThinking,
|
|
@@ -1535,7 +1628,6 @@ export function executeAsyncSingle(
|
|
|
1535
1628
|
});
|
|
1536
1629
|
if (resolvedToolTimeout.error) return formatAsyncStartError("single", resolvedToolTimeout.error);
|
|
1537
1630
|
const toolTimeoutMs = resolvedToolTimeout.toolTimeoutMs;
|
|
1538
|
-
const initialTurnBudget = params.turnBudget ? initialTurnBudgetState(params.turnBudget) : undefined;
|
|
1539
1631
|
const initialUsageBudget = usageBudgetState(params.usageBudget, undefined);
|
|
1540
1632
|
const resolvedSessionDir = params.sessionDir ?? (sessionRoot ? path.join(sessionRoot, `async-${id}`) : undefined);
|
|
1541
1633
|
const structuredOutput = params.structuredOutputSchema
|
|
@@ -1558,9 +1650,9 @@ export function executeAsyncSingle(
|
|
|
1558
1650
|
return formatAsyncStartError("single", error instanceof Error ? error.message : String(error));
|
|
1559
1651
|
}
|
|
1560
1652
|
}
|
|
1561
|
-
const effectiveSystemPrompt = appendTurnBudgetSystemPrompt(systemPrompt, params.turnBudget);
|
|
1562
1653
|
const toolPlan = resolvePiLaunchToolPlan({
|
|
1563
1654
|
tools: agentConfig.tools,
|
|
1655
|
+
allowNestedSubagents: agentConfig.allowNestedSubagents,
|
|
1564
1656
|
extensions: agentConfig.extensions,
|
|
1565
1657
|
subagentOnlyExtensions: agentConfig.subagentOnlyExtensions,
|
|
1566
1658
|
mcpDirectTools: agentConfig.mcpDirectTools,
|
|
@@ -1574,6 +1666,7 @@ export function executeAsyncSingle(
|
|
|
1574
1666
|
inheritedCapabilityCeiling: decodeSubagentCapabilityCeiling(process.env[SUBAGENT_CAPABILITY_CEILING_ENV]),
|
|
1575
1667
|
agentName: agentConfig.name,
|
|
1576
1668
|
permissionRules: resolvePermissionRules(ctx.permissions, agentConfig.permissions),
|
|
1669
|
+
runtimeSnapshotHost: ctx.pi,
|
|
1577
1670
|
});
|
|
1578
1671
|
const launchResolvedExtensions = externalRunner ? undefined : projectLaunchResolvedChildExtensions(toolPlan);
|
|
1579
1672
|
if (!externalRunner) {
|
|
@@ -1598,9 +1691,10 @@ export function executeAsyncSingle(
|
|
|
1598
1691
|
...((params.fast ?? agentConfig.fast) !== undefined ? { fast: params.fast ?? agentConfig.fast } : {}),
|
|
1599
1692
|
...(resolveEffectiveThinking(model, effectiveThinking) ? { thinking: resolveEffectiveThinking(model, effectiveThinking) } : {}),
|
|
1600
1693
|
...(thinkingCeiling ? { thinkingCeiling } : {}),
|
|
1601
|
-
systemPrompt
|
|
1694
|
+
systemPrompt,
|
|
1602
1695
|
systemPromptMode: agentConfig.systemPromptMode,
|
|
1603
1696
|
inheritProjectContext: agentConfig.inheritProjectContext,
|
|
1697
|
+
inheritGlobalContext: agentConfig.inheritGlobalContext,
|
|
1604
1698
|
inheritSkills: agentConfig.inheritSkills,
|
|
1605
1699
|
skills: resolvedSkills.map((skill) => skill.name),
|
|
1606
1700
|
tools: toolPlan.effectiveToolAllowlist,
|
|
@@ -1623,6 +1717,7 @@ export function executeAsyncSingle(
|
|
|
1623
1717
|
const recoveryAgentConfig = params.recoveryAgentConfig ?? agentConfig;
|
|
1624
1718
|
const recoveryDescriptor: SteeringRecoveryDescriptor = {
|
|
1625
1719
|
version: 1,
|
|
1720
|
+
...(lane ? { lane } : {}),
|
|
1626
1721
|
launchContractDigest,
|
|
1627
1722
|
...(extensionBindings ? { extensionBindings } : {}),
|
|
1628
1723
|
runFanoutBudget,
|
|
@@ -1640,12 +1735,15 @@ export function executeAsyncSingle(
|
|
|
1640
1735
|
...(effectiveThinking ? { thinking: resolveEffectiveThinking(model, effectiveThinking) } : {}),
|
|
1641
1736
|
...(thinkingCeiling ? { thinkingCeiling } : {}),
|
|
1642
1737
|
...(recoveryAgentConfig.tools ? { tools: [...recoveryAgentConfig.tools] } : {}),
|
|
1738
|
+
...(recoveryAgentConfig.allowNestedSubagents !== undefined ? { allowNestedSubagents: recoveryAgentConfig.allowNestedSubagents } : {}),
|
|
1643
1739
|
...(recoveryAgentConfig.extensions ? { extensions: [...recoveryAgentConfig.extensions] } : {}),
|
|
1644
1740
|
...(recoveryAgentConfig.subagentOnlyExtensions ? { subagentOnlyExtensions: [...recoveryAgentConfig.subagentOnlyExtensions] } : {}),
|
|
1645
1741
|
...(recoveryAgentConfig.mcpDirectTools ? { mcpDirectTools: [...recoveryAgentConfig.mcpDirectTools] } : {}),
|
|
1742
|
+
...(recoveryAgentConfig.mutationTools ? { mutationTools: [...recoveryAgentConfig.mutationTools] } : {}),
|
|
1646
1743
|
...(recoveryAgentConfig.systemPrompt ? { systemPrompt: recoveryAgentConfig.systemPrompt } : {}),
|
|
1647
1744
|
systemPromptMode: recoveryAgentConfig.systemPromptMode,
|
|
1648
1745
|
inheritProjectContext: recoveryAgentConfig.inheritProjectContext,
|
|
1746
|
+
inheritGlobalContext: recoveryAgentConfig.inheritGlobalContext,
|
|
1649
1747
|
inheritSkills: recoveryAgentConfig.inheritSkills,
|
|
1650
1748
|
...(resolvedSkills.length ? { skills: resolvedSkills.map((skill) => skill.name) } : {}),
|
|
1651
1749
|
...(recoveryAgentConfig.skillPath ? { skillPath: [...recoveryAgentConfig.skillPath] } : {}),
|
|
@@ -1660,7 +1758,6 @@ export function executeAsyncSingle(
|
|
|
1660
1758
|
...(params.context ? { context: params.context } : {}),
|
|
1661
1759
|
...(params.intercomBridge !== undefined ? { intercomBridge: params.intercomBridge } : {}),
|
|
1662
1760
|
...(deadlineAt !== undefined ? { absoluteDeadlineAt: deadlineAt } : {}),
|
|
1663
|
-
...(initialTurnBudget ? { initialTurnBudget: { maxTurns: initialTurnBudget.maxTurns, graceTurns: initialTurnBudget.graceTurns } } : {}),
|
|
1664
1761
|
...(resolvedToolBudget.budget ? { initialToolBudget: resolvedToolBudget.budget } : {}),
|
|
1665
1762
|
maxSubagentDepth: resolveChildMaxSubagentDepth(maxSubagentDepth, recoveryAgentConfig.maxSubagentDepth),
|
|
1666
1763
|
...(maxOutput ? { maxOutput } : {}),
|
|
@@ -1678,6 +1775,8 @@ export function executeAsyncSingle(
|
|
|
1678
1775
|
}
|
|
1679
1776
|
}
|
|
1680
1777
|
let spawnResult: SpawnRunnerResult = {};
|
|
1778
|
+
const initialStatusAt = Date.now();
|
|
1779
|
+
const initialCompletionOwnerId = ctx.completionOwnerId ?? currentCompletionOwnerId();
|
|
1681
1780
|
try {
|
|
1682
1781
|
spawnResult = spawnRunner(
|
|
1683
1782
|
{
|
|
@@ -1693,7 +1792,9 @@ export function executeAsyncSingle(
|
|
|
1693
1792
|
...(params.externalJobFollowUp ? { externalJobFollowUp: params.externalJobFollowUp } : {}),
|
|
1694
1793
|
...(params.context ? { context: params.context } : {}),
|
|
1695
1794
|
cwd: runnerCwd,
|
|
1795
|
+
requestedCwd: params.requestedCwd ?? runnerCwd,
|
|
1696
1796
|
model,
|
|
1797
|
+
...(contextLimit !== undefined ? { contextLimit } : {}),
|
|
1697
1798
|
...(params.fast ?? agentConfig.fast ? { fast: params.fast ?? agentConfig.fast } : {}),
|
|
1698
1799
|
thinking: resolveEffectiveThinking(model, effectiveThinking),
|
|
1699
1800
|
...(thinkingCeiling ? { thinkingCeiling } : {}),
|
|
@@ -1701,20 +1802,27 @@ export function executeAsyncSingle(
|
|
|
1701
1802
|
...(params.modelOverrideFromParent ? { skipPrimaryModelVerification: true } : {}),
|
|
1702
1803
|
...(availableModels && availableModels.length > 0 ? { modelVerificationRegistry: availableModels } : {}),
|
|
1703
1804
|
tools: agentConfig.tools,
|
|
1805
|
+
allowNestedSubagents: agentConfig.allowNestedSubagents,
|
|
1704
1806
|
extensions: agentConfig.extensions,
|
|
1705
1807
|
subagentOnlyExtensions: agentConfig.subagentOnlyExtensions,
|
|
1706
1808
|
mcpDirectTools: agentConfig.mcpDirectTools,
|
|
1809
|
+
...(toolPlan.mcpConfig ? { mcpConfig: toolPlan.mcpConfig } : {}),
|
|
1810
|
+
...(toolPlan.runtimeServerNames ? { runtimeServerNames: toolPlan.runtimeServerNames } : {}),
|
|
1811
|
+
mutationTools: agentConfig.mutationTools,
|
|
1707
1812
|
completionGuard: agentConfig.completionGuard,
|
|
1708
1813
|
systemPrompt,
|
|
1709
1814
|
systemPromptMode: agentConfig.systemPromptMode,
|
|
1710
1815
|
inheritProjectContext: agentConfig.inheritProjectContext,
|
|
1816
|
+
inheritGlobalContext: agentConfig.inheritGlobalContext,
|
|
1711
1817
|
inheritSkills: agentConfig.inheritSkills,
|
|
1712
1818
|
skills: resolvedSkills.map((r) => r.name),
|
|
1713
1819
|
outputPath,
|
|
1820
|
+
...(params.outputClaimPath ? { outputClaimPath: params.outputClaimPath } : {}),
|
|
1714
1821
|
outputMode,
|
|
1715
1822
|
...(!externalRunner && sessionFile ? { sessionFile } : {}),
|
|
1716
1823
|
maxSubagentDepth: resolveChildMaxSubagentDepth(maxSubagentDepth, agentConfig.maxSubagentDepth),
|
|
1717
1824
|
waitToolEnabled: params.waitToolEnabled,
|
|
1825
|
+
waitToolDefaultTimeoutMs: params.waitToolDefaultTimeoutMs,
|
|
1718
1826
|
...(params.agentContract ? { agentContract: params.agentContract } : {}),
|
|
1719
1827
|
definitionDigest: agentDefinitionDigest(agentConfig),
|
|
1720
1828
|
launchBindingTask: task,
|
|
@@ -1726,6 +1834,7 @@ export function executeAsyncSingle(
|
|
|
1726
1834
|
...(params.structuredOutputSchema ? { structuredOutputSchema: params.structuredOutputSchema } : {}),
|
|
1727
1835
|
...(resolvedToolBudget.budget ? { toolBudget: resolvedToolBudget.budget } : {}),
|
|
1728
1836
|
...(params.worktree === true ? { worktree: true } : {}),
|
|
1837
|
+
...(lane ? { lane } : {}),
|
|
1729
1838
|
},
|
|
1730
1839
|
],
|
|
1731
1840
|
resultPath: params.parentWorkflowRunId !== undefined && (params.revivalLease !== undefined || params.workflowAwaitAsync === true)
|
|
@@ -1751,7 +1860,6 @@ export function executeAsyncSingle(
|
|
|
1751
1860
|
timeoutMs,
|
|
1752
1861
|
deadlineAt,
|
|
1753
1862
|
toolTimeoutMs,
|
|
1754
|
-
turnBudget: params.turnBudget,
|
|
1755
1863
|
toolBudget: params.toolBudget,
|
|
1756
1864
|
usageBudget: params.usageBudget,
|
|
1757
1865
|
controlIntercomTarget,
|
|
@@ -1762,6 +1870,7 @@ export function executeAsyncSingle(
|
|
|
1762
1870
|
runFanoutBudget,
|
|
1763
1871
|
...(params.parentWorkflowRunId ? { parentWorkflowRunId: params.parentWorkflowRunId } : {}),
|
|
1764
1872
|
...(params.workflowKey ? { workflowKey: params.workflowKey } : {}),
|
|
1873
|
+
...(lane ? { lane } : {}),
|
|
1765
1874
|
...(params.revivalLease ? { revivalLease: params.revivalLease } : {}),
|
|
1766
1875
|
nestedRoute: nestedRoute ?? inheritedNestedRoute,
|
|
1767
1876
|
nestedSelf: inheritedNestedRoute && nestedAddress ? {
|
|
@@ -1773,7 +1882,23 @@ export function executeAsyncSingle(
|
|
|
1773
1882
|
},
|
|
1774
1883
|
id,
|
|
1775
1884
|
runnerCwd,
|
|
1776
|
-
|
|
1885
|
+
{
|
|
1886
|
+
lifecycleArtifactVersion: SUBAGENT_LIFECYCLE_ARTIFACT_VERSION,
|
|
1887
|
+
runId: id,
|
|
1888
|
+
...(ctx.currentSessionId ? { sessionId: ctx.currentSessionId } : {}),
|
|
1889
|
+
...(initialCompletionOwnerId ? { completionOwnerId: initialCompletionOwnerId } : {}),
|
|
1890
|
+
mode: "single",
|
|
1891
|
+
state: "running",
|
|
1892
|
+
startedAt: initialStatusAt,
|
|
1893
|
+
lastUpdate: initialStatusAt,
|
|
1894
|
+
currentStep: 0,
|
|
1895
|
+
chainStepCount: 1,
|
|
1896
|
+
...(lane ? { lane } : {}),
|
|
1897
|
+
steps: [{ agent, status: "pending", ...(lane ? { lane } : {}), ...(model ? { model } : {}), ...(contextLimit !== undefined ? { contextLimit } : {}) }],
|
|
1898
|
+
},
|
|
1899
|
+
path.join(asyncDir, "status.json"),
|
|
1900
|
+
(proof) => emitProcessTerminalEvent(ctx, proof),
|
|
1901
|
+
params.requestedCwd ?? runnerCwd,
|
|
1777
1902
|
);
|
|
1778
1903
|
} catch (error) {
|
|
1779
1904
|
params.activeAsyncCapacity?.rollback();
|
|
@@ -1819,7 +1944,6 @@ export function executeAsyncSingle(
|
|
|
1819
1944
|
agents: [agent],
|
|
1820
1945
|
chainStepCount: 1,
|
|
1821
1946
|
...(timeoutMs !== undefined ? { timeoutMs, deadlineAt } : {}),
|
|
1822
|
-
...(initialTurnBudget ? { turnBudget: initialTurnBudget } : {}),
|
|
1823
1947
|
startedAt: now,
|
|
1824
1948
|
lastUpdate: now,
|
|
1825
1949
|
...(capabilityCeiling ? { capabilityCeiling } : {}),
|
|
@@ -1847,7 +1971,6 @@ export function executeAsyncSingle(
|
|
|
1847
1971
|
...(params.parentWorkflowRunId ? { parentWorkflowRunId: params.parentWorkflowRunId } : {}),
|
|
1848
1972
|
...(params.workflowKey ? { workflowKey: params.workflowKey } : {}),
|
|
1849
1973
|
...(timeoutMs !== undefined ? { timeoutMs, deadlineAt } : {}),
|
|
1850
|
-
...(initialTurnBudget ? { turnBudget: initialTurnBudget } : {}),
|
|
1851
1974
|
...(initialUsageBudget ? { usageBudget: initialUsageBudget } : {}),
|
|
1852
1975
|
...(capabilityCeiling ? { capabilityCeiling } : {}),
|
|
1853
1976
|
nestedRoute,
|
|
@@ -1856,6 +1979,6 @@ export function executeAsyncSingle(
|
|
|
1856
1979
|
|
|
1857
1980
|
return {
|
|
1858
1981
|
content: [{ type: "text", text: formatAsyncStartedMessage(`Async: ${agent} [${id}]`, ctx.interactive === true) }],
|
|
1859
|
-
details: { mode: "single", runId: id, results: [], asyncId: id, asyncDir, launchContractDigest, launchResolvedExtensions, ...(capabilityCeiling ? { capabilityCeiling } : {}), ...(params.context ? { context: params.context } : {}), ...(timeoutMs !== undefined ? { timeoutMs, deadlineAt } : {}), ...(params.
|
|
1982
|
+
details: { mode: "single", runId: id, results: [], asyncId: id, asyncDir, launchContractDigest, launchResolvedExtensions, ...(capabilityCeiling ? { capabilityCeiling } : {}), ...(params.context ? { context: params.context } : {}), ...(timeoutMs !== undefined ? { timeoutMs, deadlineAt } : {}), ...(params.toolBudget ? { toolBudget: resolvedToolBudget.budget ?? params.toolBudget } : {}), ...(initialUsageBudget ? { usageBudget: initialUsageBudget } : {}) } as Details,
|
|
1860
1983
|
};
|
|
1861
1984
|
}
|