@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
|
@@ -1,121 +1,21 @@
|
|
|
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";
|
|
17
5
|
|
|
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 {
|
|
6
|
+
export function registerIntercomTools(
|
|
7
|
+
pi: ExtensionAPI,
|
|
8
|
+
tools: Readonly<Pick<IntercomTools, "execute">>,
|
|
9
|
+
): void {
|
|
75
10
|
pi.registerTool({
|
|
76
11
|
name: "intercom",
|
|
77
|
-
defaultActive: false,
|
|
78
12
|
label: "Intercom",
|
|
79
|
-
description:
|
|
80
|
-
Use
|
|
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
|
-
],
|
|
13
|
+
description:
|
|
14
|
+
"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.",
|
|
103
15
|
parameters: intercomSchema,
|
|
104
16
|
async execute(_id, params, signal, _update, ctx) {
|
|
105
|
-
|
|
17
|
+
const result = throwIfToolError(await tools.execute(params, signal, ctx));
|
|
18
|
+
return { content: [...result.content], details: result.details };
|
|
106
19
|
},
|
|
107
|
-
renderCall: renderIntercomCall,
|
|
108
|
-
renderResult: renderIntercomResult,
|
|
109
20
|
});
|
|
110
21
|
}
|
|
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,60 +1,14 @@
|
|
|
1
1
|
import { StringEnum } from "@earendil-works/pi-ai";
|
|
2
|
-
import { Type } from "../
|
|
3
|
-
export const
|
|
4
|
-
|
|
2
|
+
import { Type } from "../agent/typebox.ts";
|
|
3
|
+
export const intercomSchema = Type.Object({
|
|
4
|
+
action: StringEnum(["list", "send", "ask", "reply", "pending", "status", "last"] as const, {
|
|
5
5
|
description:
|
|
6
|
-
"
|
|
6
|
+
"List, send, ask, reply, pending asks, connection status, or last completed assistant response.",
|
|
7
7
|
}),
|
|
8
|
-
message: Type.Optional(
|
|
9
|
-
Type.String({
|
|
10
|
-
description:
|
|
11
|
-
"Decision request, optional interview note, or meaningful progress update for the supervisor",
|
|
12
|
-
}),
|
|
13
|
-
),
|
|
14
|
-
interview: Type.Optional(
|
|
15
|
-
Type.Object(
|
|
16
|
-
{
|
|
17
|
-
title: Type.Optional(Type.String()),
|
|
18
|
-
description: Type.Optional(Type.String()),
|
|
19
|
-
questions: Type.Array(
|
|
20
|
-
Type.Object({
|
|
21
|
-
id: Type.String(),
|
|
22
|
-
type: StringEnum(["single", "multi", "text", "image", "info"] as const, {
|
|
23
|
-
description: "Question type: single, multi, text, image, or info",
|
|
24
|
-
}),
|
|
25
|
-
question: Type.String(),
|
|
26
|
-
options: Type.Optional(Type.Array(Type.Unknown())),
|
|
27
|
-
context: Type.Optional(Type.String()),
|
|
28
|
-
}),
|
|
29
|
-
),
|
|
30
|
-
},
|
|
31
|
-
{ description: "Structured interview request for reason='interview_request'" },
|
|
32
|
-
),
|
|
33
|
-
),
|
|
34
|
-
});
|
|
35
|
-
export const intercomSchema = Type.Object({
|
|
36
|
-
action: StringEnum(
|
|
37
|
-
[
|
|
38
|
-
"list",
|
|
39
|
-
"send",
|
|
40
|
-
"ask",
|
|
41
|
-
"reply",
|
|
42
|
-
"pending",
|
|
43
|
-
"status",
|
|
44
|
-
"subscribe",
|
|
45
|
-
"unsubscribe",
|
|
46
|
-
"publish",
|
|
47
|
-
"topics",
|
|
48
|
-
] as const,
|
|
49
|
-
{
|
|
50
|
-
description:
|
|
51
|
-
"Direct messages: list/send/ask/reply/pending/status. Quiet state: subscribe/unsubscribe/publish/topics.",
|
|
52
|
-
},
|
|
53
|
-
),
|
|
54
8
|
scope: Type.Optional(
|
|
55
9
|
StringEnum(["project", "all"] as const, {
|
|
56
10
|
description:
|
|
57
|
-
"For list/status: '
|
|
11
|
+
"For list/status: 'all' (default) includes every reachable session; 'project' further filters this repository and its worktrees.",
|
|
58
12
|
}),
|
|
59
13
|
),
|
|
60
14
|
to: Type.Optional(
|
|
@@ -62,37 +16,9 @@ export const intercomSchema = Type.Object({
|
|
|
62
16
|
description: "Target session name or ID (for 'send', 'ask', or disambiguating 'reply')",
|
|
63
17
|
}),
|
|
64
18
|
),
|
|
65
|
-
topic: Type.Optional(
|
|
66
|
-
Type.String({
|
|
67
|
-
description:
|
|
68
|
-
"Exact opt-in topic for subscribe/unsubscribe/publish/topics; no automatic subscriptions.",
|
|
69
|
-
}),
|
|
70
|
-
),
|
|
71
|
-
event: Type.Optional(
|
|
72
|
-
StringEnum(["update", "blocker", "decision", "release"] as const, {
|
|
73
|
-
description:
|
|
74
|
-
"Publish: update is quiet current state. Blockers/decisions interrupt subscribers; release interrupts only those awaiting release.",
|
|
75
|
-
}),
|
|
76
|
-
),
|
|
77
|
-
resource: Type.Optional(
|
|
78
|
-
Type.String({
|
|
79
|
-
description: "Publish: resource this session is using (advisory ownership, not a lock).",
|
|
80
|
-
}),
|
|
81
|
-
),
|
|
82
|
-
ownership: Type.Optional(
|
|
83
|
-
StringEnum(["held", "released"] as const, {
|
|
84
|
-
description:
|
|
85
|
-
"Publish: this session's declared resource state. Disconnect never implies released.",
|
|
86
|
-
}),
|
|
87
|
-
),
|
|
88
|
-
awaitRelease: Type.Optional(
|
|
89
|
-
Type.Boolean({
|
|
90
|
-
description: "Subscribe: interrupt when this topic explicitly releases ownership.",
|
|
91
|
-
}),
|
|
92
|
-
),
|
|
93
19
|
message: Type.Optional(
|
|
94
20
|
Type.String({
|
|
95
|
-
description: "Message for send/ask/reply
|
|
21
|
+
description: "Message for send/ask/reply",
|
|
96
22
|
}),
|
|
97
23
|
),
|
|
98
24
|
attachments: Type.Optional(
|
|
@@ -125,6 +51,17 @@ export const intercomSchema = Type.Object({
|
|
|
125
51
|
threadId: Type.Optional(
|
|
126
52
|
Type.String({ description: "Stable topic key for queueMode='replace'." }),
|
|
127
53
|
),
|
|
54
|
+
entryId: Type.Optional(Type.String({ description: "Last response entry ID for stable paging." })),
|
|
55
|
+
offset: Type.Optional(
|
|
56
|
+
Type.Integer({ minimum: 0, description: "Last response character offset (UTF-16)." }),
|
|
57
|
+
),
|
|
58
|
+
limit: Type.Optional(
|
|
59
|
+
Type.Integer({
|
|
60
|
+
minimum: 1,
|
|
61
|
+
maximum: 16384,
|
|
62
|
+
description: "Last response page size; default/max 16384 characters.",
|
|
63
|
+
}),
|
|
64
|
+
),
|
|
128
65
|
passive: Type.Optional(
|
|
129
66
|
Type.Boolean({
|
|
130
67
|
description:
|
package/src/pi-intercom/tools.ts
CHANGED
|
@@ -1,21 +1,38 @@
|
|
|
1
1
|
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import type { IntercomTransport } from "./transport.ts";
|
|
3
|
-
import type
|
|
3
|
+
import { resolveConnectedTarget, type IntercomConnection } from "./connection.ts";
|
|
4
4
|
import type { IntercomOutbound } from "./outbound.ts";
|
|
5
|
-
import type { IntercomTopicActions } from "./topic-actions.ts";
|
|
6
|
-
import type { IntercomTopics } from "./topics.ts";
|
|
7
5
|
import type { IntercomInspection } from "./inspection.ts";
|
|
8
6
|
import type { IntercomToolParams, ToolResultLike } from "./runtime-types.ts";
|
|
9
|
-
import { validateIntercomArguments, toolError
|
|
7
|
+
import { validateIntercomArguments, toolError } from "./tool-arguments.ts";
|
|
10
8
|
import { errorMessage } from "./validation.ts";
|
|
11
|
-
type
|
|
12
|
-
|
|
9
|
+
import type { LastMessageResult } from "./types.ts";
|
|
10
|
+
|
|
11
|
+
function lastPage(result: Exclude<LastMessageResult, { readonly error: string }>): ToolResultLike {
|
|
12
|
+
const identity = `${result.session.name ?? result.session.id} (${result.session.id})`;
|
|
13
|
+
const page =
|
|
14
|
+
result.entryId === null
|
|
15
|
+
? "No completed assistant response."
|
|
16
|
+
: `Entry: ${result.entryId}\nCharacters (UTF-16): ${result.offset}–${result.offset + result.text.length} of ${result.totalLength}`;
|
|
17
|
+
const next =
|
|
18
|
+
result.nextOffset === undefined
|
|
19
|
+
? ""
|
|
20
|
+
: `\nNext page: intercom(${JSON.stringify({ action: "last", to: result.session.id, entryId: result.entryId, offset: result.nextOffset })})`;
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{ type: "text", text: result.text },
|
|
24
|
+
{
|
|
25
|
+
type: "text",
|
|
26
|
+
text: `Session: ${identity}\nStatus: ${result.session.status ?? "unknown"}\n${page}${next}`,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
details: { ...result },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
13
32
|
|
|
14
33
|
interface ToolOwners {
|
|
15
|
-
readonly connection:
|
|
34
|
+
readonly connection: Readonly<Pick<IntercomConnection, "ensure" | "syncIdentity">>;
|
|
16
35
|
readonly outbound: Readonly<Pick<IntercomOutbound, "send" | "ask" | "reply">>;
|
|
17
|
-
readonly topicActions: Readonly<Pick<IntercomTopicActions, "execute">>;
|
|
18
|
-
readonly topics: TopicOwner;
|
|
19
36
|
readonly inspection: Readonly<Pick<IntercomInspection, "list" | "status" | "pending">>;
|
|
20
37
|
}
|
|
21
38
|
export class IntercomTools {
|
|
@@ -23,25 +40,49 @@ export class IntercomTools {
|
|
|
23
40
|
constructor(owners: ToolOwners) {
|
|
24
41
|
this.owners = owners;
|
|
25
42
|
}
|
|
26
|
-
|
|
27
|
-
active: IntercomTransport,
|
|
43
|
+
async execute(
|
|
28
44
|
params: IntercomToolParams,
|
|
29
45
|
signal: AbortSignal | undefined,
|
|
30
46
|
ctx: ExtensionContext,
|
|
31
47
|
): Promise<ToolResultLike> {
|
|
32
|
-
const
|
|
48
|
+
const invalid = validateIntercomArguments(params);
|
|
49
|
+
if (invalid) {
|
|
50
|
+
return invalid;
|
|
51
|
+
}
|
|
52
|
+
let active: IntercomTransport;
|
|
53
|
+
try {
|
|
54
|
+
active = await this.owners.connection.ensure();
|
|
55
|
+
} catch (error) {
|
|
56
|
+
return toolError(`Intercom not connected: ${errorMessage(error)}`);
|
|
57
|
+
}
|
|
58
|
+
this.owners.connection.syncIdentity(ctx.sessionManager.getSessionId());
|
|
59
|
+
const scope = params.scope ?? "all";
|
|
33
60
|
switch (params.action) {
|
|
34
|
-
case "subscribe":
|
|
35
|
-
case "unsubscribe":
|
|
36
|
-
case "publish":
|
|
37
|
-
case "topics":
|
|
38
|
-
return await this.owners.topicActions.execute(active, params, ctx);
|
|
39
61
|
case "list":
|
|
40
62
|
return await this.owners.inspection.list(active, scope);
|
|
41
63
|
case "status":
|
|
42
64
|
return await this.owners.inspection.status(active, scope, ctx);
|
|
43
65
|
case "pending":
|
|
44
66
|
return this.owners.inspection.pending();
|
|
67
|
+
case "last": {
|
|
68
|
+
if (params.to === undefined || params.to === "") {
|
|
69
|
+
return toolError("Missing 'to' parameter");
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const target = (await resolveConnectedTarget(active, params.to)) ?? params.to;
|
|
73
|
+
const result = await active.last(target, {
|
|
74
|
+
entryId: params.entryId,
|
|
75
|
+
offset: params.offset,
|
|
76
|
+
limit: params.limit,
|
|
77
|
+
});
|
|
78
|
+
if ("error" in result) {
|
|
79
|
+
return toolError(result.error);
|
|
80
|
+
}
|
|
81
|
+
return lastPage(result);
|
|
82
|
+
} catch (error) {
|
|
83
|
+
return toolError(`Failed to read last response: ${errorMessage(error)}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
45
86
|
case "send":
|
|
46
87
|
return await this.owners.outbound.send(active, params, ctx);
|
|
47
88
|
case "ask":
|
|
@@ -50,31 +91,4 @@ export class IntercomTools {
|
|
|
50
91
|
return await this.owners.outbound.reply(active, params);
|
|
51
92
|
}
|
|
52
93
|
}
|
|
53
|
-
async execute(
|
|
54
|
-
params: IntercomToolParams,
|
|
55
|
-
signal: AbortSignal | undefined,
|
|
56
|
-
ctx: ExtensionContext,
|
|
57
|
-
): Promise<ToolResultLike> {
|
|
58
|
-
let active: IntercomTransport;
|
|
59
|
-
try {
|
|
60
|
-
active = await this.owners.connection.ensure("tool");
|
|
61
|
-
} catch (error) {
|
|
62
|
-
if (params.action === "topics") {
|
|
63
|
-
this.owners.topics.disconnected();
|
|
64
|
-
return toolText(
|
|
65
|
-
`Broker unavailable; last saved records follow.\n${this.owners.topics.inspect(params.topic)}`,
|
|
66
|
-
{ connection: "disconnected" },
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
return toolError(`Intercom not connected: ${errorMessage(error)}`);
|
|
70
|
-
}
|
|
71
|
-
this.owners.connection.syncIdentity(ctx.sessionManager.getSessionId());
|
|
72
|
-
if (!["subscribe", "unsubscribe", "publish", "topics"].includes(params.action)) {
|
|
73
|
-
const invalid = validateIntercomArguments(params);
|
|
74
|
-
if (invalid) {
|
|
75
|
-
return invalid;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return await this.dispatch(active, params, signal, ctx);
|
|
79
|
-
}
|
|
80
94
|
}
|
package/src/pi-intercom/types.ts
CHANGED
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
safeLabel,
|
|
9
9
|
safeText,
|
|
10
10
|
} from "./validation.ts";
|
|
11
|
-
import type { NativeControlEnvelope } from "./native-control-protocol.ts";
|
|
12
11
|
|
|
13
12
|
export interface SessionInfo {
|
|
14
13
|
readonly id: string;
|
|
@@ -17,6 +16,8 @@ export interface SessionInfo {
|
|
|
17
16
|
readonly model: string;
|
|
18
17
|
/** Opaque same-repository/worktree identity used for ambient peer awareness. */
|
|
19
18
|
readonly projectId?: string;
|
|
19
|
+
readonly rootSessionId?: string;
|
|
20
|
+
readonly parentSessionId?: string;
|
|
20
21
|
readonly status?: string;
|
|
21
22
|
readonly lastSeen?: number;
|
|
22
23
|
readonly lastIntercomActivity?: number;
|
|
@@ -107,7 +108,6 @@ export interface Message {
|
|
|
107
108
|
readonly timestamp: number;
|
|
108
109
|
readonly replyTo?: string;
|
|
109
110
|
readonly expectsReply?: boolean;
|
|
110
|
-
readonly control?: NativeControlEnvelope;
|
|
111
111
|
/** Recipients verify parent ownership before elevating human origin. */
|
|
112
112
|
readonly human?: HumanMessageOrigin;
|
|
113
113
|
readonly topic?: TopicUpdate;
|
|
@@ -252,17 +252,27 @@ function validSessionTopics(session: Readonly<Record<string, unknown>>): boolean
|
|
|
252
252
|
);
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
+
function validSessionLineage(value: Readonly<Record<string, unknown>>): boolean {
|
|
256
|
+
return (
|
|
257
|
+
optionalLabel(value.rootSessionId) &&
|
|
258
|
+
optionalLabel(value.parentSessionId) &&
|
|
259
|
+
(value.parentSessionId === undefined || value.rootSessionId === value.parentSessionId)
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
function validSessionProject(value: unknown): boolean {
|
|
264
|
+
return value === undefined || (typeof value === "string" && /^[a-f0-9]{64}$/.test(value));
|
|
265
|
+
}
|
|
266
|
+
|
|
255
267
|
export function isSessionRegistration(value: unknown): value is Omit<SessionInfo, "id"> {
|
|
256
268
|
if (!isRecord(value) || !safeLabel(value.cwd) || !safeLabel(value.model)) {
|
|
257
269
|
return false;
|
|
258
270
|
}
|
|
259
|
-
const validProject =
|
|
260
|
-
value.projectId === undefined ||
|
|
261
|
-
(typeof value.projectId === "string" && /^[a-f0-9]{64}$/.test(value.projectId));
|
|
262
271
|
return (
|
|
263
272
|
optionalLabel(value.name) &&
|
|
264
273
|
optionalLabel(value.status) &&
|
|
265
|
-
|
|
274
|
+
validSessionLineage(value) &&
|
|
275
|
+
validSessionProject(value.projectId) &&
|
|
266
276
|
validSessionHealth(value) &&
|
|
267
277
|
validSessionTopics(value)
|
|
268
278
|
);
|
|
@@ -345,12 +355,30 @@ export function normalizeMessage(value: unknown): Message | null {
|
|
|
345
355
|
return isMessage(restored) ? restored : null;
|
|
346
356
|
}
|
|
347
357
|
|
|
358
|
+
export interface LastMessageQuery {
|
|
359
|
+
readonly entryId?: string;
|
|
360
|
+
readonly offset?: number;
|
|
361
|
+
readonly limit?: number;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
export type LastMessageResult =
|
|
365
|
+
| {
|
|
366
|
+
readonly session: SessionInfo;
|
|
367
|
+
readonly entryId: string | null;
|
|
368
|
+
readonly text: string;
|
|
369
|
+
readonly offset: number;
|
|
370
|
+
readonly totalLength: number;
|
|
371
|
+
readonly nextOffset?: number;
|
|
372
|
+
}
|
|
373
|
+
| { readonly error: string };
|
|
374
|
+
|
|
348
375
|
export type BrokerMessage =
|
|
349
376
|
| {
|
|
350
377
|
readonly type: "registered";
|
|
351
378
|
readonly sessionId: string;
|
|
352
379
|
readonly topicsSupported?: true;
|
|
353
380
|
readonly topicFrames?: true;
|
|
381
|
+
readonly lastMessages?: true;
|
|
354
382
|
}
|
|
355
383
|
| {
|
|
356
384
|
readonly type: "sessions";
|
|
@@ -365,6 +393,17 @@ export type BrokerMessage =
|
|
|
365
393
|
readonly from: SessionInfo;
|
|
366
394
|
readonly message: Message | CompactTopicMessage;
|
|
367
395
|
}
|
|
396
|
+
| {
|
|
397
|
+
readonly type: "last_request";
|
|
398
|
+
readonly requestId: string;
|
|
399
|
+
readonly from: SessionInfo;
|
|
400
|
+
readonly query: LastMessageQuery;
|
|
401
|
+
}
|
|
402
|
+
| {
|
|
403
|
+
readonly type: "last_response";
|
|
404
|
+
readonly requestId: string;
|
|
405
|
+
readonly result: LastMessageResult;
|
|
406
|
+
}
|
|
368
407
|
| { readonly type: "session_left"; readonly sessionId: string }
|
|
369
408
|
| { readonly type: "delivered"; readonly messageId: string }
|
|
370
409
|
| { readonly type: "delivery_queued"; readonly messageId: string; readonly reason: string }
|
|
@@ -8,7 +8,7 @@ function shellQuote(value: string): string {
|
|
|
8
8
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
9
9
|
}
|
|
10
10
|
function localForkStartCommand(): string {
|
|
11
|
-
return `pi --name worker --extension ${shellQuote(path.join(PACKAGE_ROOT, "src", "
|
|
11
|
+
return `pi --name worker --extension ${shellQuote(path.join(PACKAGE_ROOT, "src", "index.ts"))}`;
|
|
12
12
|
}
|
|
13
13
|
function duplicateNames(sessions: readonly SessionInfo[]): ReadonlySet<string> {
|
|
14
14
|
const names = sessions
|
|
@@ -121,7 +121,7 @@ function noPeers(hidden: number): string {
|
|
|
121
121
|
export function formatSessionListSections(
|
|
122
122
|
allSessions: readonly SessionInfo[],
|
|
123
123
|
id: string,
|
|
124
|
-
scope: IntercomSessionScope = "
|
|
124
|
+
scope: IntercomSessionScope = "all",
|
|
125
125
|
): string {
|
|
126
126
|
const current = allSessions.find((session) => session.id === id);
|
|
127
127
|
if (!current) {
|
|
@@ -140,7 +140,7 @@ export function formatSessionListSections(
|
|
|
140
140
|
const otherSection = `**Other sessions:**\n${others.length === 0 ? noPeers(hidden) : others.map((session) => row(session, { ...options, self: false })).join("\n")}`;
|
|
141
141
|
const hint =
|
|
142
142
|
hidden > 0
|
|
143
|
-
? `\n\n${hidden} session${hidden === 1 ? "" : "s"} in other projects hidden. Use \`intercom({ action: "list", scope: "all" })\` to show every
|
|
143
|
+
? `\n\n${hidden} session${hidden === 1 ? "" : "s"} in other projects hidden. Use \`intercom({ action: "list", scope: "all" })\` to show every reachable session.`
|
|
144
144
|
: "";
|
|
145
145
|
return `${currentSection}\n\n${otherSection}${hint}`;
|
|
146
146
|
}
|
|
@@ -1,41 +1,6 @@
|
|
|
1
1
|
import type { Projection } from "./json-projection.ts";
|
|
2
2
|
import { isUnknownArray, recordAt, type UnknownRecord } from "./unknown.ts";
|
|
3
3
|
|
|
4
|
-
function resultField(path: readonly (string | number)[]): boolean {
|
|
5
|
-
if (path.length === 2) {
|
|
6
|
-
return path[0] === "result";
|
|
7
|
-
}
|
|
8
|
-
if (path.length === 3) {
|
|
9
|
-
return path[0] === "results" && typeof path[1] === "number";
|
|
10
|
-
}
|
|
11
|
-
return (
|
|
12
|
-
path.length === 4 &&
|
|
13
|
-
path[0] === "children" &&
|
|
14
|
-
typeof path[1] === "number" &&
|
|
15
|
-
path[2] === "result"
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
function summaryField(path: readonly (string | number)[]): boolean {
|
|
19
|
-
return (
|
|
20
|
-
(path.length === 1 && path[0] === "summary") ||
|
|
21
|
-
(path.length === 3 &&
|
|
22
|
-
path[0] === "children" &&
|
|
23
|
-
typeof path[1] === "number" &&
|
|
24
|
-
path[2] === "summary")
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
export const ownerProjection: Projection = (path) => {
|
|
28
|
-
const field = path.at(-1);
|
|
29
|
-
if (resultField(path)) {
|
|
30
|
-
if (field === "messages") {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
if (["output", "finalOutput", "initialOutput", "rawOutput"].includes(String(field))) {
|
|
34
|
-
return 8192;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return summaryField(path) ? 8192 : true;
|
|
38
|
-
};
|
|
39
4
|
const entryFields = new Set([
|
|
40
5
|
"type",
|
|
41
6
|
"id",
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { execFileSync, type ChildProcess } from "node:child_process";
|
|
2
2
|
import { readLinuxProcess } from "../pi-intercom/broker/pid.ts";
|
|
3
|
-
import type { AgentProcessExit } from "./types.ts";
|
|
4
3
|
import { hasErrorCode } from "./unknown.ts";
|
|
5
4
|
|
|
5
|
+
interface AgentProcessExit {
|
|
6
|
+
readonly pid?: number;
|
|
7
|
+
readonly code: number | null;
|
|
8
|
+
readonly signal: NodeJS.Signals | null;
|
|
9
|
+
readonly at: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
6
12
|
interface ChildWithPipedStdio {
|
|
7
13
|
readonly stdout: ChildProcess["stdout"];
|
|
8
14
|
readonly stderr: ChildProcess["stderr"];
|