@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
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,77 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## [0.51.0] - 2026-10-26
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Publish `@fitchmultz/pi-subagents/intercom-client`, a typed non-model client for the existing native broker. Require `spawn:false`, preserve caller-recorded guarded message IDs, and expose discovery, non-waking pinned last pages, original-ID receipts and explicit socket cleanup without loading Pi, a model or another journal. Reject overlapping sends with one pending ID instead of replacing its acknowledgement waiter.
|
|
8
|
+
|
|
9
|
+
- Read non-waking native receipts by original message ID and expose version-1 process-local provenance from the loaded journal owner. Preserve exact root and departed-sender binding, independently hash the raw sender text, and return selected publication metadata without input text or a public parser. Keep append, staging, handoff and actual placement observations separate from fsync and provider/model consumption. Ordinary active-branch `last` paging is unchanged.
|
|
10
|
+
- Negotiate conditional Intercom commands bound to one exact native main, peer, context incarnation and companion-owned application revision. Check the binding at broker routing and native admission, expose the original lifecycle snapshot through a versioned process-local event handshake, and render generic correlated-publication hints without creating ordinary asks. Startup, reload and session replacement invalidate old handles; transport reconnect preserves the context. Ordinary local names, asks and main/child topology are unchanged. This does not install an external client, export native work or strengthen broker acceptance into a recipient receipt.
|
|
11
|
+
|
|
12
|
+
### Breaking
|
|
13
|
+
|
|
14
|
+
- Make child execution asynchronous-only. `delegate` and `agent_runs` no longer accept `async`, and `agent_runs` no longer has `wait`; launches, continuations and guidance return honest receipts, and existing completion notifications resume the parent. A blocking wait held the parent's tool batch open, so admitted Intercom steering could not reach it until the child finished. Aborting a parent turn no longer stops children; use `stop`. New calls no longer attribute child usage to the parent; child results keep exactly-once native contributions, and historical parent charges remain unchanged. The opt-in `smoke:real-pi -- --llm`/`--llm-full` prompts now keep a persistent RPC main open until each launch or continuation receipt's completion notification resumes it, then close it and confirm the delegated actor exits.
|
|
15
|
+
- Remove the Intercom busy-recipient detach probe and its timer. Steers go straight to Pi's native queue for the next tool boundary.
|
|
16
|
+
- Stop child actors and verified owned native shells when their parent exits, including active work and asynchronous delegation from one-shot callers. Keep saved conversations for explicit continuation after parent resume; do not replay interrupted tools. Ordinary extension reload keeps children alive.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Keep the parent and child event loops responsive while they check whether children and parents are still alive. On macOS each check waited on a `ps` run; `/agents`, `agent_runs` lists and each child's parent check now wait on it in the background, and a list checks each saved conversation once instead of once per run. Stop and continuation still prove the process birth synchronously right before signaling.
|
|
21
|
+
- Validate large child journals with an incremental scanner that decodes selected or observed string chunks, replacing stream-json's tokenizer. The package no longer depends on stream-json or stream-chain.
|
|
22
|
+
- Let Stop and continuation release a saved actor or native-shell PID that another user's process now holds, when its native birth proves replacement. Permission-denied probes previously blocked that existing proof, stranding children after a reboot. Unverified identities, unreadable births and claims written after the current process still refuse without signaling.
|
|
23
|
+
- Keep `/agents` working after a live install refresh removes package-local development copies of Pi. Lazy-only viewer modules now resolve UI and SDK values through the selected host. Sessions already using the current viewer API recover on their next `/agents` after installing the fix. Sessions started from the published v0.50.0 package need to restart Pi.
|
|
24
|
+
- Report `reply_failed` with pending/list recovery when an Intercom reply's `to` names a different sender than its `replyTo` ask. A `to` containing "too short" was previously misreported as an ambiguous reply target; recovery codes now come from the failing owner, not message wording.
|
|
25
|
+
- Add an opt-in offline archive command for the retired SQLite history index, with private inventory, whole-set identity checks and prepared/completed retry reconciliation. Refuse unsafe entries, links, foreign ownership, active handles and cross-filesystem moves. Upgrades leave the directory untouched; archiving never deletes or reclaims file allocations. Releases v0.44.0–v0.49.1 can still reopen the data, so owner-enforced quiescence remains required. See the [maintenance guide](docs/retired-history-maintenance.md).
|
|
26
|
+
- Keep the last-good `dist/` when the build fails after compiling. The build now moves the previous tree aside and renames it back if publication fails, instead of deleting it first. Replacement is two renames, not an atomic exchange: a concurrent reader can briefly find no `dist/`, but never a partial tree. A build killed between the two renames can still leave `dist/` absent until the next successful build.
|
|
27
|
+
- Parse child launch lineage once, exactly. Absent root and parent IDs mean a main; otherwise both must be identical, nonempty and unpadded, or the package refuses to load. Padded IDs are no longer trimmed into a different Intercom identity.
|
|
28
|
+
- Keep children running across a managed fork `pi restart` or `/restart` and publish their completions once from the ready replacement. With the fork's `ctx.managedHost`, the launcher owns child liveness; an unready replacement neither adopts children nor publishes, a committed restart or startup rollback keeps them, and parent exit (including quitting an unready replacement) still stops them. Official Pi and older fork launchers keep process-lifetime ownership.
|
|
29
|
+
- Restore native Android/Termux source builds and typechecking with installed Android `tsgo`, place shared sockets under the writable Termux prefix, publish exclusive records atomically without denied hard links, and verify reused PIDs with a boot-qualified monotonic elapsed-age bound that survives controller clock changes. Preserve no-clobber claims, private complete records, existing macOS/Linux namespaces, and native continuation/stop/recovery contracts.
|
|
30
|
+
- Stop idle mains and child actors from rescanning saved runs and commands several times a second. Mains reconcile when a run, child journal or legacy result changes, and after settlement or controls; actors scan commands on change, stop or a deferred run. A one-second stat check of the same inputs recovers change notifications the OS drops. Canonical results, admissions and journal receipts still decide delivery; unwatchable directories keep the previous polling.
|
|
31
|
+
- Stop reparsing unchanged completed child results and searching historical receipts on every completion poll. Keep physical journal validation, chronological delivery and pending-accounting repair.
|
|
32
|
+
- Preserve native Markdown formatting in collapsed message cards, including legacy human relays, and show clickable expansion hints only when content is hidden.
|
|
33
|
+
- Skip provably reused child and native-shell PIDs during Stop, continuation and parent shutdown, including unrelated non-group-leaders. Keep genuine identity uncertainty visible and verified orphan cleanup intact; timezone differences alone never prove replacement.
|
|
34
|
+
- List only active (and unreadable) child runs in the above-editor widget and remove it once a complete scan finds no active work. Stopped, failed and interrupted history stays in `/agents`, direct watch and saved run records.
|
|
35
|
+
- Resolve explicit child `provider/model:thinking` overrides with Pi's native model-reference API when available. Preserve literal colon IDs and inherited thinking, reject fuzzy/fallback selection, and explain the host API requirement on older runtimes.
|
|
36
|
+
- Restore fullscreen click-to-watch on named child rows and clickable `/agents` navigation. Keep regular-mode keyboard controls and read-only observation.
|
|
37
|
+
- Collapse lengthy agent/Intercom result and notification cards by visual lines, reusing Pi's native expansion state and keybindings without truncating saved or model-visible content.
|
|
38
|
+
- Restore default steering for incoming Intercom asks in interactive and print modes; keep explicit queue/passive behavior and sender-side busy capability reporting.
|
|
39
|
+
- Preserve non-passive recovery order and suppress repeated message/reply IDs without reviving answered or superseded work.
|
|
40
|
+
- Restore circle indicators and hide completed runs from the above-editor widget and `/agents` picker. Saved run IDs and already-open read-only watches remain available; failed, stopped, interrupted, and unavailable runs stay visible.
|
|
41
|
+
- Restore steering delivery for new and legacy child completions. Publish an idle backlog before a single native wakeup, preventing separately deferred settlement turns from requeueing the same results.
|
|
42
|
+
- Log and skip a malformed legacy result file instead of dropping every other legacy completion on each scan.
|
|
43
|
+
- Reconcile new-runtime completion backlogs in completion/launch order instead of UUID directory order; preserve published receipts and recovery of genuinely dropped queues.
|
|
44
|
+
- Reuse a bounded physical-receipt index instead of repeatedly parsing unchanged parent journals. Validate changed prefixes and retain newline, replacement, truncation, corruption and owner checks.
|
|
45
|
+
- Restore the above-editor named running-agent widget, active-first status rows and expansion, while retaining read-only `/agents` watching. No live runtime, broker, bridge, model or auth changes.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- Shorten the `delegate`, `agent_runs` and `intercom` tool descriptions and use Pi's `StringEnum` for `delegate.context` and `agent_runs.action`. Their added active-declaration JSON drops from 4,363 to 2,984 bytes on official Pi 1.4.0 and the fork. Accepted and rejected arguments, actions and results are unchanged; an invalid `context` or `action` now gets Pi's single "allowed values" error instead of one line per union member.
|
|
50
|
+
- Update development tooling to oxlint 1.89.0 with tsgolint 7.0.2005, oxfmt 0.74.0, TypeBox 1.4.3, and Node 24.19.2 and Sinon 22.0.2 typings, with a regenerated lockfile. Runtime dependencies, optional host-provided Pi and TypeBox peers, and the Node 24.21 floor are unchanged.
|
|
51
|
+
|
|
52
|
+
## [0.50.0] - 2026-10-21
|
|
53
|
+
|
|
54
|
+
### Breaking
|
|
55
|
+
|
|
56
|
+
- Replace the multi-profile workflow engine with one implicit native agent type and three tools: `delegate`, `agent_runs`, and `intercom`. The invoking agent supplies the entire assignment; user agent Markdown and profile/model catalogs no longer configure delegation. Remove `load_subagent`, `subagent`, `load_intercom`, `contact_supervisor`, conditional `structured_output`, chains/fanout DSL, profile administration, Claude Code backend, and durable supervisor-question revival.
|
|
57
|
+
- Use one same-OS-user broker namespace, independent of project and agent directory. Main agents communicate across groups; children communicate only with their main and siblings and cannot spawn. During cutover, drain work and reload every participating Pi session onto the same approved version before resuming bridge traffic; old namespaces are not transparently joined.
|
|
58
|
+
- Retire remote launch/resume/control, saved-session/transcript/catalog/group/broadcast and synchronous ask/reply routes. Grok bots retain authenticated peer discovery and durable messaging, not remote agent orchestration or observation. Replies use correlated `send`; ACK transfers complete reply duties to the consumer mailbox. Upgrade the helper and Box client/worker as a reviewed pair, including offline receipt reconciliation and saved prompt/routine migration. Preserve journals, mail, quota and reservation history for rollback.
|
|
59
|
+
- Ignore the deprecated client `launch` configuration key with a metadata warning; it grants no capability. Other unknown configuration fields still fail closed and report the offending field safely. Existing credentials and settings are not automatically rewritten.
|
|
60
|
+
|
|
61
|
+
### Added
|
|
62
|
+
|
|
63
|
+
- Read-only TUI agent status and `/agents` list/watch, without a model turn or human dispatch controls. Watches show native published text, tool calls and results, not unpublished provider token deltas.
|
|
64
|
+
- Stable paged `intercom last` reads without waking the recipient, metadata-only run inventory, and explicit per-run guidance admission, receipt-publication and process-exit facts.
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
|
|
68
|
+
- Preserve orchestration tool results in forked child context instead of filtering the coordinating agent's evidence.
|
|
69
|
+
- Keep Stop commands scoped to their target actor generation; an unadmitted predecessor Stop cannot mark a successor stopped.
|
|
70
|
+
- Disclose stale guidance to model-visible inspection callers; never hide rejected follow-ups only in extension details.
|
|
71
|
+
- Require a concrete resolved recipient for asks before sending; retain exact reply-sender identity checks across peer registration races.
|
|
72
|
+
- Include length-ended completed responses in `last`; ignore unpublished launch directories during listing/reconciliation while retaining their native session evidence. Preserve published uncertain launch claims, visible corruption errors and conservative cold-Stop process identity checks.
|
|
73
|
+
|
|
74
|
+
Package publication, local installation and paired bridge cutover are separate operations.
|
|
4
75
|
|
|
5
76
|
## [0.49.1] - 2026-10-15
|
|
6
77
|
|
package/README.md
CHANGED
|
@@ -1,109 +1,134 @@
|
|
|
1
1
|
# pi-subagents
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
## Install and start
|
|
8
|
-
|
|
9
|
-
Requires **Pi 1.0.0+** and **Node 24.21.0+**. Use macOS or Linux. Windows is not supported.
|
|
3
|
+
One Pi extension for delegation and local agent communication. Three tools, one
|
|
4
|
+
agent type, no profile bodies.
|
|
10
5
|
|
|
11
6
|
```bash
|
|
12
7
|
pi install npm:@fitchmultz/pi-subagents
|
|
13
|
-
pi
|
|
14
8
|
```
|
|
15
9
|
|
|
16
|
-
|
|
10
|
+
A main session supplies the child's complete assignment:
|
|
17
11
|
|
|
18
|
-
```
|
|
19
|
-
|
|
12
|
+
```js
|
|
13
|
+
delegate({
|
|
14
|
+
prompt:
|
|
15
|
+
"Inspect the authentication changes. Return concrete defects with file and line evidence. Do not edit files.",
|
|
16
|
+
name: "auth-review",
|
|
17
|
+
});
|
|
20
18
|
```
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
|
|
20
|
+
Delegation is always asynchronous: tools return a receipt and the completion
|
|
21
|
+
arrives later as a notification. Do other work or end the turn; do not poll.
|
|
22
|
+
`context: "fresh"` is the default; `context: "fork"` preserves the native
|
|
23
|
+
conversation, including prior tool results. There is no hidden role prompt,
|
|
24
|
+
report-writing suffix, profile selection, or model fallback catalog.
|
|
25
|
+
|
|
26
|
+
```js
|
|
27
|
+
agent_runs({ action: "list" });
|
|
28
|
+
agent_runs({ action: "inspect", id: "<run-id>" });
|
|
29
|
+
agent_runs({
|
|
30
|
+
action: "continue",
|
|
31
|
+
id: "<run-id>",
|
|
32
|
+
prompt: "Now inspect the refresh-token path. Do not edit.",
|
|
33
|
+
});
|
|
34
|
+
agent_runs({ action: "stop", id: "<run-id>" });
|
|
30
35
|
```
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
| Task | Command |
|
|
35
|
-
| -------------------- | --------------------------------------------------------------- |
|
|
36
|
-
| Review a diff | `/run reviewer "Review this diff"` |
|
|
37
|
-
| Run parallel tasks | `/parallel scout "Inspect frontend" -> scout "Inspect backend"` |
|
|
38
|
-
| Run a sequence | `/chain scout "Map auth" -> planner "Plan a refactor"` |
|
|
39
|
-
| Run a saved workflow | `/run-chain scout-planner -- refactor authentication` |
|
|
40
|
-
|
|
41
|
-
Add `--fg` to wait for the result. The [`forceTopLevelAsync` setting](docs/reference.md#forcetoplevelasync) disables waits when enabled.
|
|
42
|
-
|
|
43
|
-
The saved workflow example requires a [chain file](docs/reference.md#chain-files) named `scout-planner`. See the [command reference](docs/reference.md#direct-commands) for all options.
|
|
44
|
-
|
|
45
|
-
## Choose a role and model
|
|
46
|
-
|
|
47
|
-
| Task | Built-in agents |
|
|
48
|
-
| ---------------------------- | --------------------------------------------------------------------------------------- |
|
|
49
|
-
| Read code or gather evidence | `scout`, `context-builder`, `researcher` |
|
|
50
|
-
| Plan or check a decision | `planner`, `oracle` |
|
|
51
|
-
| Implement or repair a change | `worker`, `debugger`, `fixer`, `delegate` |
|
|
52
|
-
| Review a change | `reviewer`, `reviewer-gpt`, `reviewer-claude`, `reviewer-security`, `reviewer-ponytail` |
|
|
53
|
-
| Design, write or monitor | `ui-designer`, `writer`, `watcher` |
|
|
54
|
-
|
|
55
|
-
Ask Pi to show the effective profiles. Select an available model if a profile default is unavailable.
|
|
56
|
-
|
|
57
|
-
[Model settings](docs/reference.md#changing-a-builtin-agents-model) let you change a role without a copy of its agent file. Custom agents use `~/.pi/agent/agents/` or your project's `.pi/agents/`.
|
|
58
|
-
|
|
59
|
-
## Read results and continue work
|
|
60
|
-
|
|
61
|
-
The **Agents** area shows active tasks and tasks that need attention. Open `/agents` to browse active and finished conversations.
|
|
62
|
-
|
|
63
|
-
The shortcut is **Option+Shift+M** on macOS and **Alt+Shift+M** elsewhere.
|
|
64
|
-
|
|
65
|
-
- Open a conversation to read the child's report or send a message.
|
|
66
|
-
- Press F2 to inspect details or request cancellation with Stop.
|
|
67
|
-
- Select Continue to start follow-up work from a saved child session.
|
|
68
|
-
- Press Esc to return to the parent session.
|
|
37
|
+
## Talk to agents
|
|
69
38
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
## Limits and warnings
|
|
75
|
-
|
|
76
|
-
Each child uses your provider account and can spend tokens. See [usage accounting](docs/reference.md#usage-accounting) for details.
|
|
77
|
-
|
|
78
|
-
Children normally inherit Pi's tools, extensions, project instructions and skills. Restrict [tools](docs/reference.md#tool-and-extension-selection) and [project trust](docs/reference.md#projecttrust) when a child must have limited access.
|
|
79
|
-
|
|
80
|
-
Intercom is included. It lets Pi sessions exchange messages and lets a child ask its parent for a decision.
|
|
81
|
-
|
|
82
|
-
Read the [Intercom guide](docs/intercom.md) for setup and host limits. The [secure bridge](docs/intercom-bridge.md) adds unattended remote messaging, durable inboxes, groups, live/saved session discovery, spawn/resume and native controls for an authenticated remote agent.
|
|
83
|
-
|
|
84
|
-
Indexed history requires SQLite 3.53.4 through Node's built-in `node:sqlite` binding. Other SQLite versions fail. See the [storage requirements](docs/performance.md#storage-budgets-and-recovery) and [host startup costs](docs/performance.md#necessary-costs-and-limits).
|
|
85
|
-
|
|
86
|
-
## Update and troubleshoot
|
|
87
|
-
|
|
88
|
-
An update can leave active sessions on old code. Close all Pi sessions that use this installation before an update.
|
|
89
|
-
|
|
90
|
-
Run this command from a separate terminal:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
pi update --extension npm:@fitchmultz/pi-subagents
|
|
39
|
+
```js
|
|
40
|
+
intercom({ action: "list" });
|
|
41
|
+
intercom({ action: "send", to: "auth-review", message: "Focus on token rotation." });
|
|
42
|
+
intercom({ action: "last", to: "auth-review" });
|
|
94
43
|
```
|
|
95
44
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
45
|
+
`send` steers by default. `last` reads the peer's last completed assistant response
|
|
46
|
+
without waking it; large responses are paged, not silently truncated. Discovery
|
|
47
|
+
works across project directories and Pi agent directories under the same OS user.
|
|
48
|
+
|
|
49
|
+
A main and its children form one group:
|
|
50
|
+
|
|
51
|
+
- Every pair within that group can discover and communicate with each other.
|
|
52
|
+
- Main sessions can discover, message, and read other mains.
|
|
53
|
+
- Children cannot discover or address another group's agents—even by exact ID.
|
|
54
|
+
- Only mains can delegate. There is one child level, not recursive spawning.
|
|
55
|
+
|
|
56
|
+
These are coordination rules, not an OS sandbox against same-user code. A peer
|
|
57
|
+
list contains connected, eligible sessions, not every Pi process on the machine.
|
|
58
|
+
|
|
59
|
+
Non-model Node.js companions can import
|
|
60
|
+
`@fitchmultz/pi-subagents/intercom-client` for discovery, exact guarded sends,
|
|
61
|
+
pinned last-response pages and original-message receipts. The
|
|
62
|
+
[supported client API](docs/intercom.md#supported-non-model-client) connects only
|
|
63
|
+
to an existing broker; it loads no Pi SDK, model, TUI or conversation journal.
|
|
64
|
+
|
|
65
|
+
## Bundled skills
|
|
66
|
+
|
|
67
|
+
The package ships two skills that match tool availability.
|
|
68
|
+
[`pi-subagents`](skills/pi-subagents/SKILL.md) covers `delegate` and `agent_runs`,
|
|
69
|
+
which only main sessions receive. [`pi-intercom`](skills/pi-intercom/SKILL.md)
|
|
70
|
+
covers `intercom`, which every session has, including children and mains that
|
|
71
|
+
never delegate. Load either with `/skill:pi-subagents` or `/skill:pi-intercom`.
|
|
72
|
+
|
|
73
|
+
## Watch agents without prompting them
|
|
74
|
+
|
|
75
|
+
In interactive Pi, an above-editor widget names individual children with circle
|
|
76
|
+
indicators. The widget lists active work (and unreadable runs) only and disappears
|
|
77
|
+
once a full scan finds none. The `/agents` picker hides completed runs; failed,
|
|
78
|
+
stopped, interrupted, and unavailable runs remain visible there.
|
|
79
|
+
Click a named row in fullscreen mode to watch it; `/agents` remains the keyboard
|
|
80
|
+
path. Long result/message cards are collapsed and use Pi's native expansion
|
|
81
|
+
(Ctrl+O by default). Ctrl+O also expands model/cwd details. Use `/agents <run-id>` to watch
|
|
82
|
+
any saved run, including a completed child's native published text, tool calls and results.
|
|
83
|
+
This is read-only: it neither spends a model turn nor dispatches, steers or stops
|
|
84
|
+
work. Unpublished provider token deltas are not a journal stream. Agents still
|
|
85
|
+
own delegation and communication; human observation is not a second workflow UI.
|
|
86
|
+
|
|
87
|
+
## What stays explicit
|
|
88
|
+
|
|
89
|
+
Completions steer an active parent at the next tool boundary. An idle completion
|
|
90
|
+
backlog is published in order and starts one parent turn, not one turn per result.
|
|
91
|
+
|
|
92
|
+
Launch acceptance is not completion. Broker acceptance is not recipient journal
|
|
93
|
+
persistence or a reply. A stop request is not proof of process exit. Saved run
|
|
94
|
+
inspection reports these states separately, and does not invent a successful
|
|
95
|
+
result when a process disappears.
|
|
96
|
+
|
|
97
|
+
Children use native Pi sessions and the selected host's SDK, resources, tools,
|
|
98
|
+
project instructions, and model configuration. Optional `cwd` and `model`
|
|
99
|
+
overrides belong to a launch; ordinary continuation reuses its saved conversation
|
|
100
|
+
and launch configuration. No user agent Markdown files are edited or consulted
|
|
101
|
+
as profiles.
|
|
102
|
+
|
|
103
|
+
## Migration and documentation
|
|
104
|
+
|
|
105
|
+
This rebuild deliberately removes the profile editor, workflow/chain/fanout DSL,
|
|
106
|
+
Claude Code backend, custom agent overlays, supervisor-question revival protocol,
|
|
107
|
+
and remote launch/control/catalog APIs. Grok bots retain messaging but lose remote
|
|
108
|
+
spawn/resume/session/transcript/group/broadcast access; those retired commands are
|
|
109
|
+
not bridge-outage symptoms. Update saved bot prompts/routines to correlated
|
|
110
|
+
`send` before cutover.
|
|
111
|
+
|
|
112
|
+
Existing installations must finish in-flight work and reload **every participating
|
|
113
|
+
Pi session** onto the same approved version before resuming remote traffic. Old
|
|
114
|
+
and new brokers do not forward across namespaces. Keep the prior package and saved
|
|
115
|
+
state for rollback; qualify the helper and Box client/worker as an immutable pair,
|
|
116
|
+
with the companion's offline receipt-reconciliation gate. This repository change
|
|
117
|
+
does not deploy or restart anything.
|
|
118
|
+
|
|
119
|
+
Upgrades leave the retired SQLite history index in place. The packaged opt-in
|
|
120
|
+
[offline archive command](docs/retired-history-maintenance.md) preserves its complete
|
|
121
|
+
recovery set after owner-enforced quiescence and observable safety checks.
|
|
122
|
+
It never runs during startup/install, deletes data, or reclaims disk space.
|
|
123
|
+
|
|
124
|
+
- [Tools and lifecycle](docs/reference.md)
|
|
125
|
+
- [Local messaging and broker migration](docs/intercom.md)
|
|
126
|
+
- [Authenticated remote messaging / Grok companion](docs/intercom-bridge.md)
|
|
127
|
+
- [Development and qualification](docs/development.md)
|
|
128
|
+
- [Diagnosis, baseline, and measurable rebuild gates](docs/single-agent-rebuild.md)
|
|
129
|
+
|
|
130
|
+
Supports official Pi and the maintained `fitchmultz/pi` fork; the two hosts are
|
|
131
|
+
qualified separately, including native Android/Termux. Node.js 24.21 or newer is
|
|
132
|
+
required. Source installs on Android also need an Android-native `tsgo` on PATH;
|
|
133
|
+
the prebuilt npm package does not need a compiler. See
|
|
134
|
+
[development prerequisites](docs/development.md#native-androidtermux). MIT licensed.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Type } from "./typebox.js";
|
|
2
|
+
export const thinkingSchema = Type.Union([
|
|
3
|
+
Type.Literal("off"),
|
|
4
|
+
Type.Literal("minimal"),
|
|
5
|
+
Type.Literal("low"),
|
|
6
|
+
Type.Literal("medium"),
|
|
7
|
+
Type.Literal("high"),
|
|
8
|
+
Type.Literal("xhigh"),
|
|
9
|
+
Type.Literal("max"),
|
|
10
|
+
]);
|
|
11
|
+
export const launchSchema = Type.Object({
|
|
12
|
+
version: Type.Literal(1),
|
|
13
|
+
id: Type.String(),
|
|
14
|
+
rootId: Type.String(),
|
|
15
|
+
predecessor: Type.Optional(Type.String()),
|
|
16
|
+
owner: Type.String(),
|
|
17
|
+
cwd: Type.String(),
|
|
18
|
+
agentDir: Type.String(),
|
|
19
|
+
sdk: Type.String(),
|
|
20
|
+
entry: Type.String(),
|
|
21
|
+
sessionFile: Type.String(),
|
|
22
|
+
sessionId: Type.String(),
|
|
23
|
+
prompt: Type.String(),
|
|
24
|
+
context: Type.Union([Type.Literal("fresh"), Type.Literal("fork")]),
|
|
25
|
+
provider: Type.String(),
|
|
26
|
+
model: Type.String(),
|
|
27
|
+
thinking: thinkingSchema,
|
|
28
|
+
trusted: Type.Boolean(),
|
|
29
|
+
name: Type.Optional(Type.String()),
|
|
30
|
+
createdAt: Type.Number(),
|
|
31
|
+
});
|
|
32
|
+
export const processSchema = Type.Object({
|
|
33
|
+
pid: Type.Integer({ minimum: 1 }),
|
|
34
|
+
identity: Type.String(),
|
|
35
|
+
token: Type.String(),
|
|
36
|
+
clock: Type.Optional(Type.Object({
|
|
37
|
+
boot: Type.String(),
|
|
38
|
+
namespace: Type.String(),
|
|
39
|
+
at: Type.String({ pattern: "^[1-9][0-9]*$", maxLength: 20 }),
|
|
40
|
+
})),
|
|
41
|
+
});
|
|
42
|
+
export const attachmentSchema = Type.Object({
|
|
43
|
+
...Type.Pick(processSchema, ["pid", "identity", "clock"]).properties,
|
|
44
|
+
generation: Type.String(),
|
|
45
|
+
attached: Type.Boolean(),
|
|
46
|
+
});
|
|
47
|
+
export const usageSchema = Type.Object({
|
|
48
|
+
input: Type.Number({ minimum: 0 }),
|
|
49
|
+
output: Type.Number({ minimum: 0 }),
|
|
50
|
+
cacheRead: Type.Number({ minimum: 0 }),
|
|
51
|
+
cacheWrite: Type.Number({ minimum: 0 }),
|
|
52
|
+
totalTokens: Type.Number({ minimum: 0 }),
|
|
53
|
+
reasoning: Type.Optional(Type.Number({ minimum: 0 })),
|
|
54
|
+
cacheWrite1h: Type.Optional(Type.Number({ minimum: 0 })),
|
|
55
|
+
cost: Type.Object({
|
|
56
|
+
input: Type.Number({ minimum: 0 }),
|
|
57
|
+
output: Type.Number({ minimum: 0 }),
|
|
58
|
+
cacheRead: Type.Number({ minimum: 0 }),
|
|
59
|
+
cacheWrite: Type.Number({ minimum: 0 }),
|
|
60
|
+
total: Type.Number({ minimum: 0 }),
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
export const contributionsSchema = Type.Array(Type.Object({
|
|
64
|
+
id: Type.String({ minLength: 1 }),
|
|
65
|
+
provider: Type.String(),
|
|
66
|
+
model: Type.String(),
|
|
67
|
+
usage: usageSchema,
|
|
68
|
+
}));
|
|
69
|
+
export const resultSchema = Type.Object({
|
|
70
|
+
id: Type.String(),
|
|
71
|
+
owner: Type.String(),
|
|
72
|
+
status: Type.Union([Type.Literal("completed"), Type.Literal("failed"), Type.Literal("stopped")]),
|
|
73
|
+
endedAt: Type.Number(),
|
|
74
|
+
terminalEntryId: Type.Optional(Type.String()),
|
|
75
|
+
error: Type.Optional(Type.String()),
|
|
76
|
+
contributions: Type.Optional(contributionsSchema),
|
|
77
|
+
accountingError: Type.Optional(Type.String()),
|
|
78
|
+
accountingPending: Type.Optional(Type.Object({
|
|
79
|
+
terminalCandidate: Type.String(),
|
|
80
|
+
baseline: Type.Array(Type.String()),
|
|
81
|
+
})),
|
|
82
|
+
});
|
|
83
|
+
export const commandSchema = Type.Object({
|
|
84
|
+
id: Type.String(),
|
|
85
|
+
runId: Type.String(),
|
|
86
|
+
action: Type.Union([Type.Literal("run"), Type.Literal("steer"), Type.Literal("stop")]),
|
|
87
|
+
prompt: Type.Optional(Type.String()),
|
|
88
|
+
actorToken: Type.Optional(Type.String()),
|
|
89
|
+
createdAt: Type.Number(),
|
|
90
|
+
});
|
|
91
|
+
export const successorSchema = Type.Object({ id: Type.String() });
|
|
92
|
+
export const exitSchema = Type.Object({
|
|
93
|
+
pid: Type.Integer(),
|
|
94
|
+
code: Type.Union([Type.Integer(), Type.Null()]),
|
|
95
|
+
signal: Type.Union([Type.String(), Type.Null()]),
|
|
96
|
+
at: Type.Number(),
|
|
97
|
+
});
|
|
98
|
+
export const admissionSchema = Type.Object({
|
|
99
|
+
id: Type.String(),
|
|
100
|
+
action: Type.String(),
|
|
101
|
+
runId: Type.Optional(Type.String()),
|
|
102
|
+
state: Type.Optional(Type.Union([Type.Literal("accepted"), Type.Literal("stale")])),
|
|
103
|
+
at: Type.Number(),
|
|
104
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { write } from "./storage.js";
|
|
4
|
+
export function localCwdOwner(source) {
|
|
5
|
+
return /(?:^|[/\\:@])(?:pi-)?change-working-dir(?:[/\\@:.>]|$)/.test(`${source.source}/${source.path}`);
|
|
6
|
+
}
|
|
7
|
+
function hasOwner(pi) {
|
|
8
|
+
return (pi.getAllTools().some((tool) => tool.name === "change_dir" || localCwdOwner(tool.sourceInfo)) ||
|
|
9
|
+
pi
|
|
10
|
+
.getCommands()
|
|
11
|
+
.some((command) => command.source === "extension" &&
|
|
12
|
+
(/^cwd(?::\d+)?$/.test(command.name) || localCwdOwner(command.sourceInfo))));
|
|
13
|
+
}
|
|
14
|
+
function reply(request) {
|
|
15
|
+
if (request.result?.error !== undefined && request.result.error !== "") {
|
|
16
|
+
throw new Error(request.result.error);
|
|
17
|
+
}
|
|
18
|
+
if (request.result && (request.result.cwd === undefined || request.result.cwd === "")) {
|
|
19
|
+
throw new Error("Directory owner returned no execution directory.");
|
|
20
|
+
}
|
|
21
|
+
return request.result?.cwd;
|
|
22
|
+
}
|
|
23
|
+
export function executionCwd(pi, ctx) {
|
|
24
|
+
const request = { sessionManager: ctx.sessionManager };
|
|
25
|
+
pi.events.emit("pi-change-working-dir:resolve-execution-cwd", request);
|
|
26
|
+
const cwd = reply(request);
|
|
27
|
+
if (cwd === undefined && hasOwner(pi)) {
|
|
28
|
+
throw new Error("Loaded directory owner did not resolve cwd; update pi-change-working-dir.");
|
|
29
|
+
}
|
|
30
|
+
return cwd ?? ctx.cwd;
|
|
31
|
+
}
|
|
32
|
+
export function initializeCwd(pi, ctx, cwd, directory) {
|
|
33
|
+
// A saved continuation restores its owner's latest selection, not its frozen launch directory.
|
|
34
|
+
const current = executionCwd(pi, ctx);
|
|
35
|
+
const marker = path.join(directory, "cwd-initialized.json");
|
|
36
|
+
if (fs.existsSync(marker)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (hasOwner(pi) || fs.realpathSync(current) !== fs.realpathSync(ctx.cwd)) {
|
|
40
|
+
const request = { sessionManager: ctx.sessionManager, path: cwd };
|
|
41
|
+
pi.events.emit("pi-change-working-dir:set-execution-cwd", request);
|
|
42
|
+
const selected = reply(request);
|
|
43
|
+
if (selected === undefined || fs.realpathSync(selected) !== fs.realpathSync(cwd)) {
|
|
44
|
+
throw new Error("Directory owner did not initialize the requested child cwd.");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (fs.realpathSync(ctx.cwd) !== fs.realpathSync(cwd)) {
|
|
48
|
+
throw new Error("Native child directory does not match launch cwd.");
|
|
49
|
+
}
|
|
50
|
+
write(marker, { cwd }, true);
|
|
51
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import * as fs from "node:fs";
|
|
10
|
+
import * as path from "node:path";
|
|
11
|
+
import { findPackageJSON } from "node:module";
|
|
12
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
13
|
+
import { readIntercomLineage } from "../pi-intercom/identity.js";
|
|
14
|
+
export { errorMessage as errorText } from "../shared/unknown.js";
|
|
15
|
+
function isPackage(root) {
|
|
16
|
+
const file = path.join(root, "package.json");
|
|
17
|
+
if (!fs.existsSync(file)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const value = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
21
|
+
return (typeof value === "object" &&
|
|
22
|
+
value !== null &&
|
|
23
|
+
"name" in value &&
|
|
24
|
+
value.name === "@earendil-works/pi-coding-agent");
|
|
25
|
+
}
|
|
26
|
+
function launcherPackage() {
|
|
27
|
+
const entry = process.argv.at(1);
|
|
28
|
+
if (entry === undefined) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
let directory = path.dirname(fs.realpathSync(entry));
|
|
32
|
+
while (directory !== path.dirname(directory)) {
|
|
33
|
+
if (isPackage(directory)) {
|
|
34
|
+
return directory;
|
|
35
|
+
}
|
|
36
|
+
directory = path.dirname(directory);
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
export function packageRoot() {
|
|
41
|
+
const configured = process.env.PI_PACKAGE_DIR;
|
|
42
|
+
if (configured !== undefined && configured.length > 0) {
|
|
43
|
+
if (!isPackage(configured)) {
|
|
44
|
+
throw new Error("PI_PACKAGE_DIR is not a Pi SDK.");
|
|
45
|
+
}
|
|
46
|
+
return configured;
|
|
47
|
+
}
|
|
48
|
+
const launcher = launcherPackage();
|
|
49
|
+
if (launcher !== undefined) {
|
|
50
|
+
return launcher;
|
|
51
|
+
}
|
|
52
|
+
const manifest = findPackageJSON("@earendil-works/pi-coding-agent", import.meta.url);
|
|
53
|
+
if (manifest === undefined) {
|
|
54
|
+
throw new Error("Cannot locate the native Pi SDK.");
|
|
55
|
+
}
|
|
56
|
+
return path.dirname(manifest);
|
|
57
|
+
}
|
|
58
|
+
export async function loadSDK(root) {
|
|
59
|
+
// Selected host SDK, not a second package-local runtime hidden behind Jiti aliases.
|
|
60
|
+
// oxlint-disable-next-line typescript/no-unsafe-assignment
|
|
61
|
+
const sdk = await import(__rewriteRelativeImportExtension(pathToFileURL(path.join(root, "dist/index.js")).href));
|
|
62
|
+
return sdk;
|
|
63
|
+
}
|
|
64
|
+
export function runtimeEntry() {
|
|
65
|
+
return fileURLToPath(new URL(import.meta.url.endsWith(".ts") ? "../index.ts" : "../index.js", import.meta.url));
|
|
66
|
+
}
|
|
67
|
+
export function isChild() {
|
|
68
|
+
return readIntercomLineage() !== undefined;
|
|
69
|
+
}
|