@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,26 +1,14 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { ReadonlyInput } from "../shared/types/inputs.ts";
|
|
3
1
|
import type { Message } from "./types.ts";
|
|
4
2
|
import type { IntercomClient, SendResult } from "./broker/client.ts";
|
|
5
3
|
import type { IntercomTransport } from "./transport.ts";
|
|
6
4
|
import type { IntercomLifecycle } from "./lifecycle.ts";
|
|
7
|
-
import { RECIPIENT_TURN_FAILED_ATTACHMENT } from "./runtime-types.ts";
|
|
8
5
|
import { asError } from "./validation.ts";
|
|
9
|
-
import { AskDeliveryError } from "./tool-results.ts";
|
|
10
|
-
import {
|
|
11
|
-
cancelSupervisorQuestion,
|
|
12
|
-
readQuestionState,
|
|
13
|
-
saveQuestionAnswer,
|
|
14
|
-
type SupervisorQuestion,
|
|
15
|
-
} from "../runs/shared/supervisor-questions.ts";
|
|
16
|
-
|
|
17
|
-
type Lifecycle = Readonly<Pick<IntercomLifecycle, "live" | "markActivity">>;
|
|
6
|
+
import { AskDeliveryError, RecoveryError } from "./tool-results.ts";
|
|
18
7
|
|
|
8
|
+
type Lifecycle = Readonly<Pick<IntercomLifecycle, "markActivity">>;
|
|
19
9
|
interface ReplyWaiter {
|
|
20
10
|
readonly from: string;
|
|
21
11
|
readonly replyTo: string;
|
|
22
|
-
readonly question?: ReadonlyInput<SupervisorQuestion>;
|
|
23
|
-
readonly retryNotification?: () => void;
|
|
24
12
|
readonly resolve: (message: Message) => void;
|
|
25
13
|
readonly reject: (error: Readonly<Error>) => void;
|
|
26
14
|
}
|
|
@@ -28,7 +16,6 @@ export interface ReplyWaitOptions {
|
|
|
28
16
|
readonly from: string;
|
|
29
17
|
readonly replyTo: string;
|
|
30
18
|
readonly signal?: AbortSignal;
|
|
31
|
-
readonly question?: ReadonlyInput<SupervisorQuestion>;
|
|
32
19
|
}
|
|
33
20
|
export interface AskTransaction {
|
|
34
21
|
readonly to: string;
|
|
@@ -37,46 +24,26 @@ export interface AskTransaction {
|
|
|
37
24
|
readonly signal?: AbortSignal;
|
|
38
25
|
readonly onSent: (result: SendResult) => void;
|
|
39
26
|
}
|
|
40
|
-
/**
|
|
27
|
+
/** One correlated blocking wait; admitted before send so a fast reply cannot race it. */
|
|
41
28
|
export class ReplyWait {
|
|
42
29
|
private waiter: ReplyWaiter | null = null;
|
|
43
|
-
private readonly pi: ExtensionAPI;
|
|
44
30
|
private readonly lifecycle: Lifecycle;
|
|
45
31
|
private readonly timeoutMs: number;
|
|
46
|
-
constructor(
|
|
47
|
-
this.pi = pi;
|
|
32
|
+
constructor(lifecycle: Lifecycle, timeoutMs: number) {
|
|
48
33
|
this.lifecycle = lifecycle;
|
|
49
34
|
this.timeoutMs = timeoutMs;
|
|
50
35
|
}
|
|
51
36
|
get waiting(): boolean {
|
|
52
37
|
return this.waiter !== null;
|
|
53
38
|
}
|
|
54
|
-
get durable(): boolean {
|
|
55
|
-
return this.waiter?.question !== undefined;
|
|
56
|
-
}
|
|
57
39
|
isWaitingFor(id: string): boolean {
|
|
58
40
|
return this.waiter?.replyTo === id;
|
|
59
41
|
}
|
|
60
|
-
retarget(id: string, from: string): void {
|
|
61
|
-
if (this.waiter?.replyTo === id) {
|
|
62
|
-
this.waiter = { ...this.waiter, from };
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
clearRetry(id: string): void {
|
|
66
|
-
if (this.waiter?.replyTo === id) {
|
|
67
|
-
this.waiter = { ...this.waiter, retryNotification: undefined };
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
retry(id: string, retryNotification: () => void): void {
|
|
71
|
-
if (this.waiter?.replyTo === id) {
|
|
72
|
-
this.waiter = { ...this.waiter, retryNotification };
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
42
|
reject(error: Readonly<Error>): void {
|
|
76
43
|
this.waiter?.reject(error);
|
|
77
44
|
}
|
|
78
45
|
peerDisconnected(id: string): void {
|
|
79
|
-
if (this.waiter?.from === id
|
|
46
|
+
if (this.waiter?.from === id) {
|
|
80
47
|
this.reject(new Error(`Reply peer disconnected before answering: ${id}`));
|
|
81
48
|
}
|
|
82
49
|
}
|
|
@@ -85,65 +52,14 @@ export class ReplyWait {
|
|
|
85
52
|
message: Message,
|
|
86
53
|
onMatch: () => void,
|
|
87
54
|
): boolean {
|
|
88
|
-
const { id: from, name } = sender;
|
|
89
55
|
const waiter = this.waiter;
|
|
90
|
-
if (!waiter) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
const senderTarget = name !== undefined && name !== "" ? name : from;
|
|
94
|
-
if (
|
|
95
|
-
(senderTarget.toLowerCase() !== waiter.from.toLowerCase() && from !== waiter.from) ||
|
|
96
|
-
message.replyTo !== waiter.replyTo
|
|
97
|
-
) {
|
|
56
|
+
if (!waiter || sender.id !== waiter.from || message.replyTo !== waiter.replyTo) {
|
|
98
57
|
return false;
|
|
99
58
|
}
|
|
100
59
|
onMatch();
|
|
101
60
|
waiter.resolve(message);
|
|
102
61
|
return true;
|
|
103
62
|
}
|
|
104
|
-
private poll(question: ReadonlyInput<SupervisorQuestion>, replyTo: string): void {
|
|
105
|
-
try {
|
|
106
|
-
const saved = readQuestionState(question);
|
|
107
|
-
if (saved.state === "cancelled") {
|
|
108
|
-
this.lifecycle.live()?.abort();
|
|
109
|
-
this.reject(new Error("Cancelled"));
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (saved.answer) {
|
|
113
|
-
this.waiter?.resolve({
|
|
114
|
-
id: replyTo,
|
|
115
|
-
replyTo,
|
|
116
|
-
timestamp: saved.answer.answeredAt,
|
|
117
|
-
content: { text: saved.answer.message },
|
|
118
|
-
});
|
|
119
|
-
} else {
|
|
120
|
-
this.waiter?.retryNotification?.();
|
|
121
|
-
}
|
|
122
|
-
} catch (error) {
|
|
123
|
-
this.reject(asError(error));
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
private saveAnswer(
|
|
127
|
-
question: ReadonlyInput<SupervisorQuestion> | undefined,
|
|
128
|
-
message: Message,
|
|
129
|
-
): boolean {
|
|
130
|
-
if (!question) {
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
if (
|
|
134
|
-
message.content.attachments?.some(
|
|
135
|
-
(attachment) => attachment.name === RECIPIENT_TURN_FAILED_ATTACHMENT,
|
|
136
|
-
) === true
|
|
137
|
-
) {
|
|
138
|
-
this.pi.appendEntry("intercom_question_notification_error", {
|
|
139
|
-
questionId: question.questionId,
|
|
140
|
-
error: message.content.text,
|
|
141
|
-
});
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
saveQuestionAnswer(question, message.content.text);
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
63
|
wait(options: ReplyWaitOptions): Promise<Message> {
|
|
148
64
|
if (this.waiter) {
|
|
149
65
|
throw new Error("Already waiting for a reply");
|
|
@@ -152,56 +68,34 @@ export class ReplyWait {
|
|
|
152
68
|
throw new Error("Cancelled");
|
|
153
69
|
}
|
|
154
70
|
return new Promise((resolve, reject) => {
|
|
155
|
-
const { from, replyTo, signal
|
|
156
|
-
const timeout =
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
timeout?.unref();
|
|
166
|
-
const poll = question
|
|
167
|
-
? setInterval(() => {
|
|
168
|
-
this.poll(question, replyTo);
|
|
169
|
-
}, 250)
|
|
170
|
-
: undefined;
|
|
71
|
+
const { from, replyTo, signal } = options;
|
|
72
|
+
const timeout = setTimeout(() => {
|
|
73
|
+
this.reject(
|
|
74
|
+
new RecoveryError(
|
|
75
|
+
"reply_timeout",
|
|
76
|
+
`No reply from "${from}" within ${Math.max(1, Math.round(this.timeoutMs / 60000))} minute(s)`,
|
|
77
|
+
),
|
|
78
|
+
);
|
|
79
|
+
}, this.timeoutMs);
|
|
80
|
+
timeout.unref();
|
|
171
81
|
const cleanup = () => {
|
|
172
82
|
clearTimeout(timeout);
|
|
173
|
-
clearInterval(poll);
|
|
174
83
|
signal?.removeEventListener("abort", onAbort);
|
|
175
84
|
if (this.waiter?.replyTo === replyTo) {
|
|
176
85
|
this.waiter = null;
|
|
177
86
|
}
|
|
178
87
|
};
|
|
179
88
|
const onAbort = () => {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
cancelSupervisorQuestion(question);
|
|
183
|
-
}
|
|
184
|
-
} finally {
|
|
185
|
-
cleanup();
|
|
186
|
-
reject(new Error("Cancelled"));
|
|
187
|
-
}
|
|
89
|
+
cleanup();
|
|
90
|
+
reject(new Error("Cancelled"));
|
|
188
91
|
};
|
|
189
92
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
190
93
|
this.waiter = {
|
|
191
94
|
from,
|
|
192
95
|
replyTo,
|
|
193
|
-
question,
|
|
194
96
|
resolve: (message) => {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
cleanup();
|
|
200
|
-
resolve(message);
|
|
201
|
-
} catch (error) {
|
|
202
|
-
cleanup();
|
|
203
|
-
reject(asError(error));
|
|
204
|
-
}
|
|
97
|
+
cleanup();
|
|
98
|
+
resolve(message);
|
|
205
99
|
},
|
|
206
100
|
reject: (error) => {
|
|
207
101
|
cleanup();
|
|
@@ -213,9 +107,9 @@ export class ReplyWait {
|
|
|
213
107
|
async transact(activeClient: IntercomTransport, transaction: AskTransaction): Promise<Message> {
|
|
214
108
|
const { to, questionId, options, signal, onSent } = transaction;
|
|
215
109
|
const reply = this.wait({ from: to, replyTo: questionId, signal });
|
|
216
|
-
//
|
|
110
|
+
// A delivery failure may reject before its reply branch is joined.
|
|
217
111
|
reply.catch(() => {
|
|
218
|
-
|
|
112
|
+
// The transaction joins this branch after settling delivery.
|
|
219
113
|
});
|
|
220
114
|
try {
|
|
221
115
|
if (signal?.aborted === true) {
|
|
@@ -239,7 +133,7 @@ export class ReplyWait {
|
|
|
239
133
|
try {
|
|
240
134
|
await reply;
|
|
241
135
|
} catch {
|
|
242
|
-
|
|
136
|
+
// Preserve the delivery failure rather than its cleanup rejection.
|
|
243
137
|
}
|
|
244
138
|
throw error;
|
|
245
139
|
}
|
|
@@ -1,37 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
Attachment,
|
|
4
|
-
Message,
|
|
5
|
-
MessageDelivery,
|
|
6
|
-
QueueMode,
|
|
7
|
-
SessionInfo,
|
|
8
|
-
TopicUpdate,
|
|
9
|
-
} from "./types.ts";
|
|
1
|
+
import type { Attachment, Message, MessageDelivery, QueueMode, SessionInfo } from "./types.ts";
|
|
10
2
|
|
|
11
|
-
export interface ChildOrchestratorMetadata {
|
|
12
|
-
readonly orchestratorTarget: string;
|
|
13
|
-
readonly runId: string;
|
|
14
|
-
readonly agent: string;
|
|
15
|
-
readonly index: string;
|
|
16
|
-
readonly sessionName?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface SubagentCompletion {
|
|
19
|
-
readonly completionId?: string;
|
|
20
|
-
readonly runId: string;
|
|
21
|
-
readonly status: string;
|
|
22
|
-
readonly children: readonly {
|
|
23
|
-
readonly agent: string;
|
|
24
|
-
readonly index: number;
|
|
25
|
-
readonly status: string;
|
|
26
|
-
readonly intercomTarget: string;
|
|
27
|
-
}[];
|
|
28
|
-
}
|
|
29
3
|
export interface InboundMessageEntry {
|
|
30
4
|
readonly from: SessionInfo;
|
|
31
5
|
readonly message: Message;
|
|
32
6
|
readonly replyCommand?: string;
|
|
33
7
|
readonly bodyText: string;
|
|
34
|
-
readonly subagentCompletion?: SubagentCompletion & { readonly ownerSessionId: string };
|
|
35
8
|
}
|
|
36
9
|
export interface PendingInboundMessage extends InboundMessageEntry {
|
|
37
10
|
readonly flushDelivery: "auto" | "passive" | "steer";
|
|
@@ -44,32 +17,15 @@ export type InboundCheckpoint =
|
|
|
44
17
|
readonly messageId: string;
|
|
45
18
|
readonly stage: PendingInboundMessage["stage"] | "discarded" | "reply-retired";
|
|
46
19
|
};
|
|
47
|
-
export type RequestedDelivery = MessageDelivery | "auto";
|
|
48
20
|
export type InboundDelivery = "trigger" | "followUp" | "steer" | "passive";
|
|
49
|
-
export type ContactSupervisorReason = "need_decision" | "progress_update" | "interview_request";
|
|
50
21
|
export type IntercomSessionScope = "project" | "all";
|
|
51
22
|
export interface ToolResultLike {
|
|
52
23
|
readonly content: readonly { readonly type: "text"; readonly text: string }[];
|
|
53
24
|
readonly isError?: boolean;
|
|
54
25
|
readonly details?: Readonly<Record<string, unknown>>;
|
|
55
26
|
}
|
|
56
|
-
export interface ContactSupervisorToolParams {
|
|
57
|
-
readonly reason: ContactSupervisorReason;
|
|
58
|
-
readonly message?: string;
|
|
59
|
-
readonly interview?: unknown;
|
|
60
|
-
}
|
|
61
27
|
export interface IntercomToolParams {
|
|
62
|
-
readonly action:
|
|
63
|
-
| "list"
|
|
64
|
-
| "send"
|
|
65
|
-
| "ask"
|
|
66
|
-
| "reply"
|
|
67
|
-
| "pending"
|
|
68
|
-
| "status"
|
|
69
|
-
| "subscribe"
|
|
70
|
-
| "unsubscribe"
|
|
71
|
-
| "publish"
|
|
72
|
-
| "topics";
|
|
28
|
+
readonly action: "list" | "send" | "ask" | "reply" | "pending" | "status" | "last";
|
|
73
29
|
readonly scope?: IntercomSessionScope;
|
|
74
30
|
readonly to?: string;
|
|
75
31
|
readonly message?: string;
|
|
@@ -79,19 +35,9 @@ export interface IntercomToolParams {
|
|
|
79
35
|
readonly queueMode?: QueueMode;
|
|
80
36
|
readonly threadId?: string;
|
|
81
37
|
readonly passive?: boolean;
|
|
82
|
-
readonly
|
|
83
|
-
readonly
|
|
84
|
-
readonly
|
|
85
|
-
readonly ownership?: TopicUpdate["ownership"];
|
|
86
|
-
readonly awaitRelease?: boolean;
|
|
87
|
-
}
|
|
88
|
-
export type ToolRenderTheme = ExtensionContext["ui"]["theme"];
|
|
89
|
-
export interface ToolRenderContext {
|
|
90
|
-
readonly args?: unknown;
|
|
91
|
-
readonly isError?: boolean;
|
|
92
|
-
readonly expanded?: boolean;
|
|
38
|
+
readonly entryId?: string;
|
|
39
|
+
readonly offset?: number;
|
|
40
|
+
readonly limit?: number;
|
|
93
41
|
}
|
|
94
42
|
export const RECIPIENT_TURN_FAILED_ATTACHMENT = "pi-intercom-recipient-turn-failure";
|
|
95
43
|
export const INBOUND_CHECKPOINT_TYPE = "intercom_delivery";
|
|
96
|
-
export const TOPICS_UNAVAILABLE =
|
|
97
|
-
"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.";
|
|
@@ -3,15 +3,10 @@ import type { IntercomLifecycle } from "./lifecycle.ts";
|
|
|
3
3
|
import type { IntercomConnection } from "./connection.ts";
|
|
4
4
|
import type { InboundDeliveryOwner } from "./inbound-delivery.ts";
|
|
5
5
|
import type { InboundJournal } from "./inbound-journal.ts";
|
|
6
|
-
import {
|
|
6
|
+
import type { ReplyTracker } from "./reply-tracker.ts";
|
|
7
7
|
import type { ReplyWait } from "./reply-wait.ts";
|
|
8
|
-
import type { IntercomTopics } from "./topics.ts";
|
|
9
|
-
import type { SubagentEventBridges } from "./subagent-events.ts";
|
|
10
|
-
import type { IntercomSupervisor } from "./supervisor.ts";
|
|
11
|
-
import type { PeerAwareness } from "./peer-awareness.ts";
|
|
12
8
|
import { RECIPIENT_TURN_FAILED_ATTACHMENT } from "./runtime-types.ts";
|
|
13
9
|
import { getAssistantErrorMessage, inboundIdFromCustomMessage } from "./message-format.ts";
|
|
14
|
-
import { restoreLazyTools } from "../shared/lazy-tools.ts";
|
|
15
10
|
// The native lifecycle orchestrator explicitly owns these transitions, not other owner operations.
|
|
16
11
|
type Lifecycle = Readonly<
|
|
17
12
|
Pick<
|
|
@@ -38,10 +33,7 @@ type Connection = Readonly<
|
|
|
38
33
|
>
|
|
39
34
|
>;
|
|
40
35
|
type Journal = Readonly<
|
|
41
|
-
Pick<
|
|
42
|
-
InboundJournal,
|
|
43
|
-
"clearNative" | "consume" | "reconcileConsumed" | "reconcileTools" | "reset" | "retire"
|
|
44
|
-
>
|
|
36
|
+
Pick<InboundJournal, "clearNative" | "consume" | "reconcileConsumed" | "reset" | "retire">
|
|
45
37
|
>;
|
|
46
38
|
type ReplyWaitHandle = Readonly<Pick<ReplyWait, "reject">>;
|
|
47
39
|
type InboundDeliveryHandle = Readonly<
|
|
@@ -50,7 +42,6 @@ type InboundDeliveryHandle = Readonly<
|
|
|
50
42
|
"clearTimer" | "drain" | "flush" | "redeliver" | "reset" | "schedule" | "start"
|
|
51
43
|
>
|
|
52
44
|
>;
|
|
53
|
-
type TopicOwner = Readonly<Pick<IntercomTopics, "start">>;
|
|
54
45
|
type Replies = Readonly<
|
|
55
46
|
Pick<ReplyTracker, "beginTurn" | "currentTurn" | "endAgent" | "endTurn" | "reset">
|
|
56
47
|
>;
|
|
@@ -62,10 +53,6 @@ interface SessionOwners {
|
|
|
62
53
|
readonly journal: Journal;
|
|
63
54
|
readonly replies: Replies;
|
|
64
55
|
readonly wait: ReplyWaitHandle;
|
|
65
|
-
readonly topics: TopicOwner;
|
|
66
|
-
readonly bridges: Readonly<Pick<SubagentEventBridges, "start" | "stop" | "drain">>;
|
|
67
|
-
readonly supervisor: Readonly<Pick<IntercomSupervisor, "drain">> | null;
|
|
68
|
-
readonly awareness: Readonly<Pick<PeerAwareness, "reset" | "beforeStart">> | null;
|
|
69
56
|
}
|
|
70
57
|
/** Native phase ordering is centralized here; each resource is cleaned by its owner. */
|
|
71
58
|
export class IntercomSessionEvents {
|
|
@@ -76,31 +63,23 @@ export class IntercomSessionEvents {
|
|
|
76
63
|
this.owners = owners;
|
|
77
64
|
}
|
|
78
65
|
private async start(reason: string, ctx: ExtensionContext): Promise<void> {
|
|
79
|
-
const { lifecycle,
|
|
80
|
-
bridges.start();
|
|
66
|
+
const { lifecycle, connection, delivery } = this.owners;
|
|
81
67
|
const generation = lifecycle.start(ctx);
|
|
82
|
-
awareness?.reset();
|
|
83
68
|
connection.clearTimers();
|
|
84
|
-
topics.start(ctx);
|
|
85
|
-
if (reason !== "reload") {
|
|
86
|
-
restoreLazyTools(this.pi, ctx, "load_intercom", ["intercom"]);
|
|
87
|
-
}
|
|
88
69
|
await delivery.start(ctx, reason, generation);
|
|
89
70
|
if (lifecycle.live(ctx, generation)) {
|
|
90
71
|
connection.start(ctx, generation);
|
|
91
72
|
}
|
|
92
73
|
}
|
|
93
74
|
private async shutdown(): Promise<void> {
|
|
94
|
-
const {
|
|
95
|
-
this.owners;
|
|
96
|
-
bridges.stop();
|
|
75
|
+
const { connection, delivery, wait, lifecycle, replies, journal } = this.owners;
|
|
97
76
|
connection.clearTimers();
|
|
98
77
|
delivery.clearTimer();
|
|
99
78
|
wait.reject(new Error("Session shutting down"));
|
|
100
79
|
// Reload keeps the outgoing runner valid until native handoff completes.
|
|
101
80
|
await delivery.drain();
|
|
102
81
|
lifecycle.invalidate();
|
|
103
|
-
await
|
|
82
|
+
await connection.shutdown();
|
|
104
83
|
delivery.reset();
|
|
105
84
|
replies.reset();
|
|
106
85
|
journal.reset();
|
|
@@ -133,7 +112,7 @@ export class IntercomSessionEvents {
|
|
|
133
112
|
replyTo: context.message.id,
|
|
134
113
|
attachments: [{ type: "context", name: RECIPIENT_TURN_FAILED_ATTACHMENT, content: error }],
|
|
135
114
|
});
|
|
136
|
-
if (result.delivered
|
|
115
|
+
if (result.delivered) {
|
|
137
116
|
journal.retire(context.message.id);
|
|
138
117
|
}
|
|
139
118
|
} catch {
|
|
@@ -141,7 +120,7 @@ export class IntercomSessionEvents {
|
|
|
141
120
|
}
|
|
142
121
|
}
|
|
143
122
|
private registerSessionBoundaries(): void {
|
|
144
|
-
const { lifecycle, connection, journal
|
|
123
|
+
const { lifecycle, connection, journal } = this.owners;
|
|
145
124
|
this.pi.on("session_start", async (event, ctx) => {
|
|
146
125
|
await this.start(event.reason, ctx);
|
|
147
126
|
});
|
|
@@ -158,13 +137,6 @@ export class IntercomSessionEvents {
|
|
|
158
137
|
if (lifecycle.live(ctx)) {
|
|
159
138
|
journal.reconcileConsumed(ctx, true);
|
|
160
139
|
}
|
|
161
|
-
journal.reconcileTools();
|
|
162
|
-
});
|
|
163
|
-
this.pi.on("session_compact", () => {
|
|
164
|
-
journal.reconcileTools();
|
|
165
|
-
});
|
|
166
|
-
this.pi.on("before_agent_start", async (event, ctx) => {
|
|
167
|
-
await awareness?.beforeStart(event, ctx);
|
|
168
140
|
});
|
|
169
141
|
this.pi.on("model_select", (event, ctx) => {
|
|
170
142
|
if (!lifecycle.live(ctx)) {
|
|
@@ -96,6 +96,12 @@ function queueError(params: IntercomToolParams): ToolResultLike | undefined {
|
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
98
|
export function validateIntercomArguments(params: IntercomToolParams): ToolResultLike | undefined {
|
|
99
|
+
if (
|
|
100
|
+
(params.entryId !== undefined || params.offset !== undefined || params.limit !== undefined) &&
|
|
101
|
+
params.action !== "last"
|
|
102
|
+
) {
|
|
103
|
+
return toolError("'entryId', 'offset', and 'limit' are only valid for action='last'");
|
|
104
|
+
}
|
|
99
105
|
if (params.scope !== undefined && params.action !== "list" && params.action !== "status") {
|
|
100
106
|
return toolError("'scope' is only valid for action='list' or action='status'");
|
|
101
107
|
}
|
|
@@ -1,121 +1,24 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import type { IntercomTools } from "./tools.ts";
|
|
3
|
-
import type { IntercomSupervisor } from "./supervisor.ts";
|
|
4
|
-
import type { ToolResultLike } from "./runtime-types.ts";
|
|
5
|
-
import { Type } from "../shared/native-typebox.ts";
|
|
6
|
-
import { activateTools } from "../shared/lazy-tools.ts";
|
|
7
3
|
import { throwIfToolError } from "./tool-results.ts";
|
|
8
|
-
import { intercomSchema
|
|
9
|
-
import {
|
|
10
|
-
renderContactCall,
|
|
11
|
-
renderContactResult,
|
|
12
|
-
renderIntercomCall,
|
|
13
|
-
renderIntercomResult,
|
|
14
|
-
} from "./ui/tool-renderers.ts";
|
|
15
|
-
type MessagingTool = Readonly<Pick<IntercomTools, "execute">>;
|
|
16
|
-
type SupervisorTool = Readonly<Pick<IntercomSupervisor, "execute">>;
|
|
4
|
+
import { intercomSchema } from "./tool-schemas.ts";
|
|
5
|
+
import { registerCompactMessages, renderCompactResult } from "../shared/compact-cards.ts";
|
|
17
6
|
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const success = throwIfToolError(result);
|
|
24
|
-
return { content: [...success.content], details: success.details, isError: false };
|
|
25
|
-
}
|
|
26
|
-
function registerContact(pi: ExtensionAPI, supervisor: SupervisorTool): void {
|
|
27
|
-
pi.registerTool({
|
|
28
|
-
name: "contact_supervisor",
|
|
29
|
-
label: "Contact Supervisor",
|
|
30
|
-
description:
|
|
31
|
-
"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.",
|
|
32
|
-
promptSnippet:
|
|
33
|
-
"Subagent-only: steer the supervisor for required decisions, structured interviews, or material discoveries needed during active work. Skip routine status and completion messages.",
|
|
34
|
-
promptGuidelines: [
|
|
35
|
-
"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.",
|
|
36
|
-
"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.",
|
|
37
|
-
"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.",
|
|
38
|
-
"Do not use contact_supervisor for routine completion handoffs; return the final subagent result normally.",
|
|
39
|
-
],
|
|
40
|
-
parameters: contactSupervisorSchema,
|
|
41
|
-
async execute(_id, params, signal, _update, ctx) {
|
|
42
|
-
return nativeResult(await supervisor.execute(params, signal, ctx));
|
|
43
|
-
},
|
|
44
|
-
renderCall: renderContactCall,
|
|
45
|
-
renderResult: renderContactResult,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
function registerLoader(pi: ExtensionAPI): void {
|
|
49
|
-
pi.registerTool({
|
|
50
|
-
name: "load_intercom",
|
|
51
|
-
label: "Load Intercom",
|
|
52
|
-
description:
|
|
53
|
-
"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.",
|
|
54
|
-
parameters: Type.Object({}),
|
|
55
|
-
async execute() {
|
|
56
|
-
if (
|
|
57
|
-
!pi.getAllTools().some((tool) => tool.name === "intercom" && tool.namespace === undefined)
|
|
58
|
-
) {
|
|
59
|
-
throw new Error("Intercom is excluded from this session.");
|
|
60
|
-
}
|
|
61
|
-
activateTools(pi, ["intercom"]);
|
|
62
|
-
return {
|
|
63
|
-
content: [
|
|
64
|
-
{
|
|
65
|
-
type: "text",
|
|
66
|
-
text: "Intercom enabled. Use intercom({action:'list'}) to check peers, or status, pending, reply, send, ask and topics for coordination.",
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
details: {},
|
|
70
|
-
};
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
function registerMessaging(pi: ExtensionAPI, tools: MessagingTool): void {
|
|
7
|
+
export function registerIntercomTools(
|
|
8
|
+
pi: ExtensionAPI,
|
|
9
|
+
tools: Readonly<Pick<IntercomTools, "execute">>,
|
|
10
|
+
): void {
|
|
11
|
+
registerCompactMessages(pi, ["intercom_message", "subagent-human-message"]);
|
|
75
12
|
pi.registerTool({
|
|
76
13
|
name: "intercom",
|
|
77
|
-
defaultActive: false,
|
|
78
14
|
label: "Intercom",
|
|
79
|
-
description:
|
|
80
|
-
|
|
81
|
-
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.
|
|
82
|
-
|
|
83
|
-
Usage:
|
|
84
|
-
intercom({ action: "list" }) → List sessions in this repository and its worktrees
|
|
85
|
-
intercom({ action: "list", scope: "all" }) → List connected sessions across every project
|
|
86
|
-
intercom({ action: "send", to: "session-name", message: "..." }) → Send live coordination (defaults to steer)
|
|
87
|
-
intercom({ action: "ask", to: "session-name", delivery: "steer", message: "..." }) → Blocking wait only when sender must stay alive
|
|
88
|
-
intercom({ action: "reply", message: "..." }) → Reply to the active/single pending ask
|
|
89
|
-
intercom({ action: "pending" }) → List unresolved inbound asks
|
|
90
|
-
intercom({ action: "status" }) → Show connection status
|
|
91
|
-
intercom({ action: "subscribe", topic: "project/work", awaitRelease: true }) → Opt into a topic
|
|
92
|
-
intercom({ action: "publish", topic: "project/work", message: "Current self-contained state" }) → Quiet latest state
|
|
93
|
-
intercom({ action: "topics" }) → Inspect topics and current resource owners`,
|
|
94
|
-
promptSnippet:
|
|
95
|
-
"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.",
|
|
96
|
-
promptGuidelines: [
|
|
97
|
-
"Intercom list/status defaults to the current Git repository and its worktrees. Use scope='all' only when intentionally discovering sessions in other projects.",
|
|
98
|
-
"Action='send' defaults to delivery='steer' for agent-to-agent guidance, answers, corrections, blockers, or other context that may affect active work.",
|
|
99
|
-
"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.",
|
|
100
|
-
"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.",
|
|
101
|
-
"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.",
|
|
102
|
-
],
|
|
15
|
+
description:
|
|
16
|
+
"Message connected Pi sessions in your group; mains also reach other mains across projects. List shows target IDs. Ask waits for a correlated reply; reply answers the active or sole pending ask. Pending lists asks; status shows connection and inbound queue. Last pages a peer's last completed response without waking it. Broker acceptance is not recipient persistence, consumption or completion.",
|
|
103
17
|
parameters: intercomSchema,
|
|
18
|
+
renderResult: renderCompactResult,
|
|
104
19
|
async execute(_id, params, signal, _update, ctx) {
|
|
105
|
-
|
|
20
|
+
const result = throwIfToolError(await tools.execute(params, signal, ctx));
|
|
21
|
+
return { content: [...result.content], details: result.details };
|
|
106
22
|
},
|
|
107
|
-
renderCall: renderIntercomCall,
|
|
108
|
-
renderResult: renderIntercomResult,
|
|
109
23
|
});
|
|
110
24
|
}
|
|
111
|
-
export function registerIntercomTools(
|
|
112
|
-
pi: ExtensionAPI,
|
|
113
|
-
tools: MessagingTool,
|
|
114
|
-
supervisor: SupervisorTool | null,
|
|
115
|
-
): void {
|
|
116
|
-
if (supervisor) {
|
|
117
|
-
registerContact(pi, supervisor);
|
|
118
|
-
}
|
|
119
|
-
registerLoader(pi);
|
|
120
|
-
registerMessaging(pi, tools);
|
|
121
|
-
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { SendResult } from "./types.ts";
|
|
2
2
|
import type { ToolResultLike } from "./runtime-types.ts";
|
|
3
|
+
type RecoveryCode =
|
|
4
|
+
| "ambiguous_target"
|
|
5
|
+
| "reply_timeout"
|
|
6
|
+
| "no_pending_reply"
|
|
7
|
+
| "ambiguous_reply_target";
|
|
3
8
|
export interface RecoveryAction {
|
|
4
9
|
readonly action: "list" | "pending" | "send" | "status";
|
|
5
10
|
readonly guidance?: string;
|
|
@@ -11,16 +16,12 @@ export function failureDetails(
|
|
|
11
16
|
): Readonly<Record<string, unknown>> {
|
|
12
17
|
return { ...details, reasonCode, nextActions };
|
|
13
18
|
}
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
if (message.startsWith("Multiple pending asks") || message.includes("too short")) {
|
|
21
|
-
return "ambiguous_reply_target";
|
|
19
|
+
export class RecoveryError extends Error {
|
|
20
|
+
readonly code: RecoveryCode;
|
|
21
|
+
constructor(code: RecoveryCode, message: string) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.code = code;
|
|
22
24
|
}
|
|
23
|
-
return "reply_failed";
|
|
24
25
|
}
|
|
25
26
|
export function firstTextContent(result: {
|
|
26
27
|
readonly content?: readonly { readonly type: string; readonly text?: string }[];
|