@fitchmultz/pi-subagents 0.49.1 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/README.md +88 -94
- package/dist/agent/contracts.js +122 -0
- package/dist/agent/cwd.js +51 -0
- package/dist/agent/host.js +82 -0
- package/dist/agent/index.js +422 -0
- package/dist/agent/journal-tail.js +183 -0
- package/dist/agent/launch.js +87 -0
- package/dist/agent/legacy.js +141 -0
- package/dist/agent/notifications.js +119 -0
- package/dist/agent/observe-screen.js +132 -0
- package/dist/agent/observe.js +234 -0
- package/dist/agent/process.js +173 -0
- package/dist/agent/receipts.js +75 -0
- package/dist/agent/runner.js +372 -0
- package/dist/agent/saved.js +195 -0
- package/dist/agent/shell.js +43 -0
- package/dist/agent/storage.js +113 -0
- package/dist/agent/typebox.js +20 -0
- package/dist/agent/usage.js +232 -0
- package/dist/agent/view.js +164 -0
- package/dist/build-info.js +1 -0
- package/dist/index.js +8 -0
- package/dist/pi-intercom/bridge-config.js +12 -19
- package/dist/pi-intercom/bridge-http.js +1 -2
- package/dist/pi-intercom/bridge-mailbox.js +2 -7
- package/dist/pi-intercom/bridge-protocol.js +3 -10
- package/dist/pi-intercom/bridge-routes.js +15 -186
- package/dist/pi-intercom/bridge-session.js +2 -96
- package/dist/pi-intercom/bridge.js +12 -35
- package/dist/pi-intercom/broker/broker.js +33 -38
- package/dist/pi-intercom/broker/client-last.js +48 -0
- package/dist/pi-intercom/broker/client.js +41 -1
- package/dist/pi-intercom/broker/connection.js +5 -18
- package/dist/pi-intercom/broker/last.js +173 -0
- package/dist/pi-intercom/broker/paths.js +28 -9
- package/dist/pi-intercom/broker/server-connection.js +18 -0
- package/dist/pi-intercom/broker/spawn.js +32 -16
- package/dist/pi-intercom/broker/targets.js +24 -0
- package/dist/pi-intercom/config.js +0 -23
- package/dist/pi-intercom/connection.js +30 -70
- package/dist/pi-intercom/identity.js +14 -44
- package/dist/pi-intercom/inbound-delivery.js +8 -69
- package/dist/pi-intercom/inbound-journal.js +3 -68
- package/dist/pi-intercom/inbound-record.js +2 -48
- package/dist/pi-intercom/inbound.js +6 -53
- package/dist/pi-intercom/index.js +8 -47
- package/dist/pi-intercom/last-message.js +58 -0
- package/dist/pi-intercom/lifecycle.js +8 -33
- package/dist/pi-intercom/message-format.js +1 -32
- package/dist/pi-intercom/outbound.js +9 -1
- package/dist/pi-intercom/reply-tracker.js +2 -12
- package/dist/pi-intercom/reply-wait.js +16 -107
- package/dist/pi-intercom/runtime-types.js +0 -1
- package/dist/pi-intercom/session-events.js +5 -21
- package/dist/pi-intercom/tool-arguments.js +4 -0
- package/dist/pi-intercom/tool-registration.js +5 -86
- package/dist/pi-intercom/tool-schemas.js +12 -52
- package/dist/pi-intercom/tools.js +55 -29
- package/dist/pi-intercom/types.js +10 -3
- package/dist/pi-intercom/ui/session-format.js +3 -3
- package/dist/shared/journal-projections.js +0 -31
- package/dist/shared/types.js +0 -195
- package/docs/code-quality.md +4 -3
- package/docs/development.md +57 -95
- package/docs/intercom-bridge.md +206 -415
- package/docs/intercom.md +142 -593
- package/docs/performance.md +109 -192
- package/docs/reference.md +139 -1452
- package/package.json +12 -19
- package/scripts/build.mjs +1 -1
- package/scripts/intercom-bridge-credentials.mjs +1 -1
- package/scripts/intercom-remote.mjs +55 -272
- package/scripts/local-install-smoke.mjs +3 -1
- package/scripts/measure-size.mjs +64 -0
- package/scripts/native-package-smoke.mjs +267 -109
- package/scripts/package-smoke.mjs +120 -363
- package/scripts/real-pi-processes.mjs +6 -38
- package/scripts/real-pi-smoke.mjs +153 -144
- package/scripts/run-tests.mjs +4 -3
- package/skills/pi-intercom/SKILL.md +53 -107
- package/skills/pi-subagents/SKILL.md +45 -59
- package/src/agent/contracts.ts +144 -0
- package/src/agent/cwd.ts +69 -0
- package/src/agent/host.ts +82 -0
- package/src/agent/index.ts +486 -0
- package/src/agent/journal-tail.ts +184 -0
- package/src/agent/launch.ts +112 -0
- package/src/agent/legacy.ts +167 -0
- package/src/agent/notifications.ts +131 -0
- package/src/agent/observe-screen.ts +167 -0
- package/src/agent/observe.ts +240 -0
- package/src/agent/process.ts +179 -0
- package/src/agent/receipts.ts +88 -0
- package/src/agent/runner.ts +417 -0
- package/src/agent/saved.ts +220 -0
- package/src/agent/shell.ts +56 -0
- package/src/agent/storage.ts +123 -0
- package/src/agent/typebox.ts +17 -0
- package/src/agent/usage.ts +263 -0
- package/src/agent/view.ts +246 -0
- package/src/index.ts +10 -0
- package/src/pi-intercom/bridge-config.ts +13 -24
- package/src/pi-intercom/bridge-http.ts +1 -2
- package/src/pi-intercom/bridge-mailbox.ts +8 -8
- package/src/pi-intercom/bridge-protocol.ts +7 -11
- package/src/pi-intercom/bridge-routes.ts +29 -277
- package/src/pi-intercom/bridge-session.ts +3 -114
- package/src/pi-intercom/bridge.ts +12 -35
- package/src/pi-intercom/broker/broker.ts +39 -54
- package/src/pi-intercom/broker/client-last.ts +65 -0
- package/src/pi-intercom/broker/client.ts +45 -3
- package/src/pi-intercom/broker/connection.ts +5 -17
- package/src/pi-intercom/broker/last.ts +222 -0
- package/src/pi-intercom/broker/paths.ts +31 -9
- package/src/pi-intercom/broker/server-connection.ts +38 -0
- package/src/pi-intercom/broker/spawn.ts +44 -16
- package/src/pi-intercom/broker/targets.ts +42 -0
- package/src/pi-intercom/config.ts +0 -27
- package/src/pi-intercom/connection.ts +41 -84
- package/src/pi-intercom/identity.ts +21 -49
- package/src/pi-intercom/inbound-delivery.ts +10 -93
- package/src/pi-intercom/inbound-journal.ts +4 -81
- package/src/pi-intercom/inbound-record.ts +2 -61
- package/src/pi-intercom/inbound.ts +7 -69
- package/src/pi-intercom/index.ts +10 -49
- package/src/pi-intercom/last-message.ts +73 -0
- package/src/pi-intercom/lifecycle.ts +14 -41
- package/src/pi-intercom/message-format.ts +1 -34
- package/src/pi-intercom/outbound.ts +16 -1
- package/src/pi-intercom/reply-tracker.ts +2 -19
- package/src/pi-intercom/reply-wait.ts +21 -128
- package/src/pi-intercom/runtime-types.ts +5 -58
- package/src/pi-intercom/session-events.ts +7 -35
- package/src/pi-intercom/tool-arguments.ts +6 -0
- package/src/pi-intercom/tool-registration.ts +9 -109
- package/src/pi-intercom/tool-schemas.ts +17 -80
- package/src/pi-intercom/tools.ts +58 -44
- package/src/pi-intercom/transport.ts +1 -0
- package/src/pi-intercom/types.ts +45 -6
- package/src/pi-intercom/ui/session-format.ts +3 -3
- package/src/shared/journal-projections.ts +0 -35
- package/src/shared/post-exit-stdio-guard.ts +7 -1
- package/src/shared/types.ts +0 -257
- package/agents/context-builder.md +0 -115
- package/agents/debugger.md +0 -58
- package/agents/delegate.md +0 -14
- package/agents/fixer.md +0 -40
- package/agents/oracle.md +0 -82
- package/agents/planner.md +0 -83
- package/agents/researcher.md +0 -60
- package/agents/reviewer-claude.md +0 -78
- package/agents/reviewer-gpt.md +0 -78
- package/agents/reviewer-ponytail.md +0 -92
- package/agents/reviewer-security.md +0 -92
- package/agents/reviewer.md +0 -78
- package/agents/scout.md +0 -77
- package/agents/ui-designer.md +0 -58
- package/agents/watcher.md +0 -27
- package/agents/worker.md +0 -52
- package/agents/writer.md +0 -39
- package/dist/agents/agent-defaults.js +0 -9
- package/dist/agents/agent-definition.js +0 -196
- package/dist/agents/agent-management.js +0 -88
- package/dist/agents/agent-scope.js +0 -9
- package/dist/agents/agent-selection.js +0 -13
- package/dist/agents/agent-serializer.js +0 -88
- package/dist/agents/agents.js +0 -111
- package/dist/agents/builtin-overrides.js +0 -218
- package/dist/agents/chain-serializer.js +0 -3
- package/dist/agents/config-values.js +0 -52
- package/dist/agents/discovery-paths.js +0 -91
- package/dist/agents/frontmatter.js +0 -31
- package/dist/agents/identity.js +0 -46
- package/dist/agents/json-chain.js +0 -254
- package/dist/agents/management-config.js +0 -332
- package/dist/agents/management-format.js +0 -231
- package/dist/agents/management-persistence.js +0 -287
- package/dist/agents/management-targets.js +0 -136
- package/dist/agents/management-warnings.js +0 -81
- package/dist/agents/markdown-chain.js +0 -210
- package/dist/agents/package-agents.js +0 -154
- package/dist/agents/skill-files.js +0 -157
- package/dist/agents/skill-search-paths.js +0 -246
- package/dist/agents/skill-types.js +0 -1
- package/dist/agents/skills.js +0 -125
- package/dist/extension/acceptance-schema.js +0 -55
- package/dist/extension/build-info.js +0 -1
- package/dist/extension/chain-schema.js +0 -196
- package/dist/extension/child-runtime.js +0 -237
- package/dist/extension/compact-tools.js +0 -183
- package/dist/extension/config-schema.js +0 -29
- package/dist/extension/config.js +0 -38
- package/dist/extension/control-notice-schema.js +0 -37
- package/dist/extension/control-notices.js +0 -36
- package/dist/extension/delegation-bridges.js +0 -43
- package/dist/extension/doctor.js +0 -166
- package/dist/extension/everyday-schemas.js +0 -207
- package/dist/extension/fanout-child.js +0 -25
- package/dist/extension/index.js +0 -28
- package/dist/extension/message-renderers.js +0 -225
- package/dist/extension/nested-control-inbox.js +0 -154
- package/dist/extension/parent-runtime.js +0 -339
- package/dist/extension/primary-tool.js +0 -69
- package/dist/extension/result-snapshot.js +0 -4
- package/dist/extension/runtime-reload.js +0 -62
- package/dist/extension/runtime-storage.js +0 -43
- package/dist/extension/schema-overrides.js +0 -75
- package/dist/extension/schemas.js +0 -345
- package/dist/extension/tool-input.js +0 -35
- package/dist/extension/tool-result.js +0 -29
- package/dist/history/answer-texts.js +0 -57
- package/dist/history/canonical-result.js +0 -114
- package/dist/history/canonical-selection.js +0 -40
- package/dist/history/database-generation.js +0 -82
- package/dist/history/database.js +0 -96
- package/dist/history/entry-ingestion.js +0 -61
- package/dist/history/index.js +0 -344
- package/dist/history/ingest.js +0 -314
- package/dist/history/output-digests.js +0 -40
- package/dist/history/preview.js +0 -210
- package/dist/history/prune.js +0 -33
- package/dist/history/queries.js +0 -81
- package/dist/history/query-scope.js +0 -190
- package/dist/history/rows.js +0 -77
- package/dist/history/run-projection.js +0 -136
- package/dist/history/run-queries.js +0 -153
- package/dist/history/schema.js +0 -31
- package/dist/history/search-queries.js +0 -169
- package/dist/history/selected-record.js +0 -108
- package/dist/history/source-file.js +0 -45
- package/dist/history/source-watches.js +0 -141
- package/dist/history/store.js +0 -243
- package/dist/history/text-chunks.js +0 -168
- package/dist/history/text.js +0 -35
- package/dist/history/transcript-queries.js +0 -183
- package/dist/history/types.js +0 -8
- package/dist/history/values.js +0 -36
- package/dist/history/wire-inputs.js +0 -122
- package/dist/history/wire-models.js +0 -38
- package/dist/history/worker-runtime.js +0 -441
- package/dist/history/worker.js +0 -91
- package/dist/intercom/intercom-bridge.js +0 -140
- package/dist/intercom/live-intercom.js +0 -151
- package/dist/intercom/nested-result-tree.js +0 -163
- package/dist/intercom/result-delivery.js +0 -40
- package/dist/intercom/result-intercom.js +0 -216
- package/dist/pi-intercom/bridge-ask.js +0 -57
- package/dist/pi-intercom/bridge-broadcast.js +0 -60
- package/dist/pi-intercom/bridge-catalog.js +0 -372
- package/dist/pi-intercom/bridge-control.js +0 -104
- package/dist/pi-intercom/bridge-groups.js +0 -135
- package/dist/pi-intercom/bridge-launch-journal.js +0 -84
- package/dist/pi-intercom/bridge-launch-policy.js +0 -154
- package/dist/pi-intercom/bridge-launch.js +0 -327
- package/dist/pi-intercom/bridge-operations.js +0 -127
- package/dist/pi-intercom/bridge-rpc-process.js +0 -292
- package/dist/pi-intercom/interview.js +0 -236
- package/dist/pi-intercom/native-control-auth.js +0 -80
- package/dist/pi-intercom/native-control-protocol.js +0 -111
- package/dist/pi-intercom/native-control.js +0 -130
- package/dist/pi-intercom/peer-awareness.js +0 -66
- package/dist/pi-intercom/saved-transcript.js +0 -135
- package/dist/pi-intercom/subagent-events.js +0 -238
- package/dist/pi-intercom/subagent-live-events.js +0 -175
- package/dist/pi-intercom/supervisor.js +0 -282
- package/dist/pi-intercom/topic-actions.js +0 -177
- package/dist/pi-intercom/topics.js +0 -242
- package/dist/pi-intercom/transcript.js +0 -175
- package/dist/pi-intercom/ui/compose-paste.js +0 -93
- package/dist/pi-intercom/ui/compose.js +0 -247
- package/dist/pi-intercom/ui/inline-message.js +0 -80
- package/dist/pi-intercom/ui/message-renderers.js +0 -147
- package/dist/pi-intercom/ui/overlay.js +0 -181
- package/dist/pi-intercom/ui/session-list.js +0 -157
- package/dist/pi-intercom/ui/tool-renderers.js +0 -110
- package/dist/pi-intercom/ui/topic-view.js +0 -88
- package/dist/runs/background/async-chain-plan.js +0 -265
- package/dist/runs/background/async-control.js +0 -171
- package/dist/runs/background/async-execution.js +0 -179
- package/dist/runs/background/async-job-admission.js +0 -40
- package/dist/runs/background/async-job-projection.js +0 -169
- package/dist/runs/background/async-job-tracker.js +0 -353
- package/dist/runs/background/async-launch.js +0 -216
- package/dist/runs/background/async-plan.js +0 -116
- package/dist/runs/background/async-result-file.js +0 -82
- package/dist/runs/background/async-resume.js +0 -247
- package/dist/runs/background/async-run-discovery.js +0 -211
- package/dist/runs/background/async-run-location.js +0 -135
- package/dist/runs/background/async-run-record.js +0 -1
- package/dist/runs/background/async-run-repair.js +0 -223
- package/dist/runs/background/async-run-summary.js +0 -1
- package/dist/runs/background/async-single-plan.js +0 -105
- package/dist/runs/background/async-status-projection.js +0 -155
- package/dist/runs/background/async-status-render.js +0 -117
- package/dist/runs/background/async-status-validation.js +0 -181
- package/dist/runs/background/async-status.js +0 -3
- package/dist/runs/background/async-value.js +0 -21
- package/dist/runs/background/completion-dedupe.js +0 -42
- package/dist/runs/background/completion-delivery.js +0 -251
- package/dist/runs/background/completion-receipts.js +0 -237
- package/dist/runs/background/legacy-status-acceptance.js +0 -34
- package/dist/runs/background/notify.js +0 -111
- package/dist/runs/background/parallel-groups.js +0 -72
- package/dist/runs/background/result-payload.js +0 -178
- package/dist/runs/background/result-watcher.js +0 -435
- package/dist/runs/background/run-id-resolver.js +0 -84
- package/dist/runs/background/run-schemas.js +0 -189
- package/dist/runs/background/run-status-contracts.js +0 -14
- package/dist/runs/background/run-status-render.js +0 -270
- package/dist/runs/background/run-status.js +0 -274
- package/dist/runs/background/runner-attempt-output.js +0 -155
- package/dist/runs/background/runner-attempt.js +0 -263
- package/dist/runs/background/runner-child-executor.js +0 -166
- package/dist/runs/background/runner-child-observer.js +0 -197
- package/dist/runs/background/runner-completion-summary.js +0 -71
- package/dist/runs/background/runner-completion.js +0 -211
- package/dist/runs/background/runner-config.js +0 -1
- package/dist/runs/background/runner-contract.js +0 -1
- package/dist/runs/background/runner-dynamic.js +0 -121
- package/dist/runs/background/runner-finalization.js +0 -149
- package/dist/runs/background/runner-graph.js +0 -68
- package/dist/runs/background/runner-initial-status.js +0 -60
- package/dist/runs/background/runner-lifecycle.js +0 -142
- package/dist/runs/background/runner-monitor.js +0 -311
- package/dist/runs/background/runner-parallel.js +0 -203
- package/dist/runs/background/runner-prepare-step.js +0 -86
- package/dist/runs/background/runner-reporting.js +0 -153
- package/dist/runs/background/runner-status.js +0 -148
- package/dist/runs/background/runner-step-output.js +0 -90
- package/dist/runs/background/runner-step-record.js +0 -45
- package/dist/runs/background/runner-step.js +0 -112
- package/dist/runs/background/runner-streaming.js +0 -173
- package/dist/runs/background/runner-workflow.js +0 -213
- package/dist/runs/background/stale-run-reconciler.js +0 -198
- package/dist/runs/background/subagent-runner-launcher.js +0 -75
- package/dist/runs/background/subagent-runner.js +0 -81
- package/dist/runs/background/top-level-async.js +0 -6
- package/dist/runs/foreground/chain-clarify.js +0 -428
- package/dist/runs/foreground/clarification-draft.js +0 -87
- package/dist/runs/foreground/clarify-contracts.js +0 -1
- package/dist/runs/foreground/clarify-invocation.js +0 -163
- package/dist/runs/foreground/clarify-text-editor.js +0 -210
- package/dist/runs/foreground/clarify-view.js +0 -167
- package/dist/runs/foreground/execution-input.js +0 -296
- package/dist/runs/foreground/execution-routing.js +0 -33
- package/dist/runs/foreground/execution-timeout.js +0 -81
- package/dist/runs/foreground/foreground-control.js +0 -276
- package/dist/runs/foreground/foreground-memory.js +0 -99
- package/dist/runs/foreground/invocation-context.js +0 -55
- package/dist/runs/foreground/invocation-execution.js +0 -331
- package/dist/runs/foreground/invocation-expansion.js +0 -48
- package/dist/runs/foreground/management-actions.js +0 -295
- package/dist/runs/foreground/nested-control.js +0 -179
- package/dist/runs/foreground/question-continuation.js +0 -78
- package/dist/runs/foreground/question-control.js +0 -193
- package/dist/runs/foreground/resume-target.js +0 -221
- package/dist/runs/foreground/revival-launch-policy.js +0 -58
- package/dist/runs/foreground/run-async-path.js +0 -217
- package/dist/runs/foreground/run-interrupt.js +0 -164
- package/dist/runs/foreground/run-nudge.js +0 -278
- package/dist/runs/foreground/saved-revival.js +0 -251
- package/dist/runs/foreground/subagent-executor.js +0 -153
- package/dist/runs/foreground/subagent-params.js +0 -202
- package/dist/runs/foreground/wait-observation.js +0 -104
- package/dist/runs/foreground/wait-registration.js +0 -17
- package/dist/runs/foreground/wait-run.js +0 -301
- package/dist/runs/shared/acceptance-contract.js +0 -347
- package/dist/runs/shared/acceptance-defaults.js +0 -1
- package/dist/runs/shared/acceptance-evaluation.js +0 -276
- package/dist/runs/shared/acceptance-finalization.js +0 -356
- package/dist/runs/shared/acceptance-outcome.js +0 -53
- package/dist/runs/shared/acceptance-reports.js +0 -212
- package/dist/runs/shared/acceptance-submission.js +0 -167
- package/dist/runs/shared/acceptance-verification.js +0 -100
- package/dist/runs/shared/acceptance.js +0 -4
- package/dist/runs/shared/chain-outputs.js +0 -138
- package/dist/runs/shared/child-attempt-types.js +0 -1
- package/dist/runs/shared/child-attempt.js +0 -340
- package/dist/runs/shared/child-boundaries.js +0 -173
- package/dist/runs/shared/child-context-filter.js +0 -44
- package/dist/runs/shared/child-event-observer.js +0 -390
- package/dist/runs/shared/child-execution-cwd.js +0 -126
- package/dist/runs/shared/child-execution-outcome.js +0 -72
- package/dist/runs/shared/child-invocation.js +0 -54
- package/dist/runs/shared/child-message-validation.js +0 -215
- package/dist/runs/shared/child-native-accounting.js +0 -106
- package/dist/runs/shared/child-native-observation.js +0 -69
- package/dist/runs/shared/child-observation-spool.js +0 -169
- package/dist/runs/shared/child-observations.js +0 -195
- package/dist/runs/shared/child-presence.js +0 -3
- package/dist/runs/shared/child-route-env.js +0 -119
- package/dist/runs/shared/child-stream-observer.js +0 -221
- package/dist/runs/shared/child-stream-projection.js +0 -137
- package/dist/runs/shared/child-structured-tool.js +0 -27
- package/dist/runs/shared/claude-code.js +0 -162
- package/dist/runs/shared/claude-model.js +0 -42
- package/dist/runs/shared/claude-session.js +0 -83
- package/dist/runs/shared/claude-types.js +0 -1
- package/dist/runs/shared/completion-guard.js +0 -31
- package/dist/runs/shared/control-event-policy.js +0 -8
- package/dist/runs/shared/control-notification-owner.js +0 -13
- package/dist/runs/shared/dynamic-fanout.js +0 -289
- package/dist/runs/shared/dynamic-item.js +0 -102
- package/dist/runs/shared/history-index.js +0 -98
- package/dist/runs/shared/legacy-async-recovery.js +0 -114
- package/dist/runs/shared/legacy-output-recovery.js +0 -148
- package/dist/runs/shared/mcp-config-schema.js +0 -36
- package/dist/runs/shared/mcp-direct-tool-allowlist.js +0 -365
- package/dist/runs/shared/model-fallback.js +0 -247
- package/dist/runs/shared/mutating-tool-guard.js +0 -210
- package/dist/runs/shared/native-finalization-types.js +0 -1
- package/dist/runs/shared/native-finalization.js +0 -180
- package/dist/runs/shared/native-usage.js +0 -293
- package/dist/runs/shared/nested-control-records.js +0 -128
- package/dist/runs/shared/nested-events.js +0 -8
- package/dist/runs/shared/nested-path.js +0 -52
- package/dist/runs/shared/nested-projection.js +0 -155
- package/dist/runs/shared/nested-protocol.js +0 -18
- package/dist/runs/shared/nested-registry.js +0 -191
- package/dist/runs/shared/nested-render.js +0 -156
- package/dist/runs/shared/nested-route.js +0 -220
- package/dist/runs/shared/nested-validation.js +0 -216
- package/dist/runs/shared/owned-child-evidence.js +0 -125
- package/dist/runs/shared/owned-run-list.js +0 -146
- package/dist/runs/shared/owned-run-observation.js +0 -267
- package/dist/runs/shared/owned-run-progress.js +0 -109
- package/dist/runs/shared/owned-run-read-state.js +0 -1
- package/dist/runs/shared/owned-run-results.js +0 -202
- package/dist/runs/shared/owned-run-status.js +0 -180
- package/dist/runs/shared/owned-run-view.js +0 -51
- package/dist/runs/shared/owned-workflow-details.js +0 -17
- package/dist/runs/shared/owner-output.js +0 -43
- package/dist/runs/shared/parallel-utils.js +0 -49
- package/dist/runs/shared/parent-receipts.js +0 -126
- package/dist/runs/shared/parent-usage.js +0 -233
- package/dist/runs/shared/pi-args.js +0 -217
- package/dist/runs/shared/pi-launch-input.js +0 -1
- package/dist/runs/shared/pi-session-launch.js +0 -86
- package/dist/runs/shared/pi-spawn.js +0 -66
- package/dist/runs/shared/run-history-queries.js +0 -136
- package/dist/runs/shared/run-history.js +0 -176
- package/dist/runs/shared/run-id-ambiguity.js +0 -4
- package/dist/runs/shared/run-metadata-paths.js +0 -14
- package/dist/runs/shared/run-metadata.js +0 -158
- package/dist/runs/shared/run-persistence.js +0 -131
- package/dist/runs/shared/run-records.js +0 -9
- package/dist/runs/shared/run-restoration.js +0 -337
- package/dist/runs/shared/run-state-owner.js +0 -26
- package/dist/runs/shared/session-cwd-preload.js +0 -42
- package/dist/runs/shared/single-output.js +0 -297
- package/dist/runs/shared/stable-value.js +0 -15
- package/dist/runs/shared/streaming-text.js +0 -26
- package/dist/runs/shared/structured-output.js +0 -67
- package/dist/runs/shared/subagent-control.js +0 -246
- package/dist/runs/shared/subagent-prompt-runtime.js +0 -94
- package/dist/runs/shared/subagent-tool-loop-guard.js +0 -95
- package/dist/runs/shared/supervisor-question-state.js +0 -145
- package/dist/runs/shared/supervisor-questions.js +0 -284
- package/dist/runs/shared/workflow-graph.js +0 -306
- package/dist/runs/shared/workflow-policy.js +0 -157
- package/dist/runs/shared/worktree-contract.js +0 -1
- package/dist/runs/shared/worktree-hook.js +0 -138
- package/dist/runs/shared/worktree-location.js +0 -47
- package/dist/runs/shared/worktree-preservation.js +0 -8
- package/dist/runs/shared/worktree-process.js +0 -107
- package/dist/runs/shared/worktree.js +0 -386
- package/dist/shared/agent-context-policy.js +0 -116
- package/dist/shared/agent-dir.js +0 -14
- package/dist/shared/artifacts.js +0 -114
- package/dist/shared/atomic-json.js +0 -16
- package/dist/shared/chain-files.js +0 -72
- package/dist/shared/concurrency.js +0 -18
- package/dist/shared/content-preview.js +0 -115
- package/dist/shared/execution-cwd.js +0 -22
- package/dist/shared/file-coalescer.js +0 -22
- package/dist/shared/fork-context.js +0 -47
- package/dist/shared/formatters.js +0 -111
- package/dist/shared/journal-reader.js +0 -6
- package/dist/shared/lazy-tools.js +0 -43
- package/dist/shared/message-output.js +0 -116
- package/dist/shared/model-info.js +0 -85
- package/dist/shared/native-import.js +0 -20
- package/dist/shared/native-session-loader.js +0 -17
- package/dist/shared/native-session.js +0 -4
- package/dist/shared/native-tui.js +0 -23
- package/dist/shared/native-typebox.js +0 -32
- package/dist/shared/prompt-sections.js +0 -10
- package/dist/shared/session-entries.js +0 -87
- package/dist/shared/session-identity.js +0 -16
- package/dist/shared/settings.js +0 -121
- package/dist/shared/status-format.js +0 -171
- package/dist/shared/task-file-policy.js +0 -24
- package/dist/shared/temp-root.js +0 -143
- package/dist/shared/types/acceptance.js +0 -1
- package/dist/shared/types/async.js +0 -1
- package/dist/shared/types/config.js +0 -1
- package/dist/shared/types/details.js +0 -1
- package/dist/shared/types/history.js +0 -1
- package/dist/shared/types/inputs.js +0 -1
- package/dist/shared/types/intercom.js +0 -1
- package/dist/shared/types/launch.js +0 -1
- package/dist/shared/types/messages.js +0 -1
- package/dist/shared/types/nested.js +0 -1
- package/dist/shared/types/owned-runs.js +0 -1
- package/dist/shared/types/progress.js +0 -1
- package/dist/shared/types/questions.js +0 -1
- package/dist/shared/types/results.js +0 -1
- package/dist/shared/types/state.js +0 -1
- package/dist/shared/types/usage.js +0 -1
- package/dist/shared/types/workflow.js +0 -1
- package/dist/shared/ui-mode.js +0 -3
- package/dist/shared/utils.js +0 -128
- package/dist/slash/command-discovery.js +0 -83
- package/dist/slash/command-input.js +0 -190
- package/dist/slash/prompt-template-bridge.js +0 -122
- package/dist/slash/prompt-template-contract.js +0 -77
- package/dist/slash/prompt-template-results.js +0 -125
- package/dist/slash/request-protocol.js +0 -68
- package/dist/slash/result-delivery.js +0 -237
- package/dist/slash/saved-chain.js +0 -78
- package/dist/slash/slash-bridge.js +0 -150
- package/dist/slash/slash-commands.js +0 -136
- package/dist/slash/slash-live-state.js +0 -267
- package/dist/tui/action-hints.js +0 -103
- package/dist/tui/activity-lines.js +0 -32
- package/dist/tui/agent-browser.js +0 -290
- package/dist/tui/agent-controls.js +0 -289
- package/dist/tui/agent-conversation.js +0 -444
- package/dist/tui/agent-dock.js +0 -171
- package/dist/tui/agent-history.js +0 -50
- package/dist/tui/agent-model.js +0 -62
- package/dist/tui/agent-picker.js +0 -262
- package/dist/tui/agent-view.js +0 -350
- package/dist/tui/compact-results.js +0 -193
- package/dist/tui/conversation-details.js +0 -190
- package/dist/tui/conversation-frame.js +0 -135
- package/dist/tui/conversation-history.js +0 -210
- package/dist/tui/conversation-menu.js +0 -78
- package/dist/tui/conversation-notices.js +0 -79
- package/dist/tui/conversation-selection.js +0 -58
- package/dist/tui/conversation-viewport.js +0 -129
- package/dist/tui/direction-message.js +0 -27
- package/dist/tui/display.js +0 -282
- package/dist/tui/editor-viewport.js +0 -18
- package/dist/tui/expanded-content.js +0 -87
- package/dist/tui/expanded-multi.js +0 -170
- package/dist/tui/expanded-single.js +0 -65
- package/dist/tui/history-cards.js +0 -202
- package/dist/tui/history-display.js +0 -238
- package/dist/tui/history-json.js +0 -16
- package/dist/tui/history-metadata.js +0 -152
- package/dist/tui/history-record.js +0 -251
- package/dist/tui/history-text.js +0 -34
- package/dist/tui/indexed-history.js +0 -116
- package/dist/tui/nested-widget.js +0 -120
- package/dist/tui/picker-page.js +0 -59
- package/dist/tui/render.js +0 -72
- package/dist/tui/result-facts.js +0 -64
- package/dist/tui/task-observation.js +0 -59
- package/dist/tui/task-store.js +0 -366
- package/dist/tui/text-values.js +0 -16
- package/dist/tui/view-connections.js +0 -47
- package/dist/tui/view-model.js +0 -94
- package/dist/tui/view-persistence.js +0 -51
- package/dist/tui/view-ports.js +0 -1
- package/dist/tui/view-session.js +0 -37
- package/dist/tui/widget-details.js +0 -144
- package/dist/tui/widget-status.js +0 -245
- package/dist/tui/widget.js +0 -145
- package/dist/tui/workflow-labels.js +0 -223
- package/dist/tui/workflow-outcomes.js +0 -124
- package/generated/RunValidators.d.ts +0 -28
- package/generated/RunValidators.js +0 -2
- package/prompts/gather-context-and-clarify.md +0 -14
- package/prompts/parallel-cleanup.md +0 -65
- package/prompts/parallel-context-build.md +0 -59
- package/prompts/parallel-handoff-plan.md +0 -68
- package/prompts/parallel-research.md +0 -55
- package/prompts/parallel-review.md +0 -61
- package/prompts/review-loop.md +0 -44
- package/scripts/generate-run-schemas.mjs +0 -210
- package/skills/pi-intercom/evals/evals.json +0 -29
- package/skills/pi-intercom/evals/trigger-evals.json +0 -47
- package/skills/pi-intercom/references/peer-sessions.md +0 -74
- package/skills/pi-subagents/evals/evals.json +0 -29
- package/skills/pi-subagents/evals/trigger-evals.json +0 -42
- package/skills/pi-subagents/references/full-orchestration-guide.md +0 -1005
- package/src/agents/agent-defaults.ts +0 -13
- package/src/agents/agent-definition.ts +0 -253
- package/src/agents/agent-management.ts +0 -120
- package/src/agents/agent-scope.ts +0 -11
- package/src/agents/agent-selection.ts +0 -22
- package/src/agents/agent-serializer.ts +0 -90
- package/src/agents/agents.ts +0 -214
- package/src/agents/builtin-overrides.ts +0 -297
- package/src/agents/chain-serializer.ts +0 -3
- package/src/agents/config-values.ts +0 -57
- package/src/agents/discovery-paths.ts +0 -134
- package/src/agents/frontmatter.ts +0 -39
- package/src/agents/identity.ts +0 -61
- package/src/agents/json-chain.ts +0 -305
- package/src/agents/management-config.ts +0 -342
- package/src/agents/management-format.ts +0 -243
- package/src/agents/management-persistence.ts +0 -408
- package/src/agents/management-targets.ts +0 -260
- package/src/agents/management-warnings.ts +0 -115
- package/src/agents/markdown-chain.ts +0 -237
- package/src/agents/package-agents.ts +0 -231
- package/src/agents/skill-files.ts +0 -182
- package/src/agents/skill-search-paths.ts +0 -289
- package/src/agents/skill-types.ts +0 -31
- package/src/agents/skills.ts +0 -179
- package/src/extension/acceptance-schema.ts +0 -88
- package/src/extension/build-info.ts +0 -2
- package/src/extension/chain-schema.ts +0 -276
- package/src/extension/child-runtime.ts +0 -302
- package/src/extension/compact-tools.ts +0 -271
- package/src/extension/config-schema.ts +0 -59
- package/src/extension/config.ts +0 -45
- package/src/extension/control-notice-schema.ts +0 -55
- package/src/extension/control-notices.ts +0 -71
- package/src/extension/delegation-bridges.ts +0 -59
- package/src/extension/doctor.ts +0 -207
- package/src/extension/everyday-schemas.ts +0 -252
- package/src/extension/fanout-child.ts +0 -33
- package/src/extension/index.ts +0 -31
- package/src/extension/message-renderers.ts +0 -334
- package/src/extension/nested-control-inbox.ts +0 -196
- package/src/extension/parent-runtime.ts +0 -405
- package/src/extension/primary-tool.ts +0 -130
- package/src/extension/result-snapshot.ts +0 -9
- package/src/extension/runtime-reload.ts +0 -72
- package/src/extension/runtime-storage.ts +0 -49
- package/src/extension/schema-overrides.ts +0 -114
- package/src/extension/schemas.ts +0 -477
- package/src/extension/tool-input.ts +0 -46
- package/src/extension/tool-result.ts +0 -47
- package/src/history/answer-texts.ts +0 -74
- package/src/history/canonical-result.ts +0 -138
- package/src/history/canonical-selection.ts +0 -54
- package/src/history/database-generation.ts +0 -86
- package/src/history/database.ts +0 -97
- package/src/history/entry-ingestion.ts +0 -129
- package/src/history/index.ts +0 -434
- package/src/history/ingest.ts +0 -387
- package/src/history/output-digests.ts +0 -41
- package/src/history/preview.ts +0 -235
- package/src/history/prune.ts +0 -48
- package/src/history/queries.ts +0 -125
- package/src/history/query-scope.ts +0 -278
- package/src/history/rows.ts +0 -118
- package/src/history/run-projection.ts +0 -162
- package/src/history/run-queries.ts +0 -199
- package/src/history/schema.ts +0 -34
- package/src/history/search-queries.ts +0 -223
- package/src/history/selected-record.ts +0 -140
- package/src/history/source-file.ts +0 -51
- package/src/history/source-watches.ts +0 -156
- package/src/history/store.ts +0 -332
- package/src/history/text-chunks.ts +0 -186
- package/src/history/text.ts +0 -43
- package/src/history/transcript-queries.ts +0 -257
- package/src/history/types.ts +0 -29
- package/src/history/values.ts +0 -36
- package/src/history/wire-inputs.ts +0 -141
- package/src/history/wire-models.ts +0 -51
- package/src/history/worker-runtime.ts +0 -502
- package/src/history/worker.ts +0 -99
- package/src/intercom/intercom-bridge.ts +0 -190
- package/src/intercom/live-intercom.ts +0 -209
- package/src/intercom/nested-result-tree.ts +0 -213
- package/src/intercom/result-delivery.ts +0 -56
- package/src/intercom/result-intercom.ts +0 -308
- package/src/pi-intercom/bridge-ask.ts +0 -64
- package/src/pi-intercom/bridge-broadcast.ts +0 -70
- package/src/pi-intercom/bridge-catalog.ts +0 -489
- package/src/pi-intercom/bridge-control.ts +0 -179
- package/src/pi-intercom/bridge-groups.ts +0 -169
- package/src/pi-intercom/bridge-launch-journal.ts +0 -122
- package/src/pi-intercom/bridge-launch-policy.ts +0 -190
- package/src/pi-intercom/bridge-launch.ts +0 -506
- package/src/pi-intercom/bridge-operations.ts +0 -169
- package/src/pi-intercom/bridge-rpc-process.ts +0 -330
- package/src/pi-intercom/interview.ts +0 -295
- package/src/pi-intercom/native-control-auth.ts +0 -89
- package/src/pi-intercom/native-control-protocol.ts +0 -180
- package/src/pi-intercom/native-control.ts +0 -160
- package/src/pi-intercom/peer-awareness.ts +0 -84
- package/src/pi-intercom/saved-transcript.ts +0 -175
- package/src/pi-intercom/subagent-events.ts +0 -299
- package/src/pi-intercom/subagent-live-events.ts +0 -236
- package/src/pi-intercom/supervisor.ts +0 -362
- package/src/pi-intercom/topic-actions.ts +0 -243
- package/src/pi-intercom/topics.ts +0 -271
- package/src/pi-intercom/transcript.ts +0 -226
- package/src/pi-intercom/ui/compose-paste.ts +0 -109
- package/src/pi-intercom/ui/compose.ts +0 -305
- package/src/pi-intercom/ui/inline-message.ts +0 -110
- package/src/pi-intercom/ui/message-renderers.ts +0 -182
- package/src/pi-intercom/ui/overlay.ts +0 -238
- package/src/pi-intercom/ui/session-list.ts +0 -222
- package/src/pi-intercom/ui/tool-renderers.ts +0 -148
- package/src/pi-intercom/ui/topic-view.ts +0 -107
- package/src/runs/background/async-chain-plan.ts +0 -451
- package/src/runs/background/async-control.ts +0 -219
- package/src/runs/background/async-execution.ts +0 -227
- package/src/runs/background/async-job-admission.ts +0 -54
- package/src/runs/background/async-job-projection.ts +0 -225
- package/src/runs/background/async-job-tracker.ts +0 -441
- package/src/runs/background/async-launch.ts +0 -319
- package/src/runs/background/async-plan.ts +0 -285
- package/src/runs/background/async-result-file.ts +0 -104
- package/src/runs/background/async-resume.ts +0 -386
- package/src/runs/background/async-run-discovery.ts +0 -264
- package/src/runs/background/async-run-location.ts +0 -194
- package/src/runs/background/async-run-record.ts +0 -14
- package/src/runs/background/async-run-repair.ts +0 -307
- package/src/runs/background/async-run-summary.ts +0 -71
- package/src/runs/background/async-single-plan.ts +0 -168
- package/src/runs/background/async-status-projection.ts +0 -188
- package/src/runs/background/async-status-render.ts +0 -164
- package/src/runs/background/async-status-validation.ts +0 -238
- package/src/runs/background/async-status.ts +0 -9
- package/src/runs/background/async-value.ts +0 -29
- package/src/runs/background/completion-dedupe.ts +0 -65
- package/src/runs/background/completion-delivery.ts +0 -321
- package/src/runs/background/completion-receipts.ts +0 -309
- package/src/runs/background/legacy-status-acceptance.ts +0 -38
- package/src/runs/background/notify.ts +0 -174
- package/src/runs/background/parallel-groups.ts +0 -102
- package/src/runs/background/result-payload.ts +0 -268
- package/src/runs/background/result-watcher.ts +0 -520
- package/src/runs/background/run-id-resolver.ts +0 -138
- package/src/runs/background/run-schemas.ts +0 -240
- package/src/runs/background/run-status-contracts.ts +0 -46
- package/src/runs/background/run-status-render.ts +0 -364
- package/src/runs/background/run-status.ts +0 -366
- package/src/runs/background/runner-attempt-output.ts +0 -281
- package/src/runs/background/runner-attempt.ts +0 -354
- package/src/runs/background/runner-child-executor.ts +0 -232
- package/src/runs/background/runner-child-observer.ts +0 -278
- package/src/runs/background/runner-completion-summary.ts +0 -106
- package/src/runs/background/runner-completion.ts +0 -274
- package/src/runs/background/runner-config.ts +0 -52
- package/src/runs/background/runner-contract.ts +0 -51
- package/src/runs/background/runner-dynamic.ts +0 -185
- package/src/runs/background/runner-finalization.ts +0 -203
- package/src/runs/background/runner-graph.ts +0 -91
- package/src/runs/background/runner-initial-status.ts +0 -72
- package/src/runs/background/runner-lifecycle.ts +0 -159
- package/src/runs/background/runner-monitor.ts +0 -401
- package/src/runs/background/runner-parallel.ts +0 -279
- package/src/runs/background/runner-prepare-step.ts +0 -128
- package/src/runs/background/runner-reporting.ts +0 -192
- package/src/runs/background/runner-status.ts +0 -220
- package/src/runs/background/runner-step-output.ts +0 -156
- package/src/runs/background/runner-step-record.ts +0 -76
- package/src/runs/background/runner-step.ts +0 -150
- package/src/runs/background/runner-streaming.ts +0 -220
- package/src/runs/background/runner-workflow.ts +0 -284
- package/src/runs/background/stale-run-reconciler.ts +0 -312
- package/src/runs/background/subagent-runner-launcher.ts +0 -88
- package/src/runs/background/subagent-runner.ts +0 -85
- package/src/runs/background/top-level-async.ts +0 -15
- package/src/runs/foreground/chain-clarify.ts +0 -505
- package/src/runs/foreground/clarification-draft.ts +0 -92
- package/src/runs/foreground/clarify-contracts.ts +0 -33
- package/src/runs/foreground/clarify-invocation.ts +0 -204
- package/src/runs/foreground/clarify-text-editor.ts +0 -229
- package/src/runs/foreground/clarify-view.ts +0 -222
- package/src/runs/foreground/execution-input.ts +0 -401
- package/src/runs/foreground/execution-routing.ts +0 -41
- package/src/runs/foreground/execution-timeout.ts +0 -92
- package/src/runs/foreground/foreground-control.ts +0 -342
- package/src/runs/foreground/foreground-memory.ts +0 -132
- package/src/runs/foreground/invocation-context.ts +0 -88
- package/src/runs/foreground/invocation-execution.ts +0 -465
- package/src/runs/foreground/invocation-expansion.ts +0 -58
- package/src/runs/foreground/management-actions.ts +0 -360
- package/src/runs/foreground/nested-control.ts +0 -248
- package/src/runs/foreground/question-continuation.ts +0 -112
- package/src/runs/foreground/question-control.ts +0 -309
- package/src/runs/foreground/resume-target.ts +0 -330
- package/src/runs/foreground/revival-launch-policy.ts +0 -112
- package/src/runs/foreground/run-async-path.ts +0 -327
- package/src/runs/foreground/run-interrupt.ts +0 -202
- package/src/runs/foreground/run-nudge.ts +0 -355
- package/src/runs/foreground/saved-revival.ts +0 -356
- package/src/runs/foreground/subagent-executor.ts +0 -203
- package/src/runs/foreground/subagent-params.ts +0 -392
- package/src/runs/foreground/wait-observation.ts +0 -160
- package/src/runs/foreground/wait-registration.ts +0 -18
- package/src/runs/foreground/wait-run.ts +0 -366
- package/src/runs/shared/acceptance-contract.ts +0 -458
- package/src/runs/shared/acceptance-defaults.ts +0 -1
- package/src/runs/shared/acceptance-evaluation.ts +0 -349
- package/src/runs/shared/acceptance-finalization.ts +0 -495
- package/src/runs/shared/acceptance-outcome.ts +0 -69
- package/src/runs/shared/acceptance-reports.ts +0 -246
- package/src/runs/shared/acceptance-submission.ts +0 -251
- package/src/runs/shared/acceptance-verification.ts +0 -118
- package/src/runs/shared/acceptance.ts +0 -31
- package/src/runs/shared/chain-outputs.ts +0 -206
- package/src/runs/shared/child-attempt-types.ts +0 -118
- package/src/runs/shared/child-attempt.ts +0 -387
- package/src/runs/shared/child-boundaries.ts +0 -217
- package/src/runs/shared/child-context-filter.ts +0 -53
- package/src/runs/shared/child-event-observer.ts +0 -496
- package/src/runs/shared/child-execution-cwd.ts +0 -162
- package/src/runs/shared/child-execution-outcome.ts +0 -103
- package/src/runs/shared/child-invocation.ts +0 -74
- package/src/runs/shared/child-message-validation.ts +0 -233
- package/src/runs/shared/child-native-accounting.ts +0 -154
- package/src/runs/shared/child-native-observation.ts +0 -79
- package/src/runs/shared/child-observation-spool.ts +0 -193
- package/src/runs/shared/child-observations.ts +0 -229
- package/src/runs/shared/child-presence.ts +0 -6
- package/src/runs/shared/child-route-env.ts +0 -142
- package/src/runs/shared/child-stream-observer.ts +0 -302
- package/src/runs/shared/child-stream-projection.ts +0 -160
- package/src/runs/shared/child-structured-tool.ts +0 -38
- package/src/runs/shared/claude-code.ts +0 -216
- package/src/runs/shared/claude-model.ts +0 -67
- package/src/runs/shared/claude-session.ts +0 -124
- package/src/runs/shared/claude-types.ts +0 -31
- package/src/runs/shared/completion-guard.ts +0 -44
- package/src/runs/shared/control-event-policy.ts +0 -15
- package/src/runs/shared/control-notification-owner.ts +0 -20
- package/src/runs/shared/dynamic-fanout.ts +0 -459
- package/src/runs/shared/dynamic-item.ts +0 -114
- package/src/runs/shared/history-index.ts +0 -130
- package/src/runs/shared/legacy-async-recovery.ts +0 -153
- package/src/runs/shared/legacy-output-recovery.ts +0 -214
- package/src/runs/shared/mcp-config-schema.ts +0 -46
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -465
- package/src/runs/shared/model-fallback.ts +0 -344
- package/src/runs/shared/mutating-tool-guard.ts +0 -295
- package/src/runs/shared/native-finalization-types.ts +0 -29
- package/src/runs/shared/native-finalization.ts +0 -252
- package/src/runs/shared/native-usage.ts +0 -396
- package/src/runs/shared/nested-control-records.ts +0 -178
- package/src/runs/shared/nested-events.ts +0 -45
- package/src/runs/shared/nested-path.ts +0 -65
- package/src/runs/shared/nested-projection.ts +0 -230
- package/src/runs/shared/nested-protocol.ts +0 -67
- package/src/runs/shared/nested-registry.ts +0 -273
- package/src/runs/shared/nested-render.ts +0 -217
- package/src/runs/shared/nested-route.ts +0 -292
- package/src/runs/shared/nested-validation.ts +0 -291
- package/src/runs/shared/owned-child-evidence.ts +0 -184
- package/src/runs/shared/owned-run-list.ts +0 -187
- package/src/runs/shared/owned-run-observation.ts +0 -368
- package/src/runs/shared/owned-run-progress.ts +0 -172
- package/src/runs/shared/owned-run-read-state.ts +0 -7
- package/src/runs/shared/owned-run-results.ts +0 -289
- package/src/runs/shared/owned-run-status.ts +0 -239
- package/src/runs/shared/owned-run-view.ts +0 -65
- package/src/runs/shared/owned-workflow-details.ts +0 -24
- package/src/runs/shared/owner-output.ts +0 -73
- package/src/runs/shared/parallel-utils.ts +0 -93
- package/src/runs/shared/parent-receipts.ts +0 -186
- package/src/runs/shared/parent-usage.ts +0 -344
- package/src/runs/shared/pi-args.ts +0 -280
- package/src/runs/shared/pi-launch-input.ts +0 -48
- package/src/runs/shared/pi-session-launch.ts +0 -94
- package/src/runs/shared/pi-spawn.ts +0 -76
- package/src/runs/shared/run-history-queries.ts +0 -195
- package/src/runs/shared/run-history.ts +0 -221
- package/src/runs/shared/run-id-ambiguity.ts +0 -8
- package/src/runs/shared/run-metadata-paths.ts +0 -17
- package/src/runs/shared/run-metadata.ts +0 -240
- package/src/runs/shared/run-persistence.ts +0 -181
- package/src/runs/shared/run-records.ts +0 -19
- package/src/runs/shared/run-restoration.ts +0 -455
- package/src/runs/shared/run-state-owner.ts +0 -31
- package/src/runs/shared/session-cwd-preload.ts +0 -47
- package/src/runs/shared/single-output.ts +0 -416
- package/src/runs/shared/stable-value.ts +0 -15
- package/src/runs/shared/streaming-text.ts +0 -45
- package/src/runs/shared/structured-output.ts +0 -98
- package/src/runs/shared/subagent-control.ts +0 -352
- package/src/runs/shared/subagent-prompt-runtime.ts +0 -119
- package/src/runs/shared/subagent-tool-loop-guard.ts +0 -139
- package/src/runs/shared/supervisor-question-state.ts +0 -221
- package/src/runs/shared/supervisor-questions.ts +0 -410
- package/src/runs/shared/workflow-graph.ts +0 -422
- package/src/runs/shared/workflow-policy.ts +0 -260
- package/src/runs/shared/worktree-contract.ts +0 -29
- package/src/runs/shared/worktree-hook.ts +0 -181
- package/src/runs/shared/worktree-location.ts +0 -61
- package/src/runs/shared/worktree-preservation.ts +0 -10
- package/src/runs/shared/worktree-process.ts +0 -132
- package/src/runs/shared/worktree.ts +0 -507
- package/src/shared/agent-context-policy.ts +0 -215
- package/src/shared/agent-dir.ts +0 -15
- package/src/shared/artifacts.ts +0 -126
- package/src/shared/atomic-json.ts +0 -19
- package/src/shared/chain-files.ts +0 -72
- package/src/shared/concurrency.ts +0 -27
- package/src/shared/content-preview.ts +0 -117
- package/src/shared/execution-cwd.ts +0 -39
- package/src/shared/file-coalescer.ts +0 -31
- package/src/shared/fork-context.ts +0 -72
- package/src/shared/formatters.ts +0 -125
- package/src/shared/journal-reader.ts +0 -18
- package/src/shared/lazy-tools.ts +0 -85
- package/src/shared/message-output.ts +0 -146
- package/src/shared/model-info.ts +0 -117
- package/src/shared/native-import.ts +0 -25
- package/src/shared/native-session-loader.ts +0 -13
- package/src/shared/native-session.ts +0 -6
- package/src/shared/native-tui.ts +0 -20
- package/src/shared/native-typebox.ts +0 -29
- package/src/shared/prompt-sections.ts +0 -16
- package/src/shared/session-entries.ts +0 -108
- package/src/shared/session-identity.ts +0 -25
- package/src/shared/settings.ts +0 -196
- package/src/shared/status-format.ts +0 -232
- package/src/shared/task-file-policy.ts +0 -35
- package/src/shared/temp-root.ts +0 -158
- package/src/shared/types/acceptance.ts +0 -149
- package/src/shared/types/async.ts +0 -247
- package/src/shared/types/config.ts +0 -139
- package/src/shared/types/details.ts +0 -104
- package/src/shared/types/history.ts +0 -217
- package/src/shared/types/inputs.ts +0 -4
- package/src/shared/types/intercom.ts +0 -57
- package/src/shared/types/launch.ts +0 -39
- package/src/shared/types/messages.ts +0 -104
- package/src/shared/types/nested.ts +0 -153
- package/src/shared/types/owned-runs.ts +0 -148
- package/src/shared/types/progress.ts +0 -106
- package/src/shared/types/questions.ts +0 -103
- package/src/shared/types/results.ts +0 -119
- package/src/shared/types/state.ts +0 -56
- package/src/shared/types/usage.ts +0 -36
- package/src/shared/types/workflow.ts +0 -187
- package/src/shared/ui-mode.ts +0 -5
- package/src/shared/utils.ts +0 -148
- package/src/slash/command-discovery.ts +0 -110
- package/src/slash/command-input.ts +0 -232
- package/src/slash/prompt-template-bridge.ts +0 -161
- package/src/slash/prompt-template-contract.ts +0 -152
- package/src/slash/prompt-template-results.ts +0 -189
- package/src/slash/request-protocol.ts +0 -87
- package/src/slash/result-delivery.ts +0 -312
- package/src/slash/saved-chain.ts +0 -115
- package/src/slash/slash-bridge.ts +0 -224
- package/src/slash/slash-commands.ts +0 -195
- package/src/slash/slash-live-state.ts +0 -350
- package/src/tui/action-hints.ts +0 -155
- package/src/tui/activity-lines.ts +0 -40
- package/src/tui/agent-browser.ts +0 -354
- package/src/tui/agent-controls.ts +0 -355
- package/src/tui/agent-conversation.ts +0 -514
- package/src/tui/agent-dock.ts +0 -250
- package/src/tui/agent-history.ts +0 -68
- package/src/tui/agent-model.ts +0 -78
- package/src/tui/agent-picker.ts +0 -325
- package/src/tui/agent-view.ts +0 -403
- package/src/tui/compact-results.ts +0 -342
- package/src/tui/conversation-details.ts +0 -206
- package/src/tui/conversation-frame.ts +0 -184
- package/src/tui/conversation-history.ts +0 -260
- package/src/tui/conversation-menu.ts +0 -119
- package/src/tui/conversation-notices.ts +0 -116
- package/src/tui/conversation-selection.ts +0 -66
- package/src/tui/conversation-viewport.ts +0 -169
- package/src/tui/direction-message.ts +0 -35
- package/src/tui/display.ts +0 -409
- package/src/tui/editor-viewport.ts +0 -19
- package/src/tui/expanded-content.ts +0 -134
- package/src/tui/expanded-multi.ts +0 -264
- package/src/tui/expanded-single.ts +0 -92
- package/src/tui/history-cards.ts +0 -298
- package/src/tui/history-display.ts +0 -334
- package/src/tui/history-json.ts +0 -17
- package/src/tui/history-metadata.ts +0 -177
- package/src/tui/history-record.ts +0 -321
- package/src/tui/history-text.ts +0 -34
- package/src/tui/indexed-history.ts +0 -149
- package/src/tui/nested-widget.ts +0 -192
- package/src/tui/picker-page.ts +0 -80
- package/src/tui/render.ts +0 -104
- package/src/tui/result-facts.ts +0 -99
- package/src/tui/task-observation.ts +0 -96
- package/src/tui/task-store.ts +0 -432
- package/src/tui/text-values.ts +0 -20
- package/src/tui/view-connections.ts +0 -64
- package/src/tui/view-model.ts +0 -181
- package/src/tui/view-persistence.ts +0 -57
- package/src/tui/view-ports.ts +0 -55
- package/src/tui/view-session.ts +0 -42
- package/src/tui/widget-details.ts +0 -220
- package/src/tui/widget-status.ts +0 -331
- package/src/tui/widget.ts +0 -208
- package/src/tui/workflow-labels.ts +0 -340
- package/src/tui/workflow-outcomes.ts +0 -150
|
@@ -1,24 +1,71 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveConnectedTarget } from "./connection.js";
|
|
2
|
+
import { validateIntercomArguments, toolError } from "./tool-arguments.js";
|
|
2
3
|
import { errorMessage } from "./validation.js";
|
|
4
|
+
function lastPage(result) {
|
|
5
|
+
const identity = `${result.session.name ?? result.session.id} (${result.session.id})`;
|
|
6
|
+
const page = result.entryId === null
|
|
7
|
+
? "No completed assistant response."
|
|
8
|
+
: `Entry: ${result.entryId}\nCharacters (UTF-16): ${result.offset}–${result.offset + result.text.length} of ${result.totalLength}`;
|
|
9
|
+
const next = result.nextOffset === undefined
|
|
10
|
+
? ""
|
|
11
|
+
: `\nNext page: intercom(${JSON.stringify({ action: "last", to: result.session.id, entryId: result.entryId, offset: result.nextOffset })})`;
|
|
12
|
+
return {
|
|
13
|
+
content: [
|
|
14
|
+
{ type: "text", text: result.text },
|
|
15
|
+
{
|
|
16
|
+
type: "text",
|
|
17
|
+
text: `Session: ${identity}\nStatus: ${result.session.status ?? "unknown"}\n${page}${next}`,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
details: { ...result },
|
|
21
|
+
};
|
|
22
|
+
}
|
|
3
23
|
export class IntercomTools {
|
|
4
24
|
owners;
|
|
5
25
|
constructor(owners) {
|
|
6
26
|
this.owners = owners;
|
|
7
27
|
}
|
|
8
|
-
async
|
|
9
|
-
const
|
|
28
|
+
async execute(params, signal, ctx) {
|
|
29
|
+
const invalid = validateIntercomArguments(params);
|
|
30
|
+
if (invalid) {
|
|
31
|
+
return invalid;
|
|
32
|
+
}
|
|
33
|
+
let active;
|
|
34
|
+
try {
|
|
35
|
+
active = await this.owners.connection.ensure();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return toolError(`Intercom not connected: ${errorMessage(error)}`);
|
|
39
|
+
}
|
|
40
|
+
this.owners.connection.syncIdentity(ctx.sessionManager.getSessionId());
|
|
41
|
+
const scope = params.scope ?? "all";
|
|
10
42
|
switch (params.action) {
|
|
11
|
-
case "subscribe":
|
|
12
|
-
case "unsubscribe":
|
|
13
|
-
case "publish":
|
|
14
|
-
case "topics":
|
|
15
|
-
return await this.owners.topicActions.execute(active, params, ctx);
|
|
16
43
|
case "list":
|
|
17
44
|
return await this.owners.inspection.list(active, scope);
|
|
18
45
|
case "status":
|
|
19
46
|
return await this.owners.inspection.status(active, scope, ctx);
|
|
20
47
|
case "pending":
|
|
21
48
|
return this.owners.inspection.pending();
|
|
49
|
+
case "last": {
|
|
50
|
+
if (params.to === undefined || params.to === "") {
|
|
51
|
+
return toolError("Missing 'to' parameter");
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const target = (await resolveConnectedTarget(active, params.to)) ?? params.to;
|
|
55
|
+
const result = await active.last(target, {
|
|
56
|
+
entryId: params.entryId,
|
|
57
|
+
offset: params.offset,
|
|
58
|
+
limit: params.limit,
|
|
59
|
+
});
|
|
60
|
+
if ("error" in result) {
|
|
61
|
+
return toolError(result.error);
|
|
62
|
+
}
|
|
63
|
+
return lastPage(result);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return toolError(`Failed to read last response: ${errorMessage(error)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
22
69
|
case "send":
|
|
23
70
|
return await this.owners.outbound.send(active, params, ctx);
|
|
24
71
|
case "ask":
|
|
@@ -27,25 +74,4 @@ export class IntercomTools {
|
|
|
27
74
|
return await this.owners.outbound.reply(active, params);
|
|
28
75
|
}
|
|
29
76
|
}
|
|
30
|
-
async execute(params, signal, ctx) {
|
|
31
|
-
let active;
|
|
32
|
-
try {
|
|
33
|
-
active = await this.owners.connection.ensure("tool");
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
if (params.action === "topics") {
|
|
37
|
-
this.owners.topics.disconnected();
|
|
38
|
-
return toolText(`Broker unavailable; last saved records follow.\n${this.owners.topics.inspect(params.topic)}`, { connection: "disconnected" });
|
|
39
|
-
}
|
|
40
|
-
return toolError(`Intercom not connected: ${errorMessage(error)}`);
|
|
41
|
-
}
|
|
42
|
-
this.owners.connection.syncIdentity(ctx.sessionManager.getSessionId());
|
|
43
|
-
if (!["subscribe", "unsubscribe", "publish", "topics"].includes(params.action)) {
|
|
44
|
-
const invalid = validateIntercomArguments(params);
|
|
45
|
-
if (invalid) {
|
|
46
|
-
return invalid;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return await this.dispatch(active, params, signal, ctx);
|
|
50
|
-
}
|
|
51
77
|
}
|
|
@@ -135,15 +135,22 @@ function validSessionTopics(session) {
|
|
|
135
135
|
(session.topics === undefined ||
|
|
136
136
|
(isUnknownArray(session.topics) && session.topics.every(isTopicUpdate))));
|
|
137
137
|
}
|
|
138
|
+
function validSessionLineage(value) {
|
|
139
|
+
return (optionalLabel(value.rootSessionId) &&
|
|
140
|
+
optionalLabel(value.parentSessionId) &&
|
|
141
|
+
(value.parentSessionId === undefined || value.rootSessionId === value.parentSessionId));
|
|
142
|
+
}
|
|
143
|
+
function validSessionProject(value) {
|
|
144
|
+
return value === undefined || (typeof value === "string" && /^[a-f0-9]{64}$/.test(value));
|
|
145
|
+
}
|
|
138
146
|
export function isSessionRegistration(value) {
|
|
139
147
|
if (!isRecord(value) || !safeLabel(value.cwd) || !safeLabel(value.model)) {
|
|
140
148
|
return false;
|
|
141
149
|
}
|
|
142
|
-
const validProject = value.projectId === undefined ||
|
|
143
|
-
(typeof value.projectId === "string" && /^[a-f0-9]{64}$/.test(value.projectId));
|
|
144
150
|
return (optionalLabel(value.name) &&
|
|
145
151
|
optionalLabel(value.status) &&
|
|
146
|
-
|
|
152
|
+
validSessionLineage(value) &&
|
|
153
|
+
validSessionProject(value.projectId) &&
|
|
147
154
|
validSessionHealth(value) &&
|
|
148
155
|
validSessionTopics(value));
|
|
149
156
|
}
|
|
@@ -6,7 +6,7 @@ function shellQuote(value) {
|
|
|
6
6
|
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
7
7
|
}
|
|
8
8
|
function localForkStartCommand() {
|
|
9
|
-
return `pi --name worker --extension ${shellQuote(path.join(PACKAGE_ROOT, "src", "
|
|
9
|
+
return `pi --name worker --extension ${shellQuote(path.join(PACKAGE_ROOT, "src", "index.ts"))}`;
|
|
10
10
|
}
|
|
11
11
|
function duplicateNames(sessions) {
|
|
12
12
|
const names = sessions
|
|
@@ -101,7 +101,7 @@ function noPeers(hidden) {
|
|
|
101
101
|
}
|
|
102
102
|
return `No other sessions connected. Start another intercom-enabled session with \`pi --name worker\`, then run \`intercom({ action: "list" })\` again. If you are dogfooding this local fork without installing it, start the peer with \`${localForkStartCommand()}\`.`;
|
|
103
103
|
}
|
|
104
|
-
export function formatSessionListSections(allSessions, id, scope = "
|
|
104
|
+
export function formatSessionListSections(allSessions, id, scope = "all") {
|
|
105
105
|
const current = allSessions.find((session) => session.id === id);
|
|
106
106
|
if (!current) {
|
|
107
107
|
throw new Error("Current session is missing from intercom session list.");
|
|
@@ -118,7 +118,7 @@ export function formatSessionListSections(allSessions, id, scope = "project") {
|
|
|
118
118
|
const currentSection = `**Current session:**\n${row(current, { ...options, self: true })}`;
|
|
119
119
|
const otherSection = `**Other sessions:**\n${others.length === 0 ? noPeers(hidden) : others.map((session) => row(session, { ...options, self: false })).join("\n")}`;
|
|
120
120
|
const hint = hidden > 0
|
|
121
|
-
? `\n\n${hidden} session${hidden === 1 ? "" : "s"} in other projects hidden. Use \`intercom({ action: "list", scope: "all" })\` to show every
|
|
121
|
+
? `\n\n${hidden} session${hidden === 1 ? "" : "s"} in other projects hidden. Use \`intercom({ action: "list", scope: "all" })\` to show every reachable session.`
|
|
122
122
|
: "";
|
|
123
123
|
return `${currentSection}\n\n${otherSection}${hint}`;
|
|
124
124
|
}
|
|
@@ -1,35 +1,4 @@
|
|
|
1
1
|
import { isUnknownArray, recordAt } from "./unknown.js";
|
|
2
|
-
function resultField(path) {
|
|
3
|
-
if (path.length === 2) {
|
|
4
|
-
return path[0] === "result";
|
|
5
|
-
}
|
|
6
|
-
if (path.length === 3) {
|
|
7
|
-
return path[0] === "results" && typeof path[1] === "number";
|
|
8
|
-
}
|
|
9
|
-
return (path.length === 4 &&
|
|
10
|
-
path[0] === "children" &&
|
|
11
|
-
typeof path[1] === "number" &&
|
|
12
|
-
path[2] === "result");
|
|
13
|
-
}
|
|
14
|
-
function summaryField(path) {
|
|
15
|
-
return ((path.length === 1 && path[0] === "summary") ||
|
|
16
|
-
(path.length === 3 &&
|
|
17
|
-
path[0] === "children" &&
|
|
18
|
-
typeof path[1] === "number" &&
|
|
19
|
-
path[2] === "summary"));
|
|
20
|
-
}
|
|
21
|
-
export const ownerProjection = (path) => {
|
|
22
|
-
const field = path.at(-1);
|
|
23
|
-
if (resultField(path)) {
|
|
24
|
-
if (field === "messages") {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
if (["output", "finalOutput", "initialOutput", "rawOutput"].includes(String(field))) {
|
|
28
|
-
return 8192;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return summaryField(path) ? 8192 : true;
|
|
32
|
-
};
|
|
33
2
|
const entryFields = new Set([
|
|
34
3
|
"type",
|
|
35
4
|
"id",
|
package/dist/shared/types.js
CHANGED
|
@@ -1,26 +1,5 @@
|
|
|
1
|
-
/** Public compatibility barrel. Domain contracts depend on each other, never on implementation modules. */
|
|
2
1
|
import * as os from "node:os";
|
|
3
2
|
import * as path from "node:path";
|
|
4
|
-
export const INTERCOM_DETACH_REQUEST_EVENT = "pi-intercom:detach-request";
|
|
5
|
-
export const INTERCOM_DETACH_RESPONSE_EVENT = "pi-intercom:detach-response";
|
|
6
|
-
export const SUBAGENT_ASYNC_STARTED_EVENT = "subagent:async-started";
|
|
7
|
-
export const SUBAGENT_ASYNC_COMPLETE_EVENT = "subagent:async-complete";
|
|
8
|
-
export const SUBAGENT_CONTROL_EVENT = "subagent:control-event";
|
|
9
|
-
export const SUBAGENT_CONTROL_INTERCOM_EVENT = "subagent:control-intercom";
|
|
10
|
-
export const SUBAGENT_RESULT_INTERCOM_EVENT = "subagent:result-intercom";
|
|
11
|
-
export const SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT = "subagent:result-intercom-delivery";
|
|
12
|
-
export const SUBAGENT_LIVE_INTERCOM_EVENT = "subagent:live-intercom";
|
|
13
|
-
export const SUBAGENT_LIVE_INTERCOM_DELIVERY_EVENT = "subagent:live-intercom-delivery";
|
|
14
|
-
export const SUBAGENT_INTERCOM_HEALTH_REQUEST_EVENT = "subagent:intercom-health-request";
|
|
15
|
-
export const SUBAGENT_INTERCOM_HEALTH_RESPONSE_EVENT = "subagent:intercom-health-response";
|
|
16
|
-
export const SUBAGENT_INTERCOM_IDENTITY_REQUEST_EVENT = "subagent:intercom-identity-request";
|
|
17
|
-
export const SUBAGENT_INTERCOM_IDENTITY_RESPONSE_EVENT = "subagent:intercom-identity-response";
|
|
18
|
-
// Constants
|
|
19
|
-
// ============================================================================
|
|
20
|
-
export const DEFAULT_MAX_OUTPUT = {
|
|
21
|
-
bytes: 200 * 1024,
|
|
22
|
-
lines: 5000,
|
|
23
|
-
};
|
|
24
3
|
function sanitizeTempScopeSegment(value) {
|
|
25
4
|
const sanitized = value
|
|
26
5
|
.trim()
|
|
@@ -65,8 +44,6 @@ function resolveHomeTempScopeId() {
|
|
|
65
44
|
}
|
|
66
45
|
return "shared";
|
|
67
46
|
}
|
|
68
|
-
const MAX_PARALLEL = 8;
|
|
69
|
-
export const MAX_CONCURRENCY = 4;
|
|
70
47
|
export function resolveTempRootDir(configured = process.env.PI_SUBAGENT_TEMP_ROOT) {
|
|
71
48
|
const fallback = path.join(os.tmpdir(), `pi-subagents-${resolveTempScopeId()}`);
|
|
72
49
|
if (configured === undefined || configured.trim().length === 0) {
|
|
@@ -78,175 +55,3 @@ export function resolveTempRootDir(configured = process.env.PI_SUBAGENT_TEMP_ROO
|
|
|
78
55
|
}
|
|
79
56
|
return resolved;
|
|
80
57
|
}
|
|
81
|
-
export const TEMP_ROOT_DIR = resolveTempRootDir();
|
|
82
|
-
export const RESULTS_DIR = path.join(TEMP_ROOT_DIR, "async-subagent-results");
|
|
83
|
-
export const ASYNC_DIR = path.join(TEMP_ROOT_DIR, "async-subagent-runs");
|
|
84
|
-
export const RUNNER_ERROR_LOG_FILE = "runner-error.log";
|
|
85
|
-
export const CHAIN_RUNS_DIR = path.join(TEMP_ROOT_DIR, "chain-runs");
|
|
86
|
-
export const TEMP_ARTIFACTS_DIR = path.join(TEMP_ROOT_DIR, "artifacts");
|
|
87
|
-
export const WIDGET_KEY = "subagent-async";
|
|
88
|
-
export const SLASH_RESULT_TYPE = "subagent-slash-result";
|
|
89
|
-
export const SLASH_SUBAGENT_REQUEST_EVENT = "subagent:slash:request";
|
|
90
|
-
export const SLASH_SUBAGENT_STARTED_EVENT = "subagent:slash:started";
|
|
91
|
-
export const SLASH_SUBAGENT_RESPONSE_EVENT = "subagent:slash:response";
|
|
92
|
-
export const SLASH_SUBAGENT_UPDATE_EVENT = "subagent:slash:update";
|
|
93
|
-
export const SLASH_SUBAGENT_CANCEL_EVENT = "subagent:slash:cancel";
|
|
94
|
-
export const POLL_INTERVAL_MS = 1000;
|
|
95
|
-
export const MAX_WIDGET_JOBS = 4;
|
|
96
|
-
export const DEFAULT_SUBAGENT_MAX_DEPTH = 1;
|
|
97
|
-
export const SUBAGENT_ACTIONS = [
|
|
98
|
-
"list",
|
|
99
|
-
"get",
|
|
100
|
-
"create",
|
|
101
|
-
"update",
|
|
102
|
-
"delete",
|
|
103
|
-
"status",
|
|
104
|
-
"history",
|
|
105
|
-
"search",
|
|
106
|
-
"interrupt",
|
|
107
|
-
"extend",
|
|
108
|
-
"resume",
|
|
109
|
-
"nudge",
|
|
110
|
-
"questions",
|
|
111
|
-
"answer",
|
|
112
|
-
"review",
|
|
113
|
-
"doctor",
|
|
114
|
-
];
|
|
115
|
-
export const DEFAULT_FORK_PREAMBLE = "You are a delegated subagent running from a fork of the parent session. " +
|
|
116
|
-
"Treat the inherited conversation as reference-only context, not a live thread to continue. " +
|
|
117
|
-
"Do not continue or answer prior messages as if they are waiting for a reply. " +
|
|
118
|
-
"Your sole job is to execute the task below and return a focused result for that task using your tools.";
|
|
119
|
-
function normalizeTopLevelParallelValue(value) {
|
|
120
|
-
let parsed = NaN;
|
|
121
|
-
if (typeof value === "number") {
|
|
122
|
-
parsed = value;
|
|
123
|
-
}
|
|
124
|
-
else if (typeof value === "string") {
|
|
125
|
-
parsed = Number(value);
|
|
126
|
-
}
|
|
127
|
-
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
return parsed;
|
|
131
|
-
}
|
|
132
|
-
export function resolveTopLevelParallelMaxTasks(value) {
|
|
133
|
-
return normalizeTopLevelParallelValue(value) ?? MAX_PARALLEL;
|
|
134
|
-
}
|
|
135
|
-
export function resolveTopLevelParallelConcurrency(override, configValue) {
|
|
136
|
-
return (normalizeTopLevelParallelValue(override) ??
|
|
137
|
-
normalizeTopLevelParallelValue(configValue) ??
|
|
138
|
-
MAX_CONCURRENCY);
|
|
139
|
-
}
|
|
140
|
-
export function getAsyncConfigPath(suffix) {
|
|
141
|
-
return path.join(TEMP_ROOT_DIR, `async-cfg-${suffix}.json`);
|
|
142
|
-
}
|
|
143
|
-
export function wrapForkTask(task, preamble) {
|
|
144
|
-
if (preamble === false) {
|
|
145
|
-
return task;
|
|
146
|
-
}
|
|
147
|
-
const effectivePreamble = preamble ?? DEFAULT_FORK_PREAMBLE;
|
|
148
|
-
const wrappedPrefix = `${effectivePreamble}\n\nTask:\n`;
|
|
149
|
-
if (task.startsWith(wrappedPrefix)) {
|
|
150
|
-
return task;
|
|
151
|
-
}
|
|
152
|
-
return `${wrappedPrefix}${task}`;
|
|
153
|
-
}
|
|
154
|
-
// ============================================================================
|
|
155
|
-
// Recursion Depth Guard
|
|
156
|
-
// ============================================================================
|
|
157
|
-
export function normalizeMaxSubagentDepth(value) {
|
|
158
|
-
let parsed = NaN;
|
|
159
|
-
if (typeof value === "number") {
|
|
160
|
-
parsed = value;
|
|
161
|
-
}
|
|
162
|
-
else if (typeof value === "string") {
|
|
163
|
-
parsed = Number(value);
|
|
164
|
-
}
|
|
165
|
-
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
166
|
-
return undefined;
|
|
167
|
-
}
|
|
168
|
-
return parsed;
|
|
169
|
-
}
|
|
170
|
-
export function resolveCurrentMaxSubagentDepth(configMaxDepth) {
|
|
171
|
-
return (normalizeMaxSubagentDepth(process.env.PI_SUBAGENT_MAX_DEPTH) ??
|
|
172
|
-
normalizeMaxSubagentDepth(configMaxDepth) ??
|
|
173
|
-
DEFAULT_SUBAGENT_MAX_DEPTH);
|
|
174
|
-
}
|
|
175
|
-
export function resolveChildMaxSubagentDepth(parentMaxDepth, agentMaxDepth) {
|
|
176
|
-
const normalizedParent = normalizeMaxSubagentDepth(parentMaxDepth) ?? DEFAULT_SUBAGENT_MAX_DEPTH;
|
|
177
|
-
const normalizedAgent = normalizeMaxSubagentDepth(agentMaxDepth);
|
|
178
|
-
return normalizedAgent === undefined
|
|
179
|
-
? normalizedParent
|
|
180
|
-
: Math.min(normalizedParent, normalizedAgent);
|
|
181
|
-
}
|
|
182
|
-
function parseSubagentDepth(value) {
|
|
183
|
-
if (value === undefined || value === null || value === "") {
|
|
184
|
-
return 0;
|
|
185
|
-
}
|
|
186
|
-
const depth = Number(value);
|
|
187
|
-
return Number.isInteger(depth) && depth >= 0 ? depth : undefined;
|
|
188
|
-
}
|
|
189
|
-
export function checkSubagentDepth(configMaxDepth) {
|
|
190
|
-
const maxDepth = resolveCurrentMaxSubagentDepth(configMaxDepth);
|
|
191
|
-
const depth = parseSubagentDepth(process.env.PI_SUBAGENT_DEPTH);
|
|
192
|
-
if (depth === undefined) {
|
|
193
|
-
return { blocked: true, depth: maxDepth, maxDepth };
|
|
194
|
-
}
|
|
195
|
-
return { blocked: depth >= maxDepth, depth, maxDepth };
|
|
196
|
-
}
|
|
197
|
-
export function getSubagentDepthEnv(maxDepth) {
|
|
198
|
-
const childMaxDepth = normalizeMaxSubagentDepth(maxDepth) ?? resolveCurrentMaxSubagentDepth();
|
|
199
|
-
const parentDepth = parseSubagentDepth(process.env.PI_SUBAGENT_DEPTH);
|
|
200
|
-
const nextDepth = parentDepth === undefined ? childMaxDepth : parentDepth + 1;
|
|
201
|
-
return {
|
|
202
|
-
PI_SUBAGENT_DEPTH: String(nextDepth),
|
|
203
|
-
PI_SUBAGENT_MAX_DEPTH: String(childMaxDepth),
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
// ============================================================================
|
|
207
|
-
// Utility Functions
|
|
208
|
-
// ============================================================================
|
|
209
|
-
function formatBytes(bytes) {
|
|
210
|
-
if (bytes < 1024) {
|
|
211
|
-
return `${bytes}B`;
|
|
212
|
-
}
|
|
213
|
-
if (bytes < 1024 * 1024) {
|
|
214
|
-
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
215
|
-
}
|
|
216
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
217
|
-
}
|
|
218
|
-
export function truncateOutput(output, config, artifactPath) {
|
|
219
|
-
const lines = output.split("\n");
|
|
220
|
-
const bytes = Buffer.byteLength(output, "utf-8");
|
|
221
|
-
if (bytes <= config.bytes && lines.length <= config.lines) {
|
|
222
|
-
return { text: output, truncated: false };
|
|
223
|
-
}
|
|
224
|
-
let truncatedLines = lines;
|
|
225
|
-
if (lines.length > config.lines) {
|
|
226
|
-
truncatedLines = lines.slice(0, config.lines);
|
|
227
|
-
}
|
|
228
|
-
let result = truncatedLines.join("\n");
|
|
229
|
-
if (Buffer.byteLength(result, "utf-8") > config.bytes) {
|
|
230
|
-
let low = 0;
|
|
231
|
-
let high = result.length;
|
|
232
|
-
while (low < high) {
|
|
233
|
-
const mid = Math.floor((low + high + 1) / 2);
|
|
234
|
-
if (Buffer.byteLength(result.slice(0, mid), "utf-8") <= config.bytes) {
|
|
235
|
-
low = mid;
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
high = mid - 1;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
result = result.slice(0, low);
|
|
242
|
-
}
|
|
243
|
-
const keptLines = result.split("\n").length;
|
|
244
|
-
const marker = `[TRUNCATED: showing first ${keptLines} of ${lines.length} lines, ${formatBytes(Buffer.byteLength(result))} of ${formatBytes(bytes)}${artifactPath !== undefined && artifactPath.length > 0 ? ` - full output at ${artifactPath}` : ""}]\n`;
|
|
245
|
-
return {
|
|
246
|
-
text: marker + result,
|
|
247
|
-
truncated: true,
|
|
248
|
-
originalBytes: bytes,
|
|
249
|
-
originalLines: lines.length,
|
|
250
|
-
artifactPath,
|
|
251
|
-
};
|
|
252
|
-
}
|
package/docs/code-quality.md
CHANGED
|
@@ -26,7 +26,7 @@ Tests retain complexity 15, depth 4 and parameters 6. Cohesive test suites have
|
|
|
26
26
|
no size or statement limits.
|
|
27
27
|
|
|
28
28
|
Formatting uses width 100, two spaces, LF and double quotes. npm owns lockfile
|
|
29
|
-
formatting.
|
|
29
|
+
formatting. Build outputs keep their own bytes.
|
|
30
30
|
The VS Code Oxc extension uses these same lint and formatting configurations.
|
|
31
31
|
|
|
32
32
|
`npm run ci` runs lint, formatting, TypeScript, package/install smokes and all
|
|
@@ -34,5 +34,6 @@ tests. CI separately qualifies the latest official Pi on GitHub-hosted Linux and
|
|
|
34
34
|
the maintained fork on Linux and macOS. There is no custom checker build, probe
|
|
35
35
|
suite or self-hosted runner requirement.
|
|
36
36
|
|
|
37
|
-
CI's lint job also
|
|
38
|
-
|
|
37
|
+
CI's lint job also enforces the production line/byte shrink budget before
|
|
38
|
+
qualification substitutes the selected host graph. The retired workflow schema
|
|
39
|
+
generator and its patching dependency are not part of the new runtime.
|
package/docs/development.md
CHANGED
|
@@ -1,99 +1,61 @@
|
|
|
1
|
-
# Development
|
|
1
|
+
# Development
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
See [Code quality](code-quality.md) for the strict Oxlint/Oxfmt rules and commands. `npm run ci` runs lint and formatting before TypeScript, package checks and tests.
|
|
8
|
-
|
|
9
|
-
`npm run check:compat` uses the selected host installed in this checkout, never a hidden Pi from PATH. It runs full CI with actual native editor receipts: a supplied clean `PI_EDITOR_RECEIPT_TEST_ROOT` stays read-only, otherwise the owning runner snapshots public `pi-apply-edits` main once in a temporary checkout, records its exact Git SHA, installs only its third-party runtime dependencies, and cleans its owned copy. Repository CI resolves that editor SHA once for all host/platform lanes. It checks host SDK/manifest-bin identity, typechecks, builds, and qualifies both compiled entries with a private Intercom broker through the native SDK and bundled RPC CLI. Official hosts exercise same/different-cwd resume, acceptance, structured output, native result routing/ownership and tool activation. No provider credentials or inference services are used.
|
|
10
|
-
|
|
11
|
-
Repository CI resolves latest stable official Pi and maintained fork main once, then freezes that version/SHA across the Linux/macOS lanes and release qualification. Full `npm run ci`, selected-host native contracts, Git production builds and packed-install smokes remain required.
|
|
12
|
-
|
|
13
|
-
Fork jobs supply `PI_COMPAT_HOST=fork`, `PI_COMPAT_EXPECTED_VERSION`, `PI_COMPAT_EXPECTED_PACKAGE_DIR`, `PI_HOST_INDEX`, and `PI_HOST_CLI` to verify the selected SDK and CLI. The official job uses the resolved latest stable cohort with `PI_COMPAT_HOST=official`. Both targets use ordinary 1.0 lifecycle and finalized tool-result accounting, without checkpoint, immediate-usage or pending-call APIs. Unsupported hosts fail qualification rather than skip native checks. See [host capabilities](reference.md#host-capabilities-and-result-delivery) and [limitations](intercom.md#limitations).
|
|
14
|
-
|
|
15
|
-
For a fresh development worktree, run `npm ci` before launching Pi there: project-local `.pi/extensions` can autoload before dependencies exist. Alternatively launch from a neutral directory and use `change_dir` to enter the owned worktree after startup. Do not disable all extensions or remove project extensions to hide missing dependencies.
|
|
16
|
-
|
|
17
|
-
Use an empty HOME outside your real home ancestry and a short temporary directory whose ancestors have no project/package or agent markers. Set HOME, TMPDIR, TMP, TEMP, cache and fixture cwd consistently; never create mutable fixtures beneath the real home or retained evidence directory. Child tests use local fixtures and their own broker/profile. CI runs the latest Node 24 release on Linux and macOS without claiming a full platform-by-host matrix.
|
|
18
|
-
|
|
19
|
-
The completion guard recognizes verified `modifiedFiles` receipts from pi-apply-edits v1's `apply_patch`, `replace_text`, and `write_files`, including partial publication errors. Previews and unchanged results do not count as mutations. To exercise the real editor through native SDK events, use an installed v1 editor checkout:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
PI_EDITOR_RECEIPT_TEST_ROOT=/absolute/path/to/pi-apply-edits \
|
|
23
|
-
node --test test/integration/native-editor-receipts.test.ts
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
`PI_EDITOR_RECEIPT_TEST_SDK` selects another installed host package root; `PI_EDITOR_RECEIPT_EVIDENCE_DIR` retains receipts and fixture files. Without an editor checkout, this optional integration test skips.
|
|
27
|
-
|
|
28
|
-
### SDK embeddings of runtime-only installations
|
|
29
|
-
|
|
30
|
-
Before loading a pruned package with `DefaultResourceLoader`, set `process.env.PI_PACKAGE_DIR = getPackageDir()` from the **selected SDK**. This is the existing host-location contract for native session APIs and detached runners. Alternatively the host must be discoverable through the extension's dependency graph or an actual Pi executable on PATH. CLI consumers resolve their own host normally.
|
|
31
|
-
|
|
32
|
-
Detached history workers need one of those host-location sources to resolve the selected host's terminal-stripping implementation. The parent uses Pi's normal extension-loader imports without loading another runtime. Qualification covers both the explicit-host SDK path and the real bundled CLI with a production-only package.
|
|
33
|
-
|
|
34
|
-
To diagnose the full suite against the locked published Pi dependencies:
|
|
3
|
+
Use a dedicated worktree, the committed npm lockfile, and a ready-for-review PR.
|
|
4
|
+
Never edit source or tests while checks run in that checkout. Do not modify an
|
|
5
|
+
active installed copy or reload the user's sessions to test a candidate.
|
|
35
6
|
|
|
36
7
|
```bash
|
|
37
8
|
npm ci
|
|
38
|
-
npm run
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
## Local test watchdog
|
|
92
|
-
|
|
93
|
-
`npm test`, `npm run test:unit`, `npm run test:integration`, and `npm run test:all` run through `scripts/run-tests.mjs`, which applies a per-suite local watchdog so hung child-process or worktree tests fail with the command context instead of hanging forever. The default is 300000ms for units and 1200000ms for integration. Override it when debugging slow local runs:
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
PI_TEST_TIMEOUT_MS=1800000 npm run test:integration
|
|
97
|
-
# or
|
|
98
|
-
node scripts/run-tests.mjs integration --timeout-ms 1800000
|
|
99
|
-
```
|
|
9
|
+
npm run lint
|
|
10
|
+
npm run format:check
|
|
11
|
+
npm run typecheck
|
|
12
|
+
node scripts/measure-size.mjs
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Run narrow owner-boundary tests locally through `scripts/run-tests.mjs`. Full
|
|
16
|
+
`npm run ci` belongs in hosted CI and includes package/install smokes and the
|
|
17
|
+
complete suites. Keep the strict Oxlint/Oxfmt rules; see [code quality](code-quality.md).
|
|
18
|
+
|
|
19
|
+
## Runtime qualification
|
|
20
|
+
|
|
21
|
+
Qualify the latest stable official Pi and the intended fork revision separately.
|
|
22
|
+
Record the exact package root, revision/build, Node binary, and executed test
|
|
23
|
+
commands. Matching versions do not establish matching runtime behavior.
|
|
24
|
+
|
|
25
|
+
Production-only installs must resolve the selected host's SDK and TypeBox, not
|
|
26
|
+
shadow them with this package's development graph. Exercise the packed single
|
|
27
|
+
entry through the real Pi loader and an actual native child session. Native faux
|
|
28
|
+
providers can test tools, receipts, journals, process lifecycle and output without
|
|
29
|
+
paid model calls; they are not live-model evidence.
|
|
30
|
+
|
|
31
|
+
Real-model acceptance additionally checks that full forked history preserves an
|
|
32
|
+
actual earlier delegation result, and that ordinary main/child sessions discover,
|
|
33
|
+
message, and read last responses across agent directories under the confirmed
|
|
34
|
+
two-level topology. Never publish credentials or private transcripts as evidence.
|
|
35
|
+
|
|
36
|
+
## Isolation and safety
|
|
37
|
+
|
|
38
|
+
Every test/smoke broker uses a short, explicit `PI_INTERCOM_RUNTIME_DIR` owned by
|
|
39
|
+
the fixture. Do not touch `/tmp/pi-intercom-<uid>` to test namespace behavior on a
|
|
40
|
+
workstation with active sessions. Tests for the default path inspect it without
|
|
41
|
+
starting or deleting the user's broker. Stop owned processes and remove temporary
|
|
42
|
+
resources even on failure or signal cancellation.
|
|
43
|
+
|
|
44
|
+
Preserve native receipt, cold-crash, shutdown, continuation and broker contracts
|
|
45
|
+
at their actual SDK, journal, filesystem or process boundary. Carry distinct
|
|
46
|
+
assertions into the keeper before deleting an old test. Feature retirement is not
|
|
47
|
+
proof that an unrelated safety assertion can disappear. Expected values must be
|
|
48
|
+
independent of production helpers; observe actual readiness/publication before
|
|
49
|
+
negative assertions. A sleep does not prove an owner processed its input.
|
|
50
|
+
|
|
51
|
+
## Size gate
|
|
52
|
+
|
|
53
|
+
`scripts/measure-size.mjs` counts source, production scripts, generated code and
|
|
54
|
+
schemas, including new untracked files. `--report` prints without enforcing.
|
|
55
|
+
The ceilings are 16,000 source TypeScript lines, 20,000 total production lines,
|
|
56
|
+
and 1 MiB total production bytes. Tests have no deletion quota. Moving machinery
|
|
57
|
+
into generated/minified output does not evade the gate.
|
|
58
|
+
|
|
59
|
+
[The rebuild evidence](single-agent-rebuild.md) records the baseline, confirmed
|
|
60
|
+
design, test-transfer obligations, and exact selected host identities. Update it
|
|
61
|
+
with measured final evidence; do not confuse planned gates with passed checks.
|