@fitchmultz/pi-subagents 0.49.1 → 0.50.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 +23 -1
- package/README.md +88 -94
- package/dist/agent/contracts.js +122 -0
- package/dist/agent/cwd.js +51 -0
- package/dist/agent/host.js +82 -0
- package/dist/agent/index.js +422 -0
- package/dist/agent/journal-tail.js +183 -0
- package/dist/agent/launch.js +87 -0
- package/dist/agent/legacy.js +141 -0
- package/dist/agent/notifications.js +119 -0
- package/dist/agent/observe-screen.js +132 -0
- package/dist/agent/observe.js +234 -0
- package/dist/agent/process.js +173 -0
- package/dist/agent/receipts.js +75 -0
- package/dist/agent/runner.js +372 -0
- package/dist/agent/saved.js +195 -0
- package/dist/agent/shell.js +43 -0
- package/dist/agent/storage.js +113 -0
- package/dist/agent/typebox.js +20 -0
- package/dist/agent/usage.js +232 -0
- package/dist/agent/view.js +164 -0
- package/dist/build-info.js +1 -0
- package/dist/index.js +8 -0
- package/dist/pi-intercom/bridge-config.js +12 -19
- package/dist/pi-intercom/bridge-http.js +1 -2
- package/dist/pi-intercom/bridge-mailbox.js +2 -7
- package/dist/pi-intercom/bridge-protocol.js +3 -10
- package/dist/pi-intercom/bridge-routes.js +15 -186
- package/dist/pi-intercom/bridge-session.js +2 -96
- package/dist/pi-intercom/bridge.js +12 -35
- package/dist/pi-intercom/broker/broker.js +33 -38
- package/dist/pi-intercom/broker/client-last.js +48 -0
- package/dist/pi-intercom/broker/client.js +41 -1
- package/dist/pi-intercom/broker/connection.js +5 -18
- package/dist/pi-intercom/broker/last.js +173 -0
- package/dist/pi-intercom/broker/paths.js +28 -9
- package/dist/pi-intercom/broker/server-connection.js +18 -0
- package/dist/pi-intercom/broker/spawn.js +32 -16
- package/dist/pi-intercom/broker/targets.js +24 -0
- package/dist/pi-intercom/config.js +0 -23
- package/dist/pi-intercom/connection.js +30 -70
- package/dist/pi-intercom/identity.js +14 -44
- package/dist/pi-intercom/inbound-delivery.js +8 -69
- package/dist/pi-intercom/inbound-journal.js +3 -68
- package/dist/pi-intercom/inbound-record.js +2 -48
- package/dist/pi-intercom/inbound.js +6 -53
- package/dist/pi-intercom/index.js +8 -47
- package/dist/pi-intercom/last-message.js +58 -0
- package/dist/pi-intercom/lifecycle.js +8 -33
- package/dist/pi-intercom/message-format.js +1 -32
- package/dist/pi-intercom/outbound.js +9 -1
- package/dist/pi-intercom/reply-tracker.js +2 -12
- package/dist/pi-intercom/reply-wait.js +16 -107
- package/dist/pi-intercom/runtime-types.js +0 -1
- package/dist/pi-intercom/session-events.js +5 -21
- package/dist/pi-intercom/tool-arguments.js +4 -0
- package/dist/pi-intercom/tool-registration.js +5 -86
- package/dist/pi-intercom/tool-schemas.js +12 -52
- package/dist/pi-intercom/tools.js +55 -29
- package/dist/pi-intercom/types.js +10 -3
- package/dist/pi-intercom/ui/session-format.js +3 -3
- package/dist/shared/journal-projections.js +0 -31
- package/dist/shared/types.js +0 -195
- package/docs/code-quality.md +4 -3
- package/docs/development.md +57 -95
- package/docs/intercom-bridge.md +206 -415
- package/docs/intercom.md +142 -593
- package/docs/performance.md +109 -192
- package/docs/reference.md +139 -1452
- package/package.json +12 -19
- package/scripts/build.mjs +1 -1
- package/scripts/intercom-bridge-credentials.mjs +1 -1
- package/scripts/intercom-remote.mjs +55 -272
- package/scripts/local-install-smoke.mjs +3 -1
- package/scripts/measure-size.mjs +64 -0
- package/scripts/native-package-smoke.mjs +267 -109
- package/scripts/package-smoke.mjs +120 -363
- package/scripts/real-pi-processes.mjs +6 -38
- package/scripts/real-pi-smoke.mjs +153 -144
- package/scripts/run-tests.mjs +4 -3
- package/skills/pi-intercom/SKILL.md +53 -107
- package/skills/pi-subagents/SKILL.md +45 -59
- package/src/agent/contracts.ts +144 -0
- package/src/agent/cwd.ts +69 -0
- package/src/agent/host.ts +82 -0
- package/src/agent/index.ts +486 -0
- package/src/agent/journal-tail.ts +184 -0
- package/src/agent/launch.ts +112 -0
- package/src/agent/legacy.ts +167 -0
- package/src/agent/notifications.ts +131 -0
- package/src/agent/observe-screen.ts +167 -0
- package/src/agent/observe.ts +240 -0
- package/src/agent/process.ts +179 -0
- package/src/agent/receipts.ts +88 -0
- package/src/agent/runner.ts +417 -0
- package/src/agent/saved.ts +220 -0
- package/src/agent/shell.ts +56 -0
- package/src/agent/storage.ts +123 -0
- package/src/agent/typebox.ts +17 -0
- package/src/agent/usage.ts +263 -0
- package/src/agent/view.ts +246 -0
- package/src/index.ts +10 -0
- package/src/pi-intercom/bridge-config.ts +13 -24
- package/src/pi-intercom/bridge-http.ts +1 -2
- package/src/pi-intercom/bridge-mailbox.ts +8 -8
- package/src/pi-intercom/bridge-protocol.ts +7 -11
- package/src/pi-intercom/bridge-routes.ts +29 -277
- package/src/pi-intercom/bridge-session.ts +3 -114
- package/src/pi-intercom/bridge.ts +12 -35
- package/src/pi-intercom/broker/broker.ts +39 -54
- package/src/pi-intercom/broker/client-last.ts +65 -0
- package/src/pi-intercom/broker/client.ts +45 -3
- package/src/pi-intercom/broker/connection.ts +5 -17
- package/src/pi-intercom/broker/last.ts +222 -0
- package/src/pi-intercom/broker/paths.ts +31 -9
- package/src/pi-intercom/broker/server-connection.ts +38 -0
- package/src/pi-intercom/broker/spawn.ts +44 -16
- package/src/pi-intercom/broker/targets.ts +42 -0
- package/src/pi-intercom/config.ts +0 -27
- package/src/pi-intercom/connection.ts +41 -84
- package/src/pi-intercom/identity.ts +21 -49
- package/src/pi-intercom/inbound-delivery.ts +10 -93
- package/src/pi-intercom/inbound-journal.ts +4 -81
- package/src/pi-intercom/inbound-record.ts +2 -61
- package/src/pi-intercom/inbound.ts +7 -69
- package/src/pi-intercom/index.ts +10 -49
- package/src/pi-intercom/last-message.ts +73 -0
- package/src/pi-intercom/lifecycle.ts +14 -41
- package/src/pi-intercom/message-format.ts +1 -34
- package/src/pi-intercom/outbound.ts +16 -1
- package/src/pi-intercom/reply-tracker.ts +2 -19
- package/src/pi-intercom/reply-wait.ts +21 -128
- package/src/pi-intercom/runtime-types.ts +5 -58
- package/src/pi-intercom/session-events.ts +7 -35
- package/src/pi-intercom/tool-arguments.ts +6 -0
- package/src/pi-intercom/tool-registration.ts +9 -109
- package/src/pi-intercom/tool-schemas.ts +17 -80
- package/src/pi-intercom/tools.ts +58 -44
- package/src/pi-intercom/transport.ts +1 -0
- package/src/pi-intercom/types.ts +45 -6
- package/src/pi-intercom/ui/session-format.ts +3 -3
- package/src/shared/journal-projections.ts +0 -35
- package/src/shared/post-exit-stdio-guard.ts +7 -1
- package/src/shared/types.ts +0 -257
- package/agents/context-builder.md +0 -115
- package/agents/debugger.md +0 -58
- package/agents/delegate.md +0 -14
- package/agents/fixer.md +0 -40
- package/agents/oracle.md +0 -82
- package/agents/planner.md +0 -83
- package/agents/researcher.md +0 -60
- package/agents/reviewer-claude.md +0 -78
- package/agents/reviewer-gpt.md +0 -78
- package/agents/reviewer-ponytail.md +0 -92
- package/agents/reviewer-security.md +0 -92
- package/agents/reviewer.md +0 -78
- package/agents/scout.md +0 -77
- package/agents/ui-designer.md +0 -58
- package/agents/watcher.md +0 -27
- package/agents/worker.md +0 -52
- package/agents/writer.md +0 -39
- package/dist/agents/agent-defaults.js +0 -9
- package/dist/agents/agent-definition.js +0 -196
- package/dist/agents/agent-management.js +0 -88
- package/dist/agents/agent-scope.js +0 -9
- package/dist/agents/agent-selection.js +0 -13
- package/dist/agents/agent-serializer.js +0 -88
- package/dist/agents/agents.js +0 -111
- package/dist/agents/builtin-overrides.js +0 -218
- package/dist/agents/chain-serializer.js +0 -3
- package/dist/agents/config-values.js +0 -52
- package/dist/agents/discovery-paths.js +0 -91
- package/dist/agents/frontmatter.js +0 -31
- package/dist/agents/identity.js +0 -46
- package/dist/agents/json-chain.js +0 -254
- package/dist/agents/management-config.js +0 -332
- package/dist/agents/management-format.js +0 -231
- package/dist/agents/management-persistence.js +0 -287
- package/dist/agents/management-targets.js +0 -136
- package/dist/agents/management-warnings.js +0 -81
- package/dist/agents/markdown-chain.js +0 -210
- package/dist/agents/package-agents.js +0 -154
- package/dist/agents/skill-files.js +0 -157
- package/dist/agents/skill-search-paths.js +0 -246
- package/dist/agents/skill-types.js +0 -1
- package/dist/agents/skills.js +0 -125
- package/dist/extension/acceptance-schema.js +0 -55
- package/dist/extension/build-info.js +0 -1
- package/dist/extension/chain-schema.js +0 -196
- package/dist/extension/child-runtime.js +0 -237
- package/dist/extension/compact-tools.js +0 -183
- package/dist/extension/config-schema.js +0 -29
- package/dist/extension/config.js +0 -38
- package/dist/extension/control-notice-schema.js +0 -37
- package/dist/extension/control-notices.js +0 -36
- package/dist/extension/delegation-bridges.js +0 -43
- package/dist/extension/doctor.js +0 -166
- package/dist/extension/everyday-schemas.js +0 -207
- package/dist/extension/fanout-child.js +0 -25
- package/dist/extension/index.js +0 -28
- package/dist/extension/message-renderers.js +0 -225
- package/dist/extension/nested-control-inbox.js +0 -154
- package/dist/extension/parent-runtime.js +0 -339
- package/dist/extension/primary-tool.js +0 -69
- package/dist/extension/result-snapshot.js +0 -4
- package/dist/extension/runtime-reload.js +0 -62
- package/dist/extension/runtime-storage.js +0 -43
- package/dist/extension/schema-overrides.js +0 -75
- package/dist/extension/schemas.js +0 -345
- package/dist/extension/tool-input.js +0 -35
- package/dist/extension/tool-result.js +0 -29
- package/dist/history/answer-texts.js +0 -57
- package/dist/history/canonical-result.js +0 -114
- package/dist/history/canonical-selection.js +0 -40
- package/dist/history/database-generation.js +0 -82
- package/dist/history/database.js +0 -96
- package/dist/history/entry-ingestion.js +0 -61
- package/dist/history/index.js +0 -344
- package/dist/history/ingest.js +0 -314
- package/dist/history/output-digests.js +0 -40
- package/dist/history/preview.js +0 -210
- package/dist/history/prune.js +0 -33
- package/dist/history/queries.js +0 -81
- package/dist/history/query-scope.js +0 -190
- package/dist/history/rows.js +0 -77
- package/dist/history/run-projection.js +0 -136
- package/dist/history/run-queries.js +0 -153
- package/dist/history/schema.js +0 -31
- package/dist/history/search-queries.js +0 -169
- package/dist/history/selected-record.js +0 -108
- package/dist/history/source-file.js +0 -45
- package/dist/history/source-watches.js +0 -141
- package/dist/history/store.js +0 -243
- package/dist/history/text-chunks.js +0 -168
- package/dist/history/text.js +0 -35
- package/dist/history/transcript-queries.js +0 -183
- package/dist/history/types.js +0 -8
- package/dist/history/values.js +0 -36
- package/dist/history/wire-inputs.js +0 -122
- package/dist/history/wire-models.js +0 -38
- package/dist/history/worker-runtime.js +0 -441
- package/dist/history/worker.js +0 -91
- package/dist/intercom/intercom-bridge.js +0 -140
- package/dist/intercom/live-intercom.js +0 -151
- package/dist/intercom/nested-result-tree.js +0 -163
- package/dist/intercom/result-delivery.js +0 -40
- package/dist/intercom/result-intercom.js +0 -216
- package/dist/pi-intercom/bridge-ask.js +0 -57
- package/dist/pi-intercom/bridge-broadcast.js +0 -60
- package/dist/pi-intercom/bridge-catalog.js +0 -372
- package/dist/pi-intercom/bridge-control.js +0 -104
- package/dist/pi-intercom/bridge-groups.js +0 -135
- package/dist/pi-intercom/bridge-launch-journal.js +0 -84
- package/dist/pi-intercom/bridge-launch-policy.js +0 -154
- package/dist/pi-intercom/bridge-launch.js +0 -327
- package/dist/pi-intercom/bridge-operations.js +0 -127
- package/dist/pi-intercom/bridge-rpc-process.js +0 -292
- package/dist/pi-intercom/interview.js +0 -236
- package/dist/pi-intercom/native-control-auth.js +0 -80
- package/dist/pi-intercom/native-control-protocol.js +0 -111
- package/dist/pi-intercom/native-control.js +0 -130
- package/dist/pi-intercom/peer-awareness.js +0 -66
- package/dist/pi-intercom/saved-transcript.js +0 -135
- package/dist/pi-intercom/subagent-events.js +0 -238
- package/dist/pi-intercom/subagent-live-events.js +0 -175
- package/dist/pi-intercom/supervisor.js +0 -282
- package/dist/pi-intercom/topic-actions.js +0 -177
- package/dist/pi-intercom/topics.js +0 -242
- package/dist/pi-intercom/transcript.js +0 -175
- package/dist/pi-intercom/ui/compose-paste.js +0 -93
- package/dist/pi-intercom/ui/compose.js +0 -247
- package/dist/pi-intercom/ui/inline-message.js +0 -80
- package/dist/pi-intercom/ui/message-renderers.js +0 -147
- package/dist/pi-intercom/ui/overlay.js +0 -181
- package/dist/pi-intercom/ui/session-list.js +0 -157
- package/dist/pi-intercom/ui/tool-renderers.js +0 -110
- package/dist/pi-intercom/ui/topic-view.js +0 -88
- package/dist/runs/background/async-chain-plan.js +0 -265
- package/dist/runs/background/async-control.js +0 -171
- package/dist/runs/background/async-execution.js +0 -179
- package/dist/runs/background/async-job-admission.js +0 -40
- package/dist/runs/background/async-job-projection.js +0 -169
- package/dist/runs/background/async-job-tracker.js +0 -353
- package/dist/runs/background/async-launch.js +0 -216
- package/dist/runs/background/async-plan.js +0 -116
- package/dist/runs/background/async-result-file.js +0 -82
- package/dist/runs/background/async-resume.js +0 -247
- package/dist/runs/background/async-run-discovery.js +0 -211
- package/dist/runs/background/async-run-location.js +0 -135
- package/dist/runs/background/async-run-record.js +0 -1
- package/dist/runs/background/async-run-repair.js +0 -223
- package/dist/runs/background/async-run-summary.js +0 -1
- package/dist/runs/background/async-single-plan.js +0 -105
- package/dist/runs/background/async-status-projection.js +0 -155
- package/dist/runs/background/async-status-render.js +0 -117
- package/dist/runs/background/async-status-validation.js +0 -181
- package/dist/runs/background/async-status.js +0 -3
- package/dist/runs/background/async-value.js +0 -21
- package/dist/runs/background/completion-dedupe.js +0 -42
- package/dist/runs/background/completion-delivery.js +0 -251
- package/dist/runs/background/completion-receipts.js +0 -237
- package/dist/runs/background/legacy-status-acceptance.js +0 -34
- package/dist/runs/background/notify.js +0 -111
- package/dist/runs/background/parallel-groups.js +0 -72
- package/dist/runs/background/result-payload.js +0 -178
- package/dist/runs/background/result-watcher.js +0 -435
- package/dist/runs/background/run-id-resolver.js +0 -84
- package/dist/runs/background/run-schemas.js +0 -189
- package/dist/runs/background/run-status-contracts.js +0 -14
- package/dist/runs/background/run-status-render.js +0 -270
- package/dist/runs/background/run-status.js +0 -274
- package/dist/runs/background/runner-attempt-output.js +0 -155
- package/dist/runs/background/runner-attempt.js +0 -263
- package/dist/runs/background/runner-child-executor.js +0 -166
- package/dist/runs/background/runner-child-observer.js +0 -197
- package/dist/runs/background/runner-completion-summary.js +0 -71
- package/dist/runs/background/runner-completion.js +0 -211
- package/dist/runs/background/runner-config.js +0 -1
- package/dist/runs/background/runner-contract.js +0 -1
- package/dist/runs/background/runner-dynamic.js +0 -121
- package/dist/runs/background/runner-finalization.js +0 -149
- package/dist/runs/background/runner-graph.js +0 -68
- package/dist/runs/background/runner-initial-status.js +0 -60
- package/dist/runs/background/runner-lifecycle.js +0 -142
- package/dist/runs/background/runner-monitor.js +0 -311
- package/dist/runs/background/runner-parallel.js +0 -203
- package/dist/runs/background/runner-prepare-step.js +0 -86
- package/dist/runs/background/runner-reporting.js +0 -153
- package/dist/runs/background/runner-status.js +0 -148
- package/dist/runs/background/runner-step-output.js +0 -90
- package/dist/runs/background/runner-step-record.js +0 -45
- package/dist/runs/background/runner-step.js +0 -112
- package/dist/runs/background/runner-streaming.js +0 -173
- package/dist/runs/background/runner-workflow.js +0 -213
- package/dist/runs/background/stale-run-reconciler.js +0 -198
- package/dist/runs/background/subagent-runner-launcher.js +0 -75
- package/dist/runs/background/subagent-runner.js +0 -81
- package/dist/runs/background/top-level-async.js +0 -6
- package/dist/runs/foreground/chain-clarify.js +0 -428
- package/dist/runs/foreground/clarification-draft.js +0 -87
- package/dist/runs/foreground/clarify-contracts.js +0 -1
- package/dist/runs/foreground/clarify-invocation.js +0 -163
- package/dist/runs/foreground/clarify-text-editor.js +0 -210
- package/dist/runs/foreground/clarify-view.js +0 -167
- package/dist/runs/foreground/execution-input.js +0 -296
- package/dist/runs/foreground/execution-routing.js +0 -33
- package/dist/runs/foreground/execution-timeout.js +0 -81
- package/dist/runs/foreground/foreground-control.js +0 -276
- package/dist/runs/foreground/foreground-memory.js +0 -99
- package/dist/runs/foreground/invocation-context.js +0 -55
- package/dist/runs/foreground/invocation-execution.js +0 -331
- package/dist/runs/foreground/invocation-expansion.js +0 -48
- package/dist/runs/foreground/management-actions.js +0 -295
- package/dist/runs/foreground/nested-control.js +0 -179
- package/dist/runs/foreground/question-continuation.js +0 -78
- package/dist/runs/foreground/question-control.js +0 -193
- package/dist/runs/foreground/resume-target.js +0 -221
- package/dist/runs/foreground/revival-launch-policy.js +0 -58
- package/dist/runs/foreground/run-async-path.js +0 -217
- package/dist/runs/foreground/run-interrupt.js +0 -164
- package/dist/runs/foreground/run-nudge.js +0 -278
- package/dist/runs/foreground/saved-revival.js +0 -251
- package/dist/runs/foreground/subagent-executor.js +0 -153
- package/dist/runs/foreground/subagent-params.js +0 -202
- package/dist/runs/foreground/wait-observation.js +0 -104
- package/dist/runs/foreground/wait-registration.js +0 -17
- package/dist/runs/foreground/wait-run.js +0 -301
- package/dist/runs/shared/acceptance-contract.js +0 -347
- package/dist/runs/shared/acceptance-defaults.js +0 -1
- package/dist/runs/shared/acceptance-evaluation.js +0 -276
- package/dist/runs/shared/acceptance-finalization.js +0 -356
- package/dist/runs/shared/acceptance-outcome.js +0 -53
- package/dist/runs/shared/acceptance-reports.js +0 -212
- package/dist/runs/shared/acceptance-submission.js +0 -167
- package/dist/runs/shared/acceptance-verification.js +0 -100
- package/dist/runs/shared/acceptance.js +0 -4
- package/dist/runs/shared/chain-outputs.js +0 -138
- package/dist/runs/shared/child-attempt-types.js +0 -1
- package/dist/runs/shared/child-attempt.js +0 -340
- package/dist/runs/shared/child-boundaries.js +0 -173
- package/dist/runs/shared/child-context-filter.js +0 -44
- package/dist/runs/shared/child-event-observer.js +0 -390
- package/dist/runs/shared/child-execution-cwd.js +0 -126
- package/dist/runs/shared/child-execution-outcome.js +0 -72
- package/dist/runs/shared/child-invocation.js +0 -54
- package/dist/runs/shared/child-message-validation.js +0 -215
- package/dist/runs/shared/child-native-accounting.js +0 -106
- package/dist/runs/shared/child-native-observation.js +0 -69
- package/dist/runs/shared/child-observation-spool.js +0 -169
- package/dist/runs/shared/child-observations.js +0 -195
- package/dist/runs/shared/child-presence.js +0 -3
- package/dist/runs/shared/child-route-env.js +0 -119
- package/dist/runs/shared/child-stream-observer.js +0 -221
- package/dist/runs/shared/child-stream-projection.js +0 -137
- package/dist/runs/shared/child-structured-tool.js +0 -27
- package/dist/runs/shared/claude-code.js +0 -162
- package/dist/runs/shared/claude-model.js +0 -42
- package/dist/runs/shared/claude-session.js +0 -83
- package/dist/runs/shared/claude-types.js +0 -1
- package/dist/runs/shared/completion-guard.js +0 -31
- package/dist/runs/shared/control-event-policy.js +0 -8
- package/dist/runs/shared/control-notification-owner.js +0 -13
- package/dist/runs/shared/dynamic-fanout.js +0 -289
- package/dist/runs/shared/dynamic-item.js +0 -102
- package/dist/runs/shared/history-index.js +0 -98
- package/dist/runs/shared/legacy-async-recovery.js +0 -114
- package/dist/runs/shared/legacy-output-recovery.js +0 -148
- package/dist/runs/shared/mcp-config-schema.js +0 -36
- package/dist/runs/shared/mcp-direct-tool-allowlist.js +0 -365
- package/dist/runs/shared/model-fallback.js +0 -247
- package/dist/runs/shared/mutating-tool-guard.js +0 -210
- package/dist/runs/shared/native-finalization-types.js +0 -1
- package/dist/runs/shared/native-finalization.js +0 -180
- package/dist/runs/shared/native-usage.js +0 -293
- package/dist/runs/shared/nested-control-records.js +0 -128
- package/dist/runs/shared/nested-events.js +0 -8
- package/dist/runs/shared/nested-path.js +0 -52
- package/dist/runs/shared/nested-projection.js +0 -155
- package/dist/runs/shared/nested-protocol.js +0 -18
- package/dist/runs/shared/nested-registry.js +0 -191
- package/dist/runs/shared/nested-render.js +0 -156
- package/dist/runs/shared/nested-route.js +0 -220
- package/dist/runs/shared/nested-validation.js +0 -216
- package/dist/runs/shared/owned-child-evidence.js +0 -125
- package/dist/runs/shared/owned-run-list.js +0 -146
- package/dist/runs/shared/owned-run-observation.js +0 -267
- package/dist/runs/shared/owned-run-progress.js +0 -109
- package/dist/runs/shared/owned-run-read-state.js +0 -1
- package/dist/runs/shared/owned-run-results.js +0 -202
- package/dist/runs/shared/owned-run-status.js +0 -180
- package/dist/runs/shared/owned-run-view.js +0 -51
- package/dist/runs/shared/owned-workflow-details.js +0 -17
- package/dist/runs/shared/owner-output.js +0 -43
- package/dist/runs/shared/parallel-utils.js +0 -49
- package/dist/runs/shared/parent-receipts.js +0 -126
- package/dist/runs/shared/parent-usage.js +0 -233
- package/dist/runs/shared/pi-args.js +0 -217
- package/dist/runs/shared/pi-launch-input.js +0 -1
- package/dist/runs/shared/pi-session-launch.js +0 -86
- package/dist/runs/shared/pi-spawn.js +0 -66
- package/dist/runs/shared/run-history-queries.js +0 -136
- package/dist/runs/shared/run-history.js +0 -176
- package/dist/runs/shared/run-id-ambiguity.js +0 -4
- package/dist/runs/shared/run-metadata-paths.js +0 -14
- package/dist/runs/shared/run-metadata.js +0 -158
- package/dist/runs/shared/run-persistence.js +0 -131
- package/dist/runs/shared/run-records.js +0 -9
- package/dist/runs/shared/run-restoration.js +0 -337
- package/dist/runs/shared/run-state-owner.js +0 -26
- package/dist/runs/shared/session-cwd-preload.js +0 -42
- package/dist/runs/shared/single-output.js +0 -297
- package/dist/runs/shared/stable-value.js +0 -15
- package/dist/runs/shared/streaming-text.js +0 -26
- package/dist/runs/shared/structured-output.js +0 -67
- package/dist/runs/shared/subagent-control.js +0 -246
- package/dist/runs/shared/subagent-prompt-runtime.js +0 -94
- package/dist/runs/shared/subagent-tool-loop-guard.js +0 -95
- package/dist/runs/shared/supervisor-question-state.js +0 -145
- package/dist/runs/shared/supervisor-questions.js +0 -284
- package/dist/runs/shared/workflow-graph.js +0 -306
- package/dist/runs/shared/workflow-policy.js +0 -157
- package/dist/runs/shared/worktree-contract.js +0 -1
- package/dist/runs/shared/worktree-hook.js +0 -138
- package/dist/runs/shared/worktree-location.js +0 -47
- package/dist/runs/shared/worktree-preservation.js +0 -8
- package/dist/runs/shared/worktree-process.js +0 -107
- package/dist/runs/shared/worktree.js +0 -386
- package/dist/shared/agent-context-policy.js +0 -116
- package/dist/shared/agent-dir.js +0 -14
- package/dist/shared/artifacts.js +0 -114
- package/dist/shared/atomic-json.js +0 -16
- package/dist/shared/chain-files.js +0 -72
- package/dist/shared/concurrency.js +0 -18
- package/dist/shared/content-preview.js +0 -115
- package/dist/shared/execution-cwd.js +0 -22
- package/dist/shared/file-coalescer.js +0 -22
- package/dist/shared/fork-context.js +0 -47
- package/dist/shared/formatters.js +0 -111
- package/dist/shared/journal-reader.js +0 -6
- package/dist/shared/lazy-tools.js +0 -43
- package/dist/shared/message-output.js +0 -116
- package/dist/shared/model-info.js +0 -85
- package/dist/shared/native-import.js +0 -20
- package/dist/shared/native-session-loader.js +0 -17
- package/dist/shared/native-session.js +0 -4
- package/dist/shared/native-tui.js +0 -23
- package/dist/shared/native-typebox.js +0 -32
- package/dist/shared/prompt-sections.js +0 -10
- package/dist/shared/session-entries.js +0 -87
- package/dist/shared/session-identity.js +0 -16
- package/dist/shared/settings.js +0 -121
- package/dist/shared/status-format.js +0 -171
- package/dist/shared/task-file-policy.js +0 -24
- package/dist/shared/temp-root.js +0 -143
- package/dist/shared/types/acceptance.js +0 -1
- package/dist/shared/types/async.js +0 -1
- package/dist/shared/types/config.js +0 -1
- package/dist/shared/types/details.js +0 -1
- package/dist/shared/types/history.js +0 -1
- package/dist/shared/types/inputs.js +0 -1
- package/dist/shared/types/intercom.js +0 -1
- package/dist/shared/types/launch.js +0 -1
- package/dist/shared/types/messages.js +0 -1
- package/dist/shared/types/nested.js +0 -1
- package/dist/shared/types/owned-runs.js +0 -1
- package/dist/shared/types/progress.js +0 -1
- package/dist/shared/types/questions.js +0 -1
- package/dist/shared/types/results.js +0 -1
- package/dist/shared/types/state.js +0 -1
- package/dist/shared/types/usage.js +0 -1
- package/dist/shared/types/workflow.js +0 -1
- package/dist/shared/ui-mode.js +0 -3
- package/dist/shared/utils.js +0 -128
- package/dist/slash/command-discovery.js +0 -83
- package/dist/slash/command-input.js +0 -190
- package/dist/slash/prompt-template-bridge.js +0 -122
- package/dist/slash/prompt-template-contract.js +0 -77
- package/dist/slash/prompt-template-results.js +0 -125
- package/dist/slash/request-protocol.js +0 -68
- package/dist/slash/result-delivery.js +0 -237
- package/dist/slash/saved-chain.js +0 -78
- package/dist/slash/slash-bridge.js +0 -150
- package/dist/slash/slash-commands.js +0 -136
- package/dist/slash/slash-live-state.js +0 -267
- package/dist/tui/action-hints.js +0 -103
- package/dist/tui/activity-lines.js +0 -32
- package/dist/tui/agent-browser.js +0 -290
- package/dist/tui/agent-controls.js +0 -289
- package/dist/tui/agent-conversation.js +0 -444
- package/dist/tui/agent-dock.js +0 -171
- package/dist/tui/agent-history.js +0 -50
- package/dist/tui/agent-model.js +0 -62
- package/dist/tui/agent-picker.js +0 -262
- package/dist/tui/agent-view.js +0 -350
- package/dist/tui/compact-results.js +0 -193
- package/dist/tui/conversation-details.js +0 -190
- package/dist/tui/conversation-frame.js +0 -135
- package/dist/tui/conversation-history.js +0 -210
- package/dist/tui/conversation-menu.js +0 -78
- package/dist/tui/conversation-notices.js +0 -79
- package/dist/tui/conversation-selection.js +0 -58
- package/dist/tui/conversation-viewport.js +0 -129
- package/dist/tui/direction-message.js +0 -27
- package/dist/tui/display.js +0 -282
- package/dist/tui/editor-viewport.js +0 -18
- package/dist/tui/expanded-content.js +0 -87
- package/dist/tui/expanded-multi.js +0 -170
- package/dist/tui/expanded-single.js +0 -65
- package/dist/tui/history-cards.js +0 -202
- package/dist/tui/history-display.js +0 -238
- package/dist/tui/history-json.js +0 -16
- package/dist/tui/history-metadata.js +0 -152
- package/dist/tui/history-record.js +0 -251
- package/dist/tui/history-text.js +0 -34
- package/dist/tui/indexed-history.js +0 -116
- package/dist/tui/nested-widget.js +0 -120
- package/dist/tui/picker-page.js +0 -59
- package/dist/tui/render.js +0 -72
- package/dist/tui/result-facts.js +0 -64
- package/dist/tui/task-observation.js +0 -59
- package/dist/tui/task-store.js +0 -366
- package/dist/tui/text-values.js +0 -16
- package/dist/tui/view-connections.js +0 -47
- package/dist/tui/view-model.js +0 -94
- package/dist/tui/view-persistence.js +0 -51
- package/dist/tui/view-ports.js +0 -1
- package/dist/tui/view-session.js +0 -37
- package/dist/tui/widget-details.js +0 -144
- package/dist/tui/widget-status.js +0 -245
- package/dist/tui/widget.js +0 -145
- package/dist/tui/workflow-labels.js +0 -223
- package/dist/tui/workflow-outcomes.js +0 -124
- package/generated/RunValidators.d.ts +0 -28
- package/generated/RunValidators.js +0 -2
- package/prompts/gather-context-and-clarify.md +0 -14
- package/prompts/parallel-cleanup.md +0 -65
- package/prompts/parallel-context-build.md +0 -59
- package/prompts/parallel-handoff-plan.md +0 -68
- package/prompts/parallel-research.md +0 -55
- package/prompts/parallel-review.md +0 -61
- package/prompts/review-loop.md +0 -44
- package/scripts/generate-run-schemas.mjs +0 -210
- package/skills/pi-intercom/evals/evals.json +0 -29
- package/skills/pi-intercom/evals/trigger-evals.json +0 -47
- package/skills/pi-intercom/references/peer-sessions.md +0 -74
- package/skills/pi-subagents/evals/evals.json +0 -29
- package/skills/pi-subagents/evals/trigger-evals.json +0 -42
- package/skills/pi-subagents/references/full-orchestration-guide.md +0 -1005
- package/src/agents/agent-defaults.ts +0 -13
- package/src/agents/agent-definition.ts +0 -253
- package/src/agents/agent-management.ts +0 -120
- package/src/agents/agent-scope.ts +0 -11
- package/src/agents/agent-selection.ts +0 -22
- package/src/agents/agent-serializer.ts +0 -90
- package/src/agents/agents.ts +0 -214
- package/src/agents/builtin-overrides.ts +0 -297
- package/src/agents/chain-serializer.ts +0 -3
- package/src/agents/config-values.ts +0 -57
- package/src/agents/discovery-paths.ts +0 -134
- package/src/agents/frontmatter.ts +0 -39
- package/src/agents/identity.ts +0 -61
- package/src/agents/json-chain.ts +0 -305
- package/src/agents/management-config.ts +0 -342
- package/src/agents/management-format.ts +0 -243
- package/src/agents/management-persistence.ts +0 -408
- package/src/agents/management-targets.ts +0 -260
- package/src/agents/management-warnings.ts +0 -115
- package/src/agents/markdown-chain.ts +0 -237
- package/src/agents/package-agents.ts +0 -231
- package/src/agents/skill-files.ts +0 -182
- package/src/agents/skill-search-paths.ts +0 -289
- package/src/agents/skill-types.ts +0 -31
- package/src/agents/skills.ts +0 -179
- package/src/extension/acceptance-schema.ts +0 -88
- package/src/extension/build-info.ts +0 -2
- package/src/extension/chain-schema.ts +0 -276
- package/src/extension/child-runtime.ts +0 -302
- package/src/extension/compact-tools.ts +0 -271
- package/src/extension/config-schema.ts +0 -59
- package/src/extension/config.ts +0 -45
- package/src/extension/control-notice-schema.ts +0 -55
- package/src/extension/control-notices.ts +0 -71
- package/src/extension/delegation-bridges.ts +0 -59
- package/src/extension/doctor.ts +0 -207
- package/src/extension/everyday-schemas.ts +0 -252
- package/src/extension/fanout-child.ts +0 -33
- package/src/extension/index.ts +0 -31
- package/src/extension/message-renderers.ts +0 -334
- package/src/extension/nested-control-inbox.ts +0 -196
- package/src/extension/parent-runtime.ts +0 -405
- package/src/extension/primary-tool.ts +0 -130
- package/src/extension/result-snapshot.ts +0 -9
- package/src/extension/runtime-reload.ts +0 -72
- package/src/extension/runtime-storage.ts +0 -49
- package/src/extension/schema-overrides.ts +0 -114
- package/src/extension/schemas.ts +0 -477
- package/src/extension/tool-input.ts +0 -46
- package/src/extension/tool-result.ts +0 -47
- package/src/history/answer-texts.ts +0 -74
- package/src/history/canonical-result.ts +0 -138
- package/src/history/canonical-selection.ts +0 -54
- package/src/history/database-generation.ts +0 -86
- package/src/history/database.ts +0 -97
- package/src/history/entry-ingestion.ts +0 -129
- package/src/history/index.ts +0 -434
- package/src/history/ingest.ts +0 -387
- package/src/history/output-digests.ts +0 -41
- package/src/history/preview.ts +0 -235
- package/src/history/prune.ts +0 -48
- package/src/history/queries.ts +0 -125
- package/src/history/query-scope.ts +0 -278
- package/src/history/rows.ts +0 -118
- package/src/history/run-projection.ts +0 -162
- package/src/history/run-queries.ts +0 -199
- package/src/history/schema.ts +0 -34
- package/src/history/search-queries.ts +0 -223
- package/src/history/selected-record.ts +0 -140
- package/src/history/source-file.ts +0 -51
- package/src/history/source-watches.ts +0 -156
- package/src/history/store.ts +0 -332
- package/src/history/text-chunks.ts +0 -186
- package/src/history/text.ts +0 -43
- package/src/history/transcript-queries.ts +0 -257
- package/src/history/types.ts +0 -29
- package/src/history/values.ts +0 -36
- package/src/history/wire-inputs.ts +0 -141
- package/src/history/wire-models.ts +0 -51
- package/src/history/worker-runtime.ts +0 -502
- package/src/history/worker.ts +0 -99
- package/src/intercom/intercom-bridge.ts +0 -190
- package/src/intercom/live-intercom.ts +0 -209
- package/src/intercom/nested-result-tree.ts +0 -213
- package/src/intercom/result-delivery.ts +0 -56
- package/src/intercom/result-intercom.ts +0 -308
- package/src/pi-intercom/bridge-ask.ts +0 -64
- package/src/pi-intercom/bridge-broadcast.ts +0 -70
- package/src/pi-intercom/bridge-catalog.ts +0 -489
- package/src/pi-intercom/bridge-control.ts +0 -179
- package/src/pi-intercom/bridge-groups.ts +0 -169
- package/src/pi-intercom/bridge-launch-journal.ts +0 -122
- package/src/pi-intercom/bridge-launch-policy.ts +0 -190
- package/src/pi-intercom/bridge-launch.ts +0 -506
- package/src/pi-intercom/bridge-operations.ts +0 -169
- package/src/pi-intercom/bridge-rpc-process.ts +0 -330
- package/src/pi-intercom/interview.ts +0 -295
- package/src/pi-intercom/native-control-auth.ts +0 -89
- package/src/pi-intercom/native-control-protocol.ts +0 -180
- package/src/pi-intercom/native-control.ts +0 -160
- package/src/pi-intercom/peer-awareness.ts +0 -84
- package/src/pi-intercom/saved-transcript.ts +0 -175
- package/src/pi-intercom/subagent-events.ts +0 -299
- package/src/pi-intercom/subagent-live-events.ts +0 -236
- package/src/pi-intercom/supervisor.ts +0 -362
- package/src/pi-intercom/topic-actions.ts +0 -243
- package/src/pi-intercom/topics.ts +0 -271
- package/src/pi-intercom/transcript.ts +0 -226
- package/src/pi-intercom/ui/compose-paste.ts +0 -109
- package/src/pi-intercom/ui/compose.ts +0 -305
- package/src/pi-intercom/ui/inline-message.ts +0 -110
- package/src/pi-intercom/ui/message-renderers.ts +0 -182
- package/src/pi-intercom/ui/overlay.ts +0 -238
- package/src/pi-intercom/ui/session-list.ts +0 -222
- package/src/pi-intercom/ui/tool-renderers.ts +0 -148
- package/src/pi-intercom/ui/topic-view.ts +0 -107
- package/src/runs/background/async-chain-plan.ts +0 -451
- package/src/runs/background/async-control.ts +0 -219
- package/src/runs/background/async-execution.ts +0 -227
- package/src/runs/background/async-job-admission.ts +0 -54
- package/src/runs/background/async-job-projection.ts +0 -225
- package/src/runs/background/async-job-tracker.ts +0 -441
- package/src/runs/background/async-launch.ts +0 -319
- package/src/runs/background/async-plan.ts +0 -285
- package/src/runs/background/async-result-file.ts +0 -104
- package/src/runs/background/async-resume.ts +0 -386
- package/src/runs/background/async-run-discovery.ts +0 -264
- package/src/runs/background/async-run-location.ts +0 -194
- package/src/runs/background/async-run-record.ts +0 -14
- package/src/runs/background/async-run-repair.ts +0 -307
- package/src/runs/background/async-run-summary.ts +0 -71
- package/src/runs/background/async-single-plan.ts +0 -168
- package/src/runs/background/async-status-projection.ts +0 -188
- package/src/runs/background/async-status-render.ts +0 -164
- package/src/runs/background/async-status-validation.ts +0 -238
- package/src/runs/background/async-status.ts +0 -9
- package/src/runs/background/async-value.ts +0 -29
- package/src/runs/background/completion-dedupe.ts +0 -65
- package/src/runs/background/completion-delivery.ts +0 -321
- package/src/runs/background/completion-receipts.ts +0 -309
- package/src/runs/background/legacy-status-acceptance.ts +0 -38
- package/src/runs/background/notify.ts +0 -174
- package/src/runs/background/parallel-groups.ts +0 -102
- package/src/runs/background/result-payload.ts +0 -268
- package/src/runs/background/result-watcher.ts +0 -520
- package/src/runs/background/run-id-resolver.ts +0 -138
- package/src/runs/background/run-schemas.ts +0 -240
- package/src/runs/background/run-status-contracts.ts +0 -46
- package/src/runs/background/run-status-render.ts +0 -364
- package/src/runs/background/run-status.ts +0 -366
- package/src/runs/background/runner-attempt-output.ts +0 -281
- package/src/runs/background/runner-attempt.ts +0 -354
- package/src/runs/background/runner-child-executor.ts +0 -232
- package/src/runs/background/runner-child-observer.ts +0 -278
- package/src/runs/background/runner-completion-summary.ts +0 -106
- package/src/runs/background/runner-completion.ts +0 -274
- package/src/runs/background/runner-config.ts +0 -52
- package/src/runs/background/runner-contract.ts +0 -51
- package/src/runs/background/runner-dynamic.ts +0 -185
- package/src/runs/background/runner-finalization.ts +0 -203
- package/src/runs/background/runner-graph.ts +0 -91
- package/src/runs/background/runner-initial-status.ts +0 -72
- package/src/runs/background/runner-lifecycle.ts +0 -159
- package/src/runs/background/runner-monitor.ts +0 -401
- package/src/runs/background/runner-parallel.ts +0 -279
- package/src/runs/background/runner-prepare-step.ts +0 -128
- package/src/runs/background/runner-reporting.ts +0 -192
- package/src/runs/background/runner-status.ts +0 -220
- package/src/runs/background/runner-step-output.ts +0 -156
- package/src/runs/background/runner-step-record.ts +0 -76
- package/src/runs/background/runner-step.ts +0 -150
- package/src/runs/background/runner-streaming.ts +0 -220
- package/src/runs/background/runner-workflow.ts +0 -284
- package/src/runs/background/stale-run-reconciler.ts +0 -312
- package/src/runs/background/subagent-runner-launcher.ts +0 -88
- package/src/runs/background/subagent-runner.ts +0 -85
- package/src/runs/background/top-level-async.ts +0 -15
- package/src/runs/foreground/chain-clarify.ts +0 -505
- package/src/runs/foreground/clarification-draft.ts +0 -92
- package/src/runs/foreground/clarify-contracts.ts +0 -33
- package/src/runs/foreground/clarify-invocation.ts +0 -204
- package/src/runs/foreground/clarify-text-editor.ts +0 -229
- package/src/runs/foreground/clarify-view.ts +0 -222
- package/src/runs/foreground/execution-input.ts +0 -401
- package/src/runs/foreground/execution-routing.ts +0 -41
- package/src/runs/foreground/execution-timeout.ts +0 -92
- package/src/runs/foreground/foreground-control.ts +0 -342
- package/src/runs/foreground/foreground-memory.ts +0 -132
- package/src/runs/foreground/invocation-context.ts +0 -88
- package/src/runs/foreground/invocation-execution.ts +0 -465
- package/src/runs/foreground/invocation-expansion.ts +0 -58
- package/src/runs/foreground/management-actions.ts +0 -360
- package/src/runs/foreground/nested-control.ts +0 -248
- package/src/runs/foreground/question-continuation.ts +0 -112
- package/src/runs/foreground/question-control.ts +0 -309
- package/src/runs/foreground/resume-target.ts +0 -330
- package/src/runs/foreground/revival-launch-policy.ts +0 -112
- package/src/runs/foreground/run-async-path.ts +0 -327
- package/src/runs/foreground/run-interrupt.ts +0 -202
- package/src/runs/foreground/run-nudge.ts +0 -355
- package/src/runs/foreground/saved-revival.ts +0 -356
- package/src/runs/foreground/subagent-executor.ts +0 -203
- package/src/runs/foreground/subagent-params.ts +0 -392
- package/src/runs/foreground/wait-observation.ts +0 -160
- package/src/runs/foreground/wait-registration.ts +0 -18
- package/src/runs/foreground/wait-run.ts +0 -366
- package/src/runs/shared/acceptance-contract.ts +0 -458
- package/src/runs/shared/acceptance-defaults.ts +0 -1
- package/src/runs/shared/acceptance-evaluation.ts +0 -349
- package/src/runs/shared/acceptance-finalization.ts +0 -495
- package/src/runs/shared/acceptance-outcome.ts +0 -69
- package/src/runs/shared/acceptance-reports.ts +0 -246
- package/src/runs/shared/acceptance-submission.ts +0 -251
- package/src/runs/shared/acceptance-verification.ts +0 -118
- package/src/runs/shared/acceptance.ts +0 -31
- package/src/runs/shared/chain-outputs.ts +0 -206
- package/src/runs/shared/child-attempt-types.ts +0 -118
- package/src/runs/shared/child-attempt.ts +0 -387
- package/src/runs/shared/child-boundaries.ts +0 -217
- package/src/runs/shared/child-context-filter.ts +0 -53
- package/src/runs/shared/child-event-observer.ts +0 -496
- package/src/runs/shared/child-execution-cwd.ts +0 -162
- package/src/runs/shared/child-execution-outcome.ts +0 -103
- package/src/runs/shared/child-invocation.ts +0 -74
- package/src/runs/shared/child-message-validation.ts +0 -233
- package/src/runs/shared/child-native-accounting.ts +0 -154
- package/src/runs/shared/child-native-observation.ts +0 -79
- package/src/runs/shared/child-observation-spool.ts +0 -193
- package/src/runs/shared/child-observations.ts +0 -229
- package/src/runs/shared/child-presence.ts +0 -6
- package/src/runs/shared/child-route-env.ts +0 -142
- package/src/runs/shared/child-stream-observer.ts +0 -302
- package/src/runs/shared/child-stream-projection.ts +0 -160
- package/src/runs/shared/child-structured-tool.ts +0 -38
- package/src/runs/shared/claude-code.ts +0 -216
- package/src/runs/shared/claude-model.ts +0 -67
- package/src/runs/shared/claude-session.ts +0 -124
- package/src/runs/shared/claude-types.ts +0 -31
- package/src/runs/shared/completion-guard.ts +0 -44
- package/src/runs/shared/control-event-policy.ts +0 -15
- package/src/runs/shared/control-notification-owner.ts +0 -20
- package/src/runs/shared/dynamic-fanout.ts +0 -459
- package/src/runs/shared/dynamic-item.ts +0 -114
- package/src/runs/shared/history-index.ts +0 -130
- package/src/runs/shared/legacy-async-recovery.ts +0 -153
- package/src/runs/shared/legacy-output-recovery.ts +0 -214
- package/src/runs/shared/mcp-config-schema.ts +0 -46
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -465
- package/src/runs/shared/model-fallback.ts +0 -344
- package/src/runs/shared/mutating-tool-guard.ts +0 -295
- package/src/runs/shared/native-finalization-types.ts +0 -29
- package/src/runs/shared/native-finalization.ts +0 -252
- package/src/runs/shared/native-usage.ts +0 -396
- package/src/runs/shared/nested-control-records.ts +0 -178
- package/src/runs/shared/nested-events.ts +0 -45
- package/src/runs/shared/nested-path.ts +0 -65
- package/src/runs/shared/nested-projection.ts +0 -230
- package/src/runs/shared/nested-protocol.ts +0 -67
- package/src/runs/shared/nested-registry.ts +0 -273
- package/src/runs/shared/nested-render.ts +0 -217
- package/src/runs/shared/nested-route.ts +0 -292
- package/src/runs/shared/nested-validation.ts +0 -291
- package/src/runs/shared/owned-child-evidence.ts +0 -184
- package/src/runs/shared/owned-run-list.ts +0 -187
- package/src/runs/shared/owned-run-observation.ts +0 -368
- package/src/runs/shared/owned-run-progress.ts +0 -172
- package/src/runs/shared/owned-run-read-state.ts +0 -7
- package/src/runs/shared/owned-run-results.ts +0 -289
- package/src/runs/shared/owned-run-status.ts +0 -239
- package/src/runs/shared/owned-run-view.ts +0 -65
- package/src/runs/shared/owned-workflow-details.ts +0 -24
- package/src/runs/shared/owner-output.ts +0 -73
- package/src/runs/shared/parallel-utils.ts +0 -93
- package/src/runs/shared/parent-receipts.ts +0 -186
- package/src/runs/shared/parent-usage.ts +0 -344
- package/src/runs/shared/pi-args.ts +0 -280
- package/src/runs/shared/pi-launch-input.ts +0 -48
- package/src/runs/shared/pi-session-launch.ts +0 -94
- package/src/runs/shared/pi-spawn.ts +0 -76
- package/src/runs/shared/run-history-queries.ts +0 -195
- package/src/runs/shared/run-history.ts +0 -221
- package/src/runs/shared/run-id-ambiguity.ts +0 -8
- package/src/runs/shared/run-metadata-paths.ts +0 -17
- package/src/runs/shared/run-metadata.ts +0 -240
- package/src/runs/shared/run-persistence.ts +0 -181
- package/src/runs/shared/run-records.ts +0 -19
- package/src/runs/shared/run-restoration.ts +0 -455
- package/src/runs/shared/run-state-owner.ts +0 -31
- package/src/runs/shared/session-cwd-preload.ts +0 -47
- package/src/runs/shared/single-output.ts +0 -416
- package/src/runs/shared/stable-value.ts +0 -15
- package/src/runs/shared/streaming-text.ts +0 -45
- package/src/runs/shared/structured-output.ts +0 -98
- package/src/runs/shared/subagent-control.ts +0 -352
- package/src/runs/shared/subagent-prompt-runtime.ts +0 -119
- package/src/runs/shared/subagent-tool-loop-guard.ts +0 -139
- package/src/runs/shared/supervisor-question-state.ts +0 -221
- package/src/runs/shared/supervisor-questions.ts +0 -410
- package/src/runs/shared/workflow-graph.ts +0 -422
- package/src/runs/shared/workflow-policy.ts +0 -260
- package/src/runs/shared/worktree-contract.ts +0 -29
- package/src/runs/shared/worktree-hook.ts +0 -181
- package/src/runs/shared/worktree-location.ts +0 -61
- package/src/runs/shared/worktree-preservation.ts +0 -10
- package/src/runs/shared/worktree-process.ts +0 -132
- package/src/runs/shared/worktree.ts +0 -507
- package/src/shared/agent-context-policy.ts +0 -215
- package/src/shared/agent-dir.ts +0 -15
- package/src/shared/artifacts.ts +0 -126
- package/src/shared/atomic-json.ts +0 -19
- package/src/shared/chain-files.ts +0 -72
- package/src/shared/concurrency.ts +0 -27
- package/src/shared/content-preview.ts +0 -117
- package/src/shared/execution-cwd.ts +0 -39
- package/src/shared/file-coalescer.ts +0 -31
- package/src/shared/fork-context.ts +0 -72
- package/src/shared/formatters.ts +0 -125
- package/src/shared/journal-reader.ts +0 -18
- package/src/shared/lazy-tools.ts +0 -85
- package/src/shared/message-output.ts +0 -146
- package/src/shared/model-info.ts +0 -117
- package/src/shared/native-import.ts +0 -25
- package/src/shared/native-session-loader.ts +0 -13
- package/src/shared/native-session.ts +0 -6
- package/src/shared/native-tui.ts +0 -20
- package/src/shared/native-typebox.ts +0 -29
- package/src/shared/prompt-sections.ts +0 -16
- package/src/shared/session-entries.ts +0 -108
- package/src/shared/session-identity.ts +0 -25
- package/src/shared/settings.ts +0 -196
- package/src/shared/status-format.ts +0 -232
- package/src/shared/task-file-policy.ts +0 -35
- package/src/shared/temp-root.ts +0 -158
- package/src/shared/types/acceptance.ts +0 -149
- package/src/shared/types/async.ts +0 -247
- package/src/shared/types/config.ts +0 -139
- package/src/shared/types/details.ts +0 -104
- package/src/shared/types/history.ts +0 -217
- package/src/shared/types/inputs.ts +0 -4
- package/src/shared/types/intercom.ts +0 -57
- package/src/shared/types/launch.ts +0 -39
- package/src/shared/types/messages.ts +0 -104
- package/src/shared/types/nested.ts +0 -153
- package/src/shared/types/owned-runs.ts +0 -148
- package/src/shared/types/progress.ts +0 -106
- package/src/shared/types/questions.ts +0 -103
- package/src/shared/types/results.ts +0 -119
- package/src/shared/types/state.ts +0 -56
- package/src/shared/types/usage.ts +0 -36
- package/src/shared/types/workflow.ts +0 -187
- package/src/shared/ui-mode.ts +0 -5
- package/src/shared/utils.ts +0 -148
- package/src/slash/command-discovery.ts +0 -110
- package/src/slash/command-input.ts +0 -232
- package/src/slash/prompt-template-bridge.ts +0 -161
- package/src/slash/prompt-template-contract.ts +0 -152
- package/src/slash/prompt-template-results.ts +0 -189
- package/src/slash/request-protocol.ts +0 -87
- package/src/slash/result-delivery.ts +0 -312
- package/src/slash/saved-chain.ts +0 -115
- package/src/slash/slash-bridge.ts +0 -224
- package/src/slash/slash-commands.ts +0 -195
- package/src/slash/slash-live-state.ts +0 -350
- package/src/tui/action-hints.ts +0 -155
- package/src/tui/activity-lines.ts +0 -40
- package/src/tui/agent-browser.ts +0 -354
- package/src/tui/agent-controls.ts +0 -355
- package/src/tui/agent-conversation.ts +0 -514
- package/src/tui/agent-dock.ts +0 -250
- package/src/tui/agent-history.ts +0 -68
- package/src/tui/agent-model.ts +0 -78
- package/src/tui/agent-picker.ts +0 -325
- package/src/tui/agent-view.ts +0 -403
- package/src/tui/compact-results.ts +0 -342
- package/src/tui/conversation-details.ts +0 -206
- package/src/tui/conversation-frame.ts +0 -184
- package/src/tui/conversation-history.ts +0 -260
- package/src/tui/conversation-menu.ts +0 -119
- package/src/tui/conversation-notices.ts +0 -116
- package/src/tui/conversation-selection.ts +0 -66
- package/src/tui/conversation-viewport.ts +0 -169
- package/src/tui/direction-message.ts +0 -35
- package/src/tui/display.ts +0 -409
- package/src/tui/editor-viewport.ts +0 -19
- package/src/tui/expanded-content.ts +0 -134
- package/src/tui/expanded-multi.ts +0 -264
- package/src/tui/expanded-single.ts +0 -92
- package/src/tui/history-cards.ts +0 -298
- package/src/tui/history-display.ts +0 -334
- package/src/tui/history-json.ts +0 -17
- package/src/tui/history-metadata.ts +0 -177
- package/src/tui/history-record.ts +0 -321
- package/src/tui/history-text.ts +0 -34
- package/src/tui/indexed-history.ts +0 -149
- package/src/tui/nested-widget.ts +0 -192
- package/src/tui/picker-page.ts +0 -80
- package/src/tui/render.ts +0 -104
- package/src/tui/result-facts.ts +0 -99
- package/src/tui/task-observation.ts +0 -96
- package/src/tui/task-store.ts +0 -432
- package/src/tui/text-values.ts +0 -20
- package/src/tui/view-connections.ts +0 -64
- package/src/tui/view-model.ts +0 -181
- package/src/tui/view-persistence.ts +0 -57
- package/src/tui/view-ports.ts +0 -55
- package/src/tui/view-session.ts +0 -42
- package/src/tui/widget-details.ts +0 -220
- package/src/tui/widget-status.ts +0 -331
- package/src/tui/widget.ts +0 -208
- package/src/tui/workflow-labels.ts +0 -340
- package/src/tui/workflow-outcomes.ts +0 -150
|
@@ -8,13 +8,11 @@ import {
|
|
|
8
8
|
rmSync,
|
|
9
9
|
writeFileSync,
|
|
10
10
|
} from "node:fs";
|
|
11
|
-
import {
|
|
12
|
-
import { dirname, join, resolve } from "node:path";
|
|
11
|
+
import { dirname, join, resolve, relative, isAbsolute } from "node:path";
|
|
13
12
|
import process from "node:process";
|
|
14
13
|
import { setTimeout as delay } from "node:timers/promises";
|
|
15
14
|
import { isChildTreeAlive } from "../src/shared/post-exit-stdio-guard.ts";
|
|
16
15
|
import { SmokeProcesses, filesIn, processRef } from "./real-pi-processes.mjs";
|
|
17
|
-
import { getBrokerSocketPath } from "../src/pi-intercom/broker/paths.ts";
|
|
18
16
|
|
|
19
17
|
const DEFAULT_TIMEOUT_MS = 120_000;
|
|
20
18
|
const authAgentDir =
|
|
@@ -23,7 +21,7 @@ const authAgentDir =
|
|
|
23
21
|
|
|
24
22
|
function usage() {
|
|
25
23
|
console.log(
|
|
26
|
-
`Usage: node scripts/real-pi-smoke.mjs [--llm] [--llm-full] [--keep-temp] [--timeout-ms <ms>]\n\nRuns an opt-in real Pi package smoke for this checkout. It uses an isolated\ntemporary Pi home, installs the single pi-subagents package with bundled intercom, verifies pi list,\nand loads
|
|
24
|
+
`Usage: node scripts/real-pi-smoke.mjs [--llm] [--llm-full] [--keep-temp] [--timeout-ms <ms>]\n\nRuns an opt-in real Pi package smoke for this checkout. It uses an isolated\ntemporary Pi home, installs the single pi-subagents package with bundled intercom, verifies pi list,\nand loads the single compiled entry. It does not install pi-fitch-kit, publish anything,\nor create GitHub Actions.\n\nOptions:\n --llm Also run live model-backed list, foreground, and async-completion smoke prompts\n --llm-full Also verify forked tool-result context and saved-conversation continuation\n --keep-temp Keep the isolated temporary home for debugging\n --timeout-ms <ms> Per-command timeout in milliseconds (default: ${DEFAULT_TIMEOUT_MS})\n -h, --help Show this help\n\nEnvironment:\n PI_REAL_SMOKE_AUTH_AGENT_DIR Source Pi agent dir for auth.json/models.json during --llm (default: ~/.pi/agent)\n PI_REAL_SMOKE_MODEL Model passed to live --llm smoke prompts, e.g. openai/gpt-6-astra\n PI_REAL_SMOKE_PROVIDER Provider passed to live --llm smoke prompts\n\nExit codes:\n 0 real Pi smoke passed\n 1 install/list/live smoke failed\n 2 invalid arguments`,
|
|
27
25
|
);
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -98,16 +96,18 @@ function isolatedEnv(root, agentDir) {
|
|
|
98
96
|
const home = join(root, "home");
|
|
99
97
|
const env = { ...process.env };
|
|
100
98
|
for (const key of Object.keys(env)) {
|
|
101
|
-
if (key.startsWith("PI_SUBAGENT_")) {
|
|
99
|
+
if (key.startsWith("PI_SUBAGENT_") || key.startsWith("PI_INTERCOM_")) {
|
|
102
100
|
delete env[key];
|
|
103
101
|
}
|
|
104
102
|
}
|
|
105
103
|
return {
|
|
106
104
|
...env,
|
|
107
105
|
HOME: home,
|
|
106
|
+
USERPROFILE: home,
|
|
108
107
|
XDG_CONFIG_HOME: join(home, ".config"),
|
|
109
108
|
XDG_CACHE_HOME: join(home, ".cache"),
|
|
110
109
|
PI_CODING_AGENT_DIR: agentDir,
|
|
110
|
+
PI_INTERCOM_RUNTIME_DIR: join(root, "ic"),
|
|
111
111
|
PI_SUBAGENT_TEMP_ROOT: join(root, "pi-subagents-runtime"),
|
|
112
112
|
PI_OFFLINE: "1",
|
|
113
113
|
PATH: process.env.PATH ?? "",
|
|
@@ -119,21 +119,40 @@ function runPi(label, args, options) {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
async function verifyBundledResources(options) {
|
|
122
|
+
const marker = join(options.root, "resources.json");
|
|
123
|
+
const observer = join(options.root, "observe-resources.mjs");
|
|
124
|
+
writeFileSync(
|
|
125
|
+
observer,
|
|
126
|
+
`import { writeFileSync } from "node:fs"; export default function(pi) { pi.on("session_start", () => { writeFileSync(${JSON.stringify(marker)}, JSON.stringify(pi.getActiveTools())); }); }`,
|
|
127
|
+
);
|
|
122
128
|
const output = await runPi(
|
|
123
129
|
"pi load bundled resources",
|
|
124
|
-
["--mode", "rpc", "--no-session", "--offline", "--approve"],
|
|
125
|
-
{
|
|
126
|
-
...options,
|
|
127
|
-
input: `${JSON.stringify({ id: "commands", type: "get_commands" })}\n`,
|
|
128
|
-
},
|
|
130
|
+
["--mode", "rpc", "--no-session", "--offline", "--approve", "-e", observer],
|
|
131
|
+
{ ...options, input: `${JSON.stringify({ id: "commands", type: "get_commands" })}\n` },
|
|
129
132
|
);
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
-
for (const name of ["intercom", "subagents-doctor", "skill:pi-intercom", "skill:pi-subagents"]) {
|
|
133
|
+
const commands = registeredCommands(commandResponse(output));
|
|
134
|
+
for (const name of ["skill:pi-intercom", "skill:pi-subagents"]) {
|
|
133
135
|
if (!commands.includes(name)) {
|
|
134
136
|
throw new Error(`bundled Pi resources did not register ${name}:\n${output}`);
|
|
135
137
|
}
|
|
136
138
|
}
|
|
139
|
+
const tools = JSON.parse(readFileSync(marker, "utf8"));
|
|
140
|
+
for (const name of ["delegate", "agent_runs", "intercom"]) {
|
|
141
|
+
if (!tools.includes(name)) {
|
|
142
|
+
throw new Error(`${name} must be eager on the single package entry`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
for (const name of [
|
|
146
|
+
"subagent",
|
|
147
|
+
"load_subagent",
|
|
148
|
+
"load_intercom",
|
|
149
|
+
"contact_supervisor",
|
|
150
|
+
"structured_output",
|
|
151
|
+
]) {
|
|
152
|
+
if (tools.includes(name)) {
|
|
153
|
+
throw new Error(`retired package tool is still exposed: ${name}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
137
156
|
}
|
|
138
157
|
|
|
139
158
|
function commandResponse(output) {
|
|
@@ -205,12 +224,15 @@ async function runLivePrompt(label, prompt, options, expectedTool) {
|
|
|
205
224
|
if (!events.some((event) => event.type === "agent_settled")) {
|
|
206
225
|
throw new Error(`${label} did not reach agent_settled.`);
|
|
207
226
|
}
|
|
208
|
-
return
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
227
|
+
return {
|
|
228
|
+
events,
|
|
229
|
+
text: events
|
|
230
|
+
.filter((event) => event.type === "message_end" && event.message?.role === "assistant")
|
|
231
|
+
.flatMap((event) =>
|
|
232
|
+
event.message.content.filter((part) => part.type === "text").map((part) => part.text),
|
|
233
|
+
)
|
|
234
|
+
.join("\n"),
|
|
235
|
+
};
|
|
214
236
|
}
|
|
215
237
|
|
|
216
238
|
function* savedAssistantModels(file) {
|
|
@@ -225,10 +247,10 @@ function* savedAssistantModels(file) {
|
|
|
225
247
|
}
|
|
226
248
|
}
|
|
227
249
|
|
|
228
|
-
function auditSavedModels(
|
|
250
|
+
function auditSavedModels(directories, expectedModel) {
|
|
229
251
|
const models = new Set();
|
|
230
252
|
let responses = 0;
|
|
231
|
-
for (const file of filesIn(dir)) {
|
|
253
|
+
for (const file of directories.flatMap((dir) => [...filesIn(dir)])) {
|
|
232
254
|
if (!file.endsWith(".jsonl")) {
|
|
233
255
|
continue;
|
|
234
256
|
}
|
|
@@ -256,44 +278,57 @@ function requireOutput(label, output, pattern) {
|
|
|
256
278
|
console.log(`[real-pi-smoke] ${label} output evidence:\n${compact}`);
|
|
257
279
|
}
|
|
258
280
|
|
|
259
|
-
|
|
260
|
-
const
|
|
281
|
+
function asyncCompletion(dir, runId) {
|
|
282
|
+
const resultPath = join(dir, "result.json");
|
|
283
|
+
if (!existsSync(resultPath)) {
|
|
284
|
+
return { status: "missing" };
|
|
285
|
+
}
|
|
286
|
+
const result = JSON.parse(readFileSync(resultPath, "utf8"));
|
|
287
|
+
if (result.id !== runId) {
|
|
288
|
+
throw new Error("Async completion belongs to another saved run");
|
|
289
|
+
}
|
|
290
|
+
if (result.status !== "completed") {
|
|
291
|
+
throw new Error(`async run ${runId} ended ${result.status}: ${result.error ?? ""}`);
|
|
292
|
+
}
|
|
293
|
+
const processPath = join(dir, "actor.lock", "process.json");
|
|
294
|
+
if (!existsSync(processPath)) {
|
|
295
|
+
return { status: "completed; actor exit unconfirmed" };
|
|
296
|
+
}
|
|
297
|
+
const actor = JSON.parse(readFileSync(processPath, "utf8"));
|
|
298
|
+
return {
|
|
299
|
+
status: result.status,
|
|
300
|
+
output: isChildTreeAlive(processRef(actor.pid))
|
|
301
|
+
? undefined
|
|
302
|
+
: readFileSync(join(dir, "output.txt"), "utf8"),
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
async function waitForAsyncCompletion(run, pattern, { env, timeoutMs, signal }) {
|
|
307
|
+
const dir = dirname(run.sessionFile);
|
|
308
|
+
const within = relative(join(env.PI_CODING_AGENT_DIR, "sessions", "agent-runs"), dir);
|
|
309
|
+
if (isAbsolute(within) || within.startsWith("..") || !/^[a-zA-Z0-9_-]{1,128}$/.test(run.id)) {
|
|
310
|
+
throw new Error("Async receipt did not identify this smoke's private saved run");
|
|
311
|
+
}
|
|
261
312
|
const deadline = Date.now() + timeoutMs;
|
|
262
313
|
let lastState = "missing";
|
|
263
|
-
let lastOutput = "";
|
|
264
314
|
while (Date.now() < deadline) {
|
|
265
315
|
signal.throwIfAborted();
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
if (
|
|
269
|
-
|
|
316
|
+
const completion = asyncCompletion(dir, run.id);
|
|
317
|
+
lastState = completion.status;
|
|
318
|
+
if (completion.output !== undefined) {
|
|
319
|
+
requireOutput(`async run ${run.id} completed and actor exited`, completion.output, pattern);
|
|
320
|
+
return;
|
|
270
321
|
}
|
|
271
|
-
|
|
272
|
-
const status = JSON.parse(readFileSync(statusPath, "utf8"));
|
|
273
|
-
lastState = String(status.state ?? "unknown");
|
|
274
|
-
if (asyncProcessComplete(status)) {
|
|
275
|
-
requireOutput(`async run ${runId} completed`, lastOutput, pattern);
|
|
276
|
-
return;
|
|
277
|
-
}
|
|
278
|
-
if (lastState === "failed" || lastState === "paused") {
|
|
279
|
-
throw new Error(`async run ${runId} ended ${lastState}.\nOutput:\n${lastOutput}`);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
// Poll only after reading status and process liveness; the runner may still write final artifacts.
|
|
322
|
+
// Result publication is not process exit; retain resources until final actor writes finish.
|
|
283
323
|
// oxlint-disable-next-line no-await-in-loop
|
|
284
|
-
await delay(
|
|
324
|
+
await delay(100, undefined, { signal });
|
|
285
325
|
}
|
|
286
326
|
throw new Error(
|
|
287
|
-
`async run ${
|
|
327
|
+
`async run ${run.id} did not complete and exit after ${timeoutMs}ms (last state: ${lastState}).`,
|
|
288
328
|
);
|
|
289
329
|
}
|
|
290
330
|
|
|
291
|
-
function asyncProcessComplete(status) {
|
|
292
|
-
return status.state === "complete" && status.pid && !isChildTreeAlive(processRef(status.pid));
|
|
293
|
-
}
|
|
294
|
-
|
|
295
331
|
async function runLiveSmoke(options, runOptions, agentDir) {
|
|
296
|
-
const { root } = runOptions;
|
|
297
332
|
const copiedAuthFiles = copyLiveAuth(agentDir);
|
|
298
333
|
if (copiedAuthFiles.length > 0) {
|
|
299
334
|
console.log(
|
|
@@ -301,122 +336,96 @@ async function runLiveSmoke(options, runOptions, agentDir) {
|
|
|
301
336
|
);
|
|
302
337
|
}
|
|
303
338
|
const childModelInstruction = process.env.PI_REAL_SMOKE_MODEL
|
|
304
|
-
? ` Pass model
|
|
339
|
+
? ` Pass model '${process.env.PI_REAL_SMOKE_MODEL}' to every delegate call.`
|
|
305
340
|
: "";
|
|
306
341
|
await runBasicLiveSmoke(runOptions, childModelInstruction);
|
|
307
342
|
if (options.llmFull) {
|
|
308
343
|
await runFullLiveSmoke(runOptions, childModelInstruction);
|
|
309
344
|
}
|
|
310
|
-
auditSavedModels(
|
|
345
|
+
auditSavedModels(
|
|
346
|
+
[join(runOptions.root, "sessions"), join(agentDir, "sessions", "agent-runs")],
|
|
347
|
+
process.env.PI_REAL_SMOKE_MODEL,
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
function toolDetails(events, name) {
|
|
352
|
+
return events
|
|
353
|
+
.filter((event) => event.type === "tool_execution_end" && event.toolName === name)
|
|
354
|
+
.map((event) => event.result?.details);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
function requireCompleted(run, expected) {
|
|
358
|
+
if (run?.status !== "completed" || run.output?.text !== expected) {
|
|
359
|
+
throw new Error(`Native child did not complete with expected output: ${expected}`);
|
|
360
|
+
}
|
|
311
361
|
}
|
|
312
362
|
|
|
313
363
|
async function runBasicLiveSmoke(runOptions, childModelInstruction) {
|
|
314
|
-
const
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
/real-pi-smoke list ok/,
|
|
329
|
-
);
|
|
330
|
-
requireOutput(
|
|
331
|
-
"real Pi foreground subagent prompt",
|
|
332
|
-
await runLivePrompt(
|
|
333
|
-
"real Pi foreground subagent prompt",
|
|
334
|
-
foregroundPrompt,
|
|
335
|
-
runOptions,
|
|
364
|
+
const prompts = [
|
|
365
|
+
[
|
|
366
|
+
"intercom",
|
|
367
|
+
"Call the intercom tool with action status. Reply exactly 'real-pi-smoke intercom ok' only if it reports 'Connected: Yes'.",
|
|
368
|
+
"intercom",
|
|
369
|
+
],
|
|
370
|
+
[
|
|
371
|
+
"list",
|
|
372
|
+
"Call agent_runs with action list. Reply exactly 'real-pi-smoke list ok' only if it successfully returns a saved-run list. There are no profiles to discover.",
|
|
373
|
+
"agent_runs",
|
|
374
|
+
],
|
|
375
|
+
[
|
|
376
|
+
"foreground",
|
|
377
|
+
`Call delegate with prompt 'Reply exactly: real-pi-smoke foreground ok', name 'smoke-foreground', and async false.${childModelInstruction} Reply exactly 'real-pi-smoke foreground ok' only if the actual child result contains it.`,
|
|
336
378
|
"delegate",
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
)
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
379
|
+
],
|
|
380
|
+
];
|
|
381
|
+
for (const [kind, prompt, tool] of prompts) {
|
|
382
|
+
// Keep separate native parent sessions so each smoke owns its saved runs.
|
|
383
|
+
// oxlint-disable-next-line no-await-in-loop
|
|
384
|
+
const result = await runLivePrompt(`real Pi ${kind} prompt`, prompt, runOptions, tool);
|
|
385
|
+
if (kind === "foreground") {
|
|
386
|
+
requireCompleted(toolDetails(result.events, "delegate")[0], "real-pi-smoke foreground ok");
|
|
387
|
+
}
|
|
388
|
+
requireOutput(`real Pi ${kind} prompt`, result.text, new RegExp(`real-pi-smoke ${kind} ok`));
|
|
389
|
+
}
|
|
390
|
+
const result = await runLivePrompt(
|
|
391
|
+
"real Pi async prompt",
|
|
392
|
+
`Call delegate with prompt 'Reply exactly: real-pi-smoke async ok', name 'smoke-async', and async true.${childModelInstruction} Do not wait or call agent_runs. Reply exactly 'real-pi-smoke async launched ok' after receiving a launch receipt, not claiming completion.`,
|
|
343
393
|
runOptions,
|
|
344
394
|
"delegate",
|
|
345
395
|
);
|
|
346
|
-
requireOutput(
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
asyncOutput.match(/Async(?: parallel)?:\s+(?:\S+|\[[^\]]+\])\s+\[([0-9a-f-]{36})\]/i)?.[1] ??
|
|
353
|
-
asyncOutput.match(/\[([0-9a-f-]{36})\]/i)?.[1] ??
|
|
354
|
-
asyncOutput.match(/\b([0-9a-f]{8}-[0-9a-f-]{27})\b/i)?.[1];
|
|
355
|
-
if (!asyncRunId) {
|
|
356
|
-
throw new Error(`Could not parse async run id from output:\n${asyncOutput}`);
|
|
357
|
-
}
|
|
358
|
-
await waitForAsyncCompletion(asyncRunId, /^real-pi-smoke async ok$/m, runOptions);
|
|
396
|
+
requireOutput("real Pi async prompt", result.text, /real-pi-smoke async launched ok/);
|
|
397
|
+
const receipt = toolDetails(result.events, "delegate")[0];
|
|
398
|
+
if (receipt?.receipt !== "launch" || !receipt.id || !receipt.sessionFile) {
|
|
399
|
+
throw new Error("Native delegate did not return a saved asynchronous launch receipt");
|
|
400
|
+
}
|
|
401
|
+
await waitForAsyncCompletion(receipt, /^real-pi-smoke async ok$/m, runOptions);
|
|
359
402
|
}
|
|
360
403
|
|
|
361
404
|
async function runFullLiveSmoke(runOptions, childModelInstruction) {
|
|
362
|
-
const
|
|
363
|
-
const
|
|
364
|
-
const
|
|
365
|
-
const
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
await runLivePrompt("real Pi parallel subagent prompt", parallelPrompt, runOptions, "subagent"),
|
|
370
|
-
/real-pi-smoke parallel ok/,
|
|
371
|
-
);
|
|
372
|
-
requireOutput(
|
|
373
|
-
"real Pi chain subagent prompt",
|
|
374
|
-
await runLivePrompt("real Pi chain subagent prompt", chainPrompt, runOptions, "subagent"),
|
|
375
|
-
/real-pi-smoke chain ok/,
|
|
376
|
-
);
|
|
377
|
-
requireOutput(
|
|
378
|
-
"real Pi output subagent prompt",
|
|
379
|
-
await runLivePrompt("real Pi output subagent prompt", outputPrompt, runOptions, "subagent"),
|
|
380
|
-
/real-pi-smoke output ok/,
|
|
381
|
-
);
|
|
405
|
+
const prompt = `First call delegate with prompt 'Reply exactly CALIBRATION_FACT=packed-otter-7319', name 'fact', context fresh and async false.${childModelInstruction} Then call delegate with context fork, async false, and prompt 'Read the preceding delegate tool result in inherited conversation. Without tools, filesystem reads, or guessing, return the CALIBRATION_FACT line exactly; return FACT_NOT_VISIBLE if absent.' Finally call agent_runs with action continue, the first saved run id, async false, and prompt 'Without tools, repeat the CALIBRATION_FACT line from your own saved conversation exactly.' Reply exactly 'real-pi-smoke fork ok' only if both the forked child and continued child actually return CALIBRATION_FACT=packed-otter-7319. There are no profiles, task prefixes, output settings, or canned role instructions.`;
|
|
406
|
+
const result = await runLivePrompt("real Pi fork prompt", prompt, runOptions, "delegate");
|
|
407
|
+
const delegates = toolDetails(result.events, "delegate");
|
|
408
|
+
const continuation = toolDetails(result.events, "agent_runs")[0];
|
|
409
|
+
for (const run of [...delegates, continuation]) {
|
|
410
|
+
requireCompleted(run, "CALIBRATION_FACT=packed-otter-7319");
|
|
411
|
+
}
|
|
382
412
|
if (
|
|
383
|
-
|
|
384
|
-
|
|
413
|
+
delegates.length !== 2 ||
|
|
414
|
+
delegates[0].context !== "fresh" ||
|
|
415
|
+
delegates[1].context !== "fork" ||
|
|
416
|
+
continuation.predecessor !== delegates[0].id ||
|
|
417
|
+
continuation.sessionFile !== delegates[0].sessionFile
|
|
385
418
|
) {
|
|
386
|
-
throw new Error(
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
"real Pi acceptance subagent prompt",
|
|
392
|
-
acceptancePrompt,
|
|
393
|
-
runOptions,
|
|
394
|
-
"subagent",
|
|
395
|
-
),
|
|
396
|
-
/real-pi-smoke acceptance ok/,
|
|
397
|
-
);
|
|
419
|
+
throw new Error(
|
|
420
|
+
"Fork/continuation smoke did not execute the two contexts and reuse the first saved conversation",
|
|
421
|
+
);
|
|
422
|
+
}
|
|
423
|
+
requireOutput("real Pi fork prompt", result.text, /real-pi-smoke fork ok/);
|
|
398
424
|
}
|
|
399
425
|
|
|
400
426
|
function createProject(root) {
|
|
401
427
|
const projectRoot = join(root, "project");
|
|
402
|
-
|
|
403
|
-
mkdirSync(projectAgentsDir, { recursive: true });
|
|
404
|
-
writeFileSync(
|
|
405
|
-
join(projectAgentsDir, "real-smoke.md"),
|
|
406
|
-
`---
|
|
407
|
-
name: real-smoke
|
|
408
|
-
description: Isolated live smoke agent
|
|
409
|
-
systemPromptMode: replace
|
|
410
|
-
inheritProjectContext: false
|
|
411
|
-
inheritSkills: false
|
|
412
|
-
tools: read
|
|
413
|
-
extensions:
|
|
414
|
-
---
|
|
415
|
-
|
|
416
|
-
Follow the task exactly and return its requested text without using tools.
|
|
417
|
-
`,
|
|
418
|
-
"utf-8",
|
|
419
|
-
);
|
|
428
|
+
mkdirSync(projectRoot, { recursive: true });
|
|
420
429
|
return projectRoot;
|
|
421
430
|
}
|
|
422
431
|
|
|
@@ -431,7 +440,7 @@ async function main() {
|
|
|
431
440
|
}
|
|
432
441
|
|
|
433
442
|
const repoRoot = resolve(process.cwd());
|
|
434
|
-
const root = mkdtempSync(join(
|
|
443
|
+
const root = mkdtempSync(join("/tmp", "pi-subagents-real-pi-smoke-"));
|
|
435
444
|
const agentDir = join(root, "pi-agent");
|
|
436
445
|
const projectRoot = createProject(root);
|
|
437
446
|
const env = isolatedEnv(root, agentDir);
|
|
@@ -475,7 +484,7 @@ async function main() {
|
|
|
475
484
|
}
|
|
476
485
|
} finally {
|
|
477
486
|
await runOptions.processes.stop();
|
|
478
|
-
rmSync(
|
|
487
|
+
rmSync(env.PI_INTERCOM_RUNTIME_DIR, { recursive: true, force: true });
|
|
479
488
|
for (const name of ["auth.json", "models.json"]) {
|
|
480
489
|
rmSync(join(agentDir, name), { force: true });
|
|
481
490
|
}
|
package/scripts/run-tests.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawnSync } from "node:child_process";
|
|
3
3
|
import { mkdtempSync, readdirSync, rmSync } from "node:fs";
|
|
4
|
-
import { availableParallelism
|
|
4
|
+
import { availableParallelism } from "node:os";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
|
|
7
7
|
// ponytail: integration is sized for the 3-vCPU macOS hosted runner, where the suite takes
|
|
@@ -81,7 +81,7 @@ function testFiles(dir) {
|
|
|
81
81
|
function sanitizedEnv() {
|
|
82
82
|
const env = { ...process.env };
|
|
83
83
|
for (const key of Object.keys(env)) {
|
|
84
|
-
if (key.startsWith("PI_SUBAGENT_")) {
|
|
84
|
+
if (key.startsWith("PI_SUBAGENT_") || key.startsWith("PI_INTERCOM_")) {
|
|
85
85
|
delete env[key];
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -91,9 +91,10 @@ function sanitizedEnv() {
|
|
|
91
91
|
function runNodeTest(label, files, timeoutMs, concurrency) {
|
|
92
92
|
const args = [...(concurrency ? [`--test-concurrency=${concurrency}`] : []), "--test", ...files];
|
|
93
93
|
const startedAt = Date.now();
|
|
94
|
-
const tempRoot = mkdtempSync(join(
|
|
94
|
+
const tempRoot = mkdtempSync(join("/tmp", "pi-subagents-test-"));
|
|
95
95
|
const env = sanitizedEnv();
|
|
96
96
|
env.PI_SUBAGENT_TEMP_ROOT = tempRoot;
|
|
97
|
+
env.PI_INTERCOM_RUNTIME_DIR = join(tempRoot, "ic");
|
|
97
98
|
env.HOME = tempRoot;
|
|
98
99
|
delete env.PI_CODING_AGENT_DIR;
|
|
99
100
|
let result;
|
|
@@ -1,113 +1,59 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pi-intercom
|
|
3
|
-
description: "
|
|
3
|
+
description: "Discover eligible local Pi sessions, send guidance, ask/reply, or read a peer's last completed response without waking it. Use for same-machine Pi coordination, not generic chat or unrelated remote messaging."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Pi Intercom
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
## Supervisor escalations from pi-subagents
|
|
62
|
-
|
|
63
|
-
When present, child sessions get a child-only `contact_supervisor` tool; normal sessions use `intercom`. Do not assume `contact_supervisor` exists unless the tool is listed.
|
|
64
|
-
|
|
65
|
-
Child-side reasons only: blocking `need_decision` or `interview_request` when the ephemeral child cannot safely continue and must remain alive for the reply, or a non-blocking `progress_update` for a discovery or change the supervisor needs while working. Progress steers at the next tool boundary; skip starts, redundant status, and routine completion, and retain material findings in the final result.
|
|
66
|
-
|
|
67
|
-
Supervisor-side: while connected, `intercom` `reply` answers formatted child escalations. After reload/reconnect, resume the same saved supervisor session, list `agent_runs({ action: "questions" })`, and use `agent_runs({ action: "answer", id, questionId, message })`. These questions do not use the ordinary ask timeout. A nudge is not an answer. Saved answers reach a live waiter or revive an exited child's saved session; a receipt does not mean the work completed. Use `agent_runs({ action: "stop", id })` to cancel a pending question and its live waiter.
|
|
68
|
-
|
|
69
|
-
| Type | Meaning | Supervisor response |
|
|
70
|
-
| ------------------- | ---------------------------------------------------------------- | --------------------------------------- |
|
|
71
|
-
| `need_decision` | Child cannot safely continue without one decision or approval | Reply promptly with a clear decision |
|
|
72
|
-
| `interview_request` | Child cannot safely continue without multiple structured answers | Reply with JSON using the requested ids |
|
|
73
|
-
| `progress_update` | Child steers a material discovery needed during active work | Read it; reply only if redirecting |
|
|
74
|
-
|
|
75
|
-
Interview replies use plain JSON or a fenced JSON block. `info` questions are context only and need no response entries:
|
|
76
|
-
|
|
77
|
-
```json
|
|
78
|
-
{
|
|
79
|
-
"responses": [
|
|
80
|
-
{ "id": "api", "value": "Stable API" },
|
|
81
|
-
{ "id": "constraints", "value": "Keep the public error shape unchanged." }
|
|
82
|
-
]
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
If a subagent status line advertises an intercom target, trust it only when that target appears in `intercom({ action: "list" })`. If absent, use `agent_runs` inspection, continuation, nudging, or result artifacts; the child may be Claude Code-backed or already exited and have no child-side `contact_supervisor`. From a parent session, prefer `agent_runs({ action: "nudge", id, message })` for non-blocking live child coordination; it supplements the active child task unless it explicitly replaces it. Use direct `intercom({ action: "ask", to, delivery: "steer", message })` only when the parent process must remain alive and cannot safely continue without a listed child reply.
|
|
87
|
-
|
|
88
|
-
## Optional visible peer sessions
|
|
89
|
-
|
|
90
|
-
Read `references/peer-sessions.md` before starting a new visible peer session. Spawn one only when all are true:
|
|
91
|
-
|
|
92
|
-
- No connected peer from `intercom({ action: "list" })` already fits.
|
|
93
|
-
- The user benefits from watching or resuming a long-lived peer conversation.
|
|
94
|
-
- The peer works in the same repo or an intentional reference repo.
|
|
95
|
-
- You can run a smoke ask before delegating real work.
|
|
96
|
-
|
|
97
|
-
## Failure handling
|
|
98
|
-
|
|
99
|
-
- No other project sessions: do not invent a target. Use `scope: "all"` only when cross-project coordination is intentional; otherwise start a peer only if the optional visible-peer rule holds.
|
|
100
|
-
- `Session not found`: run `list`, choose the exact displayed target, then retry if still useful.
|
|
101
|
-
- `Already waiting for a reply`: wait for the current ask, use `send` for non-blocking context, or continue local work.
|
|
102
|
-
- Multiple pending asks: run `pending`, then use its copy-ready `reply` call or disambiguate with the displayed `to` or `replyTo` value.
|
|
103
|
-
- Ask timeout: summarize the blocked decision and continue only with safe local work.
|
|
104
|
-
- Busy non-interactive recipient auto-reply: it cannot respond while running; use subagent controls or wait.
|
|
105
|
-
|
|
106
|
-
## Completion evidence
|
|
107
|
-
|
|
108
|
-
A good intercom-assisted turn ends with:
|
|
109
|
-
|
|
110
|
-
- Target came from `list` or from the active inbound ask.
|
|
111
|
-
- Action matched intent: default-steered `send` for live coordination, `ask` only for a required blocking reply, `reply` for an inbound ask, explicit queue only for intentional delay, and passive only when deliberately not waking the model.
|
|
112
|
-
- Delivery result or failure was handled.
|
|
113
|
-
- Any spawned peer was smoke-tested and either still needed or cleaned up.
|
|
8
|
+
The `intercom` tool is eager. There is no loader, separate child supervisor tool,
|
|
9
|
+
workflow UI, or topic registry.
|
|
10
|
+
|
|
11
|
+
1. Use `intercom({action:"list"})` before choosing a peer. Default discovery spans
|
|
12
|
+
projects and agent directories under the same OS user; optional
|
|
13
|
+
`scope:"project"` filters to this repository and its worktrees.
|
|
14
|
+
2. Pick the exact displayed target. Names are not unique; resolve ambiguity rather
|
|
15
|
+
than guessing. The current session is not a peer target.
|
|
16
|
+
3. Choose the lightest operation:
|
|
17
|
+
- `send`: non-blocking guidance/corrections/blockers; default delivery steers.
|
|
18
|
+
- `last`: original last completed assistant text, without waking the peer.
|
|
19
|
+
- `ask`: bounded correlated wait only when the sender must stay alive waiting.
|
|
20
|
+
- `reply`: answer the active/sole pending ask, or specify `replyTo` when ambiguous.
|
|
21
|
+
- `pending`: unresolved inbound asks and their correlation.
|
|
22
|
+
- `status`: connection, peer health and inbound queue state.
|
|
23
|
+
4. Handle the actual outcome. Broker acceptance is not recipient persistence,
|
|
24
|
+
model consumption, a reply, completion, or process exit. Do not replay an
|
|
25
|
+
uncertain side effect merely because its response was lost.
|
|
26
|
+
|
|
27
|
+
## Topology
|
|
28
|
+
|
|
29
|
+
A main and its children form one group. Every pair inside it can communicate.
|
|
30
|
+
Mains can also communicate with other mains. Children cannot discover, send to,
|
|
31
|
+
or read a foreign group's agents—even with an exact ID. Only mains delegate;
|
|
32
|
+
there is one level. Cwd and agentDir do not define groups. These are coordination
|
|
33
|
+
rules, not a sandbox against other code running as the same OS user.
|
|
34
|
+
|
|
35
|
+
## Delivery and paging
|
|
36
|
+
|
|
37
|
+
Default `send` steers at the next tool boundary or wakes an idle peer. Explicit
|
|
38
|
+
`delivery:"queue"` intentionally defers. Explicit `delivery:"passive"` never wakes
|
|
39
|
+
and is for breadcrumbs, not actionable work. Ordinary live agent guidance should
|
|
40
|
+
not be passive.
|
|
41
|
+
|
|
42
|
+
`last` returns a stable entry ID and offsets. Follow its exact next-page call to
|
|
43
|
+
retrieve all text; offsets are UTF-16 code units, not bytes. A read never sends a
|
|
44
|
+
model prompt. It does not substitute a fabricated status summary for the answer.
|
|
45
|
+
|
|
46
|
+
Keep messages compact and self-contained: objective, scope, files, authority,
|
|
47
|
+
stop boundary, and expected reply. Never attach secrets or unrelated private
|
|
48
|
+
context. Use ordinary run completion for delegated handoff, not duplicate sends.
|
|
49
|
+
|
|
50
|
+
## Recovery
|
|
51
|
+
|
|
52
|
+
If a target disappears, list again. A timeout is not a reply. Multiple pending
|
|
53
|
+
asks require explicit correlation. Ordinary asks do not recreate the retired
|
|
54
|
+
persistent supervisor question/approval workflow.
|
|
55
|
+
|
|
56
|
+
Old agent-directory brokers may coexist during migration; updated sessions use
|
|
57
|
+
the same-user broker. Do not kill another broker or change runtime configuration
|
|
58
|
+
to force discovery. Only intercom-connected eligible sessions appear, not all
|
|
59
|
+
open Pi processes. See `docs/intercom.md` for broker and persistence contracts.
|