@selesai/code 0.8.3 → 0.8.5
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 +15 -0
- package/README.md +7 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/defaults/models.json +41 -55
- package/dist/defaults/settings.json +7 -8
- package/dist/extensions/handoff-new.ts +1 -1
- package/dist/extensions/inline-skills.test.ts +1 -0
- package/dist/extensions/inline-skills.ts +1 -1
- package/dist/extensions/pi-intercom/CHANGELOG.md +25 -3
- package/dist/extensions/pi-intercom/README.md +34 -15
- package/dist/extensions/pi-intercom/broker/broker.ts +38 -141
- package/dist/extensions/pi-intercom/broker/client-liveness.test.ts +173 -0
- package/dist/extensions/pi-intercom/broker/client.ts +78 -150
- package/dist/extensions/pi-intercom/broker/extension-state.ts +18 -7
- package/dist/extensions/pi-intercom/broker/framing.ts +1 -1
- package/dist/extensions/pi-intercom/broker/protocol.ts +182 -0
- package/dist/extensions/pi-intercom/broker/spawn.test.ts +106 -7
- package/dist/extensions/pi-intercom/broker/spawn.ts +37 -11
- package/dist/extensions/pi-intercom/config.test.ts +8 -10
- package/dist/extensions/pi-intercom/config.ts +3 -3
- package/dist/extensions/pi-intercom/index.ts +218 -147
- package/dist/extensions/pi-intercom/intercom.integration.test.ts +891 -103
- package/dist/extensions/pi-intercom/package.json +3 -2
- package/dist/extensions/pi-intercom/project-agent.test.ts +145 -0
- package/dist/extensions/pi-intercom/project-agent.ts +324 -0
- package/dist/extensions/pi-intercom/reply-tracker.test.ts +86 -1
- package/dist/extensions/pi-intercom/reply-tracker.ts +41 -9
- package/dist/extensions/pi-intercom/skills/pi-intercom/SKILL.md +49 -9
- package/dist/extensions/pi-intercom/test/inline-message.test.ts +9 -9
- package/dist/extensions/pi-intercom/types.ts +3 -1
- package/dist/extensions/pi-intercom/ui/inline-message.ts +7 -7
- package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +2 -2
- package/dist/extensions/pi-powerline-footer/CHANGELOG.md +14 -1
- package/dist/extensions/pi-powerline-footer/README.md +20 -37
- package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +40 -25
- package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +149 -18
- package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +1 -0
- package/dist/extensions/pi-powerline-footer/editor-performance.ts +99 -0
- package/dist/extensions/pi-powerline-footer/git-status.ts +15 -0
- package/dist/extensions/pi-powerline-footer/index.ts +394 -317
- package/dist/extensions/pi-powerline-footer/package.json +1 -1
- package/dist/extensions/pi-powerline-footer/powerline-config.ts +0 -12
- package/dist/extensions/pi-powerline-footer/queue/store.ts +8 -56
- package/dist/extensions/pi-powerline-footer/queue/types.ts +1 -2
- package/dist/extensions/pi-powerline-footer/segments.ts +0 -3
- package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +231 -1
- package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +5 -19
- package/dist/extensions/pi-powerline-footer/tests/editor-performance.test.ts +43 -0
- package/dist/extensions/pi-powerline-footer/tests/git-optional-locks.test.ts +64 -0
- package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +116 -0
- package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +19 -149
- package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +6 -0
- package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +5 -5
- package/dist/extensions/pi-powerline-footer/types.ts +1 -2
- package/dist/extensions/pi-subagents/CHANGELOG.md +225 -14
- package/dist/extensions/pi-subagents/README.md +66 -1613
- package/dist/extensions/pi-subagents/agents/builder.md +0 -1
- package/dist/extensions/pi-subagents/agents/delegate.md +14 -0
- package/dist/extensions/pi-subagents/agents/oracle.md +74 -0
- package/dist/extensions/pi-subagents/agents/reviewer.md +78 -0
- package/dist/extensions/pi-subagents/agents/scout.md +50 -0
- package/dist/extensions/pi-subagents/agents/worker.md +58 -0
- package/dist/extensions/pi-subagents/docs/configuration.md +372 -0
- package/dist/extensions/pi-subagents/docs/extension-api.md +308 -0
- package/dist/extensions/pi-subagents/docs/missions.md +119 -0
- package/dist/extensions/pi-subagents/docs/models.md +192 -0
- package/dist/extensions/pi-subagents/docs/observability.md +174 -0
- package/dist/extensions/pi-subagents/docs/tool-reference.md +343 -0
- package/dist/extensions/pi-subagents/docs/watchdog.md +176 -0
- package/dist/extensions/pi-subagents/docs/workflows.md +163 -0
- package/dist/extensions/pi-subagents/inspector-runner.mjs +11 -0
- package/dist/extensions/pi-subagents/package-lock.json +152 -194
- package/dist/extensions/pi-subagents/package.json +9 -10
- package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
- package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +9 -9
- package/dist/extensions/pi-subagents/prompts/parallel-research.md +6 -6
- package/dist/extensions/pi-subagents/prompts/parallel-review.md +8 -8
- package/dist/extensions/pi-subagents/prompts/review-loop.md +12 -12
- package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +22 -17
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +77 -72
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +177 -69
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +28 -8
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +88 -66
- package/dist/extensions/pi-subagents/src/agents/agent-management.ts +3 -3
- package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +624 -0
- package/dist/extensions/pi-subagents/src/agents/agents.ts +38 -19
- package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +7 -3
- package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +2 -2
- package/dist/extensions/pi-subagents/src/agents/skills.ts +2 -9
- package/dist/extensions/pi-subagents/src/api/delegation.ts +1 -2
- package/dist/extensions/pi-subagents/src/api/project-panes.ts +30 -0
- package/dist/extensions/pi-subagents/src/extension/config.ts +62 -8
- package/dist/extensions/pi-subagents/src/extension/control-notices.ts +2 -2
- package/dist/extensions/pi-subagents/src/extension/doctor.ts +40 -0
- package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +51 -26
- package/dist/extensions/pi-subagents/src/extension/index.ts +140 -50
- package/dist/extensions/pi-subagents/src/extension/public-execution.ts +77 -0
- package/dist/extensions/pi-subagents/src/extension/rpc.ts +18 -24
- package/dist/extensions/pi-subagents/src/extension/schemas.ts +58 -21
- package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +39 -0
- package/dist/extensions/pi-subagents/src/extension/tool-description.ts +47 -25
- package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +3 -3
- package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +460 -64
- package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +4 -1
- package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +102 -4
- package/dist/extensions/pi-subagents/src/missions/actions.ts +77 -16
- package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +162 -0
- package/dist/extensions/pi-subagents/src/missions/lifecycle.ts +65 -17
- package/dist/extensions/pi-subagents/src/missions/store.ts +151 -9
- package/dist/extensions/pi-subagents/src/missions/types.ts +58 -3
- package/dist/extensions/pi-subagents/src/missions/workflow-state.ts +260 -0
- package/dist/extensions/pi-subagents/src/profiles/profiles.ts +8 -8
- package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +374 -0
- package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +46 -0
- package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +158 -36
- package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +294 -134
- package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +26 -4
- package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +45 -6
- package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +33 -15
- package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +267 -0
- package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +145 -60
- package/dist/extensions/pi-subagents/src/runs/background/owned-process-tree.ts +104 -0
- package/dist/extensions/pi-subagents/src/runs/background/process-terminal.ts +17 -3
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +114 -6
- package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +33 -0
- package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +68 -0
- package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +71 -0
- package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +26 -3
- package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +42 -14
- package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +12 -24
- package/dist/extensions/pi-subagents/src/runs/background/steering.ts +7 -5
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +233 -101
- package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +17 -4
- package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +146 -0
- package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +21 -5
- package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +85 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +43 -18
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-clarify.ts +20 -19
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +40 -2
- package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +188 -46
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +12 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +137 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/prompt-audit.ts +171 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +1365 -252
- package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +187 -0
- package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +178 -26
- package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/llm-intent-arbiter.ts +286 -0
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +2 -0
- package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +32 -5
- package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +12 -2
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +3 -0
- package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +509 -117
- package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +10 -10
- package/dist/extensions/pi-subagents/src/runs/shared/run-fanout-budget.ts +280 -0
- package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +4 -2
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +189 -32
- package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +21 -5
- package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +20 -8
- package/dist/extensions/pi-subagents/src/shared/artifacts.ts +128 -3
- package/dist/extensions/pi-subagents/src/shared/display-text.ts +100 -0
- package/dist/extensions/pi-subagents/src/shared/file-coalescer.ts +9 -0
- package/dist/extensions/pi-subagents/src/shared/fork-context.ts +13 -0
- package/dist/extensions/pi-subagents/src/shared/formatters.ts +4 -6
- package/dist/extensions/pi-subagents/src/shared/prompt-resources.ts +51 -0
- package/dist/extensions/pi-subagents/src/shared/settings.ts +41 -11
- package/dist/extensions/pi-subagents/src/shared/types.ts +192 -3
- package/dist/extensions/pi-subagents/src/shared/utf8.ts +11 -0
- package/dist/extensions/pi-subagents/src/shared/utils.ts +46 -34
- package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -14
- package/dist/extensions/pi-subagents/src/slash/inline-subagents.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +14 -12
- package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +176 -21
- package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +12 -6
- package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +52 -18
- package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +36 -5
- package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +37 -21
- package/dist/extensions/pi-subagents/src/tui/fleet.ts +375 -42
- package/dist/extensions/pi-subagents/src/tui/render.ts +201 -68
- package/dist/extensions/pi-subagents/src/types/pi-runtime-compat.d.ts +0 -6
- package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +5 -4
- package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +0 -1
- package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +332 -27
- package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +15 -15
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +57 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +96 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +119 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +85 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +620 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +56 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +32 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +49 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +93 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +128 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +38 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +29 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +171 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +1261 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +13 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +358 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +77 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +512 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +43 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +121 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +82 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +210 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +55 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +206 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +106 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +356 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +297 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +60 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +68 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +106 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +51 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +40 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +70 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +36 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +33 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +102 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +32 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +63 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +94 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +394 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +120 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +246 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +457 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +8 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +8 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +31 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +21 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +31 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/index.mjs +84 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/package.json +14 -0
- package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +102 -15
- package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +507 -306
- package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +309 -123
- package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +124 -58
- package/dist/extensions/pi-subagents/test/integration/chain-clarify.test.ts +62 -16
- package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +167 -113
- package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +4 -2
- package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +139 -58
- package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +324 -59
- package/dist/extensions/pi-subagents/test/integration/parallel-execution.test.ts +98 -22
- package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +106 -106
- package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +416 -106
- package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +287 -17
- package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +1122 -96
- package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +107 -20
- package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +26 -6
- package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/support/helpers.ts +2 -0
- package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/ts-loader.mjs +0 -8
- package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +194 -59
- package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +317 -0
- package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +15 -15
- package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +66 -66
- package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +334 -248
- package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +52 -52
- package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +26 -26
- package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +118 -99
- package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +160 -0
- package/dist/extensions/pi-subagents/test/unit/agent-selection.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +43 -1
- package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +36 -10
- package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +387 -30
- package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +18 -3
- package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +99 -40
- package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +5 -3
- package/dist/extensions/pi-subagents/test/unit/builtin-agent-documentation.test.ts +7 -7
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +19 -19
- package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +94 -23
- package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/chain-serializer.test.ts +20 -20
- package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +35 -5
- package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +70 -52
- package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +187 -0
- package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +125 -71
- package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +18 -3
- package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +12 -12
- package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +17 -23
- package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +30 -2
- package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +25 -25
- package/dist/extensions/pi-subagents/test/unit/extra-agent-dirs.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/file-coalescer.test.ts +15 -0
- package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +91 -47
- package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +468 -38
- package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +14 -4
- package/dist/extensions/pi-subagents/test/unit/foreground-tool-call-compaction.test.ts +37 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +69 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +79 -2
- package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +102 -49
- package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +98 -32
- package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +7 -6
- package/dist/extensions/pi-subagents/test/unit/llm-intent-arbiter.test.ts +171 -0
- package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +116 -0
- package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +81 -7
- package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +289 -13
- package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +42 -1
- package/dist/extensions/pi-subagents/test/unit/model-scope-settings.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +11 -2
- package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +84 -10
- package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +122 -8
- package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +8 -8
- package/dist/extensions/pi-subagents/test/unit/notify.test.ts +24 -24
- package/dist/extensions/pi-subagents/test/unit/owned-process-tree.test.ts +69 -0
- package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +16 -2
- package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +7 -7
- package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +10 -10
- package/dist/extensions/pi-subagents/test/unit/path-handling.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +26 -17
- package/dist/extensions/pi-subagents/test/unit/pi-args-permission-system.test.ts +405 -0
- package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +440 -92
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +24 -8
- package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +6 -6
- package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +43 -43
- package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +13 -13
- package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +59 -6
- package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +19 -19
- package/dist/extensions/pi-subagents/test/unit/project-panes-public-api.test.ts +243 -0
- package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +68 -168
- package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +58 -15
- package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +51 -0
- package/dist/extensions/pi-subagents/test/unit/reads-resolution.test.ts +66 -0
- package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +47 -28
- package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +12 -12
- package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +57 -0
- package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +111 -31
- package/dist/extensions/pi-subagents/test/unit/run-fanout-budget.test.ts +121 -0
- package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +65 -50
- package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +69 -28
- package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +67 -0
- package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +60 -44
- package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +424 -49
- package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +28 -0
- package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +23 -1
- package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +32 -5
- package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +13 -13
- package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +130 -92
- package/dist/extensions/pi-subagents/test/unit/steering.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +85 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +35 -35
- package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +24 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +312 -22
- package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +150 -15
- package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +65 -26
- package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +138 -0
- package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +76 -25
- package/dist/extensions/pi-subagents/test/unit/turn-budget.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +55 -6
- package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +13 -13
- package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +8 -8
- package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +6 -6
- package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +138 -11
- package/dist/extensions/pi-subagents/test/unit/workflow-graph.test.ts +8 -8
- package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +113 -0
- package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +68 -7
- package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +6 -6
- package/dist/extensions/workflow/extension.ts +21 -19
- package/dist/extensions/workflow/modes.ts +65 -0
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.js +48 -1
- package/dist/skills/pi-subagents/SKILL.md +20 -15
- package/dist/skills/pi-subagents/references/constraints-and-recipes.md +77 -83
- package/dist/skills/pi-subagents/references/execution-controls.md +215 -106
- package/dist/skills/pi-subagents/references/management-authoring-rpc.md +29 -9
- package/dist/skills/pi-subagents/references/prompting-and-roles.md +58 -43
- package/docs/plans/workflow-autoloop-reference.md +192 -0
- package/docs/plans/workflow-subagent-consolidation-planb.md +374 -0
- package/docs/plans/workflow-subagent-scripted-merge.md +406 -0
- package/docs/quickstart.md +27 -43
- package/docs/settings.md +4 -0
- package/docs/usage.md +1 -0
- package/package.json +2 -1
- package/dist/extensions/workflow/adapter.ts +0 -949
- package/dist/extensions/workflow/modes/loop.ts +0 -74
- package/dist/extensions/workflow/modes/prototype.ts +0 -170
- package/dist/extensions/workflow/modes/quicktype.ts +0 -150
- package/dist/extensions/workflow/modes/task.ts +0 -105
- package/dist/extensions/workflow/run-state.ts +0 -124
- package/dist/extensions/workflow/state-machine.ts +0 -484
- package/dist/extensions/workflow/validators.ts +0 -42
|
@@ -34,6 +34,8 @@ import {
|
|
|
34
34
|
import { discoverAvailableSkills, normalizeSkillInput } from "../../agents/skills.ts";
|
|
35
35
|
import { INTERCOM_BRIDGE_MARKER } from "../../intercom/intercom-bridge.ts";
|
|
36
36
|
import { runSync } from "./execution.ts";
|
|
37
|
+
import { createTaskMutationArbiter } from "../shared/llm-intent-arbiter.ts";
|
|
38
|
+
import { workflowForegroundSteeringLaunchOptions } from "./workflow-foreground-steering.ts";
|
|
37
39
|
import {
|
|
38
40
|
beginForegroundChild,
|
|
39
41
|
finishForegroundChild,
|
|
@@ -41,6 +43,7 @@ import {
|
|
|
41
43
|
settleForegroundSchedulingOwner,
|
|
42
44
|
updateForegroundChild,
|
|
43
45
|
} from "./foreground-control.ts";
|
|
46
|
+
import { updateLiveEffectivePrompt } from "./prompt-audit.ts";
|
|
44
47
|
import { buildChainSummary } from "../../shared/formatters.ts";
|
|
45
48
|
import { compactForegroundDetails, getSingleResultOutput, mapConcurrent, resolveChildCwd, sumResultsCost, sumResultsUsage } from "../../shared/utils.ts";
|
|
46
49
|
import { DEFAULT_GLOBAL_CONCURRENCY_LIMIT, Semaphore } from "../shared/parallel-utils.ts";
|
|
@@ -70,6 +73,7 @@ import {
|
|
|
70
73
|
type ResolvedControlConfig,
|
|
71
74
|
type ResolvedTurnBudget,
|
|
72
75
|
type ResolvedToolBudget,
|
|
76
|
+
type RunFanoutBudgetDescriptor,
|
|
73
77
|
type SingleResult,
|
|
74
78
|
type ToolBudgetConfig,
|
|
75
79
|
type ChainCheckpointState,
|
|
@@ -85,6 +89,7 @@ import { ChainOutputValidationError, outputEntryFromResult, resolveOutputReferen
|
|
|
85
89
|
import { createStructuredOutputRuntime } from "../shared/structured-output.ts";
|
|
86
90
|
import { collectDynamicResults, DynamicFanoutError, materializeDynamicParallelStep, validateDynamicCollection, type DynamicCollectedResult } from "../shared/dynamic-fanout.ts";
|
|
87
91
|
import { acceptanceFailureMessage, aggregateAcceptanceReport, evaluateAcceptance, resolveEffectiveAcceptance } from "../shared/acceptance.ts";
|
|
92
|
+
import { claimRunFanoutBatch, RunFanoutLimitError } from "../shared/run-fanout-budget.ts";
|
|
88
93
|
import { isAgentContractV1 } from "../shared/agent-contract.ts";
|
|
89
94
|
import type { ChainOutputMap } from "../../shared/types.ts";
|
|
90
95
|
import { validateToolBudgetConfig } from "../shared/tool-budget.ts";
|
|
@@ -166,6 +171,7 @@ interface ParallelChainRunInput {
|
|
|
166
171
|
configToolBudget?: ToolBudgetConfig;
|
|
167
172
|
globalSemaphore?: Semaphore;
|
|
168
173
|
capabilityCeiling?: ResolvedSubagentCapabilityCeiling;
|
|
174
|
+
runFanoutBudget?: RunFanoutBudgetDescriptor;
|
|
169
175
|
permissions?: PermissionConfig;
|
|
170
176
|
dynamic?: boolean;
|
|
171
177
|
}
|
|
@@ -367,7 +373,11 @@ async function runParallelChainTasks(input: ParallelChainRunInput): Promise<Sing
|
|
|
367
373
|
beginForegroundChild(input.foregroundControl, {
|
|
368
374
|
index: childIndex,
|
|
369
375
|
agent: task.agent,
|
|
370
|
-
|
|
376
|
+
authoredTask: cleanTask,
|
|
377
|
+
effectivePrompt: taskStr,
|
|
378
|
+
cwd: taskCwd,
|
|
379
|
+
...(outputPath ? { outputPath } : {}),
|
|
380
|
+
description: `${task.agent} child`,
|
|
371
381
|
...(effectiveModel ? { model: effectiveModel } : {}),
|
|
372
382
|
...(thinking ? { thinking } : {}),
|
|
373
383
|
interrupt: () => {
|
|
@@ -387,7 +397,10 @@ async function runParallelChainTasks(input: ParallelChainRunInput): Promise<Sing
|
|
|
387
397
|
result = await runSync(input.ctx.cwd, input.agents, task.agent, taskStr, {
|
|
388
398
|
permissions: input.permissions,
|
|
389
399
|
parentSessionId: input.ctx.sessionManager.getSessionId() ?? undefined,
|
|
400
|
+
llmIntentArbiter: createTaskMutationArbiter(input.ctx),
|
|
401
|
+
...workflowForegroundSteeringLaunchOptions(input.foregroundControl, childIndex),
|
|
390
402
|
capabilityCeiling: input.capabilityCeiling,
|
|
403
|
+
runFanoutBudget: input.runFanoutBudget ? { ...input.runFanoutBudget, parentPath: `${input.runFanoutBudget.parentPath ? `${input.runFanoutBudget.parentPath}/` : ""}chain[${input.stepIndex}]${input.dynamic ? `.expand[${taskIndex}]` : `.parallel[${taskIndex}]`}` } : undefined,
|
|
391
404
|
context: input.contextForAgent?.(task.agent),
|
|
392
405
|
cwd: taskCwd,
|
|
393
406
|
signal: input.signal,
|
|
@@ -420,6 +433,7 @@ async function runParallelChainTasks(input: ParallelChainRunInput): Promise<Sing
|
|
|
420
433
|
agentContract,
|
|
421
434
|
acceptance: task.acceptance,
|
|
422
435
|
acceptanceContext: { mode: "chain", dynamic: input.dynamic && task.acceptance === undefined },
|
|
436
|
+
onEffectivePrompt: input.foregroundControl ? (prompt) => updateLiveEffectivePrompt(input.foregroundControl!, childIndex, prompt) : undefined,
|
|
423
437
|
timeoutMs: input.timeoutMs,
|
|
424
438
|
deadlineAt: input.deadlineAt,
|
|
425
439
|
turnBudget: input.turnBudget,
|
|
@@ -538,6 +552,7 @@ interface ChainExecutionParams {
|
|
|
538
552
|
/** Global cap on simultaneously-running tasks within this chain. Defaults to DEFAULT_GLOBAL_CONCURRENCY_LIMIT. */
|
|
539
553
|
globalConcurrencyLimit?: number;
|
|
540
554
|
capabilityCeiling?: ResolvedSubagentCapabilityCeiling;
|
|
555
|
+
runFanoutBudget?: RunFanoutBudgetDescriptor;
|
|
541
556
|
}
|
|
542
557
|
|
|
543
558
|
interface ChainExecutionResult {
|
|
@@ -874,6 +889,7 @@ ${step.message}` : ""}` }],
|
|
|
874
889
|
configToolBudget: params.configToolBudget,
|
|
875
890
|
globalSemaphore,
|
|
876
891
|
permissions: params.permissions,
|
|
892
|
+
runFanoutBudget: params.runFanoutBudget,
|
|
877
893
|
});
|
|
878
894
|
globalTaskIndex += step.parallel.length;
|
|
879
895
|
|
|
@@ -1000,6 +1016,19 @@ ${step.message}` : ""}` }],
|
|
|
1000
1016
|
return buildChainExecutionErrorResult(message, makeDetailsInput({ currentStepIndex: stepIndex, currentFlatIndex: globalTaskIndex }));
|
|
1001
1017
|
}
|
|
1002
1018
|
|
|
1019
|
+
try {
|
|
1020
|
+
if (params.runFanoutBudget) claimRunFanoutBatch(params.runFanoutBudget, materialized.parallel.map((_, itemIndex) => `chain[${stepIndex}].expand[${itemIndex}]`));
|
|
1021
|
+
} catch (error) {
|
|
1022
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1023
|
+
dynamicGroupStatuses[stepIndex] = { status: "failed", error: message };
|
|
1024
|
+
const result = buildChainExecutionErrorResult(message, makeDetailsInput({ currentStepIndex: stepIndex, currentFlatIndex: globalTaskIndex }));
|
|
1025
|
+
if (error instanceof RunFanoutLimitError) {
|
|
1026
|
+
result.details.runFanoutBudget = error.snapshot;
|
|
1027
|
+
result.details.runFanoutRejection = error.rejection;
|
|
1028
|
+
}
|
|
1029
|
+
return result;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1003
1032
|
dynamicChildren[stepIndex] = materialized.items.map((item, itemIndex) => ({
|
|
1004
1033
|
agent: step.parallel.agent,
|
|
1005
1034
|
label: materialized.parallel[itemIndex]?.label,
|
|
@@ -1135,6 +1164,7 @@ ${step.message}` : ""}` }],
|
|
|
1135
1164
|
configToolBudget: params.configToolBudget,
|
|
1136
1165
|
globalSemaphore,
|
|
1137
1166
|
permissions: params.permissions,
|
|
1167
|
+
runFanoutBudget: params.runFanoutBudget,
|
|
1138
1168
|
dynamic: true,
|
|
1139
1169
|
});
|
|
1140
1170
|
globalTaskIndex = dynamicStartIndex + reservedDynamicItems;
|
|
@@ -1330,7 +1360,11 @@ ${step.message}` : ""}` }],
|
|
|
1330
1360
|
beginForegroundChild(foregroundControl, {
|
|
1331
1361
|
index: childIndex,
|
|
1332
1362
|
agent: seqStep.agent,
|
|
1333
|
-
|
|
1363
|
+
authoredTask: cleanTask,
|
|
1364
|
+
effectivePrompt: stepTask,
|
|
1365
|
+
cwd,
|
|
1366
|
+
...(outputPath ? { outputPath } : {}),
|
|
1367
|
+
description: `${seqStep.agent} child`,
|
|
1334
1368
|
...(effectiveModel ? { model: effectiveModel } : {}),
|
|
1335
1369
|
...(thinking ? { thinking } : {}),
|
|
1336
1370
|
interrupt: () => {
|
|
@@ -1367,7 +1401,10 @@ ${step.message}` : ""}` }],
|
|
|
1367
1401
|
r = await runSync(ctx.cwd, agents, seqStep.agent, stepTask, {
|
|
1368
1402
|
permissions: params.permissions,
|
|
1369
1403
|
parentSessionId: ctx.sessionManager.getSessionId() ?? undefined,
|
|
1404
|
+
llmIntentArbiter: createTaskMutationArbiter(ctx),
|
|
1405
|
+
...workflowForegroundSteeringLaunchOptions(params.foregroundControl, childIndex),
|
|
1370
1406
|
capabilityCeiling: params.capabilityCeiling,
|
|
1407
|
+
runFanoutBudget: params.runFanoutBudget ? { ...params.runFanoutBudget, parentPath: `${params.runFanoutBudget.parentPath ? `${params.runFanoutBudget.parentPath}/` : ""}chain[${stepIndex}]` } : undefined,
|
|
1371
1408
|
context: params.contextForAgent?.(seqStep.agent),
|
|
1372
1409
|
cwd: resolveChildCwd(cwd ?? ctx.cwd, seqStep.cwd),
|
|
1373
1410
|
signal,
|
|
@@ -1400,6 +1437,7 @@ ${step.message}` : ""}` }],
|
|
|
1400
1437
|
agentContract,
|
|
1401
1438
|
acceptance: seqStep.acceptance,
|
|
1402
1439
|
acceptanceContext: { mode: "chain" },
|
|
1440
|
+
onEffectivePrompt: foregroundControl ? (prompt) => updateLiveEffectivePrompt(foregroundControl, childIndex, prompt) : undefined,
|
|
1403
1441
|
timeoutMs: params.timeoutMs,
|
|
1404
1442
|
deadlineAt,
|
|
1405
1443
|
turnBudget: params.turnBudget,
|
|
@@ -7,6 +7,8 @@ import { existsSync, unlinkSync } from "node:fs";
|
|
|
7
7
|
import * as path from "node:path";
|
|
8
8
|
import type { Message } from "@earendil-works/pi-ai";
|
|
9
9
|
import type { AgentConfig } from "../../agents/agents.ts";
|
|
10
|
+
import { appendAgentRefinementOverlay } from "../../agents/agent-refinements.ts";
|
|
11
|
+
import { alignForkedSessionCwd } from "../../shared/fork-context.ts";
|
|
10
12
|
import {
|
|
11
13
|
ensureArtifactsDir,
|
|
12
14
|
formatOutputArtifactContent,
|
|
@@ -52,22 +54,25 @@ import {
|
|
|
52
54
|
import { buildSkillInjection, resolveSkillsWithFallback } from "../../agents/skills.ts";
|
|
53
55
|
import { buildAgentMemoryInjection } from "../../agents/agent-memory.ts";
|
|
54
56
|
import { evaluateCompletionMutationGuard } from "../shared/completion-guard.ts";
|
|
57
|
+
import { arbitrateCompletionGuardRescue } from "../shared/llm-intent-arbiter.ts";
|
|
55
58
|
import { getPiSpawnCommand } from "../shared/pi-spawn.ts";
|
|
56
59
|
import { createJsonlWriter } from "../../shared/jsonl-writer.ts";
|
|
57
60
|
import { attachPostExitStdioGuard, trySignalChild } from "../../shared/post-exit-stdio-guard.ts";
|
|
58
61
|
import { resolvePermissionRules } from "../shared/permissions.ts";
|
|
59
|
-
import { applyThinkingSuffix, buildPiArgs, cleanupTempDir, projectLaunchResolvedChildExtensions, resolvePiLaunchToolPlan } from "../shared/pi-args.ts";
|
|
62
|
+
import { applyThinkingSuffix, buildPiArgs, cleanupTempDir, projectLaunchResolvedChildExtensions, resolvePiLaunchToolPlan, type SubagentTaskDelivery } from "../shared/pi-args.ts";
|
|
60
63
|
import { readRuntimeAcknowledgedExtensions } from "../shared/runtime-acknowledged-extensions.ts";
|
|
61
64
|
import { assertAgentAllowedByCapabilityCeiling, decodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, resolveCurrentSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV } from "../shared/capability-ceiling.ts";
|
|
62
65
|
import { resolveEffectiveThinking } from "../../shared/model-info.ts";
|
|
63
66
|
import { MISSING_STRUCTURED_OUTPUT_CALL_ERROR, readStructuredOutput } from "../shared/structured-output.ts";
|
|
64
67
|
import { formatProcessSignalError, isUnexplainedProcessSignal } from "../shared/process-signal.ts";
|
|
65
68
|
import { readChildToolDiagnosticError } from "../shared/tool-availability.ts";
|
|
66
|
-
import { captureSingleOutputSnapshot, extractChildWrittenOutput, formatSavedOutputReference, injectOutputPathSystemPrompt, resolveSingleOutput, validateFileOnlyOutputMode, type SingleOutputSnapshot } from "../shared/single-output.ts";
|
|
69
|
+
import { captureSingleOutputSnapshot, extractChildWrittenOutput, finalizeSingleOutput, formatSavedOutputReference, injectOutputPathSystemPrompt, resolveSingleOutput, validateFileOnlyOutputMode, type SingleOutputSnapshot } from "../shared/single-output.ts";
|
|
67
70
|
import {
|
|
68
71
|
buildModelCandidates,
|
|
69
72
|
formatModelAttemptNote,
|
|
73
|
+
formatModelRetryNote,
|
|
70
74
|
isRetryableModelFailure,
|
|
75
|
+
MODEL_RETRY_DELAYS_MS,
|
|
71
76
|
} from "../shared/model-fallback.ts";
|
|
72
77
|
import {
|
|
73
78
|
SUBAGENT_STARTUP_RETRY_DELAYS_MS,
|
|
@@ -87,7 +92,8 @@ import {
|
|
|
87
92
|
shouldEscalateMutatingFailures,
|
|
88
93
|
summarizeRecentMutatingFailures,
|
|
89
94
|
} from "../shared/long-running-guard.ts";
|
|
90
|
-
import { acceptanceFailureMessage, buildSkippedAcceptanceLedger, evaluateAcceptance, formatAcceptancePrompt, resolveEffectiveAcceptance, stripAcceptanceReport } from "../shared/acceptance.ts";
|
|
95
|
+
import { acceptanceFailureMessage, buildSkippedAcceptanceLedger, evaluateAcceptance, formatAcceptancePrompt, resolveEffectiveAcceptance, stripAcceptanceReport, validateAcceptanceInput } from "../shared/acceptance.ts";
|
|
96
|
+
import { PROMPT_REDACTED } from "../../shared/utils.ts";
|
|
91
97
|
import { attachContractProjections, isAgentContractV1 } from "../shared/agent-contract.ts";
|
|
92
98
|
import { appendTurnBudgetSystemPrompt, formatTurnBudgetOutput, initialTurnBudgetState, turnBudgetDecision, turnBudgetDeferredNote, turnBudgetDeferredState, turnBudgetExceededMessage, turnBudgetSoftNote, turnBudgetState } from "../shared/turn-budget.ts";
|
|
93
99
|
import { initialToolBudgetState, toolBudgetState } from "../shared/tool-budget.ts";
|
|
@@ -115,6 +121,12 @@ function withRunContext<T extends SingleResult>(result: T, context: RunSyncOptio
|
|
|
115
121
|
return result;
|
|
116
122
|
}
|
|
117
123
|
|
|
124
|
+
function redactResultPrompt<T extends SingleResult>(result: T): T {
|
|
125
|
+
result.task = PROMPT_REDACTED;
|
|
126
|
+
if (result.progress) result.progress.task = PROMPT_REDACTED;
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
|
|
118
130
|
function sumUsage(target: Usage, source: Usage): void {
|
|
119
131
|
target.input += source.input;
|
|
120
132
|
target.output += source.output;
|
|
@@ -137,7 +149,7 @@ function persistSingleResultMetadata(input: {
|
|
|
137
149
|
writeMetadata(input.metadataPath, {
|
|
138
150
|
runId: input.runId,
|
|
139
151
|
agent: input.agent,
|
|
140
|
-
task:
|
|
152
|
+
task: PROMPT_REDACTED,
|
|
141
153
|
exitCode: target.exitCode,
|
|
142
154
|
processSignal: target.processSignal,
|
|
143
155
|
usage: target.usage,
|
|
@@ -229,6 +241,7 @@ function stripAcceptanceReportsFromMessages(messages: Message[] | undefined): vo
|
|
|
229
241
|
function snapshotProgress(progress: AgentProgress): AgentProgress {
|
|
230
242
|
return {
|
|
231
243
|
...progress,
|
|
244
|
+
task: PROMPT_REDACTED,
|
|
232
245
|
skills: progress.skills ? [...progress.skills] : undefined,
|
|
233
246
|
recentTools: boundStreamedRecentTools(progress.recentTools),
|
|
234
247
|
recentOutput: boundStreamedRecentOutput(progress.recentOutput),
|
|
@@ -238,6 +251,7 @@ function snapshotProgress(progress: AgentProgress): AgentProgress {
|
|
|
238
251
|
function snapshotResult(result: SingleResult, progress: AgentProgress): SingleResult {
|
|
239
252
|
return {
|
|
240
253
|
...result,
|
|
254
|
+
task: PROMPT_REDACTED,
|
|
241
255
|
messages: result.outputMode === "file-only" && result.savedOutputPath ? undefined : result.messages ? [...result.messages] : undefined,
|
|
242
256
|
usage: { ...result.usage },
|
|
243
257
|
skills: result.skills ? [...result.skills] : undefined,
|
|
@@ -289,6 +303,7 @@ async function runSingleAttempt(
|
|
|
289
303
|
attemptNotes: string[];
|
|
290
304
|
outputSnapshot?: SingleOutputSnapshot;
|
|
291
305
|
originalTask?: string;
|
|
306
|
+
taskDelivery?: SubagentTaskDelivery;
|
|
292
307
|
},
|
|
293
308
|
): Promise<SingleResult> {
|
|
294
309
|
const effectiveThinking = options.thinkingOverride ?? agent.thinking;
|
|
@@ -310,6 +325,7 @@ async function runSingleAttempt(
|
|
|
310
325
|
const { args, env: sharedEnv, tempDir, toolDiagnosticPath, runtimeAcknowledgedExtensionsPath, capabilityAudit } = buildPiArgs({
|
|
311
326
|
baseArgs: ["--mode", "json", "-p"],
|
|
312
327
|
task,
|
|
328
|
+
taskDelivery: shared.taskDelivery,
|
|
313
329
|
sessionEnabled: shared.sessionEnabled,
|
|
314
330
|
sessionDir: options.sessionDir,
|
|
315
331
|
sessionFile: options.sessionFile,
|
|
@@ -335,7 +351,11 @@ async function runSingleAttempt(
|
|
|
335
351
|
parentControlInbox: options.nestedRoute?.controlInbox,
|
|
336
352
|
parentRootRunId: options.nestedRoute?.rootRunId,
|
|
337
353
|
parentCapabilityToken: options.nestedRoute?.capabilityToken,
|
|
354
|
+
runFanoutBudget: options.runFanoutBudget,
|
|
338
355
|
parentSessionId: options.parentSessionId,
|
|
356
|
+
steerInboxDir: options.steerInboxDir,
|
|
357
|
+
steerCapabilityPath: options.steerCapabilityPath,
|
|
358
|
+
steerAckDir: options.steerAckDir,
|
|
339
359
|
structuredOutput: options.structuredOutput,
|
|
340
360
|
toolBudget: options.toolBudget,
|
|
341
361
|
allowZeroToolBudget: options.allowZeroToolBudget,
|
|
@@ -458,6 +478,7 @@ async function runSingleAttempt(
|
|
|
458
478
|
const spawnEnv = { ...process.env, ...sharedEnv, ...getSubagentDepthEnv(options.maxSubagentDepth) };
|
|
459
479
|
let observedMutationAttempt = false;
|
|
460
480
|
let structuredOutputToolInvoked = false;
|
|
481
|
+
let structuredOutputMessageStartIndex: number | undefined;
|
|
461
482
|
|
|
462
483
|
const exitCode = await new Promise<number>((resolve) => {
|
|
463
484
|
const spawnSpec = getPiSpawnCommand(args);
|
|
@@ -873,7 +894,10 @@ async function runSingleAttempt(
|
|
|
873
894
|
const toolArgs = evt.args && typeof evt.args === "object" && !Array.isArray(evt.args)
|
|
874
895
|
? evt.args as Record<string, unknown>
|
|
875
896
|
: {};
|
|
876
|
-
if (options.structuredOutput && evt.toolName === "structured_output")
|
|
897
|
+
if (options.structuredOutput && evt.toolName === "structured_output") {
|
|
898
|
+
structuredOutputToolInvoked = true;
|
|
899
|
+
structuredOutputMessageStartIndex = result.messages?.length ?? 0;
|
|
900
|
+
}
|
|
877
901
|
if (options.allowIntercomDetach && (evt.toolName === "intercom" || evt.toolName === "contact_supervisor")) {
|
|
878
902
|
intercomStarted = true;
|
|
879
903
|
}
|
|
@@ -984,14 +1008,14 @@ async function runSingleAttempt(
|
|
|
984
1008
|
}
|
|
985
1009
|
};
|
|
986
1010
|
|
|
987
|
-
|
|
1011
|
+
fireUpdate();
|
|
1012
|
+
if (controlConfig.enabled || options.onUpdate) {
|
|
988
1013
|
activityTimer = setInterval(() => {
|
|
989
|
-
if (processClosed || lifecycleFinished)
|
|
990
|
-
|
|
991
|
-
if (updateActivityState(now)) {
|
|
992
|
-
progress.durationMs = now - startTime;
|
|
993
|
-
fireUpdate();
|
|
1014
|
+
if (processClosed || lifecycleFinished) {
|
|
1015
|
+
return;
|
|
994
1016
|
}
|
|
1017
|
+
updateActivityState(Date.now());
|
|
1018
|
+
fireUpdate();
|
|
995
1019
|
}, 1000);
|
|
996
1020
|
activityTimer.unref?.();
|
|
997
1021
|
}
|
|
@@ -1182,24 +1206,7 @@ async function runSingleAttempt(
|
|
|
1182
1206
|
if (result.error && result.exitCode === 0) {
|
|
1183
1207
|
result.exitCode = 1;
|
|
1184
1208
|
}
|
|
1185
|
-
|
|
1186
|
-
const messages = result.messages ?? [];
|
|
1187
|
-
const finalText = getFinalOutput(messages);
|
|
1188
|
-
const missingStructuredOutput = options.structuredOutput
|
|
1189
|
-
? !existsSync(options.structuredOutput.outputPath)
|
|
1190
|
-
: false;
|
|
1191
|
-
const errInfo = detectSubagentError(messages);
|
|
1192
|
-
const missingOutput = !finalText?.trim() && (!options.structuredOutput || missingStructuredOutput);
|
|
1193
|
-
if (missingOutput && (!errInfo.hasError || hasEmptyTerminalAssistantResponse(messages))) {
|
|
1194
|
-
result.exitCode = 1;
|
|
1195
|
-
result.error = "Subagent produced no output (possible model cold-start or empty response).";
|
|
1196
|
-
} else if (errInfo.hasError) {
|
|
1197
|
-
result.exitCode = errInfo.exitCode ?? 1;
|
|
1198
|
-
result.error = errInfo.details
|
|
1199
|
-
? `${errInfo.errorType} failed (exit ${errInfo.exitCode}): ${errInfo.details}`
|
|
1200
|
-
: `${errInfo.errorType} failed with exit code ${errInfo.exitCode}`;
|
|
1201
|
-
}
|
|
1202
|
-
}
|
|
1209
|
+
let validatedStructuredOutput = false;
|
|
1203
1210
|
if (options.structuredOutput && result.exitCode === 0 && !result.error) {
|
|
1204
1211
|
result.structuredOutputSchemaPath = options.structuredOutput.schemaPath;
|
|
1205
1212
|
result.structuredOutputPath = options.structuredOutput.outputPath;
|
|
@@ -1219,9 +1226,28 @@ async function runSingleAttempt(
|
|
|
1219
1226
|
result.structuredOutputFailed = true;
|
|
1220
1227
|
} else {
|
|
1221
1228
|
result.structuredOutput = structured.value;
|
|
1229
|
+
validatedStructuredOutput = true;
|
|
1222
1230
|
}
|
|
1223
1231
|
}
|
|
1224
1232
|
}
|
|
1233
|
+
if (result.exitCode === 0 && !result.error) {
|
|
1234
|
+
const messages = result.messages ?? [];
|
|
1235
|
+
const finalText = getFinalOutput(messages);
|
|
1236
|
+
const errorMessages = validatedStructuredOutput
|
|
1237
|
+
? messages.slice(structuredOutputMessageStartIndex ?? messages.length)
|
|
1238
|
+
: messages;
|
|
1239
|
+
const errInfo = detectSubagentError(errorMessages);
|
|
1240
|
+
const missingOutput = !finalText?.trim() && !validatedStructuredOutput;
|
|
1241
|
+
if (missingOutput && (!errInfo.hasError || hasEmptyTerminalAssistantResponse(messages))) {
|
|
1242
|
+
result.exitCode = 1;
|
|
1243
|
+
result.error = "Subagent produced no output (possible model cold-start or empty response).";
|
|
1244
|
+
} else if (errInfo.hasError) {
|
|
1245
|
+
result.exitCode = errInfo.exitCode ?? 1;
|
|
1246
|
+
result.error = errInfo.details
|
|
1247
|
+
? `${errInfo.errorType} failed (exit ${errInfo.exitCode}): ${errInfo.details}`
|
|
1248
|
+
: `${errInfo.errorType} failed with exit code ${errInfo.exitCode}`;
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1225
1251
|
|
|
1226
1252
|
progress.status = result.exitCode === 0 ? "completed" : "failed";
|
|
1227
1253
|
progress.durationMs = Date.now() - startTime;
|
|
@@ -1266,15 +1292,38 @@ async function runSingleAttempt(
|
|
|
1266
1292
|
mcpDirectTools: agent.mcpDirectTools,
|
|
1267
1293
|
})
|
|
1268
1294
|
: undefined;
|
|
1269
|
-
|
|
1295
|
+
let completionGuardTriggered = completionGuard?.triggered === true && !observedMutationAttempt;
|
|
1296
|
+
// The classifier is deliberately narrow, so a read-only review task can
|
|
1297
|
+
// still be misread as implementation. Arbitrate BEFORE any failure side
|
|
1298
|
+
// effect is published (effects, exit code, progress, notifications,
|
|
1299
|
+
// acceptance, output persistence): only a confident read-only verdict
|
|
1300
|
+
// rescues, and the task text alone is evidence — never the child's own
|
|
1301
|
+
// final message.
|
|
1302
|
+
let arbiterRescued = false;
|
|
1303
|
+
if (completionGuardTriggered) {
|
|
1304
|
+
const arbitration = await arbitrateCompletionGuardRescue({
|
|
1305
|
+
guardTriggered: true,
|
|
1306
|
+
task: shared.originalTask ?? task,
|
|
1307
|
+
arbiter: options.llmIntentArbiter,
|
|
1308
|
+
});
|
|
1309
|
+
completionGuardTriggered = arbitration.triggered;
|
|
1310
|
+
arbiterRescued = arbitration.rescued;
|
|
1311
|
+
}
|
|
1270
1312
|
if (completionGuard) {
|
|
1271
1313
|
result.effects = {
|
|
1272
1314
|
...(result.effects ?? {}),
|
|
1273
1315
|
fileMutation: {
|
|
1274
|
-
status: completionGuard.expectedMutation
|
|
1316
|
+
status: completionGuard.expectedMutation
|
|
1317
|
+
? completionGuardTriggered
|
|
1318
|
+
? "missing"
|
|
1319
|
+
: arbiterRescued
|
|
1320
|
+
? "not-applicable"
|
|
1321
|
+
: "observed"
|
|
1322
|
+
: "not-applicable",
|
|
1275
1323
|
expected: completionGuard.expectedMutation,
|
|
1276
1324
|
attempted: completionGuard.attemptedMutation || observedMutationAttempt,
|
|
1277
1325
|
...(completionGuardTriggered ? { message: "Subagent completed without making edits for an implementation task." } : {}),
|
|
1326
|
+
...(arbiterRescued ? { resolvedBy: "llm-intent-arbiter" } : {}),
|
|
1278
1327
|
},
|
|
1279
1328
|
};
|
|
1280
1329
|
}
|
|
@@ -1344,7 +1393,7 @@ async function runSyncCompletion(
|
|
|
1344
1393
|
};
|
|
1345
1394
|
const agent = agents.find((a) => a.name === agentName);
|
|
1346
1395
|
if (!agent) {
|
|
1347
|
-
return withRunContext({
|
|
1396
|
+
return redactResultPrompt(withRunContext({
|
|
1348
1397
|
index: options.index ?? 0,
|
|
1349
1398
|
agent: agentName,
|
|
1350
1399
|
task,
|
|
@@ -1352,12 +1401,12 @@ async function runSyncCompletion(
|
|
|
1352
1401
|
messages: [],
|
|
1353
1402
|
usage: emptyUsage(),
|
|
1354
1403
|
error: `Unknown agent: ${agentName}`,
|
|
1355
|
-
}, options.context);
|
|
1404
|
+
}, options.context));
|
|
1356
1405
|
}
|
|
1357
1406
|
try {
|
|
1358
1407
|
assertAgentAllowedByCapabilityCeiling(agent.name, options.capabilityCeiling);
|
|
1359
1408
|
} catch (error) {
|
|
1360
|
-
return withRunContext({
|
|
1409
|
+
return redactResultPrompt(withRunContext({
|
|
1361
1410
|
index: options.index ?? 0,
|
|
1362
1411
|
agent: agent.name,
|
|
1363
1412
|
task,
|
|
@@ -1366,11 +1415,23 @@ async function runSyncCompletion(
|
|
|
1366
1415
|
usage: emptyUsage(),
|
|
1367
1416
|
error: error instanceof Error ? error.message : String(error),
|
|
1368
1417
|
...(options.capabilityCeiling ? { capabilityCeiling: options.capabilityCeiling } : {}),
|
|
1369
|
-
}, options.context);
|
|
1418
|
+
}, options.context));
|
|
1419
|
+
}
|
|
1420
|
+
const acceptanceErrors = validateAcceptanceInput(options.acceptance);
|
|
1421
|
+
if (acceptanceErrors.length > 0) {
|
|
1422
|
+
return redactResultPrompt(withRunContext({
|
|
1423
|
+
index: options.index ?? 0,
|
|
1424
|
+
agent: agentName,
|
|
1425
|
+
task,
|
|
1426
|
+
exitCode: 1,
|
|
1427
|
+
messages: [],
|
|
1428
|
+
usage: emptyUsage(),
|
|
1429
|
+
error: acceptanceErrors.join(" "),
|
|
1430
|
+
}, options.context));
|
|
1370
1431
|
}
|
|
1371
1432
|
const outputModeValidationError = validateFileOnlyOutputMode(options.outputMode, options.outputPath, `Single run (${agentName})`);
|
|
1372
1433
|
if (outputModeValidationError) {
|
|
1373
|
-
return withRunContext({
|
|
1434
|
+
return redactResultPrompt(withRunContext({
|
|
1374
1435
|
index: options.index ?? 0,
|
|
1375
1436
|
agent: agentName,
|
|
1376
1437
|
task,
|
|
@@ -1379,7 +1440,7 @@ async function runSyncCompletion(
|
|
|
1379
1440
|
usage: emptyUsage(),
|
|
1380
1441
|
outputMode: options.outputMode,
|
|
1381
1442
|
error: outputModeValidationError,
|
|
1382
|
-
}, options.context);
|
|
1443
|
+
}, options.context));
|
|
1383
1444
|
}
|
|
1384
1445
|
|
|
1385
1446
|
const shareEnabled = options.share === true;
|
|
@@ -1396,7 +1457,11 @@ async function runSyncCompletion(
|
|
|
1396
1457
|
});
|
|
1397
1458
|
const acceptancePrompt = formatAcceptancePrompt(effectiveAcceptance, { reportOptional: isAgentContractV1(options.agentContract) });
|
|
1398
1459
|
const taskWithAcceptance = acceptancePrompt ? `${task}\n${acceptancePrompt}` : task;
|
|
1460
|
+
options.onEffectivePrompt?.(taskWithAcceptance);
|
|
1399
1461
|
const sessionEnabled = Boolean(options.sessionFile || options.sessionDir) || shareEnabled;
|
|
1462
|
+
if (options.context === "fork" && options.sessionFile && existsSync(options.sessionFile)) {
|
|
1463
|
+
alignForkedSessionCwd(options.sessionFile, options.cwd ?? runtimeCwd);
|
|
1464
|
+
}
|
|
1400
1465
|
const skillNames = options.skills ?? agent.skills ?? [];
|
|
1401
1466
|
const skillCwd = options.cwd ?? runtimeCwd;
|
|
1402
1467
|
const { resolved: resolvedSkills, missing: missingSkills } = resolveSkillsWithFallback(
|
|
@@ -1407,7 +1472,7 @@ async function runSyncCompletion(
|
|
|
1407
1472
|
agent.filePath ? path.dirname(agent.filePath) : skillCwd,
|
|
1408
1473
|
);
|
|
1409
1474
|
if (skillNames.some((skill) => skill.trim() === "pi-subagents") && missingSkills.includes("pi-subagents")) {
|
|
1410
|
-
return withRunContext({
|
|
1475
|
+
return redactResultPrompt(withRunContext({
|
|
1411
1476
|
index: options.index ?? 0,
|
|
1412
1477
|
agent: agentName,
|
|
1413
1478
|
task,
|
|
@@ -1415,7 +1480,7 @@ async function runSyncCompletion(
|
|
|
1415
1480
|
messages: [],
|
|
1416
1481
|
usage: emptyUsage(),
|
|
1417
1482
|
error: "Skills not found: pi-subagents",
|
|
1418
|
-
}, options.context);
|
|
1483
|
+
}, options.context));
|
|
1419
1484
|
}
|
|
1420
1485
|
let systemPrompt = agent.systemPrompt?.trim() || "";
|
|
1421
1486
|
if (resolvedSkills.length > 0) {
|
|
@@ -1426,6 +1491,7 @@ async function runSyncCompletion(
|
|
|
1426
1491
|
if (memoryInjection) {
|
|
1427
1492
|
systemPrompt = systemPrompt ? `${systemPrompt}\n\n${memoryInjection}` : memoryInjection;
|
|
1428
1493
|
}
|
|
1494
|
+
systemPrompt = appendAgentRefinementOverlay(systemPrompt, { cwd: skillCwd, agentName });
|
|
1429
1495
|
systemPrompt = injectOutputPathSystemPrompt(systemPrompt, options.outputPath, agent);
|
|
1430
1496
|
|
|
1431
1497
|
const candidates = buildModelCandidates(
|
|
@@ -1449,7 +1515,7 @@ async function runSyncCompletion(
|
|
|
1449
1515
|
artifactPathsResult = getArtifactPaths(options.artifactsDir, options.runId, agentName, options.index);
|
|
1450
1516
|
ensureArtifactsDir(options.artifactsDir);
|
|
1451
1517
|
if (options.artifactConfig?.includeInput !== false) {
|
|
1452
|
-
|
|
1518
|
+
writeArtifact(artifactPathsResult.inputPath, `# Task for ${agentName}\n\n${PROMPT_REDACTED}; live Prompt Audit only.\n`);
|
|
1453
1519
|
}
|
|
1454
1520
|
if (options.artifactConfig?.includeJsonl !== false) {
|
|
1455
1521
|
jsonlPath = artifactPathsResult.jsonlPath;
|
|
@@ -1463,7 +1529,7 @@ async function runSyncCompletion(
|
|
|
1463
1529
|
childIndex: options.index,
|
|
1464
1530
|
cwd: options.cwd ?? runtimeCwd,
|
|
1465
1531
|
});
|
|
1466
|
-
transcriptWriter.writeInitialUserMessage(
|
|
1532
|
+
transcriptWriter.writeInitialUserMessage(`${PROMPT_REDACTED}; live Prompt Audit only.`);
|
|
1467
1533
|
}
|
|
1468
1534
|
}
|
|
1469
1535
|
|
|
@@ -1499,6 +1565,10 @@ async function runSyncCompletion(
|
|
|
1499
1565
|
};
|
|
1500
1566
|
let lastResult: SingleResult | undefined;
|
|
1501
1567
|
const modelsToTry = candidates.length > 0 ? candidates : [undefined];
|
|
1568
|
+
let modelRetryIndex = 0;
|
|
1569
|
+
// Escalated to "file" after an unexplained zero-activity startup failure so
|
|
1570
|
+
// retries keep the task text out of argv (endpoint pre-exec scans may deny it).
|
|
1571
|
+
let taskDeliveryOverride: SubagentTaskDelivery | undefined;
|
|
1502
1572
|
modelAttemptsLoop: for (let modelIndex = 0; modelIndex < modelsToTry.length; modelIndex++) {
|
|
1503
1573
|
const candidate = modelsToTry[modelIndex];
|
|
1504
1574
|
for (let startupAttemptIndex = 0; ; startupAttemptIndex++) {
|
|
@@ -1517,6 +1587,7 @@ async function runSyncCompletion(
|
|
|
1517
1587
|
.filter((modelCandidate): modelCandidate is string => Boolean(modelCandidate)),
|
|
1518
1588
|
outputSnapshot,
|
|
1519
1589
|
originalTask: task,
|
|
1590
|
+
taskDelivery: taskDeliveryOverride,
|
|
1520
1591
|
});
|
|
1521
1592
|
lastResult = result;
|
|
1522
1593
|
if (startupAttemptIndex === 0) {
|
|
@@ -1585,6 +1656,10 @@ async function runSyncCompletion(
|
|
|
1585
1656
|
}
|
|
1586
1657
|
break modelAttemptsLoop;
|
|
1587
1658
|
}
|
|
1659
|
+
if (!taskDeliveryOverride && result.processSignal === "SIGKILL") {
|
|
1660
|
+
taskDeliveryOverride = "file";
|
|
1661
|
+
attemptNotes.push("[startup-retry] retrying with file task delivery to keep the task text out of the child process argv.");
|
|
1662
|
+
}
|
|
1588
1663
|
attempt.error = retryNote;
|
|
1589
1664
|
attemptNotes.push(retryNote);
|
|
1590
1665
|
continue;
|
|
@@ -1603,9 +1678,48 @@ async function runSyncCompletion(
|
|
|
1603
1678
|
attempt.error = startupError;
|
|
1604
1679
|
break modelAttemptsLoop;
|
|
1605
1680
|
}
|
|
1606
|
-
if (
|
|
1607
|
-
|
|
1608
|
-
|
|
1681
|
+
if (isRetryableModelFailure(result.error)) {
|
|
1682
|
+
if (modelIndex < modelsToTry.length - 1) {
|
|
1683
|
+
attemptNotes.push(formatModelAttemptNote(attempt, modelsToTry[modelIndex + 1]));
|
|
1684
|
+
modelRetryIndex = 0;
|
|
1685
|
+
break;
|
|
1686
|
+
}
|
|
1687
|
+
const modelRetryDelayMs = MODEL_RETRY_DELAYS_MS[modelRetryIndex];
|
|
1688
|
+
if (modelRetryDelayMs !== undefined) {
|
|
1689
|
+
const retryNote = formatModelRetryNote({
|
|
1690
|
+
model: attempt.model,
|
|
1691
|
+
attempt: modelRetryIndex + 1,
|
|
1692
|
+
maxAttempts: MODEL_RETRY_DELAYS_MS.length + 1,
|
|
1693
|
+
delayMs: modelRetryDelayMs,
|
|
1694
|
+
});
|
|
1695
|
+
const shouldRetry = await waitForSubagentStartupRetry(modelRetryDelayMs, [options.signal, options.interruptSignal]);
|
|
1696
|
+
if (!shouldRetry) {
|
|
1697
|
+
if (options.interruptSignal?.aborted) {
|
|
1698
|
+
result.exitCode = 0;
|
|
1699
|
+
result.interrupted = true;
|
|
1700
|
+
result.error = undefined;
|
|
1701
|
+
result.finalOutput = "Interrupted. Waiting for explicit next action.";
|
|
1702
|
+
if (result.progress) {
|
|
1703
|
+
result.progress.status = "running";
|
|
1704
|
+
result.progress.error = undefined;
|
|
1705
|
+
}
|
|
1706
|
+
} else {
|
|
1707
|
+
const cancellationError = "Subagent model retry cancelled before relaunch.";
|
|
1708
|
+
result.error = cancellationError;
|
|
1709
|
+
result.finalOutput = cancellationError;
|
|
1710
|
+
attempt.error = cancellationError;
|
|
1711
|
+
if (result.progress) result.progress.error = cancellationError;
|
|
1712
|
+
}
|
|
1713
|
+
break modelAttemptsLoop;
|
|
1714
|
+
}
|
|
1715
|
+
attempt.error = retryNote;
|
|
1716
|
+
attemptNotes.push(retryNote);
|
|
1717
|
+
modelRetryIndex += 1;
|
|
1718
|
+
startupAttemptIndex = -1;
|
|
1719
|
+
continue;
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
break modelAttemptsLoop;
|
|
1609
1723
|
}
|
|
1610
1724
|
}
|
|
1611
1725
|
|
|
@@ -1687,6 +1801,8 @@ async function runSyncCompletion(
|
|
|
1687
1801
|
: undefined,
|
|
1688
1802
|
cwd: options.cwd ?? runtimeCwd,
|
|
1689
1803
|
reportOptional: isAgentContractV1(options.agentContract),
|
|
1804
|
+
artifactsDir: options.artifactsDir,
|
|
1805
|
+
runId: options.runId,
|
|
1690
1806
|
});
|
|
1691
1807
|
}
|
|
1692
1808
|
} catch (error) {
|
|
@@ -1697,13 +1813,39 @@ async function runSyncCompletion(
|
|
|
1697
1813
|
stripAcceptanceReportsFromMessages(result.messages);
|
|
1698
1814
|
if (acceptanceFailure && result.acceptance.explicit && result.exitCode === 0 && !result.interrupted && !result.timedOut && !isAgentContractV1(options.agentContract)) {
|
|
1699
1815
|
result.exitCode = 1;
|
|
1816
|
+
if (result.savedOutputPath) {
|
|
1817
|
+
result.finalOutput = finalizeSingleOutput({
|
|
1818
|
+
fullOutput: result.finalOutput ?? "",
|
|
1819
|
+
outputPath: options.outputPath,
|
|
1820
|
+
outputMode: result.outputMode,
|
|
1821
|
+
exitCode: result.exitCode,
|
|
1822
|
+
preserveSavedOutput: true,
|
|
1823
|
+
savedPath: result.savedOutputPath,
|
|
1824
|
+
outputReference: result.outputReference,
|
|
1825
|
+
}).displayOutput;
|
|
1826
|
+
artifactOutputByResult.set(result, result.finalOutput);
|
|
1827
|
+
}
|
|
1700
1828
|
result.error = result.error ? `${result.error}\n${acceptanceFailure}` : acceptanceFailure;
|
|
1829
|
+
if (artifactPathsResult && options.artifactConfig?.enabled !== false && options.artifactConfig?.includeOutput !== false) {
|
|
1830
|
+
try {
|
|
1831
|
+
writeArtifact(artifactPathsResult.outputPath, formatOutputArtifactContent({
|
|
1832
|
+
output: artifactOutputByResult.get(result) ?? result.finalOutput ?? "",
|
|
1833
|
+
error: result.error,
|
|
1834
|
+
transcriptPath: result.transcriptPath,
|
|
1835
|
+
metadataPath: options.artifactConfig?.includeMetadata === false ? undefined : artifactPathsResult.metadataPath,
|
|
1836
|
+
}));
|
|
1837
|
+
} catch (error) {
|
|
1838
|
+
const message = `Artifact output post-processing failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
1839
|
+
result.outputSaveError = result.outputSaveError ? `${result.outputSaveError}\n${message}` : message;
|
|
1840
|
+
}
|
|
1841
|
+
}
|
|
1701
1842
|
if (result.progress) {
|
|
1702
1843
|
result.progress.status = "failed";
|
|
1703
1844
|
result.progress.error = result.error;
|
|
1704
1845
|
}
|
|
1705
1846
|
}
|
|
1706
1847
|
if (isAgentContractV1(options.agentContract)) attachContractProjections(result);
|
|
1848
|
+
redactResultPrompt(result);
|
|
1707
1849
|
try {
|
|
1708
1850
|
persistResultMetadata(result);
|
|
1709
1851
|
} catch (error) {
|
|
@@ -1788,7 +1930,7 @@ export async function runSync(
|
|
|
1788
1930
|
durationMs: publishedReceipt.progressSummary?.durationMs ?? 0,
|
|
1789
1931
|
error: failureMessage,
|
|
1790
1932
|
};
|
|
1791
|
-
const failedResult: SingleResult = {
|
|
1933
|
+
const failedResult: SingleResult = redactResultPrompt({
|
|
1792
1934
|
...publishedReceipt,
|
|
1793
1935
|
detached: undefined,
|
|
1794
1936
|
detachedReason,
|
|
@@ -1804,7 +1946,7 @@ export async function runSync(
|
|
|
1804
1946
|
acceptance: publishedReceipt.acceptance
|
|
1805
1947
|
? buildSkippedAcceptanceLedger(publishedReceipt.acceptance.effectiveAcceptance, { id: "completion-pipeline", message: failureMessage })
|
|
1806
1948
|
: undefined,
|
|
1807
|
-
};
|
|
1949
|
+
});
|
|
1808
1950
|
if (strictContract) attachContractProjections(failedResult);
|
|
1809
1951
|
try {
|
|
1810
1952
|
// Replace the provisional detach receipt metadata with the authoritative
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { AgentProgress, ForegroundChildControl, ForegroundRunControl } from "../../shared/types.ts";
|
|
2
|
+
import { registerLivePromptAudit, removeLivePromptAudit, type PromptAuditRerunContract } from "./prompt-audit.ts";
|
|
2
3
|
|
|
3
4
|
interface BeginForegroundChildInput {
|
|
4
5
|
index: number;
|
|
5
6
|
agent: string;
|
|
6
7
|
description?: string;
|
|
8
|
+
authoredTask: string;
|
|
9
|
+
effectivePrompt: string;
|
|
10
|
+
cwd?: string;
|
|
11
|
+
outputPath?: string;
|
|
12
|
+
rerun?: PromptAuditRerunContract;
|
|
7
13
|
model?: string;
|
|
8
14
|
thinking?: string;
|
|
9
15
|
interrupt: () => boolean;
|
|
@@ -109,6 +115,11 @@ export function beginForegroundChild(control: ForegroundRunControl, input: Begin
|
|
|
109
115
|
}
|
|
110
116
|
control.activeChildren ??= new Map();
|
|
111
117
|
control.activeChildren.set(input.index, child);
|
|
118
|
+
registerLivePromptAudit(control, input.index, input.authoredTask, input.effectivePrompt, {
|
|
119
|
+
...(input.cwd ? { cwd: input.cwd } : {}),
|
|
120
|
+
...(input.outputPath ? { outputPath: input.outputPath } : {}),
|
|
121
|
+
...(input.rerun ? { rerun: input.rerun } : {}),
|
|
122
|
+
});
|
|
112
123
|
syncCurrentChild(control, child);
|
|
113
124
|
}
|
|
114
125
|
|
|
@@ -121,6 +132,7 @@ export function updateForegroundChild(control: ForegroundRunControl, index: numb
|
|
|
121
132
|
}
|
|
122
133
|
|
|
123
134
|
export function finishForegroundChild(control: ForegroundRunControl, index: number): void {
|
|
135
|
+
removeLivePromptAudit(control, index);
|
|
124
136
|
control.activeChildren?.delete(index);
|
|
125
137
|
if (control.currentIndex === index) {
|
|
126
138
|
const next = [...(control.activeChildren?.values() ?? [])]
|