@fitchmultz/pi-subagents 0.49.0 → 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 +29 -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
|
@@ -6,16 +6,17 @@ export class IntercomLifecycle {
|
|
|
6
6
|
sessionId = null;
|
|
7
7
|
model = "unknown";
|
|
8
8
|
disposed = true;
|
|
9
|
-
started = false;
|
|
10
9
|
epoch = 0;
|
|
11
10
|
running = false;
|
|
12
11
|
activity = 0;
|
|
13
12
|
tools = new Map();
|
|
14
13
|
pi;
|
|
15
14
|
config;
|
|
16
|
-
|
|
15
|
+
lineage;
|
|
16
|
+
constructor(pi, config, lineage) {
|
|
17
17
|
this.pi = pi;
|
|
18
18
|
this.config = config;
|
|
19
|
+
this.lineage = lineage;
|
|
19
20
|
}
|
|
20
21
|
get generation() {
|
|
21
22
|
return this.epoch;
|
|
@@ -23,15 +24,11 @@ export class IntercomLifecycle {
|
|
|
23
24
|
get currentSessionId() {
|
|
24
25
|
return this.sessionId;
|
|
25
26
|
}
|
|
26
|
-
get runtimeStarted() {
|
|
27
|
-
return this.started;
|
|
28
|
-
}
|
|
29
27
|
get toolCount() {
|
|
30
28
|
return this.tools.size;
|
|
31
29
|
}
|
|
32
30
|
start(ctx) {
|
|
33
31
|
this.disposed = false;
|
|
34
|
-
this.started = true;
|
|
35
32
|
this.epoch += 1;
|
|
36
33
|
this.context = ctx;
|
|
37
34
|
this.sessionId = ctx.sessionManager.getSessionId();
|
|
@@ -70,18 +67,6 @@ export class IntercomLifecycle {
|
|
|
70
67
|
return null;
|
|
71
68
|
}
|
|
72
69
|
}
|
|
73
|
-
notify(ctx, message, level, generation = this.epoch) {
|
|
74
|
-
const live = this.live(ctx, generation);
|
|
75
|
-
if (live?.hasUI !== true) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
live.ui.notify(message, level);
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// The UI may disappear while an asynchronous overlay settles during shutdown.
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
70
|
isIdle(ctx) {
|
|
86
71
|
// ponytail: Pi 1.0 has no busy signal during foreign prompt preparation.
|
|
87
72
|
if (this.running || this.tools.size > 0) {
|
|
@@ -115,7 +100,11 @@ export class IntercomLifecycle {
|
|
|
115
100
|
this.activity = Date.now();
|
|
116
101
|
}
|
|
117
102
|
identity(sessionId) {
|
|
118
|
-
return
|
|
103
|
+
return {
|
|
104
|
+
...buildPresenceIdentity(this.pi, sessionId),
|
|
105
|
+
rootSessionId: this.lineage?.rootSessionId ?? sessionId,
|
|
106
|
+
parentSessionId: this.lineage?.parentSessionId,
|
|
107
|
+
};
|
|
119
108
|
}
|
|
120
109
|
status() {
|
|
121
110
|
const tool = this.tools.values().next().value;
|
|
@@ -151,18 +140,4 @@ export class IntercomLifecycle {
|
|
|
151
140
|
...this.health(pendingAsks),
|
|
152
141
|
};
|
|
153
142
|
}
|
|
154
|
-
targetMatches(to, resolvedTo, brokerId) {
|
|
155
|
-
const targets = [
|
|
156
|
-
this.sessionId,
|
|
157
|
-
brokerId,
|
|
158
|
-
this.pi.getSessionName(),
|
|
159
|
-
this.sessionId === null ? undefined : this.identity(this.sessionId).name,
|
|
160
|
-
];
|
|
161
|
-
return ((resolvedTo !== undefined &&
|
|
162
|
-
resolvedTo !== null &&
|
|
163
|
-
brokerId !== undefined &&
|
|
164
|
-
brokerId !== null &&
|
|
165
|
-
resolvedTo === brokerId) ||
|
|
166
|
-
targets.some((target) => target?.trim().toLowerCase() === to.trim().toLowerCase()));
|
|
167
|
-
}
|
|
168
143
|
}
|
|
@@ -33,37 +33,6 @@ export function previewText(value, maxLength = 72) {
|
|
|
33
33
|
}
|
|
34
34
|
return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}…` : normalized;
|
|
35
35
|
}
|
|
36
|
-
function metadataField(text, pattern) {
|
|
37
|
-
return text.match(pattern)?.[1]?.trim();
|
|
38
|
-
}
|
|
39
|
-
function namedPreview(label, value) {
|
|
40
|
-
return value === undefined || value === "" ? undefined : `${label}=${value}`;
|
|
41
|
-
}
|
|
42
36
|
export function pendingAskPreview(message) {
|
|
43
|
-
|
|
44
|
-
const normalized = text.replace(/\s+/g, " ").trim();
|
|
45
|
-
if (!text.startsWith("Subagent needs a supervisor decision.") &&
|
|
46
|
-
!text.startsWith("Subagent requests a structured supervisor interview.")) {
|
|
47
|
-
return previewText(normalized, 180) ?? normalized;
|
|
48
|
-
}
|
|
49
|
-
const run = metadataField(text, /^Run:\s*(.+)$/m);
|
|
50
|
-
const agent = metadataField(text, /^Agent:\s*(.+)$/m);
|
|
51
|
-
const target = metadataField(text, /^Child intercom target:\s*(.+)$/m);
|
|
52
|
-
const body = text
|
|
53
|
-
.split(/\n\s*\n/)
|
|
54
|
-
.slice(1)
|
|
55
|
-
.join(" ")
|
|
56
|
-
.replace(/\s+/g, " ")
|
|
57
|
-
.trim();
|
|
58
|
-
return [
|
|
59
|
-
text.startsWith("Subagent requests")
|
|
60
|
-
? "structured supervisor interview"
|
|
61
|
-
: "supervisor decision",
|
|
62
|
-
namedPreview("run", run),
|
|
63
|
-
namedPreview("agent", agent),
|
|
64
|
-
namedPreview("target", target),
|
|
65
|
-
namedPreview("question", previewText(body, 180)),
|
|
66
|
-
]
|
|
67
|
-
.filter((part) => part !== undefined)
|
|
68
|
-
.join(" · ");
|
|
37
|
+
return previewText(message.content.text, 180) ?? message.content.text;
|
|
69
38
|
}
|
|
@@ -184,10 +184,18 @@ export class IntercomOutbound {
|
|
|
184
184
|
return this.busyAsk(request.to, result);
|
|
185
185
|
}
|
|
186
186
|
async prepareAsk(active, to, signal) {
|
|
187
|
-
const target =
|
|
187
|
+
const target = await resolveConnectedTarget(active, to);
|
|
188
188
|
if (this.isCancelled(signal)) {
|
|
189
189
|
return { error: toolError("Cancelled") };
|
|
190
190
|
}
|
|
191
|
+
if (target === null) {
|
|
192
|
+
return {
|
|
193
|
+
error: toolError(`Ask to "${to}" was not sent: connected session not found.`, failureDetails("delivery_failed", [
|
|
194
|
+
{ action: "list" },
|
|
195
|
+
{ action: "send", guidance: "Retry with an exact active recipient target." },
|
|
196
|
+
], { accepted: false, delivered: false })),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
191
199
|
if (target === active.sessionId) {
|
|
192
200
|
return { error: toolError("Cannot message the current session") };
|
|
193
201
|
}
|
|
@@ -23,9 +23,6 @@ function pendingSenderOptions(contexts, allContexts = contexts) {
|
|
|
23
23
|
.map((context) => `${context.from.name === undefined || context.from.name === "" ? shortSessionId(context.from.id) : context.from.name}: to: ${JSON.stringify(formatSessionTarget(context.from, allSenders))} or replyTo: ${JSON.stringify(context.message.id)}`)
|
|
24
24
|
.join(", ");
|
|
25
25
|
}
|
|
26
|
-
export function isDurableSupervisorQuestion(message) {
|
|
27
|
-
return message.content.text.includes(`Question ID: ${message.id}`);
|
|
28
|
-
}
|
|
29
26
|
function matchingSender(contexts, to) {
|
|
30
27
|
const tooShort = tooShortSenderTargetMessage(contexts, to);
|
|
31
28
|
if (tooShort !== null && tooShort !== "") {
|
|
@@ -104,7 +101,7 @@ export class ReplyTracker {
|
|
|
104
101
|
this.activeAgentContext = null;
|
|
105
102
|
}
|
|
106
103
|
expireSender(sessionId) {
|
|
107
|
-
const expires = (context) => context.from.id === sessionId
|
|
104
|
+
const expires = (context) => context.from.id === sessionId;
|
|
108
105
|
let expired = 0;
|
|
109
106
|
for (const [messageId, context] of this.pendingAsks) {
|
|
110
107
|
if (expires(context)) {
|
|
@@ -161,12 +158,6 @@ export class ReplyTracker {
|
|
|
161
158
|
markReplied(replyTo) {
|
|
162
159
|
this.removeContext(replyTo);
|
|
163
160
|
}
|
|
164
|
-
get hasReplyContext() {
|
|
165
|
-
return (this.pendingAsks.size > 0 ||
|
|
166
|
-
this.pendingTurnContexts.length > 0 ||
|
|
167
|
-
this.currentTurnContext !== null ||
|
|
168
|
-
this.activeAgentContext !== null);
|
|
169
|
-
}
|
|
170
161
|
listPending(now = Date.now()) {
|
|
171
162
|
this.pruneExpired(now);
|
|
172
163
|
return Array.from(this.pendingAsks.values()).sort((a, b) => a.receivedAt - b.receivedAt);
|
|
@@ -192,8 +183,7 @@ export class ReplyTracker {
|
|
|
192
183
|
}
|
|
193
184
|
pruneExpired(now) {
|
|
194
185
|
for (const [messageId, context] of this.pendingAsks) {
|
|
195
|
-
if (
|
|
196
|
-
now - context.receivedAt > this.askTimeoutMs) {
|
|
186
|
+
if (now - context.receivedAt > this.askTimeoutMs) {
|
|
197
187
|
this.removeContext(messageId);
|
|
198
188
|
}
|
|
199
189
|
}
|
|
@@ -1,103 +1,37 @@
|
|
|
1
|
-
import { RECIPIENT_TURN_FAILED_ATTACHMENT } from "./runtime-types.js";
|
|
2
1
|
import { asError } from "./validation.js";
|
|
3
2
|
import { AskDeliveryError } from "./tool-results.js";
|
|
4
|
-
|
|
5
|
-
/** Owns the single blocking wait, abort listener, timeout and durable polling. */
|
|
3
|
+
/** One correlated blocking wait; admitted before send so a fast reply cannot race it. */
|
|
6
4
|
export class ReplyWait {
|
|
7
5
|
waiter = null;
|
|
8
|
-
pi;
|
|
9
6
|
lifecycle;
|
|
10
7
|
timeoutMs;
|
|
11
|
-
constructor(
|
|
12
|
-
this.pi = pi;
|
|
8
|
+
constructor(lifecycle, timeoutMs) {
|
|
13
9
|
this.lifecycle = lifecycle;
|
|
14
10
|
this.timeoutMs = timeoutMs;
|
|
15
11
|
}
|
|
16
12
|
get waiting() {
|
|
17
13
|
return this.waiter !== null;
|
|
18
14
|
}
|
|
19
|
-
get durable() {
|
|
20
|
-
return this.waiter?.question !== undefined;
|
|
21
|
-
}
|
|
22
15
|
isWaitingFor(id) {
|
|
23
16
|
return this.waiter?.replyTo === id;
|
|
24
17
|
}
|
|
25
|
-
retarget(id, from) {
|
|
26
|
-
if (this.waiter?.replyTo === id) {
|
|
27
|
-
this.waiter = { ...this.waiter, from };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
clearRetry(id) {
|
|
31
|
-
if (this.waiter?.replyTo === id) {
|
|
32
|
-
this.waiter = { ...this.waiter, retryNotification: undefined };
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
retry(id, retryNotification) {
|
|
36
|
-
if (this.waiter?.replyTo === id) {
|
|
37
|
-
this.waiter = { ...this.waiter, retryNotification };
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
18
|
reject(error) {
|
|
41
19
|
this.waiter?.reject(error);
|
|
42
20
|
}
|
|
43
21
|
peerDisconnected(id) {
|
|
44
|
-
if (this.waiter?.from === id
|
|
22
|
+
if (this.waiter?.from === id) {
|
|
45
23
|
this.reject(new Error(`Reply peer disconnected before answering: ${id}`));
|
|
46
24
|
}
|
|
47
25
|
}
|
|
48
26
|
receive(sender, message, onMatch) {
|
|
49
|
-
const { id: from, name } = sender;
|
|
50
27
|
const waiter = this.waiter;
|
|
51
|
-
if (!waiter) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
const senderTarget = name !== undefined && name !== "" ? name : from;
|
|
55
|
-
if ((senderTarget.toLowerCase() !== waiter.from.toLowerCase() && from !== waiter.from) ||
|
|
56
|
-
message.replyTo !== waiter.replyTo) {
|
|
28
|
+
if (!waiter || sender.id !== waiter.from || message.replyTo !== waiter.replyTo) {
|
|
57
29
|
return false;
|
|
58
30
|
}
|
|
59
31
|
onMatch();
|
|
60
32
|
waiter.resolve(message);
|
|
61
33
|
return true;
|
|
62
34
|
}
|
|
63
|
-
poll(question, replyTo) {
|
|
64
|
-
try {
|
|
65
|
-
const saved = readQuestionState(question);
|
|
66
|
-
if (saved.state === "cancelled") {
|
|
67
|
-
this.lifecycle.live()?.abort();
|
|
68
|
-
this.reject(new Error("Cancelled"));
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (saved.answer) {
|
|
72
|
-
this.waiter?.resolve({
|
|
73
|
-
id: replyTo,
|
|
74
|
-
replyTo,
|
|
75
|
-
timestamp: saved.answer.answeredAt,
|
|
76
|
-
content: { text: saved.answer.message },
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.waiter?.retryNotification?.();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
this.reject(asError(error));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
saveAnswer(question, message) {
|
|
88
|
-
if (!question) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
if (message.content.attachments?.some((attachment) => attachment.name === RECIPIENT_TURN_FAILED_ATTACHMENT) === true) {
|
|
92
|
-
this.pi.appendEntry("intercom_question_notification_error", {
|
|
93
|
-
questionId: question.questionId,
|
|
94
|
-
error: message.content.text,
|
|
95
|
-
});
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
saveQuestionAnswer(question, message.content.text);
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
35
|
wait(options) {
|
|
102
36
|
if (this.waiter) {
|
|
103
37
|
throw new Error("Already waiting for a reply");
|
|
@@ -106,54 +40,29 @@ export class ReplyWait {
|
|
|
106
40
|
throw new Error("Cancelled");
|
|
107
41
|
}
|
|
108
42
|
return new Promise((resolve, reject) => {
|
|
109
|
-
const { from, replyTo, signal
|
|
110
|
-
const timeout =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}, this.timeoutMs);
|
|
115
|
-
timeout?.unref();
|
|
116
|
-
const poll = question
|
|
117
|
-
? setInterval(() => {
|
|
118
|
-
this.poll(question, replyTo);
|
|
119
|
-
}, 250)
|
|
120
|
-
: undefined;
|
|
43
|
+
const { from, replyTo, signal } = options;
|
|
44
|
+
const timeout = setTimeout(() => {
|
|
45
|
+
this.reject(new Error(`No reply from "${from}" within ${Math.max(1, Math.round(this.timeoutMs / 60000))} minute(s)`));
|
|
46
|
+
}, this.timeoutMs);
|
|
47
|
+
timeout.unref();
|
|
121
48
|
const cleanup = () => {
|
|
122
49
|
clearTimeout(timeout);
|
|
123
|
-
clearInterval(poll);
|
|
124
50
|
signal?.removeEventListener("abort", onAbort);
|
|
125
51
|
if (this.waiter?.replyTo === replyTo) {
|
|
126
52
|
this.waiter = null;
|
|
127
53
|
}
|
|
128
54
|
};
|
|
129
55
|
const onAbort = () => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
cancelSupervisorQuestion(question);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
cleanup();
|
|
137
|
-
reject(new Error("Cancelled"));
|
|
138
|
-
}
|
|
56
|
+
cleanup();
|
|
57
|
+
reject(new Error("Cancelled"));
|
|
139
58
|
};
|
|
140
59
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
141
60
|
this.waiter = {
|
|
142
61
|
from,
|
|
143
62
|
replyTo,
|
|
144
|
-
question,
|
|
145
63
|
resolve: (message) => {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
cleanup();
|
|
151
|
-
resolve(message);
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
cleanup();
|
|
155
|
-
reject(asError(error));
|
|
156
|
-
}
|
|
64
|
+
cleanup();
|
|
65
|
+
resolve(message);
|
|
157
66
|
},
|
|
158
67
|
reject: (error) => {
|
|
159
68
|
cleanup();
|
|
@@ -165,9 +74,9 @@ export class ReplyWait {
|
|
|
165
74
|
async transact(activeClient, transaction) {
|
|
166
75
|
const { to, questionId, options, signal, onSent } = transaction;
|
|
167
76
|
const reply = this.wait({ from: to, replyTo: questionId, signal });
|
|
168
|
-
//
|
|
77
|
+
// A delivery failure may reject before its reply branch is joined.
|
|
169
78
|
reply.catch(() => {
|
|
170
|
-
|
|
79
|
+
// The transaction joins this branch after settling delivery.
|
|
171
80
|
});
|
|
172
81
|
try {
|
|
173
82
|
if (signal?.aborted === true) {
|
|
@@ -193,7 +102,7 @@ export class ReplyWait {
|
|
|
193
102
|
await reply;
|
|
194
103
|
}
|
|
195
104
|
catch {
|
|
196
|
-
|
|
105
|
+
// Preserve the delivery failure rather than its cleanup rejection.
|
|
197
106
|
}
|
|
198
107
|
throw error;
|
|
199
108
|
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export const RECIPIENT_TURN_FAILED_ATTACHMENT = "pi-intercom-recipient-turn-failure";
|
|
2
2
|
export const INBOUND_CHECKPOINT_TYPE = "intercom_delivery";
|
|
3
|
-
export const TOPICS_UNAVAILABLE = "Intercom topics are unavailable while an older broker is still running. Direct messaging and active sessions are unchanged. Let its sessions close normally; after it exits, reconnect with the updated package and retry. Nothing was stopped or restarted.";
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { isDurableSupervisorQuestion } from "./reply-tracker.js";
|
|
2
1
|
import { RECIPIENT_TURN_FAILED_ATTACHMENT } from "./runtime-types.js";
|
|
3
2
|
import { getAssistantErrorMessage, inboundIdFromCustomMessage } from "./message-format.js";
|
|
4
|
-
import { restoreLazyTools } from "../shared/lazy-tools.js";
|
|
5
3
|
/** Native phase ordering is centralized here; each resource is cleaned by its owner. */
|
|
6
4
|
export class IntercomSessionEvents {
|
|
7
5
|
pi;
|
|
@@ -11,30 +9,23 @@ export class IntercomSessionEvents {
|
|
|
11
9
|
this.owners = owners;
|
|
12
10
|
}
|
|
13
11
|
async start(reason, ctx) {
|
|
14
|
-
const { lifecycle,
|
|
15
|
-
bridges.start();
|
|
12
|
+
const { lifecycle, connection, delivery } = this.owners;
|
|
16
13
|
const generation = lifecycle.start(ctx);
|
|
17
|
-
awareness?.reset();
|
|
18
14
|
connection.clearTimers();
|
|
19
|
-
topics.start(ctx);
|
|
20
|
-
if (reason !== "reload") {
|
|
21
|
-
restoreLazyTools(this.pi, ctx, "load_intercom", ["intercom"]);
|
|
22
|
-
}
|
|
23
15
|
await delivery.start(ctx, reason, generation);
|
|
24
16
|
if (lifecycle.live(ctx, generation)) {
|
|
25
17
|
connection.start(ctx, generation);
|
|
26
18
|
}
|
|
27
19
|
}
|
|
28
20
|
async shutdown() {
|
|
29
|
-
const {
|
|
30
|
-
bridges.stop();
|
|
21
|
+
const { connection, delivery, wait, lifecycle, replies, journal } = this.owners;
|
|
31
22
|
connection.clearTimers();
|
|
32
23
|
delivery.clearTimer();
|
|
33
24
|
wait.reject(new Error("Session shutting down"));
|
|
34
25
|
// Reload keeps the outgoing runner valid until native handoff completes.
|
|
35
26
|
await delivery.drain();
|
|
36
27
|
lifecycle.invalidate();
|
|
37
|
-
await
|
|
28
|
+
await connection.shutdown();
|
|
38
29
|
delivery.reset();
|
|
39
30
|
replies.reset();
|
|
40
31
|
journal.reset();
|
|
@@ -65,7 +56,7 @@ export class IntercomSessionEvents {
|
|
|
65
56
|
replyTo: context.message.id,
|
|
66
57
|
attachments: [{ type: "context", name: RECIPIENT_TURN_FAILED_ATTACHMENT, content: error }],
|
|
67
58
|
});
|
|
68
|
-
if (result.delivered
|
|
59
|
+
if (result.delivered) {
|
|
69
60
|
journal.retire(context.message.id);
|
|
70
61
|
}
|
|
71
62
|
}
|
|
@@ -74,7 +65,7 @@ export class IntercomSessionEvents {
|
|
|
74
65
|
}
|
|
75
66
|
}
|
|
76
67
|
registerSessionBoundaries() {
|
|
77
|
-
const { lifecycle, connection, journal
|
|
68
|
+
const { lifecycle, connection, journal } = this.owners;
|
|
78
69
|
this.pi.on("session_start", async (event, ctx) => {
|
|
79
70
|
await this.start(event.reason, ctx);
|
|
80
71
|
});
|
|
@@ -91,13 +82,6 @@ export class IntercomSessionEvents {
|
|
|
91
82
|
if (lifecycle.live(ctx)) {
|
|
92
83
|
journal.reconcileConsumed(ctx, true);
|
|
93
84
|
}
|
|
94
|
-
journal.reconcileTools();
|
|
95
|
-
});
|
|
96
|
-
this.pi.on("session_compact", () => {
|
|
97
|
-
journal.reconcileTools();
|
|
98
|
-
});
|
|
99
|
-
this.pi.on("before_agent_start", async (event, ctx) => {
|
|
100
|
-
await awareness?.beforeStart(event, ctx);
|
|
101
85
|
});
|
|
102
86
|
this.pi.on("model_select", (event, ctx) => {
|
|
103
87
|
if (!lifecycle.live(ctx)) {
|
|
@@ -57,6 +57,10 @@ function queueError(params) {
|
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
export function validateIntercomArguments(params) {
|
|
60
|
+
if ((params.entryId !== undefined || params.offset !== undefined || params.limit !== undefined) &&
|
|
61
|
+
params.action !== "last") {
|
|
62
|
+
return toolError("'entryId', 'offset', and 'limit' are only valid for action='last'");
|
|
63
|
+
}
|
|
60
64
|
if (params.scope !== undefined && params.action !== "list" && params.action !== "status") {
|
|
61
65
|
return toolError("'scope' is only valid for action='list' or action='status'");
|
|
62
66
|
}
|
|
@@ -1,95 +1,14 @@
|
|
|
1
|
-
import { Type } from "../shared/native-typebox.js";
|
|
2
|
-
import { activateTools } from "../shared/lazy-tools.js";
|
|
3
1
|
import { throwIfToolError } from "./tool-results.js";
|
|
4
|
-
import { intercomSchema
|
|
5
|
-
|
|
6
|
-
function nativeResult(result) {
|
|
7
|
-
const success = throwIfToolError(result);
|
|
8
|
-
return { content: [...success.content], details: success.details, isError: false };
|
|
9
|
-
}
|
|
10
|
-
function registerContact(pi, supervisor) {
|
|
11
|
-
pi.registerTool({
|
|
12
|
-
name: "contact_supervisor",
|
|
13
|
-
label: "Contact Supervisor",
|
|
14
|
-
description: "Subagent-only tool for contacting the supervisor agent that delegated this task. Use need_decision only when this child cannot safely continue without a decision, approval, or product/API/scope clarification; this steers the supervisor at its next tool boundary and keeps the child alive for the reply. Use interview_request only when multiple structured answers are all required before safe progress; this also steers and waits. Use progress_update only for a discovery or change the supervisor needs while working; it steers at the next tool boundary without waiting for a reply. Skip starts, redundant status, and routine completion; retain material findings in the final result.",
|
|
15
|
-
promptSnippet: "Subagent-only: steer the supervisor for required decisions, structured interviews, or material discoveries needed during active work. Skip routine status and completion messages.",
|
|
16
|
-
promptGuidelines: [
|
|
17
|
-
"Use contact_supervisor with reason='need_decision' when a subagent cannot safely continue without a decision, approval, or product/API/scope clarification; it steers the supervisor and waits for the reply.",
|
|
18
|
-
"Use contact_supervisor with reason='interview_request' only when the child cannot safely continue until it receives multiple structured answers in one blocking steered exchange.",
|
|
19
|
-
"Use contact_supervisor with reason='progress_update' only for a discovery or change the supervisor needs while working. It steers at the next tool boundary without waiting. Skip starts, redundant narration, and routine completion; keep material findings in the final result.",
|
|
20
|
-
"Do not use contact_supervisor for routine completion handoffs; return the final subagent result normally.",
|
|
21
|
-
],
|
|
22
|
-
parameters: contactSupervisorSchema,
|
|
23
|
-
async execute(_id, params, signal, _update, ctx) {
|
|
24
|
-
return nativeResult(await supervisor.execute(params, signal, ctx));
|
|
25
|
-
},
|
|
26
|
-
renderCall: renderContactCall,
|
|
27
|
-
renderResult: renderContactResult,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function registerLoader(pi) {
|
|
31
|
-
pi.registerTool({
|
|
32
|
-
name: "load_intercom",
|
|
33
|
-
label: "Load Intercom",
|
|
34
|
-
description: "Enable local peer coordination: list/check sessions before shared-state work, send or reply to messages, and inspect/publish topics. Does not send a message or check peers itself.",
|
|
35
|
-
parameters: Type.Object({}),
|
|
36
|
-
async execute() {
|
|
37
|
-
if (!pi.getAllTools().some((tool) => tool.name === "intercom" && tool.namespace === undefined)) {
|
|
38
|
-
throw new Error("Intercom is excluded from this session.");
|
|
39
|
-
}
|
|
40
|
-
activateTools(pi, ["intercom"]);
|
|
41
|
-
return {
|
|
42
|
-
content: [
|
|
43
|
-
{
|
|
44
|
-
type: "text",
|
|
45
|
-
text: "Intercom enabled. Use intercom({action:'list'}) to check peers, or status, pending, reply, send, ask and topics for coordination.",
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
details: {},
|
|
49
|
-
};
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function registerMessaging(pi, tools) {
|
|
2
|
+
import { intercomSchema } from "./tool-schemas.js";
|
|
3
|
+
export function registerIntercomTools(pi, tools) {
|
|
54
4
|
pi.registerTool({
|
|
55
5
|
name: "intercom",
|
|
56
|
-
defaultActive: false,
|
|
57
6
|
label: "Intercom",
|
|
58
|
-
description:
|
|
59
|
-
Use this to communicate findings, request help, or coordinate work with other sessions.
|
|
60
|
-
Non-blocking send defaults to steer for guidance, answers, corrections, or blockers that may affect active work. Use queue only when delay is intentional; use ask only when this process must remain alive waiting for the reply.
|
|
61
|
-
|
|
62
|
-
Usage:
|
|
63
|
-
intercom({ action: "list" }) → List sessions in this repository and its worktrees
|
|
64
|
-
intercom({ action: "list", scope: "all" }) → List connected sessions across every project
|
|
65
|
-
intercom({ action: "send", to: "session-name", message: "..." }) → Send live coordination (defaults to steer)
|
|
66
|
-
intercom({ action: "ask", to: "session-name", delivery: "steer", message: "..." }) → Blocking wait only when sender must stay alive
|
|
67
|
-
intercom({ action: "reply", message: "..." }) → Reply to the active/single pending ask
|
|
68
|
-
intercom({ action: "pending" }) → List unresolved inbound asks
|
|
69
|
-
intercom({ action: "status" }) → Show connection status
|
|
70
|
-
intercom({ action: "subscribe", topic: "project/work", awaitRelease: true }) → Opt into a topic
|
|
71
|
-
intercom({ action: "publish", topic: "project/work", message: "Current self-contained state" }) → Quiet latest state
|
|
72
|
-
intercom({ action: "topics" }) → Inspect topics and current resource owners`,
|
|
73
|
-
promptSnippet: "Coordinate with local Pi sessions. Non-blocking send defaults to steer for live agent guidance; queue only for intentional delay and ask only for a required blocking reply.",
|
|
74
|
-
promptGuidelines: [
|
|
75
|
-
"Intercom list/status defaults to the current Git repository and its worktrees. Use scope='all' only when intentionally discovering sessions in other projects.",
|
|
76
|
-
"Action='send' defaults to delivery='steer' for agent-to-agent guidance, answers, corrections, blockers, or other context that may affect active work.",
|
|
77
|
-
"Use delivery='queue' only when delay is intentional. For routine status, explicitly subscribe/publish topics: updates replace quiet inspectable state outside model context, not passive conversation messages. Topic blockers/decisions and awaited ownership releases interrupt; direct messages always bypass subscriptions.",
|
|
78
|
-
"Treat inbound steered messages as supplemental coordination within the active task: incorporate relevant context and continue; replace the task only when the message explicitly says so.",
|
|
79
|
-
"Use action='reply' for an active inbound ask. Otherwise respond with send plus steer; use blocking ask only when this process must stay alive and cannot safely continue without the answer.",
|
|
80
|
-
],
|
|
7
|
+
description: "Discover and message connected Pi sessions in your collaboration group; main sessions can also reach other mains, across projects. Use list for unambiguous targets. Send defaults to steer at the next tool boundary; queue defers; passive never wakes the model. Ask waits for a correlated reply; reply answers the active or single pending ask (specify replyTo when ambiguous). Pending lists asks; status shows connection and inbound queue state. Last reads a peer's original completed assistant response without waking it; page using entryId and nextOffset. Broker acceptance is not recipient persistence, consumption, or task completion.",
|
|
81
8
|
parameters: intercomSchema,
|
|
82
9
|
async execute(_id, params, signal, _update, ctx) {
|
|
83
|
-
|
|
10
|
+
const result = throwIfToolError(await tools.execute(params, signal, ctx));
|
|
11
|
+
return { content: [...result.content], details: result.details };
|
|
84
12
|
},
|
|
85
|
-
renderCall: renderIntercomCall,
|
|
86
|
-
renderResult: renderIntercomResult,
|
|
87
13
|
});
|
|
88
14
|
}
|
|
89
|
-
export function registerIntercomTools(pi, tools, supervisor) {
|
|
90
|
-
if (supervisor) {
|
|
91
|
-
registerContact(pi, supervisor);
|
|
92
|
-
}
|
|
93
|
-
registerLoader(pi);
|
|
94
|
-
registerMessaging(pi, tools);
|
|
95
|
-
}
|
|
@@ -1,64 +1,17 @@
|
|
|
1
1
|
import { StringEnum } from "@earendil-works/pi-ai";
|
|
2
|
-
import { Type } from "../
|
|
3
|
-
export const contactSupervisorSchema = Type.Object({
|
|
4
|
-
reason: StringEnum(["need_decision", "progress_update", "interview_request"], {
|
|
5
|
-
description: "Contact reason: 'need_decision' and 'interview_request' steer the supervisor and wait for a reply; 'progress_update' steers a material discovery without waiting for a reply",
|
|
6
|
-
}),
|
|
7
|
-
message: Type.Optional(Type.String({
|
|
8
|
-
description: "Decision request, optional interview note, or meaningful progress update for the supervisor",
|
|
9
|
-
})),
|
|
10
|
-
interview: Type.Optional(Type.Object({
|
|
11
|
-
title: Type.Optional(Type.String()),
|
|
12
|
-
description: Type.Optional(Type.String()),
|
|
13
|
-
questions: Type.Array(Type.Object({
|
|
14
|
-
id: Type.String(),
|
|
15
|
-
type: StringEnum(["single", "multi", "text", "image", "info"], {
|
|
16
|
-
description: "Question type: single, multi, text, image, or info",
|
|
17
|
-
}),
|
|
18
|
-
question: Type.String(),
|
|
19
|
-
options: Type.Optional(Type.Array(Type.Unknown())),
|
|
20
|
-
context: Type.Optional(Type.String()),
|
|
21
|
-
})),
|
|
22
|
-
}, { description: "Structured interview request for reason='interview_request'" })),
|
|
23
|
-
});
|
|
2
|
+
import { Type } from "../agent/typebox.js";
|
|
24
3
|
export const intercomSchema = Type.Object({
|
|
25
|
-
action: StringEnum([
|
|
26
|
-
"
|
|
27
|
-
"send",
|
|
28
|
-
"ask",
|
|
29
|
-
"reply",
|
|
30
|
-
"pending",
|
|
31
|
-
"status",
|
|
32
|
-
"subscribe",
|
|
33
|
-
"unsubscribe",
|
|
34
|
-
"publish",
|
|
35
|
-
"topics",
|
|
36
|
-
], {
|
|
37
|
-
description: "Direct messages: list/send/ask/reply/pending/status. Quiet state: subscribe/unsubscribe/publish/topics.",
|
|
4
|
+
action: StringEnum(["list", "send", "ask", "reply", "pending", "status", "last"], {
|
|
5
|
+
description: "List, send, ask, reply, pending asks, connection status, or last completed assistant response.",
|
|
38
6
|
}),
|
|
39
7
|
scope: Type.Optional(StringEnum(["project", "all"], {
|
|
40
|
-
description: "For list/status: '
|
|
8
|
+
description: "For list/status: 'all' (default) includes every reachable session; 'project' further filters this repository and its worktrees.",
|
|
41
9
|
})),
|
|
42
10
|
to: Type.Optional(Type.String({
|
|
43
11
|
description: "Target session name or ID (for 'send', 'ask', or disambiguating 'reply')",
|
|
44
12
|
})),
|
|
45
|
-
topic: Type.Optional(Type.String({
|
|
46
|
-
description: "Exact opt-in topic for subscribe/unsubscribe/publish/topics; no automatic subscriptions.",
|
|
47
|
-
})),
|
|
48
|
-
event: Type.Optional(StringEnum(["update", "blocker", "decision", "release"], {
|
|
49
|
-
description: "Publish: update is quiet current state. Blockers/decisions interrupt subscribers; release interrupts only those awaiting release.",
|
|
50
|
-
})),
|
|
51
|
-
resource: Type.Optional(Type.String({
|
|
52
|
-
description: "Publish: resource this session is using (advisory ownership, not a lock).",
|
|
53
|
-
})),
|
|
54
|
-
ownership: Type.Optional(StringEnum(["held", "released"], {
|
|
55
|
-
description: "Publish: this session's declared resource state. Disconnect never implies released.",
|
|
56
|
-
})),
|
|
57
|
-
awaitRelease: Type.Optional(Type.Boolean({
|
|
58
|
-
description: "Subscribe: interrupt when this topic explicitly releases ownership.",
|
|
59
|
-
})),
|
|
60
13
|
message: Type.Optional(Type.String({
|
|
61
|
-
description: "Message for send/ask/reply
|
|
14
|
+
description: "Message for send/ask/reply",
|
|
62
15
|
})),
|
|
63
16
|
attachments: Type.Optional(Type.Array(Type.Object({
|
|
64
17
|
type: StringEnum(["file", "snippet", "context"]),
|
|
@@ -76,6 +29,13 @@ export const intercomSchema = Type.Object({
|
|
|
76
29
|
description: "For delivery='queue': 'stack' keeps all messages; 'replace' keeps only the latest undelivered message for the same threadId.",
|
|
77
30
|
})),
|
|
78
31
|
threadId: Type.Optional(Type.String({ description: "Stable topic key for queueMode='replace'." })),
|
|
32
|
+
entryId: Type.Optional(Type.String({ description: "Last response entry ID for stable paging." })),
|
|
33
|
+
offset: Type.Optional(Type.Integer({ minimum: 0, description: "Last response character offset (UTF-16)." })),
|
|
34
|
+
limit: Type.Optional(Type.Integer({
|
|
35
|
+
minimum: 1,
|
|
36
|
+
maximum: 16384,
|
|
37
|
+
description: "Last response page size; default/max 16384 characters.",
|
|
38
|
+
})),
|
|
79
39
|
passive: Type.Optional(Type.Boolean({
|
|
80
40
|
description: "For action='send' only: legacy alias for delivery='passive'. Discouraged for agent-to-agent messages.",
|
|
81
41
|
})),
|