@fitchmultz/pi-subagents 0.49.1 → 0.51.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 +72 -1
- package/README.md +119 -94
- package/dist/agent/contracts.js +104 -0
- package/dist/agent/cwd.js +51 -0
- package/dist/agent/host.js +69 -0
- package/dist/agent/index.js +456 -0
- package/dist/agent/journal-tail.js +142 -0
- package/dist/agent/launch.js +99 -0
- package/dist/agent/legacy.js +183 -0
- package/dist/agent/notifications.js +210 -0
- package/dist/agent/observation-state.js +246 -0
- package/dist/agent/observation-view.js +258 -0
- package/dist/agent/observation.js +346 -0
- package/dist/agent/observe-card.js +243 -0
- package/dist/agent/observe-chrome.js +85 -0
- package/dist/agent/observe-client.js +285 -0
- package/dist/agent/observe-layout.js +65 -0
- package/dist/agent/observe-reading.js +84 -0
- package/dist/agent/observe-screen.js +436 -0
- package/dist/agent/observe-transcript.js +382 -0
- package/dist/agent/observe.js +441 -0
- package/dist/agent/process.js +346 -0
- package/dist/agent/receipts.js +147 -0
- package/dist/agent/runner.js +477 -0
- package/dist/agent/saved.js +195 -0
- package/dist/agent/shell.js +44 -0
- package/dist/agent/storage.js +130 -0
- package/dist/agent/tool-schemas.js +20 -0
- package/dist/agent/typebox.js +25 -0
- package/dist/agent/usage.js +117 -0
- package/dist/agent/view.js +194 -0
- package/dist/agent/wake.js +99 -0
- package/dist/build-info.js +1 -0
- package/dist/index.js +8 -0
- package/dist/intercom-client.d.ts +26 -0
- package/dist/intercom-client.js +45 -0
- package/dist/pi-intercom/agent-dir.d.ts +1 -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 +4 -97
- package/dist/pi-intercom/bridge.js +12 -35
- package/dist/pi-intercom/broker/broker.js +57 -56
- package/dist/pi-intercom/broker/client-last.d.ts +13 -0
- package/dist/pi-intercom/broker/client-last.js +60 -0
- package/dist/pi-intercom/broker/client.d.ts +60 -0
- package/dist/pi-intercom/broker/client.js +75 -4
- package/dist/pi-intercom/broker/connection.d.ts +29 -0
- package/dist/pi-intercom/broker/connection.js +5 -18
- package/dist/pi-intercom/broker/framing.d.ts +17 -0
- package/dist/pi-intercom/broker/framing.js +10 -7
- package/dist/pi-intercom/broker/guard.js +23 -0
- package/dist/pi-intercom/broker/last.d.ts +26 -0
- package/dist/pi-intercom/broker/last.js +198 -0
- package/dist/pi-intercom/broker/paths.d.ts +13 -0
- package/dist/pi-intercom/broker/paths.js +58 -16
- package/dist/pi-intercom/broker/pid.js +5 -1
- package/dist/pi-intercom/broker/server-connection.js +37 -0
- package/dist/pi-intercom/broker/snapshot-reader.d.ts +9 -0
- package/dist/pi-intercom/broker/snapshots.d.ts +29 -0
- package/dist/pi-intercom/broker/spawn.js +32 -16
- package/dist/pi-intercom/broker/targets.d.ts +9 -0
- package/dist/pi-intercom/broker/targets.js +24 -0
- package/dist/pi-intercom/config.js +0 -23
- package/dist/pi-intercom/connection.js +40 -72
- package/dist/pi-intercom/identity.js +15 -44
- package/dist/pi-intercom/inbound-delivery.js +20 -125
- package/dist/pi-intercom/inbound-journal.js +85 -73
- package/dist/pi-intercom/inbound-record.js +20 -49
- package/dist/pi-intercom/inbound.js +17 -90
- package/dist/pi-intercom/index.js +11 -47
- package/dist/pi-intercom/last-message.js +46 -0
- package/dist/pi-intercom/lifecycle.js +96 -36
- package/dist/pi-intercom/message-format.js +1 -32
- package/dist/pi-intercom/outbound.js +14 -16
- package/dist/pi-intercom/reply-tracker.js +9 -18
- package/dist/pi-intercom/reply-wait.js +17 -108
- package/dist/pi-intercom/runtime-types.js +0 -1
- package/dist/pi-intercom/session-events.js +5 -21
- package/dist/pi-intercom/session-targets.d.ts +24 -0
- package/dist/pi-intercom/tool-arguments.js +4 -0
- package/dist/pi-intercom/tool-registration.js +8 -86
- package/dist/pi-intercom/tool-results.js +5 -7
- package/dist/pi-intercom/tool-schemas.js +13 -67
- package/dist/pi-intercom/tools.js +55 -29
- package/dist/pi-intercom/types.d.ts +212 -0
- package/dist/pi-intercom/types.js +62 -4
- package/dist/pi-intercom/ui/session-format.js +3 -3
- package/dist/pi-intercom/validation.d.ts +12 -0
- package/dist/pi-intercom/validation.js +3 -0
- package/dist/shared/bounded-json.js +151 -0
- package/dist/shared/compact-cards.js +66 -0
- package/dist/shared/journal-frames.js +3 -6
- package/dist/shared/journal-projections.js +0 -31
- package/dist/shared/json-projection.js +267 -129
- package/dist/shared/native-journal.js +123 -56
- package/dist/shared/post-exit-stdio-guard.js +120 -7
- package/dist/shared/tui-action.js +29 -0
- package/dist/shared/types.js +0 -195
- package/dist/shared/unknown.d.ts +9 -0
- package/docs/code-quality.md +6 -3
- package/docs/development.md +93 -92
- package/docs/intercom-bridge.md +211 -415
- package/docs/intercom.md +362 -593
- package/docs/performance.md +185 -192
- package/docs/reference.md +282 -1458
- package/docs/retired-history-maintenance.md +252 -0
- package/package.json +33 -27
- package/scripts/archive-retired-history.mjs +464 -0
- package/scripts/build.mjs +49 -29
- 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 +409 -110
- package/scripts/package-smoke.mjs +184 -358
- package/scripts/prepare.mjs +2 -2
- package/scripts/real-pi-live.mjs +377 -0
- package/scripts/real-pi-processes.mjs +12 -39
- package/scripts/real-pi-smoke.mjs +39 -306
- package/scripts/run-tests.mjs +5 -2
- package/scripts/typescript.mjs +35 -0
- package/skills/pi-intercom/SKILL.md +54 -107
- package/skills/pi-subagents/SKILL.md +76 -72
- package/src/agent/contracts.ts +118 -0
- package/src/agent/cwd.ts +69 -0
- package/src/agent/host.ts +81 -0
- package/src/agent/index.ts +520 -0
- package/src/agent/journal-tail.ts +172 -0
- package/src/agent/launch.ts +136 -0
- package/src/agent/legacy.ts +221 -0
- package/src/agent/notifications.ts +256 -0
- package/src/agent/observation-state.ts +277 -0
- package/src/agent/observation-view.ts +267 -0
- package/src/agent/observation.ts +405 -0
- package/src/agent/observe-card.ts +304 -0
- package/src/agent/observe-chrome.ts +170 -0
- package/src/agent/observe-client.ts +318 -0
- package/src/agent/observe-layout.ts +79 -0
- package/src/agent/observe-reading.ts +97 -0
- package/src/agent/observe-screen.ts +481 -0
- package/src/agent/observe-transcript.ts +434 -0
- package/src/agent/observe.ts +473 -0
- package/src/agent/process.ts +385 -0
- package/src/agent/receipts.ts +178 -0
- package/src/agent/runner.ts +515 -0
- package/src/agent/saved.ts +220 -0
- package/src/agent/shell.ts +57 -0
- package/src/agent/storage.ts +139 -0
- package/src/agent/tool-schemas.ts +33 -0
- package/src/agent/typebox.ts +22 -0
- package/src/agent/usage.ts +133 -0
- package/src/agent/view.ts +296 -0
- package/src/agent/wake.ts +107 -0
- package/src/index.ts +10 -0
- package/src/intercom-client.ts +108 -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 +5 -116
- package/src/pi-intercom/bridge.ts +12 -35
- package/src/pi-intercom/broker/broker.ts +63 -74
- package/src/pi-intercom/broker/client-last.ts +78 -0
- package/src/pi-intercom/broker/client.ts +87 -23
- package/src/pi-intercom/broker/connection.ts +5 -17
- package/src/pi-intercom/broker/framing.ts +11 -8
- package/src/pi-intercom/broker/guard.ts +33 -0
- package/src/pi-intercom/broker/last.ts +275 -0
- package/src/pi-intercom/broker/paths.ts +65 -16
- package/src/pi-intercom/broker/pid.ts +6 -1
- package/src/pi-intercom/broker/server-connection.ts +63 -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 +60 -92
- package/src/pi-intercom/identity.ts +24 -49
- package/src/pi-intercom/inbound-delivery.ts +25 -154
- package/src/pi-intercom/inbound-journal.ts +105 -86
- package/src/pi-intercom/inbound-record.ts +23 -65
- package/src/pi-intercom/inbound.ts +24 -117
- package/src/pi-intercom/index.ts +13 -49
- package/src/pi-intercom/last-message.ts +64 -0
- package/src/pi-intercom/lifecycle.ts +126 -50
- package/src/pi-intercom/message-format.ts +1 -34
- package/src/pi-intercom/outbound.ts +23 -17
- package/src/pi-intercom/reply-tracker.ts +10 -25
- package/src/pi-intercom/reply-wait.ts +23 -129
- package/src/pi-intercom/runtime-types.ts +5 -59
- 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 +12 -109
- package/src/pi-intercom/tool-results.ts +10 -9
- package/src/pi-intercom/tool-schemas.ts +13 -108
- package/src/pi-intercom/tools.ts +58 -44
- package/src/pi-intercom/transport.ts +1 -0
- package/src/pi-intercom/types.ts +156 -6
- package/src/pi-intercom/ui/session-format.ts +3 -3
- package/src/pi-intercom/validation.ts +4 -0
- package/src/shared/bounded-json.ts +162 -0
- package/src/shared/compact-cards.ts +118 -0
- package/src/shared/journal-frames.ts +3 -19
- package/src/shared/journal-projections.ts +0 -35
- package/src/shared/json-projection.ts +267 -147
- package/src/shared/native-journal.ts +157 -75
- package/src/shared/post-exit-stdio-guard.ts +172 -8
- package/src/shared/tui-action.ts +39 -0
- package/src/shared/types.ts +0 -257
- package/tsconfig.client.json +8 -0
- package/tsconfig.json +1 -0
- 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/stream-json.d.ts +0 -10
- 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
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
existsSync,
|
|
5
|
-
mkdirSync,
|
|
6
|
-
mkdtempSync,
|
|
7
|
-
readFileSync,
|
|
8
|
-
rmSync,
|
|
9
|
-
writeFileSync,
|
|
10
|
-
} from "node:fs";
|
|
11
|
-
import { tmpdir } from "node:os";
|
|
12
|
-
import { dirname, join, resolve } from "node:path";
|
|
2
|
+
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
13
4
|
import process from "node:process";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { SmokeProcesses, filesIn, processRef } from "./real-pi-processes.mjs";
|
|
17
|
-
import { getBrokerSocketPath } from "../src/pi-intercom/broker/paths.ts";
|
|
5
|
+
import { runLiveSmoke } from "./real-pi-live.mjs";
|
|
6
|
+
import { SmokeProcesses } from "./real-pi-processes.mjs";
|
|
18
7
|
|
|
19
8
|
const DEFAULT_TIMEOUT_MS = 120_000;
|
|
20
|
-
const authAgentDir =
|
|
21
|
-
process.env.PI_REAL_SMOKE_AUTH_AGENT_DIR ??
|
|
22
|
-
(process.env.HOME ? join(process.env.HOME, ".pi", "agent") : undefined);
|
|
23
9
|
|
|
24
10
|
function usage() {
|
|
25
11
|
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
|
|
12
|
+
`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 intercom, list, and delegate prompts in a persistent RPC main\n that stays open until each launch receipt's completion notification resumes it\n --llm-full Also verify forked completion 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
13
|
);
|
|
28
14
|
}
|
|
29
15
|
|
|
@@ -77,37 +63,22 @@ function parseArgs(argv) {
|
|
|
77
63
|
return options;
|
|
78
64
|
}
|
|
79
65
|
|
|
80
|
-
function copyLiveAuth(agentDir) {
|
|
81
|
-
if (!authAgentDir || !existsSync(authAgentDir)) {
|
|
82
|
-
return [];
|
|
83
|
-
}
|
|
84
|
-
mkdirSync(agentDir, { recursive: true });
|
|
85
|
-
const copied = [];
|
|
86
|
-
for (const filename of ["auth.json", "models.json"]) {
|
|
87
|
-
const source = join(authAgentDir, filename);
|
|
88
|
-
if (!existsSync(source)) {
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
copyFileSync(source, join(agentDir, filename));
|
|
92
|
-
copied.push(filename);
|
|
93
|
-
}
|
|
94
|
-
return copied;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
66
|
function isolatedEnv(root, agentDir) {
|
|
98
67
|
const home = join(root, "home");
|
|
99
68
|
const env = { ...process.env };
|
|
100
69
|
for (const key of Object.keys(env)) {
|
|
101
|
-
if (key.startsWith("PI_SUBAGENT_")) {
|
|
70
|
+
if (key.startsWith("PI_SUBAGENT_") || key.startsWith("PI_INTERCOM_")) {
|
|
102
71
|
delete env[key];
|
|
103
72
|
}
|
|
104
73
|
}
|
|
105
74
|
return {
|
|
106
75
|
...env,
|
|
107
76
|
HOME: home,
|
|
77
|
+
USERPROFILE: home,
|
|
108
78
|
XDG_CONFIG_HOME: join(home, ".config"),
|
|
109
79
|
XDG_CACHE_HOME: join(home, ".cache"),
|
|
110
80
|
PI_CODING_AGENT_DIR: agentDir,
|
|
81
|
+
PI_INTERCOM_RUNTIME_DIR: join(root, "ic"),
|
|
111
82
|
PI_SUBAGENT_TEMP_ROOT: join(root, "pi-subagents-runtime"),
|
|
112
83
|
PI_OFFLINE: "1",
|
|
113
84
|
PATH: process.env.PATH ?? "",
|
|
@@ -119,21 +90,40 @@ function runPi(label, args, options) {
|
|
|
119
90
|
}
|
|
120
91
|
|
|
121
92
|
async function verifyBundledResources(options) {
|
|
93
|
+
const marker = join(options.root, "resources.json");
|
|
94
|
+
const observer = join(options.root, "observe-resources.mjs");
|
|
95
|
+
writeFileSync(
|
|
96
|
+
observer,
|
|
97
|
+
`import { writeFileSync } from "node:fs"; export default function(pi) { pi.on("session_start", () => { writeFileSync(${JSON.stringify(marker)}, JSON.stringify(pi.getActiveTools())); }); }`,
|
|
98
|
+
);
|
|
122
99
|
const output = await runPi(
|
|
123
100
|
"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
|
-
},
|
|
101
|
+
["--mode", "rpc", "--no-session", "--offline", "--approve", "-e", observer],
|
|
102
|
+
{ ...options, input: `${JSON.stringify({ id: "commands", type: "get_commands" })}\n` },
|
|
129
103
|
);
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
-
for (const name of ["intercom", "subagents-doctor", "skill:pi-intercom", "skill:pi-subagents"]) {
|
|
104
|
+
const commands = registeredCommands(commandResponse(output));
|
|
105
|
+
for (const name of ["skill:pi-intercom", "skill:pi-subagents"]) {
|
|
133
106
|
if (!commands.includes(name)) {
|
|
134
107
|
throw new Error(`bundled Pi resources did not register ${name}:\n${output}`);
|
|
135
108
|
}
|
|
136
109
|
}
|
|
110
|
+
const tools = JSON.parse(readFileSync(marker, "utf8"));
|
|
111
|
+
for (const name of ["delegate", "agent_runs", "intercom"]) {
|
|
112
|
+
if (!tools.includes(name)) {
|
|
113
|
+
throw new Error(`${name} must be eager on the single package entry`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (const name of [
|
|
117
|
+
"subagent",
|
|
118
|
+
"load_subagent",
|
|
119
|
+
"load_intercom",
|
|
120
|
+
"contact_supervisor",
|
|
121
|
+
"structured_output",
|
|
122
|
+
]) {
|
|
123
|
+
if (tools.includes(name)) {
|
|
124
|
+
throw new Error(`retired package tool is still exposed: ${name}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
137
127
|
}
|
|
138
128
|
|
|
139
129
|
function commandResponse(output) {
|
|
@@ -157,266 +147,9 @@ function registeredCommands(response) {
|
|
|
157
147
|
: [];
|
|
158
148
|
}
|
|
159
149
|
|
|
160
|
-
async function runLivePrompt(label, prompt, options, expectedTool) {
|
|
161
|
-
const args = [
|
|
162
|
-
"--print",
|
|
163
|
-
"--mode",
|
|
164
|
-
"json",
|
|
165
|
-
"--session-dir",
|
|
166
|
-
join(options.root, "sessions"),
|
|
167
|
-
"--approve",
|
|
168
|
-
];
|
|
169
|
-
if (process.env.PI_REAL_SMOKE_PROVIDER) {
|
|
170
|
-
args.push("--provider", process.env.PI_REAL_SMOKE_PROVIDER);
|
|
171
|
-
}
|
|
172
|
-
if (process.env.PI_REAL_SMOKE_MODEL) {
|
|
173
|
-
args.push(
|
|
174
|
-
"--model",
|
|
175
|
-
process.env.PI_REAL_SMOKE_MODEL,
|
|
176
|
-
"--models",
|
|
177
|
-
process.env.PI_REAL_SMOKE_MODEL,
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
args.push(prompt);
|
|
181
|
-
const output = await runPi(label, args, options);
|
|
182
|
-
writeFileSync(join(options.root, `${label.replace(/ /g, "-")}.jsonl`), output);
|
|
183
|
-
const events = output.split("\n").flatMap((line) => {
|
|
184
|
-
try {
|
|
185
|
-
return [JSON.parse(line)];
|
|
186
|
-
} catch {
|
|
187
|
-
return [];
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
if (
|
|
191
|
-
!events.some(
|
|
192
|
-
(event) => event.type === "tool_execution_start" && event.toolName === expectedTool,
|
|
193
|
-
)
|
|
194
|
-
) {
|
|
195
|
-
throw new Error(
|
|
196
|
-
`${label} never invoked ${expectedTool}; a matching final sentence is not execution evidence.`,
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
const errors = events.filter((event) => event.type === "tool_execution_end" && event.isError);
|
|
200
|
-
if (errors.length) {
|
|
201
|
-
throw new Error(
|
|
202
|
-
`${label} had ${errors.length} failed tool call(s); inspect its saved wire log.`,
|
|
203
|
-
);
|
|
204
|
-
}
|
|
205
|
-
if (!events.some((event) => event.type === "agent_settled")) {
|
|
206
|
-
throw new Error(`${label} did not reach agent_settled.`);
|
|
207
|
-
}
|
|
208
|
-
return events
|
|
209
|
-
.filter((event) => event.type === "message_end" && event.message?.role === "assistant")
|
|
210
|
-
.flatMap((event) =>
|
|
211
|
-
event.message.content.filter((part) => part.type === "text").map((part) => part.text),
|
|
212
|
-
)
|
|
213
|
-
.join("\n");
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
function* savedAssistantModels(file) {
|
|
217
|
-
for (const line of readFileSync(file, "utf8").split("\n")) {
|
|
218
|
-
if (!line.trim()) {
|
|
219
|
-
continue;
|
|
220
|
-
}
|
|
221
|
-
const entry = JSON.parse(line);
|
|
222
|
-
if (entry.type === "message" && entry.message?.role === "assistant") {
|
|
223
|
-
yield `${entry.message.provider}/${entry.message.model}`;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function auditSavedModels(dir, expectedModel) {
|
|
229
|
-
const models = new Set();
|
|
230
|
-
let responses = 0;
|
|
231
|
-
for (const file of filesIn(dir)) {
|
|
232
|
-
if (!file.endsWith(".jsonl")) {
|
|
233
|
-
continue;
|
|
234
|
-
}
|
|
235
|
-
for (const model of savedAssistantModels(file)) {
|
|
236
|
-
responses++;
|
|
237
|
-
models.add(model);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
if (!responses) {
|
|
241
|
-
throw new Error("No saved assistant messages found for model audit.");
|
|
242
|
-
}
|
|
243
|
-
if (expectedModel?.includes("/") && [...models].some((model) => model !== expectedModel)) {
|
|
244
|
-
throw new Error(`Unexpected model in saved parent/child sessions: ${[...models].join(", ")}`);
|
|
245
|
-
}
|
|
246
|
-
console.log(
|
|
247
|
-
`[real-pi-smoke] audited ${responses} saved parent/child responses: ${[...models].join(", ")}`,
|
|
248
|
-
);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
function requireOutput(label, output, pattern) {
|
|
252
|
-
if (!pattern.test(output)) {
|
|
253
|
-
throw new Error(`${label} did not include expected evidence ${pattern}.\nOutput:\n${output}`);
|
|
254
|
-
}
|
|
255
|
-
const compact = output.trim().split(/\r?\n/).slice(-8).join("\n");
|
|
256
|
-
console.log(`[real-pi-smoke] ${label} output evidence:\n${compact}`);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
async function waitForAsyncCompletion(runId, pattern, { env, timeoutMs, signal }) {
|
|
260
|
-
const dir = join(env.PI_SUBAGENT_TEMP_ROOT, "async-subagent-runs", runId);
|
|
261
|
-
const deadline = Date.now() + timeoutMs;
|
|
262
|
-
let lastState = "missing";
|
|
263
|
-
let lastOutput = "";
|
|
264
|
-
while (Date.now() < deadline) {
|
|
265
|
-
signal.throwIfAborted();
|
|
266
|
-
const statusPath = join(dir, "status.json");
|
|
267
|
-
const outputPath = join(dir, "output-0.log");
|
|
268
|
-
if (existsSync(outputPath)) {
|
|
269
|
-
lastOutput = readFileSync(outputPath, "utf8");
|
|
270
|
-
}
|
|
271
|
-
if (existsSync(statusPath)) {
|
|
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.
|
|
283
|
-
// oxlint-disable-next-line no-await-in-loop
|
|
284
|
-
await delay(500, undefined, { signal });
|
|
285
|
-
}
|
|
286
|
-
throw new Error(
|
|
287
|
-
`async run ${runId} did not complete after ${timeoutMs}ms (last state: ${lastState}).\nOutput:\n${lastOutput}`,
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
function asyncProcessComplete(status) {
|
|
292
|
-
return status.state === "complete" && status.pid && !isChildTreeAlive(processRef(status.pid));
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
async function runLiveSmoke(options, runOptions, agentDir) {
|
|
296
|
-
const { root } = runOptions;
|
|
297
|
-
const copiedAuthFiles = copyLiveAuth(agentDir);
|
|
298
|
-
if (copiedAuthFiles.length > 0) {
|
|
299
|
-
console.log(
|
|
300
|
-
`[real-pi-smoke] copied ${copiedAuthFiles.join(" and ")} into isolated Pi agent dir for live provider auth`,
|
|
301
|
-
);
|
|
302
|
-
}
|
|
303
|
-
const childModelInstruction = process.env.PI_REAL_SMOKE_MODEL
|
|
304
|
-
? ` Pass model override '${process.env.PI_REAL_SMOKE_MODEL}' to every subagent run.`
|
|
305
|
-
: "";
|
|
306
|
-
await runBasicLiveSmoke(runOptions, childModelInstruction);
|
|
307
|
-
if (options.llmFull) {
|
|
308
|
-
await runFullLiveSmoke(runOptions, childModelInstruction);
|
|
309
|
-
}
|
|
310
|
-
auditSavedModels(join(root, "sessions"), process.env.PI_REAL_SMOKE_MODEL);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
async function runBasicLiveSmoke(runOptions, childModelInstruction) {
|
|
314
|
-
const intercomPrompt =
|
|
315
|
-
"Call the intercom tool with action status. Reply exactly with 'real-pi-smoke intercom ok' if the tool output includes 'Connected: Yes'.";
|
|
316
|
-
const listPrompt =
|
|
317
|
-
"Use the agent_runs tool with action profiles. Reply exactly with 'real-pi-smoke list ok' if reviewer, scout, oracle, and watcher are available.";
|
|
318
|
-
const foregroundPrompt = `Use the delegate tool to run real-smoke with task 'Reply exactly: real-pi-smoke foreground ok', async false and output false.${childModelInstruction} If the tool returns an output artifact path instead of inline output, read that file. Then reply exactly 'real-pi-smoke foreground ok' only if the child result contains it.`;
|
|
319
|
-
const asyncPrompt = `Use the delegate tool to run real-smoke with task 'Reply exactly: real-pi-smoke async ok', output false.${childModelInstruction} Set async true so it launches in the background. Do not call status and do not wait for completion. Reply with 'real-pi-smoke async launched ok' and quote the exact tool result line beginning 'Async:' including the run id.`;
|
|
320
|
-
requireOutput(
|
|
321
|
-
"real Pi intercom prompt",
|
|
322
|
-
await runLivePrompt("real Pi intercom prompt", intercomPrompt, runOptions, "intercom"),
|
|
323
|
-
/real-pi-smoke intercom ok/,
|
|
324
|
-
);
|
|
325
|
-
requireOutput(
|
|
326
|
-
"real Pi subagent list prompt",
|
|
327
|
-
await runLivePrompt("real Pi subagent list prompt", listPrompt, runOptions, "agent_runs"),
|
|
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,
|
|
336
|
-
"delegate",
|
|
337
|
-
),
|
|
338
|
-
/real-pi-smoke foreground ok/,
|
|
339
|
-
);
|
|
340
|
-
const asyncOutput = await runLivePrompt(
|
|
341
|
-
"real Pi async subagent prompt",
|
|
342
|
-
asyncPrompt,
|
|
343
|
-
runOptions,
|
|
344
|
-
"delegate",
|
|
345
|
-
);
|
|
346
|
-
requireOutput(
|
|
347
|
-
"real Pi async subagent prompt",
|
|
348
|
-
asyncOutput,
|
|
349
|
-
/real-pi-smoke async (?:launched )?ok/i,
|
|
350
|
-
);
|
|
351
|
-
const asyncRunId =
|
|
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);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
async function runFullLiveSmoke(runOptions, childModelInstruction) {
|
|
362
|
-
const outputPath = join(runOptions.root, "live-output-smoke.txt");
|
|
363
|
-
const parallelPrompt = `Use the subagent tool in parallel mode with two delegate tasks and async false. Task 1 replies exactly 'real-pi-smoke parallel A ok'. Task 2 replies exactly 'real-pi-smoke parallel B ok'. Set output false and progress false for both.${childModelInstruction} Reply exactly 'real-pi-smoke parallel ok' only if both child outputs are present.`;
|
|
364
|
-
const chainPrompt = `Use the subagent tool chain mode with two delegate steps and async false.${childModelInstruction} Step 1 task: 'Reply exactly: real-pi-smoke chain step1 ok'. Step 2 task: 'Previous output is {previous}. Reply exactly: real-pi-smoke chain step2 ok'. Reply exactly 'real-pi-smoke chain ok' only if step 2 ran after step 1.`;
|
|
365
|
-
const outputPrompt = `Use the subagent tool to run delegate with task 'Write exactly real-pi-smoke output ok plus newline to the requested output path, then reply exactly wrote output smoke'. Set async false, output to ${JSON.stringify(outputPath)}, and outputMode to file-only.${childModelInstruction} Reply exactly 'real-pi-smoke output ok' only after the tool returns.`;
|
|
366
|
-
const acceptancePrompt = `Use the subagent tool to run delegate with task 'Final answer exactly: real-pi-smoke acceptance ok evidence=manual-notes'. Set async false. Include acceptance criteria requiring the final answer to contain real-pi-smoke acceptance ok and evidence manual-notes, with maxFinalizationTurns 2.${childModelInstruction} Reply exactly 'real-pi-smoke acceptance ok' only if the child completed.`;
|
|
367
|
-
requireOutput(
|
|
368
|
-
"real Pi parallel subagent prompt",
|
|
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
|
-
);
|
|
382
|
-
if (
|
|
383
|
-
!existsSync(outputPath) ||
|
|
384
|
-
!/real-pi-smoke output ok/.test(readFileSync(outputPath, "utf8"))
|
|
385
|
-
) {
|
|
386
|
-
throw new Error(`output smoke file missing expected content: ${outputPath}`);
|
|
387
|
-
}
|
|
388
|
-
requireOutput(
|
|
389
|
-
"real Pi acceptance subagent prompt",
|
|
390
|
-
await runLivePrompt(
|
|
391
|
-
"real Pi acceptance subagent prompt",
|
|
392
|
-
acceptancePrompt,
|
|
393
|
-
runOptions,
|
|
394
|
-
"subagent",
|
|
395
|
-
),
|
|
396
|
-
/real-pi-smoke acceptance ok/,
|
|
397
|
-
);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
150
|
function createProject(root) {
|
|
401
151
|
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
|
-
);
|
|
152
|
+
mkdirSync(projectRoot, { recursive: true });
|
|
420
153
|
return projectRoot;
|
|
421
154
|
}
|
|
422
155
|
|
|
@@ -431,7 +164,7 @@ async function main() {
|
|
|
431
164
|
}
|
|
432
165
|
|
|
433
166
|
const repoRoot = resolve(process.cwd());
|
|
434
|
-
const root = mkdtempSync(join(
|
|
167
|
+
const root = mkdtempSync(join("/tmp", "pi-subagents-real-pi-smoke-"));
|
|
435
168
|
const agentDir = join(root, "pi-agent");
|
|
436
169
|
const projectRoot = createProject(root);
|
|
437
170
|
const env = isolatedEnv(root, agentDir);
|
|
@@ -470,12 +203,12 @@ async function main() {
|
|
|
470
203
|
);
|
|
471
204
|
if (!options.llm) {
|
|
472
205
|
console.log(
|
|
473
|
-
"[real-pi-smoke] live model subagent prompts skipped; pass --llm to exercise
|
|
206
|
+
"[real-pi-smoke] live model subagent prompts skipped; pass --llm to exercise launch receipts and completion notifications.",
|
|
474
207
|
);
|
|
475
208
|
}
|
|
476
209
|
} finally {
|
|
477
210
|
await runOptions.processes.stop();
|
|
478
|
-
rmSync(
|
|
211
|
+
rmSync(env.PI_INTERCOM_RUNTIME_DIR, { recursive: true, force: true });
|
|
479
212
|
for (const name of ["auth.json", "models.json"]) {
|
|
480
213
|
rmSync(join(agentDir, name), { force: true });
|
|
481
214
|
}
|
package/scripts/run-tests.mjs
CHANGED
|
@@ -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,12 @@ 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(
|
|
94
|
+
const tempRoot = mkdtempSync(
|
|
95
|
+
join(process.platform === "android" ? tmpdir() : "/tmp", "pi-subagents-"),
|
|
96
|
+
);
|
|
95
97
|
const env = sanitizedEnv();
|
|
96
98
|
env.PI_SUBAGENT_TEMP_ROOT = tempRoot;
|
|
99
|
+
env.PI_INTERCOM_RUNTIME_DIR = join(tempRoot, "ic");
|
|
97
100
|
env.HOME = tempRoot;
|
|
98
101
|
delete env.PI_CODING_AGENT_DIR;
|
|
99
102
|
let result;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Android's npm compiler package is not published; use its installed native compiler.
|
|
8
|
+
* @param {string} [script]
|
|
9
|
+
* @returns {{ command: string, args: string[] }}
|
|
10
|
+
*/
|
|
11
|
+
export function compilerInvocation(script) {
|
|
12
|
+
if (script === undefined && process.platform === "android") {
|
|
13
|
+
return { command: "tsgo", args: [] };
|
|
14
|
+
}
|
|
15
|
+
const compiler = script ?? join(process.cwd(), "node_modules", "typescript", "bin", "tsc");
|
|
16
|
+
if (!existsSync(compiler)) {
|
|
17
|
+
throw new Error(`typescript is not installed at ${compiler}; run npm install first.`);
|
|
18
|
+
}
|
|
19
|
+
return { command: process.execPath, args: [compiler] };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (import.meta.main) {
|
|
23
|
+
const compiler = compilerInvocation();
|
|
24
|
+
const result = spawnSync(compiler.command, [...compiler.args, ...process.argv.slice(2)], {
|
|
25
|
+
stdio: "inherit",
|
|
26
|
+
});
|
|
27
|
+
if (result.error) {
|
|
28
|
+
console.error(
|
|
29
|
+
process.platform === "android"
|
|
30
|
+
? `Cannot run native TypeScript: install an Android build of tsgo on PATH. ${result.error.message}`
|
|
31
|
+
: result.error.message,
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
process.exitCode = result.status ?? 1;
|
|
35
|
+
}
|
|
@@ -1,113 +1,60 @@
|
|
|
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 [local messaging](../../docs/intercom.md) for broker and
|
|
60
|
+
persistence contracts.
|