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