@fitchmultz/pi-subagents 0.44.7 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +258 -7
- package/LICENSE +1 -0
- package/README.md +58 -1483
- package/agents/context-builder.md +19 -1
- package/agents/debugger.md +10 -3
- package/agents/delegate.md +1 -0
- package/agents/fixer.md +4 -1
- package/agents/oracle.md +13 -2
- package/agents/planner.md +14 -3
- package/agents/researcher.md +11 -2
- package/agents/reviewer-claude.md +11 -2
- package/agents/reviewer-gpt.md +12 -2
- package/agents/reviewer-ponytail.md +11 -1
- package/agents/reviewer-security.md +13 -2
- package/agents/reviewer.md +12 -3
- package/agents/scout.md +12 -1
- package/agents/ui-designer.md +10 -3
- package/agents/watcher.md +1 -0
- package/agents/worker.md +8 -2
- package/agents/writer.md +6 -3
- package/dist/agents/agent-defaults.js +9 -0
- package/dist/agents/agent-definition.js +196 -0
- package/dist/agents/agent-management.js +64 -905
- package/dist/agents/agent-scope.js +4 -2
- package/dist/agents/agent-selection.js +10 -5
- package/dist/agents/agent-serializer.js +55 -67
- package/dist/agents/agents.js +75 -716
- package/dist/agents/builtin-overrides.js +218 -0
- package/dist/agents/chain-serializer.js +3 -367
- package/dist/agents/config-values.js +52 -0
- package/dist/agents/discovery-paths.js +91 -0
- package/dist/agents/frontmatter.js +15 -5
- package/dist/agents/identity.js +25 -8
- package/dist/agents/json-chain.js +254 -0
- package/dist/agents/management-config.js +332 -0
- package/dist/agents/management-format.js +231 -0
- package/dist/agents/management-persistence.js +287 -0
- package/dist/agents/management-targets.js +136 -0
- package/dist/agents/management-warnings.js +81 -0
- package/dist/agents/markdown-chain.js +210 -0
- package/dist/agents/package-agents.js +154 -0
- package/dist/agents/skill-files.js +157 -0
- package/dist/agents/skill-search-paths.js +246 -0
- package/dist/agents/skill-types.js +1 -0
- package/dist/agents/skills.js +54 -499
- package/dist/extension/acceptance-schema.js +55 -0
- package/dist/extension/build-info.js +1 -1
- package/dist/extension/chain-schema.js +196 -0
- package/dist/extension/child-runtime.js +237 -0
- package/dist/extension/compact-tools.js +122 -51
- package/dist/extension/config-schema.js +29 -0
- package/dist/extension/config.js +27 -11
- package/dist/extension/control-notice-schema.js +37 -0
- package/dist/extension/control-notices.js +13 -6
- package/dist/extension/delegation-bridges.js +43 -0
- package/dist/extension/doctor.js +48 -25
- package/dist/extension/everyday-schemas.js +207 -0
- package/dist/extension/fanout-child.js +18 -319
- package/dist/extension/index.js +8 -563
- package/dist/extension/message-renderers.js +225 -0
- package/dist/extension/nested-control-inbox.js +154 -0
- package/dist/extension/parent-runtime.js +339 -0
- package/dist/extension/primary-tool.js +69 -0
- package/dist/extension/result-snapshot.js +22 -0
- package/dist/extension/runtime-reload.js +62 -0
- package/dist/extension/runtime-storage.js +43 -0
- package/dist/extension/schema-overrides.js +75 -0
- package/dist/extension/schemas.js +265 -336
- package/dist/extension/tool-input.js +27 -12
- package/dist/extension/tool-result.js +19 -4
- package/dist/history/answer-texts.js +57 -0
- package/dist/history/canonical-result.js +76 -43
- package/dist/history/canonical-selection.js +40 -0
- package/dist/history/database-generation.js +82 -0
- package/dist/history/database.js +57 -33
- package/dist/history/entry-ingestion.js +61 -0
- package/dist/history/index.js +242 -97
- package/dist/history/ingest.js +168 -331
- package/dist/history/output-digests.js +40 -0
- package/dist/history/preview.js +210 -0
- package/dist/history/prune.js +33 -0
- package/dist/history/queries.js +60 -349
- package/dist/history/query-scope.js +190 -0
- package/dist/history/rows.js +77 -0
- package/dist/history/run-projection.js +137 -0
- package/dist/history/run-queries.js +153 -0
- package/dist/history/schema.js +31 -0
- package/dist/history/search-queries.js +163 -0
- package/dist/history/selected-record.js +108 -0
- package/dist/history/source-file.js +45 -0
- package/dist/history/source-watches.js +141 -0
- package/dist/history/store.js +164 -153
- package/dist/history/text-chunks.js +169 -0
- package/dist/history/text.js +35 -0
- package/dist/history/transcript-queries.js +177 -0
- package/dist/history/types.js +5 -1
- package/dist/history/values.js +36 -0
- package/dist/history/wire-inputs.js +122 -0
- package/dist/history/wire-models.js +38 -0
- package/dist/history/worker-runtime.js +441 -0
- package/dist/history/worker.js +66 -462
- package/dist/intercom/intercom-bridge.js +48 -20
- package/dist/intercom/live-intercom.js +80 -23
- package/dist/intercom/nested-result-tree.js +163 -0
- package/dist/intercom/result-delivery.js +40 -0
- package/dist/intercom/result-intercom.js +178 -261
- package/dist/pi-intercom/agent-dir.js +7 -3
- package/dist/pi-intercom/async.js +27 -0
- package/dist/pi-intercom/bridge-ask.js +57 -0
- package/dist/pi-intercom/bridge-config.js +79 -0
- package/dist/pi-intercom/bridge-http.js +86 -0
- package/dist/pi-intercom/bridge-protocol.js +106 -0
- package/dist/pi-intercom/bridge-routes.js +64 -0
- package/dist/pi-intercom/bridge-session.js +416 -0
- package/dist/pi-intercom/bridge.js +182 -603
- package/dist/pi-intercom/broker/broker.js +236 -244
- package/dist/pi-intercom/broker/client.js +189 -304
- package/dist/pi-intercom/broker/connection.js +165 -0
- package/dist/pi-intercom/broker/framing.js +5 -3
- package/dist/pi-intercom/broker/paths.js +4 -1
- package/dist/pi-intercom/broker/pid.js +53 -25
- package/dist/pi-intercom/broker/snapshot-reader.js +78 -0
- package/dist/pi-intercom/broker/snapshots.js +188 -0
- package/dist/pi-intercom/broker/spawn.js +36 -25
- package/dist/pi-intercom/config.js +85 -71
- package/dist/pi-intercom/connection.js +297 -0
- package/dist/pi-intercom/identity.js +58 -0
- package/dist/pi-intercom/inbound-delivery.js +356 -0
- package/dist/pi-intercom/inbound-journal.js +303 -0
- package/dist/pi-intercom/inbound-record.js +113 -0
- package/dist/pi-intercom/inbound.js +179 -0
- package/dist/pi-intercom/index.js +79 -2933
- package/dist/pi-intercom/inspection.js +62 -0
- package/dist/pi-intercom/interview.js +236 -0
- package/dist/pi-intercom/lifecycle.js +168 -0
- package/dist/pi-intercom/message-format.js +69 -0
- package/dist/pi-intercom/outbound.js +304 -0
- package/dist/pi-intercom/peer-awareness.js +66 -0
- package/dist/pi-intercom/reply-tracker.js +62 -43
- package/dist/pi-intercom/reply-wait.js +201 -0
- package/dist/pi-intercom/runtime-types.js +3 -0
- package/dist/pi-intercom/session-events.js +180 -0
- package/dist/pi-intercom/session-targets.js +42 -34
- package/dist/pi-intercom/subagent-events.js +238 -0
- package/dist/pi-intercom/subagent-live-events.js +129 -86
- package/dist/pi-intercom/supervisor.js +282 -0
- package/dist/pi-intercom/tool-arguments.js +74 -0
- package/dist/pi-intercom/tool-registration.js +95 -0
- package/dist/pi-intercom/tool-results.js +38 -0
- package/dist/pi-intercom/tool-schemas.js +82 -0
- package/dist/pi-intercom/tools.js +51 -0
- package/dist/pi-intercom/topic-actions.js +177 -0
- package/dist/pi-intercom/topics.js +177 -92
- package/dist/pi-intercom/transport.js +1 -0
- package/dist/pi-intercom/types.js +151 -114
- package/dist/pi-intercom/ui/compose-paste.js +93 -0
- package/dist/pi-intercom/ui/compose.js +121 -143
- package/dist/pi-intercom/ui/inline-message.js +59 -59
- package/dist/pi-intercom/ui/message-renderers.js +147 -0
- package/dist/pi-intercom/ui/overlay.js +181 -0
- package/dist/pi-intercom/ui/session-format.js +124 -0
- package/dist/pi-intercom/ui/session-list.js +76 -43
- package/dist/pi-intercom/ui/tool-renderers.js +110 -0
- package/dist/pi-intercom/ui/topic-view.js +88 -0
- package/dist/pi-intercom/validation.js +59 -0
- package/dist/runs/background/async-chain-plan.js +265 -0
- package/dist/runs/background/async-control.js +134 -58
- package/dist/runs/background/async-execution.js +136 -633
- package/dist/runs/background/async-job-admission.js +40 -0
- package/dist/runs/background/async-job-projection.js +169 -0
- package/dist/runs/background/async-job-tracker.js +297 -327
- package/dist/runs/background/async-launch.js +216 -0
- package/dist/runs/background/async-plan.js +116 -0
- package/dist/runs/background/async-result-file.js +47 -23
- package/dist/runs/background/async-resume.js +195 -253
- package/dist/runs/background/async-run-discovery.js +213 -0
- package/dist/runs/background/async-run-location.js +135 -0
- package/dist/runs/background/async-run-record.js +1 -0
- package/dist/runs/background/async-run-repair.js +223 -0
- package/dist/runs/background/async-run-summary.js +1 -0
- package/dist/runs/background/async-single-plan.js +105 -0
- package/dist/runs/background/async-status-projection.js +155 -0
- package/dist/runs/background/async-status-render.js +117 -0
- package/dist/runs/background/async-status-validation.js +181 -0
- package/dist/runs/background/async-status.js +3 -442
- package/dist/runs/background/async-value.js +21 -0
- package/dist/runs/background/completion-dedupe.js +36 -12
- package/dist/runs/background/completion-delivery.js +211 -205
- package/dist/runs/background/completion-receipts.js +237 -0
- package/dist/runs/background/legacy-status-acceptance.js +34 -0
- package/dist/runs/background/notify.js +96 -48
- package/dist/runs/background/parallel-groups.js +36 -19
- package/dist/runs/background/result-payload.js +178 -0
- package/dist/runs/background/result-watcher.js +348 -339
- package/dist/runs/background/run-id-resolver.js +53 -33
- package/dist/runs/background/run-schemas.js +189 -0
- package/dist/runs/background/run-status-contracts.js +14 -0
- package/dist/runs/background/run-status-render.js +270 -0
- package/dist/runs/background/run-status.js +231 -339
- package/dist/runs/background/runner-attempt-output.js +155 -0
- package/dist/runs/background/runner-attempt.js +263 -0
- package/dist/runs/background/runner-child-executor.js +166 -0
- package/dist/runs/background/runner-child-observer.js +192 -0
- package/dist/runs/background/runner-completion-summary.js +71 -0
- package/dist/runs/background/runner-completion.js +211 -0
- package/dist/runs/background/runner-config.js +1 -0
- package/dist/runs/background/runner-contract.js +1 -0
- package/dist/runs/background/runner-dynamic.js +121 -0
- package/dist/runs/background/runner-finalization.js +149 -0
- package/dist/runs/background/runner-graph.js +68 -0
- package/dist/runs/background/runner-initial-status.js +60 -0
- package/dist/runs/background/runner-lifecycle.js +142 -0
- package/dist/runs/background/runner-monitor.js +309 -0
- package/dist/runs/background/runner-parallel.js +204 -0
- package/dist/runs/background/runner-prepare-step.js +86 -0
- package/dist/runs/background/runner-reporting.js +153 -0
- package/dist/runs/background/runner-status.js +148 -0
- package/dist/runs/background/runner-step-output.js +92 -0
- package/dist/runs/background/runner-step-record.js +45 -0
- package/dist/runs/background/runner-step.js +112 -0
- package/dist/runs/background/runner-streaming.js +173 -0
- package/dist/runs/background/runner-workflow.js +213 -0
- package/dist/runs/background/stale-run-reconciler.js +155 -292
- package/dist/runs/background/subagent-runner-launcher.js +33 -13
- package/dist/runs/background/subagent-runner.js +51 -1842
- package/dist/runs/background/top-level-async.js +2 -1
- package/dist/runs/foreground/chain-clarify.js +293 -1017
- package/dist/runs/foreground/clarification-draft.js +87 -0
- package/dist/runs/foreground/clarify-contracts.js +1 -0
- package/dist/runs/foreground/clarify-invocation.js +129 -38
- package/dist/runs/foreground/clarify-text-editor.js +210 -0
- package/dist/runs/foreground/clarify-view.js +167 -0
- package/dist/runs/foreground/execution-input.js +226 -353
- package/dist/runs/foreground/execution-routing.js +33 -0
- package/dist/runs/foreground/execution-timeout.js +81 -0
- package/dist/runs/foreground/foreground-control.js +222 -763
- package/dist/runs/foreground/foreground-memory.js +99 -0
- package/dist/runs/foreground/invocation-context.js +55 -0
- package/dist/runs/foreground/invocation-execution.js +331 -0
- package/dist/runs/foreground/invocation-expansion.js +48 -0
- package/dist/runs/foreground/management-actions.js +295 -0
- package/dist/runs/foreground/nested-control.js +179 -0
- package/dist/runs/foreground/question-continuation.js +78 -0
- package/dist/runs/foreground/question-control.js +155 -50
- package/dist/runs/foreground/resume-target.js +221 -0
- package/dist/runs/foreground/revival-launch-policy.js +58 -0
- package/dist/runs/foreground/run-async-path.js +190 -178
- package/dist/runs/foreground/run-interrupt.js +164 -0
- package/dist/runs/foreground/run-nudge.js +278 -0
- package/dist/runs/foreground/saved-revival.js +251 -0
- package/dist/runs/foreground/subagent-executor.js +135 -424
- package/dist/runs/foreground/subagent-params.js +67 -30
- package/dist/runs/foreground/wait-observation.js +104 -0
- package/dist/runs/foreground/wait-registration.js +17 -0
- package/dist/runs/foreground/wait-run.js +283 -123
- package/dist/runs/shared/acceptance-contract.js +193 -99
- package/dist/runs/shared/acceptance-defaults.js +1 -0
- package/dist/runs/shared/acceptance-evaluation.js +201 -181
- package/dist/runs/shared/acceptance-finalization.js +256 -180
- package/dist/runs/shared/acceptance-outcome.js +53 -0
- package/dist/runs/shared/acceptance-reports.js +137 -72
- package/dist/runs/shared/acceptance-submission.js +167 -0
- package/dist/runs/shared/acceptance-verification.js +100 -0
- package/dist/runs/shared/chain-outputs.js +80 -52
- package/dist/runs/shared/child-attempt-types.js +1 -0
- package/dist/runs/shared/child-attempt.js +314 -667
- package/dist/runs/shared/child-boundaries.js +173 -0
- package/dist/runs/shared/child-context-filter.js +44 -0
- package/dist/runs/shared/child-event-observer.js +390 -0
- package/dist/runs/shared/child-execution-cwd.js +73 -43
- package/dist/runs/shared/child-execution-outcome.js +72 -0
- package/dist/runs/shared/child-invocation.js +54 -0
- package/dist/runs/shared/child-message-validation.js +215 -0
- package/dist/runs/shared/child-native-accounting.js +106 -0
- package/dist/runs/shared/child-native-observation.js +69 -0
- package/dist/runs/shared/child-observation-spool.js +164 -0
- package/dist/runs/shared/child-observations.js +157 -76
- package/dist/runs/shared/child-presence.js +3 -0
- package/dist/runs/shared/child-route-env.js +119 -0
- package/dist/runs/shared/child-stream-observer.js +221 -0
- package/dist/runs/shared/child-stream-projection.js +137 -0
- package/dist/runs/shared/child-structured-tool.js +27 -0
- package/dist/runs/shared/claude-code.js +121 -158
- package/dist/runs/shared/claude-model.js +42 -0
- package/dist/runs/shared/claude-session.js +83 -0
- package/dist/runs/shared/claude-types.js +1 -0
- package/dist/runs/shared/completion-guard.js +18 -18
- package/dist/runs/shared/control-event-policy.js +8 -0
- package/dist/runs/shared/control-notification-owner.js +13 -0
- package/dist/runs/shared/dynamic-fanout.js +188 -173
- package/dist/runs/shared/dynamic-item.js +102 -0
- package/dist/runs/shared/history-index.js +62 -36
- package/dist/runs/shared/legacy-async-recovery.js +114 -0
- package/dist/runs/shared/legacy-output-recovery.js +148 -0
- package/dist/runs/shared/mcp-config-schema.js +36 -0
- package/dist/runs/shared/mcp-direct-tool-allowlist.js +147 -116
- package/dist/runs/shared/model-fallback.js +97 -38
- package/dist/runs/shared/mutating-tool-guard.js +128 -88
- package/dist/runs/shared/native-finalization-types.js +1 -0
- package/dist/runs/shared/native-finalization.js +155 -76
- package/dist/runs/shared/native-usage.js +238 -98
- package/dist/runs/shared/nested-control-records.js +128 -0
- package/dist/runs/shared/nested-events.js +8 -700
- package/dist/runs/shared/nested-path.js +32 -28
- package/dist/runs/shared/nested-projection.js +155 -0
- package/dist/runs/shared/nested-protocol.js +18 -0
- package/dist/runs/shared/nested-registry.js +191 -0
- package/dist/runs/shared/nested-render.js +106 -58
- package/dist/runs/shared/nested-route.js +220 -0
- package/dist/runs/shared/nested-validation.js +216 -0
- package/dist/runs/shared/owned-child-evidence.js +125 -0
- package/dist/runs/shared/owned-run-list.js +146 -0
- package/dist/runs/shared/owned-run-observation.js +267 -0
- package/dist/runs/shared/owned-run-progress.js +109 -0
- package/dist/runs/shared/owned-run-read-state.js +1 -0
- package/dist/runs/shared/owned-run-results.js +202 -0
- package/dist/runs/shared/owned-run-status.js +180 -0
- package/dist/runs/shared/owned-run-view.js +51 -0
- package/dist/runs/shared/owned-workflow-details.js +17 -0
- package/dist/runs/shared/owner-output.js +43 -0
- package/dist/runs/shared/parallel-utils.js +36 -28
- package/dist/runs/shared/parent-receipts.js +90 -32
- package/dist/runs/shared/parent-usage.js +169 -57
- package/dist/runs/shared/pi-args.js +108 -201
- package/dist/runs/shared/pi-launch-input.js +1 -0
- package/dist/runs/shared/pi-session-launch.js +86 -0
- package/dist/runs/shared/pi-spawn.js +35 -21
- package/dist/runs/shared/run-history-queries.js +126 -35
- package/dist/runs/shared/run-history.js +101 -35
- package/dist/runs/shared/run-metadata-paths.js +14 -0
- package/dist/runs/shared/run-metadata.js +158 -0
- package/dist/runs/shared/run-persistence.js +131 -0
- package/dist/runs/shared/run-records.js +9 -679
- package/dist/runs/shared/run-restoration.js +338 -0
- package/dist/runs/shared/run-state-owner.js +26 -0
- package/dist/runs/shared/session-cwd-preload.js +27 -18
- package/dist/runs/shared/single-output.js +148 -70
- package/dist/runs/shared/stable-value.js +15 -0
- package/dist/runs/shared/streaming-text.js +23 -12
- package/dist/runs/shared/structured-output.js +25 -13
- package/dist/runs/shared/subagent-control.js +167 -100
- package/dist/runs/shared/subagent-prompt-runtime.js +27 -130
- package/dist/runs/shared/subagent-tool-loop-guard.js +81 -52
- package/dist/runs/shared/supervisor-question-state.js +145 -0
- package/dist/runs/shared/supervisor-questions.js +185 -254
- package/dist/runs/shared/workflow-graph.js +259 -167
- package/dist/runs/shared/workflow-policy.js +120 -48
- package/dist/runs/shared/worktree-contract.js +1 -0
- package/dist/runs/shared/worktree-hook.js +138 -0
- package/dist/runs/shared/worktree-location.js +47 -0
- package/dist/runs/shared/worktree-preservation.js +8 -0
- package/dist/runs/shared/worktree-process.js +107 -0
- package/dist/runs/shared/worktree.js +183 -322
- package/dist/shared/agent-context-policy.js +34 -44
- package/dist/shared/agent-dir.js +14 -0
- package/dist/shared/artifacts.js +30 -12
- package/dist/shared/atomic-json.js +4 -1
- package/dist/shared/chain-files.js +72 -0
- package/dist/shared/concurrency.js +18 -0
- package/dist/shared/content-preview.js +115 -0
- package/dist/shared/cooperative.js +5 -2
- package/dist/shared/execution-cwd.js +13 -5
- package/dist/shared/file-coalescer.js +2 -1
- package/dist/shared/fork-context.js +10 -12
- package/dist/shared/formatters.js +45 -19
- package/dist/shared/journal-frames.js +164 -0
- package/dist/shared/journal-projections.js +121 -0
- package/dist/shared/journal-reader.js +6 -407
- package/dist/shared/json-projection.js +191 -0
- package/dist/shared/lazy-tools.js +19 -8
- package/dist/shared/message-output.js +116 -0
- package/dist/shared/model-info.js +31 -14
- package/dist/shared/native-import.js +20 -0
- package/dist/shared/native-journal.js +140 -0
- package/dist/shared/native-session.js +5 -2
- package/dist/shared/native-tui.js +7 -2
- package/dist/shared/native-typebox.js +15 -3
- package/dist/shared/output-page.js +63 -0
- package/dist/shared/post-exit-stdio-guard.js +128 -88
- package/dist/shared/prompt-sections.js +2 -0
- package/dist/shared/session-entries.js +70 -35
- package/dist/shared/session-identity.js +5 -3
- package/dist/shared/settings.js +62 -192
- package/dist/shared/status-format.js +97 -37
- package/dist/shared/task-file-policy.js +24 -0
- package/dist/shared/temp-root.js +44 -15
- package/dist/shared/types/acceptance.js +1 -0
- package/dist/shared/types/async.js +1 -0
- package/dist/shared/types/config.js +1 -0
- package/dist/shared/types/details.js +1 -0
- package/dist/shared/types/history.js +1 -0
- package/dist/shared/types/inputs.js +1 -0
- package/dist/shared/types/intercom.js +1 -0
- package/dist/shared/types/launch.js +1 -0
- package/dist/shared/types/messages.js +1 -0
- package/dist/shared/types/nested.js +1 -0
- package/dist/shared/types/owned-runs.js +1 -0
- package/dist/shared/types/progress.js +1 -0
- package/dist/shared/types/questions.js +1 -0
- package/dist/shared/types/results.js +1 -0
- package/dist/shared/types/state.js +1 -0
- package/dist/shared/types/usage.js +1 -0
- package/dist/shared/types/workflow.js +1 -0
- package/dist/shared/types.js +75 -30
- package/dist/shared/unknown.js +52 -0
- package/dist/shared/utils.js +54 -260
- package/dist/slash/command-discovery.js +82 -0
- package/dist/slash/command-input.js +190 -0
- package/dist/slash/prompt-template-bridge.js +94 -270
- package/dist/slash/prompt-template-contract.js +77 -0
- package/dist/slash/prompt-template-results.js +125 -0
- package/dist/slash/request-protocol.js +68 -0
- package/dist/slash/result-delivery.js +237 -0
- package/dist/slash/saved-chain.js +78 -0
- package/dist/slash/slash-bridge.js +123 -89
- package/dist/slash/slash-commands.js +101 -572
- package/dist/slash/slash-live-state.js +68 -47
- package/dist/tui/action-hints.js +50 -22
- package/dist/tui/activity-lines.js +32 -0
- package/dist/tui/agent-browser.js +290 -0
- package/dist/tui/agent-controls.js +289 -0
- package/dist/tui/agent-conversation.js +444 -0
- package/dist/tui/agent-dock.js +171 -0
- package/dist/tui/agent-history.js +50 -183
- package/dist/tui/agent-model.js +62 -0
- package/dist/tui/agent-picker.js +262 -0
- package/dist/tui/agent-view.js +232 -1564
- package/dist/tui/compact-results.js +193 -0
- package/dist/tui/conversation-details.js +190 -0
- package/dist/tui/conversation-frame.js +135 -0
- package/dist/tui/conversation-history.js +201 -0
- package/dist/tui/conversation-menu.js +78 -0
- package/dist/tui/conversation-notices.js +79 -0
- package/dist/tui/conversation-selection.js +58 -0
- package/dist/tui/conversation-viewport.js +129 -0
- package/dist/tui/direction-message.js +27 -0
- package/dist/tui/display.js +282 -0
- package/dist/tui/editor-viewport.js +18 -0
- package/dist/tui/expanded-content.js +87 -0
- package/dist/tui/expanded-multi.js +170 -0
- package/dist/tui/expanded-single.js +65 -0
- package/dist/tui/history-cards.js +216 -0
- package/dist/tui/history-display.js +238 -0
- package/dist/tui/history-json.js +16 -0
- package/dist/tui/history-metadata.js +152 -0
- package/dist/tui/history-record.js +251 -0
- package/dist/tui/history-text.js +34 -0
- package/dist/tui/indexed-history.js +116 -0
- package/dist/tui/nested-widget.js +120 -0
- package/dist/tui/picker-page.js +59 -0
- package/dist/tui/render.js +58 -1501
- package/dist/tui/result-facts.js +64 -0
- package/dist/tui/task-observation.js +59 -0
- package/dist/tui/task-store.js +366 -0
- package/dist/tui/text-values.js +16 -0
- package/dist/tui/view-connections.js +47 -0
- package/dist/tui/view-model.js +94 -0
- package/dist/tui/view-persistence.js +51 -0
- package/dist/tui/view-ports.js +1 -0
- package/dist/tui/view-session.js +37 -0
- package/dist/tui/widget-details.js +144 -0
- package/dist/tui/widget-status.js +245 -0
- package/dist/tui/widget.js +145 -0
- package/dist/tui/workflow-labels.js +223 -0
- package/dist/tui/workflow-outcomes.js +124 -0
- package/docs/code-quality.md +38 -0
- package/docs/development.md +99 -0
- package/docs/intercom-bridge.md +22 -17
- package/docs/intercom.md +132 -106
- package/docs/performance.md +19 -17
- package/docs/reference.md +1472 -0
- package/generated/RunValidators.d.ts +28 -0
- package/generated/RunValidators.js +2 -0
- package/package.json +27 -6
- package/prompts/parallel-cleanup.md +3 -0
- package/prompts/parallel-context-build.md +3 -0
- package/prompts/parallel-handoff-plan.md +6 -0
- package/prompts/parallel-research.md +4 -0
- package/prompts/parallel-review.md +2 -0
- package/prompts/review-loop.md +2 -0
- package/scripts/build.mjs +129 -85
- package/scripts/check-compat.mjs +48 -11
- package/scripts/compat-host.mjs +35 -7
- package/scripts/generate-run-schemas.mjs +210 -0
- package/scripts/intercom-bridge-credentials.mjs +155 -28
- package/scripts/intercom-remote.mjs +175 -50
- package/scripts/local-install-smoke.mjs +47 -37
- package/scripts/native-package-smoke.mjs +135 -25
- package/scripts/package-smoke.mjs +360 -140
- package/scripts/prepare.mjs +54 -34
- package/scripts/real-pi-processes.mjs +261 -0
- package/scripts/real-pi-smoke.mjs +432 -351
- package/scripts/run-tests.mjs +29 -15
- package/skills/pi-intercom/SKILL.md +11 -11
- package/skills/pi-intercom/references/peer-sessions.md +7 -2
- package/skills/pi-subagents/SKILL.md +1 -1
- package/skills/pi-subagents/references/full-orchestration-guide.md +254 -112
- package/src/agents/agent-defaults.ts +13 -0
- package/src/agents/agent-definition.ts +253 -0
- package/src/agents/agent-management.ts +111 -808
- package/src/agents/agent-scope.ts +7 -3
- package/src/agents/agent-selection.ts +26 -16
- package/src/agents/agent-serializer.ts +84 -93
- package/src/agents/agents.ts +199 -906
- package/src/agents/builtin-overrides.ts +297 -0
- package/src/agents/chain-serializer.ts +3 -329
- package/src/agents/config-values.ts +57 -0
- package/src/agents/discovery-paths.ts +134 -0
- package/src/agents/frontmatter.ts +35 -17
- package/src/agents/identity.ts +49 -18
- package/src/agents/json-chain.ts +305 -0
- package/src/agents/management-config.ts +342 -0
- package/src/agents/management-format.ts +243 -0
- package/src/agents/management-persistence.ts +408 -0
- package/src/agents/management-targets.ts +260 -0
- package/src/agents/management-warnings.ts +115 -0
- package/src/agents/markdown-chain.ts +237 -0
- package/src/agents/package-agents.ts +231 -0
- package/src/agents/skill-files.ts +182 -0
- package/src/agents/skill-search-paths.ts +289 -0
- package/src/agents/skill-types.ts +31 -0
- package/src/agents/skills.ts +152 -610
- package/src/extension/acceptance-schema.ts +88 -0
- package/src/extension/chain-schema.ts +276 -0
- package/src/extension/child-runtime.ts +302 -0
- package/src/extension/compact-tools.ts +259 -102
- package/src/extension/config-schema.ts +59 -0
- package/src/extension/config.ts +39 -17
- package/src/extension/control-notice-schema.ts +55 -0
- package/src/extension/control-notices.ts +57 -33
- package/src/extension/delegation-bridges.ts +59 -0
- package/src/extension/doctor.ts +171 -135
- package/src/extension/everyday-schemas.ts +252 -0
- package/src/extension/fanout-child.ts +29 -308
- package/src/extension/index.ts +17 -642
- package/src/extension/message-renderers.ts +334 -0
- package/src/extension/nested-control-inbox.ts +196 -0
- package/src/extension/parent-runtime.ts +405 -0
- package/src/extension/primary-tool.ts +130 -0
- package/src/extension/result-snapshot.ts +35 -0
- package/src/extension/runtime-reload.ts +72 -0
- package/src/extension/runtime-storage.ts +49 -0
- package/src/extension/schema-overrides.ts +114 -0
- package/src/extension/schemas.ts +451 -418
- package/src/extension/tool-input.ts +40 -13
- package/src/extension/tool-result.ts +45 -14
- package/src/history/answer-texts.ts +74 -0
- package/src/history/canonical-result.ts +127 -51
- package/src/history/canonical-selection.ts +54 -0
- package/src/history/database-generation.ts +86 -0
- package/src/history/database.ts +86 -48
- package/src/history/entry-ingestion.ts +129 -0
- package/src/history/index.ts +426 -148
- package/src/history/ingest.ts +372 -342
- package/src/history/output-digests.ts +41 -0
- package/src/history/preview.ts +235 -0
- package/src/history/prune.ts +48 -0
- package/src/history/queries.ts +122 -256
- package/src/history/query-scope.ts +278 -0
- package/src/history/rows.ts +118 -0
- package/src/history/run-projection.ts +164 -0
- package/src/history/run-queries.ts +199 -0
- package/src/history/schema.ts +34 -0
- package/src/history/search-queries.ts +216 -0
- package/src/history/selected-record.ts +140 -0
- package/src/history/source-file.ts +51 -0
- package/src/history/source-watches.ts +156 -0
- package/src/history/store.ts +310 -197
- package/src/history/text-chunks.ts +181 -0
- package/src/history/text.ts +43 -0
- package/src/history/transcript-queries.ts +251 -0
- package/src/history/types.ts +27 -164
- package/src/history/values.ts +36 -0
- package/src/history/wire-inputs.ts +141 -0
- package/src/history/wire-models.ts +51 -0
- package/src/history/worker-runtime.ts +502 -0
- package/src/history/worker.ts +94 -336
- package/src/intercom/intercom-bridge.ts +136 -69
- package/src/intercom/live-intercom.ts +197 -92
- package/src/intercom/nested-result-tree.ts +213 -0
- package/src/intercom/result-delivery.ts +56 -0
- package/src/intercom/result-intercom.ts +364 -382
- package/src/pi-intercom/agent-dir.ts +9 -3
- package/src/pi-intercom/async.ts +33 -0
- package/src/pi-intercom/bridge-ask.ts +64 -0
- package/src/pi-intercom/bridge-config.ts +101 -0
- package/src/pi-intercom/bridge-http.ts +97 -0
- package/src/pi-intercom/bridge-protocol.ts +123 -0
- package/src/pi-intercom/bridge-routes.ts +90 -0
- package/src/pi-intercom/bridge-session.ts +506 -0
- package/src/pi-intercom/bridge.ts +258 -547
- package/src/pi-intercom/broker/broker.ts +326 -263
- package/src/pi-intercom/broker/client.ts +273 -354
- package/src/pi-intercom/broker/connection.ts +192 -0
- package/src/pi-intercom/broker/framing.ts +11 -6
- package/src/pi-intercom/broker/paths.ts +28 -25
- package/src/pi-intercom/broker/pid.ts +68 -24
- package/src/pi-intercom/broker/snapshot-reader.ts +91 -0
- package/src/pi-intercom/broker/snapshots.ts +241 -0
- package/src/pi-intercom/broker/spawn.ts +58 -34
- package/src/pi-intercom/config.ts +113 -108
- package/src/pi-intercom/connection.ts +346 -0
- package/src/pi-intercom/identity.ts +71 -0
- package/src/pi-intercom/inbound-delivery.ts +450 -0
- package/src/pi-intercom/inbound-journal.ts +350 -0
- package/src/pi-intercom/inbound-record.ts +141 -0
- package/src/pi-intercom/inbound.ts +237 -0
- package/src/pi-intercom/index.ts +86 -2923
- package/src/pi-intercom/inspection.ts +82 -0
- package/src/pi-intercom/interview.ts +295 -0
- package/src/pi-intercom/lifecycle.ts +183 -0
- package/src/pi-intercom/message-format.ts +77 -0
- package/src/pi-intercom/outbound.ts +418 -0
- package/src/pi-intercom/peer-awareness.ts +84 -0
- package/src/pi-intercom/reply-tracker.ts +121 -59
- package/src/pi-intercom/reply-wait.ts +247 -0
- package/src/pi-intercom/runtime-types.ts +97 -0
- package/src/pi-intercom/session-events.ts +247 -0
- package/src/pi-intercom/session-targets.ts +124 -72
- package/src/pi-intercom/subagent-events.ts +299 -0
- package/src/pi-intercom/subagent-live-events.ts +212 -109
- package/src/pi-intercom/supervisor.ts +362 -0
- package/src/pi-intercom/tool-arguments.ts +120 -0
- package/src/pi-intercom/tool-registration.ts +121 -0
- package/src/pi-intercom/tool-results.ts +54 -0
- package/src/pi-intercom/tool-schemas.ts +134 -0
- package/src/pi-intercom/tools.ts +80 -0
- package/src/pi-intercom/topic-actions.ts +243 -0
- package/src/pi-intercom/topics.ts +267 -121
- package/src/pi-intercom/transport.ts +14 -0
- package/src/pi-intercom/types.ts +288 -190
- package/src/pi-intercom/ui/compose-paste.ts +109 -0
- package/src/pi-intercom/ui/compose.ts +173 -157
- package/src/pi-intercom/ui/inline-message.ts +80 -62
- package/src/pi-intercom/ui/message-renderers.ts +182 -0
- package/src/pi-intercom/ui/overlay.ts +238 -0
- package/src/pi-intercom/ui/session-format.ts +146 -0
- package/src/pi-intercom/ui/session-list.ts +145 -62
- package/src/pi-intercom/ui/tool-renderers.ts +148 -0
- package/src/pi-intercom/ui/topic-view.ts +107 -0
- package/src/pi-intercom/validation.ts +69 -0
- package/src/runs/background/async-chain-plan.ts +451 -0
- package/src/runs/background/async-control.ts +201 -71
- package/src/runs/background/async-execution.ts +206 -829
- package/src/runs/background/async-job-admission.ts +54 -0
- package/src/runs/background/async-job-projection.ts +225 -0
- package/src/runs/background/async-job-tracker.ts +416 -360
- package/src/runs/background/async-launch.ts +319 -0
- package/src/runs/background/async-plan.ts +285 -0
- package/src/runs/background/async-result-file.ts +79 -37
- package/src/runs/background/async-resume.ts +338 -285
- package/src/runs/background/async-run-discovery.ts +270 -0
- package/src/runs/background/async-run-location.ts +194 -0
- package/src/runs/background/async-run-record.ts +14 -0
- package/src/runs/background/async-run-repair.ts +307 -0
- package/src/runs/background/async-run-summary.ts +71 -0
- package/src/runs/background/async-single-plan.ts +168 -0
- package/src/runs/background/async-status-projection.ts +188 -0
- package/src/runs/background/async-status-render.ts +164 -0
- package/src/runs/background/async-status-validation.ts +238 -0
- package/src/runs/background/async-status.ts +9 -481
- package/src/runs/background/async-value.ts +29 -0
- package/src/runs/background/completion-dedupe.ts +103 -54
- package/src/runs/background/completion-delivery.ts +313 -187
- package/src/runs/background/completion-receipts.ts +309 -0
- package/src/runs/background/legacy-status-acceptance.ts +38 -0
- package/src/runs/background/notify.ts +167 -106
- package/src/runs/background/parallel-groups.ts +95 -46
- package/src/runs/background/result-payload.ts +268 -0
- package/src/runs/background/result-watcher.ts +484 -387
- package/src/runs/background/run-id-resolver.ts +126 -57
- package/src/runs/background/run-schemas.ts +240 -0
- package/src/runs/background/run-status-contracts.ts +46 -0
- package/src/runs/background/run-status-render.ts +364 -0
- package/src/runs/background/run-status.ts +338 -356
- package/src/runs/background/runner-attempt-output.ts +281 -0
- package/src/runs/background/runner-attempt.ts +354 -0
- package/src/runs/background/runner-child-executor.ts +232 -0
- package/src/runs/background/runner-child-observer.ts +270 -0
- package/src/runs/background/runner-completion-summary.ts +106 -0
- package/src/runs/background/runner-completion.ts +274 -0
- package/src/runs/background/runner-config.ts +52 -0
- package/src/runs/background/runner-contract.ts +51 -0
- package/src/runs/background/runner-dynamic.ts +185 -0
- package/src/runs/background/runner-finalization.ts +203 -0
- package/src/runs/background/runner-graph.ts +91 -0
- package/src/runs/background/runner-initial-status.ts +72 -0
- package/src/runs/background/runner-lifecycle.ts +159 -0
- package/src/runs/background/runner-monitor.ts +399 -0
- package/src/runs/background/runner-parallel.ts +280 -0
- package/src/runs/background/runner-prepare-step.ts +128 -0
- package/src/runs/background/runner-reporting.ts +192 -0
- package/src/runs/background/runner-status.ts +220 -0
- package/src/runs/background/runner-step-output.ts +158 -0
- package/src/runs/background/runner-step-record.ts +76 -0
- package/src/runs/background/runner-step.ts +150 -0
- package/src/runs/background/runner-streaming.ts +220 -0
- package/src/runs/background/runner-workflow.ts +284 -0
- package/src/runs/background/stale-run-reconciler.ts +279 -336
- package/src/runs/background/subagent-runner-launcher.ts +67 -35
- package/src/runs/background/subagent-runner.ts +80 -2048
- package/src/runs/background/top-level-async.ts +9 -7
- package/src/runs/foreground/chain-clarify.ts +499 -1334
- package/src/runs/foreground/clarification-draft.ts +92 -0
- package/src/runs/foreground/clarify-contracts.ts +33 -0
- package/src/runs/foreground/clarify-invocation.ts +192 -65
- package/src/runs/foreground/clarify-text-editor.ts +229 -0
- package/src/runs/foreground/clarify-view.ts +222 -0
- package/src/runs/foreground/execution-input.ts +358 -424
- package/src/runs/foreground/execution-routing.ts +41 -0
- package/src/runs/foreground/execution-timeout.ts +92 -0
- package/src/runs/foreground/foreground-control.ts +333 -812
- package/src/runs/foreground/foreground-memory.ts +132 -0
- package/src/runs/foreground/invocation-context.ts +88 -0
- package/src/runs/foreground/invocation-execution.ts +465 -0
- package/src/runs/foreground/invocation-expansion.ts +58 -0
- package/src/runs/foreground/management-actions.ts +360 -0
- package/src/runs/foreground/nested-control.ts +248 -0
- package/src/runs/foreground/question-continuation.ts +112 -0
- package/src/runs/foreground/question-control.ts +297 -70
- package/src/runs/foreground/resume-target.ts +330 -0
- package/src/runs/foreground/revival-launch-policy.ts +112 -0
- package/src/runs/foreground/run-async-path.ts +307 -223
- package/src/runs/foreground/run-interrupt.ts +202 -0
- package/src/runs/foreground/run-nudge.ts +355 -0
- package/src/runs/foreground/saved-revival.ts +356 -0
- package/src/runs/foreground/subagent-executor.ts +195 -493
- package/src/runs/foreground/subagent-params.ts +314 -242
- package/src/runs/foreground/wait-observation.ts +160 -0
- package/src/runs/foreground/wait-registration.ts +18 -0
- package/src/runs/foreground/wait-run.ts +361 -119
- package/src/runs/shared/acceptance-contract.ts +410 -209
- package/src/runs/shared/acceptance-defaults.ts +1 -0
- package/src/runs/shared/acceptance-evaluation.ts +314 -240
- package/src/runs/shared/acceptance-finalization.ts +447 -305
- package/src/runs/shared/acceptance-outcome.ts +69 -0
- package/src/runs/shared/acceptance-reports.ts +220 -126
- package/src/runs/shared/acceptance-submission.ts +251 -0
- package/src/runs/shared/acceptance-verification.ts +118 -0
- package/src/runs/shared/acceptance.ts +25 -25
- package/src/runs/shared/chain-outputs.ts +190 -98
- package/src/runs/shared/child-attempt-types.ts +118 -0
- package/src/runs/shared/child-attempt.ts +372 -608
- package/src/runs/shared/child-boundaries.ts +217 -0
- package/src/runs/shared/child-context-filter.ts +53 -0
- package/src/runs/shared/child-event-observer.ts +496 -0
- package/src/runs/shared/child-execution-cwd.ts +139 -68
- package/src/runs/shared/child-execution-outcome.ts +103 -0
- package/src/runs/shared/child-invocation.ts +74 -0
- package/src/runs/shared/child-message-validation.ts +233 -0
- package/src/runs/shared/child-native-accounting.ts +154 -0
- package/src/runs/shared/child-native-observation.ts +79 -0
- package/src/runs/shared/child-observation-spool.ts +188 -0
- package/src/runs/shared/child-observations.ts +219 -89
- package/src/runs/shared/child-presence.ts +6 -0
- package/src/runs/shared/child-route-env.ts +142 -0
- package/src/runs/shared/child-stream-observer.ts +302 -0
- package/src/runs/shared/child-stream-projection.ts +160 -0
- package/src/runs/shared/child-structured-tool.ts +38 -0
- package/src/runs/shared/claude-code.ts +201 -228
- package/src/runs/shared/claude-model.ts +67 -0
- package/src/runs/shared/claude-session.ts +124 -0
- package/src/runs/shared/claude-types.ts +31 -0
- package/src/runs/shared/completion-guard.ts +35 -26
- package/src/runs/shared/control-event-policy.ts +15 -0
- package/src/runs/shared/control-notification-owner.ts +20 -0
- package/src/runs/shared/dynamic-fanout.ts +402 -238
- package/src/runs/shared/dynamic-item.ts +114 -0
- package/src/runs/shared/history-index.ts +112 -51
- package/src/runs/shared/legacy-async-recovery.ts +153 -0
- package/src/runs/shared/legacy-output-recovery.ts +214 -0
- package/src/runs/shared/mcp-config-schema.ts +46 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +396 -307
- package/src/runs/shared/model-fallback.ts +302 -180
- package/src/runs/shared/mutating-tool-guard.ts +259 -158
- package/src/runs/shared/native-finalization-types.ts +29 -0
- package/src/runs/shared/native-finalization.ts +233 -109
- package/src/runs/shared/native-usage.ts +379 -96
- package/src/runs/shared/nested-control-records.ts +178 -0
- package/src/runs/shared/nested-events.ts +45 -752
- package/src/runs/shared/nested-path.ts +47 -34
- package/src/runs/shared/nested-projection.ts +230 -0
- package/src/runs/shared/nested-protocol.ts +67 -0
- package/src/runs/shared/nested-registry.ts +273 -0
- package/src/runs/shared/nested-render.ts +198 -100
- package/src/runs/shared/nested-route.ts +292 -0
- package/src/runs/shared/nested-validation.ts +291 -0
- package/src/runs/shared/owned-child-evidence.ts +184 -0
- package/src/runs/shared/owned-run-list.ts +187 -0
- package/src/runs/shared/owned-run-observation.ts +368 -0
- package/src/runs/shared/owned-run-progress.ts +172 -0
- package/src/runs/shared/owned-run-read-state.ts +7 -0
- package/src/runs/shared/owned-run-results.ts +289 -0
- package/src/runs/shared/owned-run-status.ts +239 -0
- package/src/runs/shared/owned-run-view.ts +65 -0
- package/src/runs/shared/owned-workflow-details.ts +24 -0
- package/src/runs/shared/owner-output.ts +73 -0
- package/src/runs/shared/parallel-utils.ts +93 -129
- package/src/runs/shared/parent-receipts.ts +177 -50
- package/src/runs/shared/parent-usage.ts +314 -91
- package/src/runs/shared/pi-args.ts +241 -311
- package/src/runs/shared/pi-launch-input.ts +48 -0
- package/src/runs/shared/pi-session-launch.ts +94 -0
- package/src/runs/shared/pi-spawn.ts +57 -33
- package/src/runs/shared/run-history-queries.ts +189 -38
- package/src/runs/shared/run-history.ts +197 -76
- package/src/runs/shared/run-id-ambiguity.ts +7 -3
- package/src/runs/shared/run-metadata-paths.ts +17 -0
- package/src/runs/shared/run-metadata.ts +240 -0
- package/src/runs/shared/run-persistence.ts +181 -0
- package/src/runs/shared/run-records.ts +19 -607
- package/src/runs/shared/run-restoration.ts +455 -0
- package/src/runs/shared/run-state-owner.ts +31 -0
- package/src/runs/shared/session-cwd-preload.ts +39 -19
- package/src/runs/shared/single-output.ts +358 -205
- package/src/runs/shared/stable-value.ts +15 -0
- package/src/runs/shared/streaming-text.ts +39 -12
- package/src/runs/shared/structured-output.ts +76 -46
- package/src/runs/shared/subagent-control.ts +330 -197
- package/src/runs/shared/subagent-prompt-runtime.ts +92 -174
- package/src/runs/shared/subagent-tool-loop-guard.ts +118 -68
- package/src/runs/shared/supervisor-question-state.ts +221 -0
- package/src/runs/shared/supervisor-questions.ts +396 -401
- package/src/runs/shared/workflow-graph.ts +400 -198
- package/src/runs/shared/workflow-policy.ts +245 -110
- package/src/runs/shared/worktree-contract.ts +29 -0
- package/src/runs/shared/worktree-hook.ts +181 -0
- package/src/runs/shared/worktree-location.ts +61 -0
- package/src/runs/shared/worktree-preservation.ts +10 -0
- package/src/runs/shared/worktree-process.ts +132 -0
- package/src/runs/shared/worktree.ts +459 -587
- package/src/shared/agent-context-policy.ts +176 -145
- package/src/shared/agent-dir.ts +15 -0
- package/src/shared/artifacts.ts +99 -68
- package/src/shared/atomic-json.ts +14 -11
- package/src/shared/chain-files.ts +72 -0
- package/src/shared/concurrency.ts +27 -0
- package/src/shared/content-preview.ts +117 -0
- package/src/shared/cooperative.ts +17 -13
- package/src/shared/execution-cwd.ts +34 -9
- package/src/shared/file-coalescer.ts +24 -22
- package/src/shared/fork-context.ts +52 -48
- package/src/shared/formatters.ts +88 -47
- package/src/shared/journal-frames.ts +197 -0
- package/src/shared/journal-projections.ts +133 -0
- package/src/shared/journal-reader.ts +18 -333
- package/src/shared/json-projection.ts +224 -0
- package/src/shared/lazy-tools.ts +76 -27
- package/src/shared/message-output.ts +146 -0
- package/src/shared/model-info.ts +94 -58
- package/src/shared/native-import.ts +25 -0
- package/src/shared/native-journal.ts +172 -0
- package/src/shared/native-session.ts +8 -3
- package/src/shared/native-tui.ts +13 -3
- package/src/shared/native-typebox.ts +18 -3
- package/src/shared/output-page.ts +76 -0
- package/src/shared/post-exit-stdio-guard.ts +232 -172
- package/src/shared/prompt-sections.ts +13 -7
- package/src/shared/session-entries.ts +103 -44
- package/src/shared/session-identity.ts +17 -10
- package/src/shared/settings.ts +182 -367
- package/src/shared/status-format.ts +207 -98
- package/src/shared/stream-json.d.ts +10 -0
- package/src/shared/task-file-policy.ts +35 -0
- package/src/shared/temp-root.ts +122 -71
- package/src/shared/types/acceptance.ts +149 -0
- package/src/shared/types/async.ts +247 -0
- package/src/shared/types/config.ts +139 -0
- package/src/shared/types/details.ts +104 -0
- package/src/shared/types/history.ts +217 -0
- package/src/shared/types/inputs.ts +4 -0
- package/src/shared/types/intercom.ts +57 -0
- package/src/shared/types/launch.ts +39 -0
- package/src/shared/types/messages.ts +104 -0
- package/src/shared/types/nested.ts +153 -0
- package/src/shared/types/owned-runs.ts +148 -0
- package/src/shared/types/progress.ts +106 -0
- package/src/shared/types/questions.ts +103 -0
- package/src/shared/types/results.ts +119 -0
- package/src/shared/types/state.ts +56 -0
- package/src/shared/types/usage.ts +36 -0
- package/src/shared/types/workflow.ts +187 -0
- package/src/shared/types.ts +222 -1161
- package/src/shared/ui-mode.ts +1 -1
- package/src/shared/unknown.ts +59 -0
- package/src/shared/utils.ts +111 -305
- package/src/slash/command-discovery.ts +109 -0
- package/src/slash/command-input.ts +232 -0
- package/src/slash/prompt-template-bridge.ts +153 -400
- package/src/slash/prompt-template-contract.ts +152 -0
- package/src/slash/prompt-template-results.ts +189 -0
- package/src/slash/request-protocol.ts +87 -0
- package/src/slash/result-delivery.ts +312 -0
- package/src/slash/saved-chain.ts +115 -0
- package/src/slash/slash-bridge.ts +202 -156
- package/src/slash/slash-commands.ts +176 -598
- package/src/slash/slash-live-state.ts +287 -229
- package/src/tui/action-hints.ts +147 -61
- package/src/tui/activity-lines.ts +40 -0
- package/src/tui/agent-browser.ts +354 -0
- package/src/tui/agent-controls.ts +355 -0
- package/src/tui/agent-conversation.ts +514 -0
- package/src/tui/agent-dock.ts +250 -0
- package/src/tui/agent-history.ts +78 -203
- package/src/tui/agent-model.ts +78 -0
- package/src/tui/agent-picker.ts +325 -0
- package/src/tui/agent-view.ts +391 -1333
- package/src/tui/compact-results.ts +342 -0
- package/src/tui/conversation-details.ts +206 -0
- package/src/tui/conversation-frame.ts +184 -0
- package/src/tui/conversation-history.ts +246 -0
- package/src/tui/conversation-menu.ts +119 -0
- package/src/tui/conversation-notices.ts +116 -0
- package/src/tui/conversation-selection.ts +66 -0
- package/src/tui/conversation-viewport.ts +169 -0
- package/src/tui/direction-message.ts +35 -0
- package/src/tui/display.ts +409 -0
- package/src/tui/editor-viewport.ts +19 -0
- package/src/tui/expanded-content.ts +134 -0
- package/src/tui/expanded-multi.ts +264 -0
- package/src/tui/expanded-single.ts +92 -0
- package/src/tui/history-cards.ts +316 -0
- package/src/tui/history-display.ts +334 -0
- package/src/tui/history-json.ts +17 -0
- package/src/tui/history-metadata.ts +177 -0
- package/src/tui/history-record.ts +321 -0
- package/src/tui/history-text.ts +34 -0
- package/src/tui/indexed-history.ts +149 -0
- package/src/tui/nested-widget.ts +192 -0
- package/src/tui/picker-page.ts +80 -0
- package/src/tui/render.ts +100 -1546
- package/src/tui/result-facts.ts +99 -0
- package/src/tui/task-observation.ts +96 -0
- package/src/tui/task-store.ts +432 -0
- package/src/tui/text-values.ts +20 -0
- package/src/tui/view-connections.ts +64 -0
- package/src/tui/view-model.ts +181 -0
- package/src/tui/view-persistence.ts +57 -0
- package/src/tui/view-ports.ts +55 -0
- package/src/tui/view-session.ts +42 -0
- package/src/tui/widget-details.ts +220 -0
- package/src/tui/widget-status.ts +331 -0
- package/src/tui/widget.ts +208 -0
- package/src/tui/workflow-labels.ts +340 -0
- package/src/tui/workflow-outcomes.ts +150 -0
- package/tsconfig.build.json +11 -10
- package/tsconfig.json +30 -17
|
@@ -25,14 +25,19 @@ Use this skill when the parent orchestrator needs to launch a specialized subage
|
|
|
25
25
|
Prefer the compact tools for ordinary delegation:
|
|
26
26
|
|
|
27
27
|
```typescript
|
|
28
|
-
agent_runs({ action: "profiles" })
|
|
29
|
-
delegate({ agent: "worker", task: "Implement the approved fix", worktree: true })
|
|
30
|
-
agent_runs({ action: "list" })
|
|
31
|
-
agent_runs({ action: "inspect", id: "<run-id>" })
|
|
32
|
-
agent_runs({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
agent_runs({ action: "profiles" });
|
|
29
|
+
delegate({ agent: "worker", task: "Implement the approved fix", worktree: true });
|
|
30
|
+
agent_runs({ action: "list" });
|
|
31
|
+
agent_runs({ action: "inspect", id: "<run-id>" });
|
|
32
|
+
agent_runs({
|
|
33
|
+
action: "review",
|
|
34
|
+
id: "<run-id>",
|
|
35
|
+
decision: "accepted",
|
|
36
|
+
message: "Checked the evidence.",
|
|
37
|
+
});
|
|
38
|
+
agent_runs({ action: "list", text: "login", sort: "newest", limit: 20 });
|
|
39
|
+
agent_runs({ action: "history", id: "<run-id>", index: 0, limit: 100 });
|
|
40
|
+
agent_runs({ action: "search", query: '"login timeout"', agent: "worker", limit: 20 });
|
|
36
41
|
```
|
|
37
42
|
|
|
38
43
|
These share the full executor, including acceptance and isolated single-writer worktrees. The list prioritizes pending questions, failures/interrupted or unconfirmed work, and completed-but-unreviewed results. Global `agent`/`state`/`text` filters and attention/newest/oldest sorting apply before paging (default 20, maximum 100), never cap retained history. Reuse the returned cursor with the same query, or use `offset`; restart without a cursor when the indexed snapshot changes. `history` requires an owned ID and a child index for multi-child runs, defaults to 100 native-entry previews, and returns an earlier-page cursor. `search` accepts 1–12 lexical words or one quoted phrase, excludes thinking/arguments/hidden payloads, and supports relevance/newest order and owned ID/child/agent filters. Finished attempts keep their own terminal/time boundary even when a continuation shares the source. Browse freshness and excerpts are observations, not canonical completion or delivery proof. For validated full selected bodies, use Agents details/Reply; oversized or changed records fail explicitly. `review` records `accepted` or `needs_changes` separately from execution, validation, and notification; it never launches a repair or reviewer. Use `continue` explicitly for more work. Use `load_subagent` and `subagent(...)` for parallel groups, chains, detailed overrides, and profile administration.
|
|
@@ -48,6 +53,7 @@ Prefer the tool when you are writing agent logic. Prefer the slash commands when
|
|
|
48
53
|
you are guiding a human through an interactive flow.
|
|
49
54
|
|
|
50
55
|
The repository keeps example prompts for repeatable workflows. Treat them as reusable orchestration recipes. When the user asks for one of these shapes, or when the workflow clearly fits, apply the same pattern directly with `subagent(...)` and other tools:
|
|
56
|
+
|
|
51
57
|
- `prompts/parallel-review.md` — fresh-context reviewers with distinct review angles, then synthesis
|
|
52
58
|
- `prompts/review-loop.md` — parent-orchestrated worker, fresh-reviewer, and fix-worker cycles until clean or capped
|
|
53
59
|
- `prompts/parallel-research.md` — combine `researcher` and `scout` for external evidence plus local code context
|
|
@@ -80,15 +86,29 @@ Example shape:
|
|
|
80
86
|
|
|
81
87
|
```typescript
|
|
82
88
|
subagent({
|
|
83
|
-
chain: [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
chain: [
|
|
90
|
+
{
|
|
91
|
+
parallel: [
|
|
92
|
+
{
|
|
93
|
+
agent: "context-builder",
|
|
94
|
+
task: "Build request/scope context for: ...",
|
|
95
|
+
output: "context-build/request-and-scope.md",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
agent: "context-builder",
|
|
99
|
+
task: "Build codebase/pattern context for: ...",
|
|
100
|
+
output: "context-build/codebase-and-patterns.md",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
agent: "context-builder",
|
|
104
|
+
task: "Build validation/risk context for: ...",
|
|
105
|
+
output: "context-build/validation-and-risks.md",
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
context: "fresh",
|
|
111
|
+
});
|
|
92
112
|
```
|
|
93
113
|
|
|
94
114
|
### Parallel handoff-plan technique
|
|
@@ -100,15 +120,33 @@ Example shape:
|
|
|
100
120
|
```typescript
|
|
101
121
|
subagent({
|
|
102
122
|
chain: [
|
|
103
|
-
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
{
|
|
124
|
+
parallel: [
|
|
125
|
+
{
|
|
126
|
+
agent: "researcher",
|
|
127
|
+
task: "Research the external reference and transferable implementation ideas for: ...",
|
|
128
|
+
output: "handoff/external-reference.md",
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
agent: "context-builder",
|
|
132
|
+
task: "Build local codebase context for: ...",
|
|
133
|
+
output: "handoff/local-context.md",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
agent: "context-builder",
|
|
137
|
+
task: "Compare evidence and propose implementation strategy for: ...",
|
|
138
|
+
output: "handoff/implementation-strategy.md",
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
agent: "context-builder",
|
|
144
|
+
task: "Read {previous} and synthesize the final handoff plan and implementation-ready meta-prompt.",
|
|
145
|
+
output: "handoff/final-handoff-plan.md",
|
|
146
|
+
},
|
|
109
147
|
],
|
|
110
|
-
context: "fresh"
|
|
111
|
-
})
|
|
148
|
+
context: "fresh",
|
|
149
|
+
});
|
|
112
150
|
```
|
|
113
151
|
|
|
114
152
|
### Gather-context-and-clarify technique
|
|
@@ -139,18 +177,84 @@ subagent({
|
|
|
139
177
|
async: false,
|
|
140
178
|
context: "fresh",
|
|
141
179
|
chain: [
|
|
142
|
-
{
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
180
|
+
{
|
|
181
|
+
parallel: [
|
|
182
|
+
{
|
|
183
|
+
agent: "reviewer",
|
|
184
|
+
phase: "Planning",
|
|
185
|
+
label: "Deploy docs",
|
|
186
|
+
as: "deployPlan",
|
|
187
|
+
task: "Plan fixes for deploy docs/workflow. Inspect the current diff. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
|
|
188
|
+
output: "plans/deploy.md",
|
|
189
|
+
outputMode: "file-only",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
agent: "reviewer",
|
|
193
|
+
phase: "Planning",
|
|
194
|
+
label: "Scheduler contract",
|
|
195
|
+
as: "schedulerPlan",
|
|
196
|
+
task: "Plan fixes for scheduler contract. Inspect the current diff. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
|
|
197
|
+
output: "plans/scheduler.md",
|
|
198
|
+
outputMode: "file-only",
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
agent: "reviewer",
|
|
202
|
+
phase: "Planning",
|
|
203
|
+
label: "Sandbox/security",
|
|
204
|
+
as: "sandboxPlan",
|
|
205
|
+
task: "Plan fixes for sandbox/security. Inspect the current diff. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
|
|
206
|
+
output: "plans/sandbox.md",
|
|
207
|
+
outputMode: "file-only",
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
concurrency: 3,
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
agent: "worker",
|
|
214
|
+
phase: "Implementation",
|
|
215
|
+
label: "Apply accepted fixes",
|
|
216
|
+
as: "workerResult",
|
|
217
|
+
task: "Apply only the accepted fixes from these planning summaries. You are the sole writer for the active worktree.\n\nDeploy plan:\n{outputs.deployPlan}\n\nScheduler plan:\n{outputs.schedulerPlan}\n\nSandbox plan:\n{outputs.sandboxPlan}",
|
|
218
|
+
acceptance: {
|
|
219
|
+
criteria: [
|
|
220
|
+
"Accepted fixes from each planning summary are applied",
|
|
221
|
+
"Focused validation for changed behavior passes",
|
|
222
|
+
"Changed files, validation commands, failures, and residual risks are reported",
|
|
223
|
+
],
|
|
224
|
+
evidence: ["changed-files", "commands-run", "validation-output", "residual-risks"],
|
|
225
|
+
stopRules: [
|
|
226
|
+
"Do not expand product scope beyond accepted fixes",
|
|
227
|
+
"Stop and report if a fix requires information or authority you cannot obtain",
|
|
228
|
+
],
|
|
229
|
+
maxFinalizationTurns: 3,
|
|
230
|
+
},
|
|
231
|
+
output: "worker/fixes.md",
|
|
232
|
+
outputMode: "file-only",
|
|
233
|
+
progress: true,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
parallel: [
|
|
237
|
+
{
|
|
238
|
+
agent: "reviewer",
|
|
239
|
+
phase: "Validation",
|
|
240
|
+
label: "Deploy/scheduler validation",
|
|
241
|
+
task: "Validate the post-worker diff for deploy and scheduler fixes. Start from the worker result: {outputs.workerResult}. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
|
|
242
|
+
output: "validation/deploy-scheduler.md",
|
|
243
|
+
outputMode: "file-only",
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
agent: "reviewer",
|
|
247
|
+
phase: "Validation",
|
|
248
|
+
label: "Sandbox validation",
|
|
249
|
+
task: "Validate the post-worker diff for sandbox/security fixes. Start from the worker result: {outputs.workerResult}. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
|
|
250
|
+
output: "validation/sandbox.md",
|
|
251
|
+
outputMode: "file-only",
|
|
252
|
+
},
|
|
253
|
+
],
|
|
254
|
+
concurrency: 2,
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
});
|
|
154
258
|
```
|
|
155
259
|
|
|
156
260
|
## Builtin Agents
|
|
@@ -158,7 +262,7 @@ subagent({
|
|
|
158
262
|
Builtin agents load at the lowest priority. Project agents override user agents,
|
|
159
263
|
and user/project agents override builtins with the same name.
|
|
160
264
|
|
|
161
|
-
Use `agent_runs({ action: "profiles" })` for the effective roles, model/thinking/fallback defaults (including truthful inheritance), and context defaults. The [
|
|
265
|
+
Use `agent_runs({ action: "profiles" })` for the effective roles, model/thinking/fallback defaults (including truthful inheritance), and context defaults. The [Subagents reference](../../../docs/reference.md#builtin-agents-in-plain-english) describes the bundled roles. Do not infer installed model routes from an old workflow example. Profiles without a model inherit the parent model at launch, including fresh-context runs; inspect the effective profile rather than assuming a role has no model configured.
|
|
162
266
|
|
|
163
267
|
For one run, use inline config:
|
|
164
268
|
|
|
@@ -173,6 +277,7 @@ For persistent tweaks, edit `subagents.agentOverrides` in user or project settin
|
|
|
173
277
|
Use profile defaults for routine launches; warranted overrides follow the [skill's model policy](../SKILL.md#agent-selection), using `model: "provider/model:high"`, never a standalone execution `thinking` field. Explicit overrides pin route/effort with same-choice transport retries but no profile fallback; unavailable choices fail for the parent to replace. Write the task prompt as a compact contract, not a long procedural script. Define the destination and let the role choose the efficient path.
|
|
174
278
|
|
|
175
279
|
A strong subagent prompt usually includes:
|
|
280
|
+
|
|
176
281
|
- **Goal**: the concrete outcome the child should produce.
|
|
177
282
|
- **Context/evidence**: relevant plan paths, files, diffs, decisions, or user constraints already approved.
|
|
178
283
|
- **Success criteria**: what must be true before the child can finish.
|
|
@@ -186,6 +291,7 @@ Avoid carrying over old prompt habits that over-specify every step. Use `must`,
|
|
|
186
291
|
For implementation handoffs, name the approved scope and success criteria more clearly than the process. Good prompts say what to change, what not to change, where the evidence lives, how to validate, and when to escalate. Useful helpers may split the assigned work within native limits; they must not take over the parent's workflow or continue its conversation.
|
|
187
292
|
|
|
188
293
|
Settings locations:
|
|
294
|
+
|
|
189
295
|
- User scope: `~/.pi/agent/settings.json`
|
|
190
296
|
- Project scope: `.pi/settings.json`
|
|
191
297
|
|
|
@@ -213,17 +319,20 @@ agent with the same name only when you want a substantially different agent.
|
|
|
213
319
|
## Discovery and Scope Rules
|
|
214
320
|
|
|
215
321
|
Agent files can live in:
|
|
322
|
+
|
|
216
323
|
- `~/.pi/agent/agents/**/*.md` — user scope
|
|
217
324
|
- `.pi/agents/**/*.md` — canonical project scope
|
|
218
325
|
- legacy `.agents/**/*.md` — still read for compatibility, but `.pi/agents/` wins on conflicts
|
|
219
326
|
|
|
220
327
|
Chains live in:
|
|
328
|
+
|
|
221
329
|
- `~/.pi/agent/chains/**/*.chain.md` and `~/.pi/agent/chains/**/*.chain.json` — user scope
|
|
222
330
|
- `.pi/chains/**/*.chain.md` and `.pi/chains/**/*.chain.json` — project scope
|
|
223
331
|
|
|
224
332
|
Discovery is recursive. `.chain.md` files do not define agents. Use `.chain.md` for simple saved chains and `.chain.json` for dynamic fanout or inline schema objects. Agents and chains can set optional frontmatter/package metadata; `name: scout` plus `package: code-analysis` registers as runtime name `code-analysis.scout` while serialization keeps `name` and `package` separate.
|
|
225
333
|
|
|
226
334
|
Precedence is by parsed runtime name:
|
|
335
|
+
|
|
227
336
|
1. project scope
|
|
228
337
|
2. user scope
|
|
229
338
|
3. builtin agents
|
|
@@ -235,8 +344,8 @@ Precedence is by parsed runtime name:
|
|
|
235
344
|
```typescript
|
|
236
345
|
subagent({
|
|
237
346
|
agent: "oracle",
|
|
238
|
-
task: "Review my current direction and challenge assumptions."
|
|
239
|
-
})
|
|
347
|
+
task: "Review my current direction and challenge assumptions.",
|
|
348
|
+
});
|
|
240
349
|
```
|
|
241
350
|
|
|
242
351
|
### Forked context
|
|
@@ -244,8 +353,8 @@ subagent({
|
|
|
244
353
|
```typescript
|
|
245
354
|
subagent({
|
|
246
355
|
agent: "oracle",
|
|
247
|
-
task: "Review my current direction and challenge assumptions."
|
|
248
|
-
})
|
|
356
|
+
task: "Review my current direction and challenge assumptions.",
|
|
357
|
+
});
|
|
249
358
|
```
|
|
250
359
|
|
|
251
360
|
`context: "fork"` creates a branched child session from the current persisted
|
|
@@ -262,9 +371,9 @@ fallbacks; an Anthropic override remains ineligible.
|
|
|
262
371
|
subagent({
|
|
263
372
|
tasks: [
|
|
264
373
|
{ agent: "scout", task: "Explore the auth module" },
|
|
265
|
-
{ agent: "researcher", task: "Research API client retry behavior" }
|
|
266
|
-
]
|
|
267
|
-
})
|
|
374
|
+
{ agent: "researcher", task: "Research API client retry behavior" },
|
|
375
|
+
],
|
|
376
|
+
});
|
|
268
377
|
```
|
|
269
378
|
|
|
270
379
|
Top-level parallel tasks can override per-task behavior:
|
|
@@ -274,10 +383,10 @@ subagent({
|
|
|
274
383
|
tasks: [
|
|
275
384
|
{ agent: "scout", task: "Map auth", output: "auth-context.md", progress: true },
|
|
276
385
|
{ agent: "researcher", task: "Research OAuth best practices", output: "oauth-research.md" },
|
|
277
|
-
{ agent: "scout", task: "Map auth test coverage", model: "anthropic/claude-sonnet-4" }
|
|
386
|
+
{ agent: "scout", task: "Map auth test coverage", model: "anthropic/claude-sonnet-4" },
|
|
278
387
|
],
|
|
279
|
-
concurrency: 3
|
|
280
|
-
})
|
|
388
|
+
concurrency: 3,
|
|
389
|
+
});
|
|
281
390
|
```
|
|
282
391
|
|
|
283
392
|
Avoid duplicate explicit output paths in parallel tasks. Concurrent children should not be told to write the same explicit file. Explicit output paths persist at their resolved cwd/workspace path; relative output paths that come from agent defaults are automatically materialized under the run artifact directory with unique names, so default `context.md`/`review.md` handoffs do not collide or leave project-root files. For large saved outputs, set `outputMode: "file-only"` together with an `output` path. The parent result then contains only a compact reference like `Output saved to: /abs/report.md (48.2 KB, 2847 lines). Read this file if needed.` instead of the full saved content. Do not use `output: false` for this; `output: false` means no file output. When a task is review-only, say “do not modify project/source files” rather than “do not write files” if you also configured `output`; otherwise the child may treat the output artifact as forbidden. Failed runs and save errors still return inline details for debugging.
|
|
@@ -289,9 +398,9 @@ subagent({
|
|
|
289
398
|
chain: [
|
|
290
399
|
{ agent: "scout", task: "Map the auth flow and summarize key files" },
|
|
291
400
|
{ agent: "planner", task: "Create an implementation plan from {previous}" },
|
|
292
|
-
{ agent: "worker", task: "Implement the approved plan based on {previous}" }
|
|
293
|
-
]
|
|
294
|
-
})
|
|
401
|
+
{ agent: "worker", task: "Implement the approved plan based on {previous}" },
|
|
402
|
+
],
|
|
403
|
+
});
|
|
295
404
|
```
|
|
296
405
|
|
|
297
406
|
Chain steps can use templated variables such as `{task}`, `{previous}`,
|
|
@@ -317,8 +426,8 @@ A reviewer timeout is never sign-off. Prefer separate default-async runs for fin
|
|
|
317
426
|
```typescript
|
|
318
427
|
subagent({
|
|
319
428
|
agent: "worker",
|
|
320
|
-
task: "Run the full test suite"
|
|
321
|
-
})
|
|
429
|
+
task: "Run the full test suite",
|
|
430
|
+
});
|
|
322
431
|
```
|
|
323
432
|
|
|
324
433
|
Use ordinary tools for routine waiting and CI status collection. When observation requires ongoing interpretation, give `watcher` the target, material transitions, and terminal condition. It should report meaningful findings without repeating unchanged status.
|
|
@@ -331,8 +440,8 @@ For review fanout where the parent continues a local audit:
|
|
|
331
440
|
const run = subagent({
|
|
332
441
|
agent: "reviewer",
|
|
333
442
|
task: "Review the current diff for correctness issues. Do not edit files.",
|
|
334
|
-
context: "fresh"
|
|
335
|
-
})
|
|
443
|
+
context: "fresh",
|
|
444
|
+
});
|
|
336
445
|
// Continue local inspection; completion will wake the parent.
|
|
337
446
|
```
|
|
338
447
|
|
|
@@ -341,7 +450,7 @@ Inspect async runs with `subagent({ action: "status", id: "..." })` or `subagent
|
|
|
341
450
|
Use `extend` when an active foreground child has an explicit timeout and is still doing useful work:
|
|
342
451
|
|
|
343
452
|
```typescript
|
|
344
|
-
subagent({ action: "extend", id: "foreground-run-id", extendMs: 300000 })
|
|
453
|
+
subagent({ action: "extend", id: "foreground-run-id", extendMs: 300000 });
|
|
345
454
|
```
|
|
346
455
|
|
|
347
456
|
`extend` adds time to the current foreground child deadline. It does not revive an already timed-out child; use `resume` after a timeout or transient failure.
|
|
@@ -349,12 +458,13 @@ subagent({ action: "extend", id: "foreground-run-id", extendMs: 300000 })
|
|
|
349
458
|
Use `resume` for follow-up work after a delegated run:
|
|
350
459
|
|
|
351
460
|
```typescript
|
|
352
|
-
subagent({ action: "resume", id: "run-id", message: "Follow up on this point." })
|
|
353
|
-
subagent({ action: "resume", id: "run-id", index: 1, message: "Continue reviewer 2." })
|
|
354
|
-
subagent({ action: "resume", id: "nested-run-id", message: "Continue this nested reviewer." })
|
|
461
|
+
subagent({ action: "resume", id: "run-id", message: "Follow up on this point." });
|
|
462
|
+
subagent({ action: "resume", id: "run-id", index: 1, message: "Continue reviewer 2." });
|
|
463
|
+
subagent({ action: "resume", id: "nested-run-id", message: "Continue this nested reviewer." });
|
|
355
464
|
```
|
|
356
465
|
|
|
357
466
|
Resume behavior:
|
|
467
|
+
|
|
358
468
|
- If a foreground or async child is still running and reachable, `resume` sends the follow-up to that live child over intercom.
|
|
359
469
|
- If a live foreground or async child needs a prompt but not a blocking reply, `nudge` sends a steered intercom message through the same bridge.
|
|
360
470
|
- If an async child has completed, `resume` revives it by starting a new async child from the persisted child session file.
|
|
@@ -371,7 +481,7 @@ Resume behavior:
|
|
|
371
481
|
Use diagnostics when setup or child startup looks wrong:
|
|
372
482
|
|
|
373
483
|
```typescript
|
|
374
|
-
subagent({ action: "doctor" })
|
|
484
|
+
subagent({ action: "doctor" });
|
|
375
485
|
```
|
|
376
486
|
|
|
377
487
|
Humans can use `/subagents-doctor` for the same read-only report. It checks runtime paths, discovery counts, async support, current session context, and intercom bridge state.
|
|
@@ -385,14 +495,14 @@ Default behavior is intentionally conservative. When no activity has been observ
|
|
|
385
495
|
Use soft interrupt when a child is clearly blocked or drifting and the parent needs to regain control:
|
|
386
496
|
|
|
387
497
|
```typescript
|
|
388
|
-
subagent({ action: "interrupt" })
|
|
498
|
+
subagent({ action: "interrupt" });
|
|
389
499
|
```
|
|
390
500
|
|
|
391
501
|
Pass `id` when targeting a specific controllable run, including a nested run shown in the parent status tree:
|
|
392
502
|
|
|
393
503
|
```typescript
|
|
394
|
-
subagent({ action: "interrupt", id: "abc123" })
|
|
395
|
-
subagent({ action: "interrupt", id: "nested-run-id" })
|
|
504
|
+
subagent({ action: "interrupt", id: "abc123" });
|
|
505
|
+
subagent({ action: "interrupt", id: "nested-run-id" });
|
|
396
506
|
```
|
|
397
507
|
|
|
398
508
|
A soft interrupt cancels the current child turn and leaves the run paused. It does not mean the delegated task succeeded or failed. Bare `interrupt` does not target hidden nested descendants; use the explicit nested id. After an interrupt, decide the next explicit action: resume with clearer instructions, replace the task, ask the user, or stop the workflow.
|
|
@@ -405,9 +515,9 @@ subagent({
|
|
|
405
515
|
task: "Run the slow migration test suite",
|
|
406
516
|
control: {
|
|
407
517
|
needsAttentionAfterMs: 1800000,
|
|
408
|
-
notifyOn: ["needs_attention"]
|
|
409
|
-
}
|
|
410
|
-
})
|
|
518
|
+
notifyOn: ["needs_attention"],
|
|
519
|
+
},
|
|
520
|
+
});
|
|
411
521
|
```
|
|
412
522
|
|
|
413
523
|
Needs-attention notifications can also prepare a compact intercom ping for the paired orchestrator target. Prefer `subagent({ action: "nudge", id: "...", message: "..." })` for live guidance, answers, corrections, or blockers; it is a non-blocking steer that supplements the active child task unless it explicitly replaces it. Use the status-shown intercom ask only when the parent must remain alive waiting for a reply. Do not invent a target; use the resolved target shown in status or injected instructions. An explicit agent `extensions` allowlist that omits `pi-intercom` still sandboxes child-side coordination tools.
|
|
@@ -421,14 +531,13 @@ edit parameters before launch:
|
|
|
421
531
|
subagent({
|
|
422
532
|
agent: "worker",
|
|
423
533
|
task: "Implement feature X",
|
|
424
|
-
clarify: true
|
|
425
|
-
})
|
|
534
|
+
clarify: true,
|
|
535
|
+
});
|
|
426
536
|
```
|
|
427
537
|
|
|
428
538
|
Clarify is opt-in for tool calls. Set `clarify: true` when you want to preview or edit a single, parallel, or chain run before launch. Clarify edits affect only the next run; use management actions, settings, or markdown files for persistent changes.
|
|
429
539
|
Programmatic launches run in the background by default. Omit `clarify` or set `clarify: false` to launch directly; `async: false`, `clarify: true`, or a foreground timeout keeps the run foreground.
|
|
430
540
|
|
|
431
|
-
|
|
432
541
|
## Worktree Isolation
|
|
433
542
|
|
|
434
543
|
When multiple agents might write concurrently, use worktrees instead of letting
|
|
@@ -438,10 +547,10 @@ them share one filesystem view.
|
|
|
438
547
|
subagent({
|
|
439
548
|
tasks: [
|
|
440
549
|
{ agent: "worker", task: "Implement feature A" },
|
|
441
|
-
{ agent: "worker", task: "Implement feature B" }
|
|
550
|
+
{ agent: "worker", task: "Implement feature B" },
|
|
442
551
|
],
|
|
443
|
-
worktree: true
|
|
444
|
-
})
|
|
552
|
+
worktree: true,
|
|
553
|
+
});
|
|
445
554
|
```
|
|
446
555
|
|
|
447
556
|
`worktree: true` gives each parallel task its own git worktree branched from
|
|
@@ -452,6 +561,7 @@ prefer a single-writer pattern instead.
|
|
|
452
561
|
## The Oracle Workflow
|
|
453
562
|
|
|
454
563
|
The intended oracle loop is:
|
|
564
|
+
|
|
455
565
|
1. the main agent forks to `oracle`
|
|
456
566
|
2. `oracle` reviews direction, drift, assumptions, and risks
|
|
457
567
|
3. `oracle` can coordinate back through `contact_supervisor` when the bridge injects it
|
|
@@ -462,14 +572,14 @@ The intended oracle loop is:
|
|
|
462
572
|
// Advisory review in a branched thread. Oracle defaults to forked context.
|
|
463
573
|
subagent({
|
|
464
574
|
agent: "oracle",
|
|
465
|
-
task: "Review my current direction, challenge assumptions, and propose the best next move."
|
|
466
|
-
})
|
|
575
|
+
task: "Review my current direction, challenge assumptions, and propose the best next move.",
|
|
576
|
+
});
|
|
467
577
|
|
|
468
578
|
// Existing implementation authority is sufficient. Worker defaults to fresh context.
|
|
469
579
|
subagent({
|
|
470
580
|
agent: "worker",
|
|
471
|
-
task: "Implement the approved approach: ..."
|
|
472
|
-
})
|
|
581
|
+
task: "Implement the approved approach: ...",
|
|
582
|
+
});
|
|
473
583
|
```
|
|
474
584
|
|
|
475
585
|
`oracle` is not a fresh-context reviewer in the Cognition article sense. It is
|
|
@@ -485,15 +595,21 @@ Use `oracle` as a smart-friend escalation when the parent needs help with trajec
|
|
|
485
595
|
Most agents should not call generic `intercom` directly unless bridge instructions provide a target and `contact_supervisor` is unavailable. Do not invent a target. Prefer the tool from the injected bridge instructions.
|
|
486
596
|
|
|
487
597
|
Use blocking `contact_supervisor` only when an ephemeral child cannot safely continue and must remain alive for the reply:
|
|
598
|
+
|
|
488
599
|
- `reason: "need_decision"` for one decision, approval, or product/API/scope clarification
|
|
489
600
|
- `reason: "interview_request"` when multiple structured answers are all required before safe progress
|
|
490
601
|
|
|
491
602
|
Both reasons persist the question before steering the supervisor, and neither uses the ordinary intercom ask timeout. After supervisor reload, reconnect, or child exit, resume the same saved supervisor session and use:
|
|
492
603
|
|
|
493
604
|
```typescript
|
|
494
|
-
agent_runs({ action: "questions" })
|
|
495
|
-
agent_runs({
|
|
496
|
-
|
|
605
|
+
agent_runs({ action: "questions" });
|
|
606
|
+
agent_runs({
|
|
607
|
+
action: "answer",
|
|
608
|
+
id: "<run-id>",
|
|
609
|
+
questionId: "<question-id>",
|
|
610
|
+
message: "Use the stable API.",
|
|
611
|
+
});
|
|
612
|
+
agent_runs({ action: "stop", id: "<run-id>" });
|
|
497
613
|
```
|
|
498
614
|
|
|
499
615
|
A live waiter reads the saved answer; an exited child is revived from its saved session with its original effective launch configuration and acceptance contract. Identical repeated answers do not duplicate work, and conflicting answers retain the original. A nudge is guidance, not an answer. `awaiting_input` and `answer_pending` are not execution completion. Stop cancels pending questions and aborts live waiters even after reload. Questions, contracts, and results live in persistent Pi session storage and survive temporary-log cleanup. Native parent custom entries retain ownership and review across reload, restart, and context-window changes. New or forked parent sessions do not automatically adopt another parent's runs. An interrupted pre-launch answer receipt gives an explicit `continue` recovery call; it never silently retries an uncertain launch.
|
|
@@ -503,6 +619,7 @@ Do not use `contact_supervisor` just to resolve review-only/no-project-edit vers
|
|
|
503
619
|
Use `contact_supervisor` with `reason: "progress_update"` only for a discovery or change the supervisor needs while working. It is non-blocking and steers at the next tool boundary. Skip starts, redundant narration, and routine completion; retain material findings in the final result.
|
|
504
620
|
|
|
505
621
|
Message conventions:
|
|
622
|
+
|
|
506
623
|
- `reason: "need_decision"` and `reason: "interview_request"` steer, wait for the parent reply, and return it to the child.
|
|
507
624
|
- `reason: "progress_update"` steers at the next tool boundary and should contain only a finding needed during active work.
|
|
508
625
|
- Child-side routine completion handoffs are not expected. Parent-side `pi-subagents` sends grouped completion results through `pi-intercom`: one grouped message per foreground parent run and one per completed async result file. Acknowledged foreground delivery returns a compact receipt with artifact/session paths; if unacknowledged, the normal full output is preserved. Grouped messages include child intercom targets, full child summaries, and compact nested summaries under the parent child that launched them.
|
|
@@ -512,20 +629,21 @@ If bridge instructions provide the child-facing tool, a child can ask:
|
|
|
512
629
|
```typescript
|
|
513
630
|
contact_supervisor({
|
|
514
631
|
reason: "need_decision",
|
|
515
|
-
message:
|
|
516
|
-
|
|
632
|
+
message:
|
|
633
|
+
"The approved API contract does not specify whether this new response field may be public. Should I preserve the current response shape?",
|
|
634
|
+
});
|
|
517
635
|
```
|
|
518
636
|
|
|
519
637
|
The parent replies with:
|
|
520
638
|
|
|
521
639
|
```typescript
|
|
522
|
-
intercom({ action: "reply", message: "Optimize for readability." })
|
|
640
|
+
intercom({ action: "reply", message: "Optimize for readability." });
|
|
523
641
|
```
|
|
524
642
|
|
|
525
643
|
Or inspects unresolved asks first:
|
|
526
644
|
|
|
527
645
|
```typescript
|
|
528
|
-
intercom({ action: "pending" })
|
|
646
|
+
intercom({ action: "pending" });
|
|
529
647
|
```
|
|
530
648
|
|
|
531
649
|
If intercom messages do not show up, run `subagent({ action: "doctor" })` or `/subagents-doctor`.
|
|
@@ -537,7 +655,7 @@ The `subagent(...)` tool also supports management actions.
|
|
|
537
655
|
### List available agents and chains
|
|
538
656
|
|
|
539
657
|
```typescript
|
|
540
|
-
subagent({ action: "list" })
|
|
658
|
+
subagent({ action: "list" });
|
|
541
659
|
```
|
|
542
660
|
|
|
543
661
|
`list` and `get` show the effective runtime agent by default. If a user or project agent shadows a builtin with the same name, the agent appears once with the same precedence used for execution (`project` > `user` > `builtin`). Use `agentScope: "user"` or `agentScope: "project"` only when you need to inspect a specific shadowing scope.
|
|
@@ -554,9 +672,9 @@ subagent({
|
|
|
554
672
|
systemPrompt: "Your system prompt here.",
|
|
555
673
|
systemPromptMode: "replace",
|
|
556
674
|
model: "openai-codex/gpt-5.4",
|
|
557
|
-
tools: "read,grep,find,ls,bash"
|
|
558
|
-
}
|
|
559
|
-
})
|
|
675
|
+
tools: "read,grep,find,ls,bash",
|
|
676
|
+
},
|
|
677
|
+
});
|
|
560
678
|
```
|
|
561
679
|
|
|
562
680
|
### Update an agent
|
|
@@ -566,15 +684,15 @@ subagent({
|
|
|
566
684
|
action: "update",
|
|
567
685
|
agent: "code-analysis.my-agent",
|
|
568
686
|
config: {
|
|
569
|
-
thinking: "high"
|
|
570
|
-
}
|
|
571
|
-
})
|
|
687
|
+
thinking: "high",
|
|
688
|
+
},
|
|
689
|
+
});
|
|
572
690
|
```
|
|
573
691
|
|
|
574
692
|
### Delete an agent
|
|
575
693
|
|
|
576
694
|
```typescript
|
|
577
|
-
subagent({ action: "delete", agent: "code-analysis.my-agent" })
|
|
695
|
+
subagent({ action: "delete", agent: "code-analysis.my-agent" });
|
|
578
696
|
```
|
|
579
697
|
|
|
580
698
|
Use management actions when the system needs to create or edit subagents on
|
|
@@ -597,6 +715,7 @@ Your system prompt here.
|
|
|
597
715
|
```
|
|
598
716
|
|
|
599
717
|
This defaults to fresh conversation context while appending the prompt to Pi's base prompt, inheriting project context and skills, preserving normal tools and extensions, and blocking nested delegation. Omit `package` for the traditional unqualified runtime name. Common optional fields include:
|
|
718
|
+
|
|
600
719
|
- `defaultProgress`
|
|
601
720
|
- `defaultReads`
|
|
602
721
|
- `output`
|
|
@@ -676,9 +795,9 @@ subagent({
|
|
|
676
795
|
chain: [
|
|
677
796
|
{ agent: "scout", task: "Map the auth flow and summarize relevant files" },
|
|
678
797
|
{ agent: "planner", task: "Plan the migration from {previous}" },
|
|
679
|
-
{ agent: "worker", task: "Implement the approved plan from {previous}" }
|
|
680
|
-
]
|
|
681
|
-
})
|
|
798
|
+
{ agent: "worker", task: "Implement the approved plan from {previous}" },
|
|
799
|
+
],
|
|
800
|
+
});
|
|
682
801
|
```
|
|
683
802
|
|
|
684
803
|
### Clarify → Plan → Implement → Review (self-orchestrated workflow)
|
|
@@ -724,17 +843,17 @@ subagent({
|
|
|
724
843
|
"Plan acceptance checks are addressed",
|
|
725
844
|
"Scout handoff artifacts are not committed",
|
|
726
845
|
"Focused validation for changed behavior passes",
|
|
727
|
-
"Residual risks or skipped checks are reported"
|
|
846
|
+
"Residual risks or skipped checks are reported",
|
|
728
847
|
],
|
|
729
848
|
evidence: ["changed-files", "commands-run", "validation-output", "residual-risks"],
|
|
730
849
|
verify: [{ id: "focused", command: "npm test -- --runInBand" }],
|
|
731
850
|
stopRules: [
|
|
732
851
|
"Do not edit unrelated files",
|
|
733
|
-
"Stop and report if the plan requires a decision outside the assigned authority"
|
|
852
|
+
"Stop and report if the plan requires a decision outside the assigned authority",
|
|
734
853
|
],
|
|
735
|
-
maxFinalizationTurns: 3
|
|
736
|
-
}
|
|
737
|
-
})
|
|
854
|
+
maxFinalizationTurns: 3,
|
|
855
|
+
},
|
|
856
|
+
});
|
|
738
857
|
```
|
|
739
858
|
|
|
740
859
|
The first `worker` implements the approved plan. The parent continues with independent inspection or validation prep while it runs only when the worker is async; do not make parallel edits to the same worktree. When an async worker completes, treat its handoff as the transition into review, not as final completion, unless the user explicitly asked for worker-only work, review-only output, or to stop after implementation. Launch parallel reviewers as separate async runs so each completion wakes the parent. Validators check behavior with the best available evidence: commands, tests, browser/CLI interaction, screenshots, logs, or manual reproduction notes. The final `worker` applies synthesized review fixes, then the parent looks over the final diff before completing. Keep these as parent-launched follow-up runs after each completion; do not hide reviewer panels inside an initial async chain. Under an incomplete active Pi goal, a fixed sequence with no intervening parent decision may instead use a bounded foreground chain. Do not stop after parallel review unless the user explicitly asked for review-only output or the review surfaced a concrete decision outside the existing authority.
|
|
@@ -766,18 +885,33 @@ subagent({
|
|
|
766
885
|
acceptance: {
|
|
767
886
|
criteria: ["Implement the approved feature without widening scope"],
|
|
768
887
|
evidence: ["changed-files", "tests-added", "commands-run", "residual-risks", "no-staged-files"],
|
|
769
|
-
maxFinalizationTurns: 3
|
|
770
|
-
}
|
|
888
|
+
maxFinalizationTurns: 3,
|
|
889
|
+
},
|
|
771
890
|
// Async is the default; set async: false for explicitly chosen foreground execution.
|
|
772
|
-
})
|
|
891
|
+
});
|
|
773
892
|
```
|
|
774
893
|
|
|
775
894
|
Example review pass after implementation:
|
|
776
895
|
|
|
777
896
|
```typescript
|
|
778
|
-
subagent({
|
|
779
|
-
|
|
780
|
-
|
|
897
|
+
subagent({
|
|
898
|
+
agent: "reviewer",
|
|
899
|
+
task: "Review the current diff for correctness and regressions. Inspect changed files directly; do not rely on the worker's reasoning.",
|
|
900
|
+
context: "fresh",
|
|
901
|
+
output: false,
|
|
902
|
+
});
|
|
903
|
+
subagent({
|
|
904
|
+
agent: "reviewer",
|
|
905
|
+
task: "Review the current diff for tests and validation quality against the validation contract. Inspect changed files directly.",
|
|
906
|
+
context: "fresh",
|
|
907
|
+
output: false,
|
|
908
|
+
});
|
|
909
|
+
subagent({
|
|
910
|
+
agent: "reviewer",
|
|
911
|
+
task: "Review the current diff for simplicity and maintainability. Inspect changed files directly.",
|
|
912
|
+
context: "fresh",
|
|
913
|
+
output: false,
|
|
914
|
+
});
|
|
781
915
|
// Each completion wakes the parent. Continue useful work or end the turn and wait; do not poll.
|
|
782
916
|
```
|
|
783
917
|
|
|
@@ -786,9 +920,9 @@ Example fix worker after parallel reviews:
|
|
|
786
920
|
```typescript
|
|
787
921
|
subagent({
|
|
788
922
|
agent: "worker",
|
|
789
|
-
task: "Apply the synthesized reviewer feedback below. Only apply fixes worth doing now; preserve user-approved scope; make ordinary reversible choices; escalate only concrete decisions outside the assigned authority. Run focused validation and summarize what changed.\n\nReviewer synthesis:\n..."
|
|
923
|
+
task: "Apply the synthesized reviewer feedback below. Only apply fixes worth doing now; preserve user-approved scope; make ordinary reversible choices; escalate only concrete decisions outside the assigned authority. Run focused validation and summarize what changed.\n\nReviewer synthesis:\n...",
|
|
790
924
|
// Async is the default; set async: false for explicitly chosen foreground execution.
|
|
791
|
-
})
|
|
925
|
+
});
|
|
792
926
|
```
|
|
793
927
|
|
|
794
928
|
### Review loop
|
|
@@ -805,9 +939,9 @@ For explicit review-loop requests, repeat worker → fresh-reviewer → synthesi
|
|
|
805
939
|
subagent({
|
|
806
940
|
tasks: [
|
|
807
941
|
{ agent: "scout", task: "Audit frontend auth flow" },
|
|
808
|
-
{ agent: "researcher", task: "Research current retry/backoff best practices" }
|
|
809
|
-
]
|
|
810
|
-
})
|
|
942
|
+
{ agent: "researcher", task: "Research current retry/backoff best practices" },
|
|
943
|
+
],
|
|
944
|
+
});
|
|
811
945
|
```
|
|
812
946
|
|
|
813
947
|
### Saved chain
|
|
@@ -821,43 +955,51 @@ Use saved `.chain.md` or `.chain.json` workflows when the user wants a repeatabl
|
|
|
821
955
|
## Error Handling
|
|
822
956
|
|
|
823
957
|
**"Unknown agent"**
|
|
958
|
+
|
|
824
959
|
```typescript
|
|
825
|
-
subagent({ action: "list" })
|
|
960
|
+
subagent({ action: "list" });
|
|
826
961
|
// Check available agents and chains, then confirm scope/precedence.
|
|
827
962
|
```
|
|
828
963
|
|
|
829
964
|
**Setup, discovery, or intercom confusion**
|
|
965
|
+
|
|
830
966
|
```typescript
|
|
831
|
-
subagent({ action: "doctor" })
|
|
967
|
+
subagent({ action: "doctor" });
|
|
832
968
|
// Check runtime paths, async support, discovery counts, current session, and intercom bridge state.
|
|
833
969
|
```
|
|
834
970
|
|
|
835
971
|
**"Max subagent depth exceeded"**
|
|
972
|
+
|
|
836
973
|
```typescript
|
|
837
974
|
// Flatten the workflow or raise maxSubagentDepth in config.
|
|
838
975
|
```
|
|
839
976
|
|
|
840
977
|
**"Session manager did not return a session file"**
|
|
978
|
+
|
|
841
979
|
```typescript
|
|
842
980
|
// Persist the current session before using context: "fork".
|
|
843
981
|
```
|
|
844
982
|
|
|
845
983
|
**Intercom "Already waiting for a reply"**
|
|
984
|
+
|
|
846
985
|
```typescript
|
|
847
986
|
// Resolve the current outbound ask before starting another one.
|
|
848
987
|
```
|
|
849
988
|
|
|
850
989
|
**Parallel output-path conflict**
|
|
990
|
+
|
|
851
991
|
```typescript
|
|
852
992
|
// Give each parallel task a distinct output path, or disable output for tasks that do not need it.
|
|
853
993
|
```
|
|
854
994
|
|
|
855
995
|
**Worktree launch fails**
|
|
996
|
+
|
|
856
997
|
```typescript
|
|
857
998
|
// Ensure the git working tree is clean and task cwd overrides match the shared cwd.
|
|
858
999
|
```
|
|
859
1000
|
|
|
860
1001
|
**Child fails before starting**
|
|
1002
|
+
|
|
861
1003
|
```typescript
|
|
862
1004
|
// Inspect `subagent({ action: "status", id: "..." })`, artifact metadata/output logs, and run doctor. Extension loader errors usually appear in child output logs.
|
|
863
1005
|
```
|