@fitchmultz/pi-subagents 0.49.1 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -1
- package/README.md +119 -94
- package/dist/agent/contracts.js +104 -0
- package/dist/agent/cwd.js +51 -0
- package/dist/agent/host.js +69 -0
- package/dist/agent/index.js +456 -0
- package/dist/agent/journal-tail.js +142 -0
- package/dist/agent/launch.js +99 -0
- package/dist/agent/legacy.js +183 -0
- package/dist/agent/notifications.js +210 -0
- package/dist/agent/observation-state.js +246 -0
- package/dist/agent/observation-view.js +258 -0
- package/dist/agent/observation.js +346 -0
- package/dist/agent/observe-card.js +243 -0
- package/dist/agent/observe-chrome.js +85 -0
- package/dist/agent/observe-client.js +285 -0
- package/dist/agent/observe-layout.js +65 -0
- package/dist/agent/observe-reading.js +84 -0
- package/dist/agent/observe-screen.js +436 -0
- package/dist/agent/observe-transcript.js +382 -0
- package/dist/agent/observe.js +441 -0
- package/dist/agent/process.js +346 -0
- package/dist/agent/receipts.js +147 -0
- package/dist/agent/runner.js +477 -0
- package/dist/agent/saved.js +195 -0
- package/dist/agent/shell.js +44 -0
- package/dist/agent/storage.js +130 -0
- package/dist/agent/tool-schemas.js +20 -0
- package/dist/agent/typebox.js +25 -0
- package/dist/agent/usage.js +117 -0
- package/dist/agent/view.js +194 -0
- package/dist/agent/wake.js +99 -0
- package/dist/build-info.js +1 -0
- package/dist/index.js +8 -0
- package/dist/intercom-client.d.ts +26 -0
- package/dist/intercom-client.js +45 -0
- package/dist/pi-intercom/agent-dir.d.ts +1 -0
- package/dist/pi-intercom/bridge-config.js +12 -19
- package/dist/pi-intercom/bridge-http.js +1 -2
- package/dist/pi-intercom/bridge-mailbox.js +2 -7
- package/dist/pi-intercom/bridge-protocol.js +3 -10
- package/dist/pi-intercom/bridge-routes.js +15 -186
- package/dist/pi-intercom/bridge-session.js +4 -97
- package/dist/pi-intercom/bridge.js +12 -35
- package/dist/pi-intercom/broker/broker.js +57 -56
- package/dist/pi-intercom/broker/client-last.d.ts +13 -0
- package/dist/pi-intercom/broker/client-last.js +60 -0
- package/dist/pi-intercom/broker/client.d.ts +60 -0
- package/dist/pi-intercom/broker/client.js +75 -4
- package/dist/pi-intercom/broker/connection.d.ts +29 -0
- package/dist/pi-intercom/broker/connection.js +5 -18
- package/dist/pi-intercom/broker/framing.d.ts +17 -0
- package/dist/pi-intercom/broker/framing.js +10 -7
- package/dist/pi-intercom/broker/guard.js +23 -0
- package/dist/pi-intercom/broker/last.d.ts +26 -0
- package/dist/pi-intercom/broker/last.js +198 -0
- package/dist/pi-intercom/broker/paths.d.ts +13 -0
- package/dist/pi-intercom/broker/paths.js +58 -16
- package/dist/pi-intercom/broker/pid.js +5 -1
- package/dist/pi-intercom/broker/server-connection.js +37 -0
- package/dist/pi-intercom/broker/snapshot-reader.d.ts +9 -0
- package/dist/pi-intercom/broker/snapshots.d.ts +29 -0
- package/dist/pi-intercom/broker/spawn.js +32 -16
- package/dist/pi-intercom/broker/targets.d.ts +9 -0
- package/dist/pi-intercom/broker/targets.js +24 -0
- package/dist/pi-intercom/config.js +0 -23
- package/dist/pi-intercom/connection.js +40 -72
- package/dist/pi-intercom/identity.js +15 -44
- package/dist/pi-intercom/inbound-delivery.js +20 -125
- package/dist/pi-intercom/inbound-journal.js +85 -73
- package/dist/pi-intercom/inbound-record.js +20 -49
- package/dist/pi-intercom/inbound.js +17 -90
- package/dist/pi-intercom/index.js +11 -47
- package/dist/pi-intercom/last-message.js +46 -0
- package/dist/pi-intercom/lifecycle.js +96 -36
- package/dist/pi-intercom/message-format.js +1 -32
- package/dist/pi-intercom/outbound.js +14 -16
- package/dist/pi-intercom/reply-tracker.js +9 -18
- package/dist/pi-intercom/reply-wait.js +17 -108
- package/dist/pi-intercom/runtime-types.js +0 -1
- package/dist/pi-intercom/session-events.js +5 -21
- package/dist/pi-intercom/session-targets.d.ts +24 -0
- package/dist/pi-intercom/tool-arguments.js +4 -0
- package/dist/pi-intercom/tool-registration.js +8 -86
- package/dist/pi-intercom/tool-results.js +5 -7
- package/dist/pi-intercom/tool-schemas.js +13 -67
- package/dist/pi-intercom/tools.js +55 -29
- package/dist/pi-intercom/types.d.ts +212 -0
- package/dist/pi-intercom/types.js +62 -4
- package/dist/pi-intercom/ui/session-format.js +3 -3
- package/dist/pi-intercom/validation.d.ts +12 -0
- package/dist/pi-intercom/validation.js +3 -0
- package/dist/shared/bounded-json.js +151 -0
- package/dist/shared/compact-cards.js +66 -0
- package/dist/shared/journal-frames.js +3 -6
- package/dist/shared/journal-projections.js +0 -31
- package/dist/shared/json-projection.js +267 -129
- package/dist/shared/native-journal.js +123 -56
- package/dist/shared/post-exit-stdio-guard.js +120 -7
- package/dist/shared/tui-action.js +29 -0
- package/dist/shared/types.js +0 -195
- package/dist/shared/unknown.d.ts +9 -0
- package/docs/code-quality.md +6 -3
- package/docs/development.md +93 -92
- package/docs/intercom-bridge.md +211 -415
- package/docs/intercom.md +362 -593
- package/docs/performance.md +185 -192
- package/docs/reference.md +282 -1458
- package/docs/retired-history-maintenance.md +252 -0
- package/package.json +33 -27
- package/scripts/archive-retired-history.mjs +464 -0
- package/scripts/build.mjs +49 -29
- package/scripts/intercom-bridge-credentials.mjs +1 -1
- package/scripts/intercom-remote.mjs +55 -272
- package/scripts/local-install-smoke.mjs +3 -1
- package/scripts/measure-size.mjs +64 -0
- package/scripts/native-package-smoke.mjs +409 -110
- package/scripts/package-smoke.mjs +184 -358
- package/scripts/prepare.mjs +2 -2
- package/scripts/real-pi-live.mjs +377 -0
- package/scripts/real-pi-processes.mjs +12 -39
- package/scripts/real-pi-smoke.mjs +39 -306
- package/scripts/run-tests.mjs +5 -2
- package/scripts/typescript.mjs +35 -0
- package/skills/pi-intercom/SKILL.md +54 -107
- package/skills/pi-subagents/SKILL.md +76 -72
- package/src/agent/contracts.ts +118 -0
- package/src/agent/cwd.ts +69 -0
- package/src/agent/host.ts +81 -0
- package/src/agent/index.ts +520 -0
- package/src/agent/journal-tail.ts +172 -0
- package/src/agent/launch.ts +136 -0
- package/src/agent/legacy.ts +221 -0
- package/src/agent/notifications.ts +256 -0
- package/src/agent/observation-state.ts +277 -0
- package/src/agent/observation-view.ts +267 -0
- package/src/agent/observation.ts +405 -0
- package/src/agent/observe-card.ts +304 -0
- package/src/agent/observe-chrome.ts +170 -0
- package/src/agent/observe-client.ts +318 -0
- package/src/agent/observe-layout.ts +79 -0
- package/src/agent/observe-reading.ts +97 -0
- package/src/agent/observe-screen.ts +481 -0
- package/src/agent/observe-transcript.ts +434 -0
- package/src/agent/observe.ts +473 -0
- package/src/agent/process.ts +385 -0
- package/src/agent/receipts.ts +178 -0
- package/src/agent/runner.ts +515 -0
- package/src/agent/saved.ts +220 -0
- package/src/agent/shell.ts +57 -0
- package/src/agent/storage.ts +139 -0
- package/src/agent/tool-schemas.ts +33 -0
- package/src/agent/typebox.ts +22 -0
- package/src/agent/usage.ts +133 -0
- package/src/agent/view.ts +296 -0
- package/src/agent/wake.ts +107 -0
- package/src/index.ts +10 -0
- package/src/intercom-client.ts +108 -0
- package/src/pi-intercom/bridge-config.ts +13 -24
- package/src/pi-intercom/bridge-http.ts +1 -2
- package/src/pi-intercom/bridge-mailbox.ts +8 -8
- package/src/pi-intercom/bridge-protocol.ts +7 -11
- package/src/pi-intercom/bridge-routes.ts +29 -277
- package/src/pi-intercom/bridge-session.ts +5 -116
- package/src/pi-intercom/bridge.ts +12 -35
- package/src/pi-intercom/broker/broker.ts +63 -74
- package/src/pi-intercom/broker/client-last.ts +78 -0
- package/src/pi-intercom/broker/client.ts +87 -23
- package/src/pi-intercom/broker/connection.ts +5 -17
- package/src/pi-intercom/broker/framing.ts +11 -8
- package/src/pi-intercom/broker/guard.ts +33 -0
- package/src/pi-intercom/broker/last.ts +275 -0
- package/src/pi-intercom/broker/paths.ts +65 -16
- package/src/pi-intercom/broker/pid.ts +6 -1
- package/src/pi-intercom/broker/server-connection.ts +63 -0
- package/src/pi-intercom/broker/spawn.ts +44 -16
- package/src/pi-intercom/broker/targets.ts +42 -0
- package/src/pi-intercom/config.ts +0 -27
- package/src/pi-intercom/connection.ts +60 -92
- package/src/pi-intercom/identity.ts +24 -49
- package/src/pi-intercom/inbound-delivery.ts +25 -154
- package/src/pi-intercom/inbound-journal.ts +105 -86
- package/src/pi-intercom/inbound-record.ts +23 -65
- package/src/pi-intercom/inbound.ts +24 -117
- package/src/pi-intercom/index.ts +13 -49
- package/src/pi-intercom/last-message.ts +64 -0
- package/src/pi-intercom/lifecycle.ts +126 -50
- package/src/pi-intercom/message-format.ts +1 -34
- package/src/pi-intercom/outbound.ts +23 -17
- package/src/pi-intercom/reply-tracker.ts +10 -25
- package/src/pi-intercom/reply-wait.ts +23 -129
- package/src/pi-intercom/runtime-types.ts +5 -59
- package/src/pi-intercom/session-events.ts +7 -35
- package/src/pi-intercom/tool-arguments.ts +6 -0
- package/src/pi-intercom/tool-registration.ts +12 -109
- package/src/pi-intercom/tool-results.ts +10 -9
- package/src/pi-intercom/tool-schemas.ts +13 -108
- package/src/pi-intercom/tools.ts +58 -44
- package/src/pi-intercom/transport.ts +1 -0
- package/src/pi-intercom/types.ts +156 -6
- package/src/pi-intercom/ui/session-format.ts +3 -3
- package/src/pi-intercom/validation.ts +4 -0
- package/src/shared/bounded-json.ts +162 -0
- package/src/shared/compact-cards.ts +118 -0
- package/src/shared/journal-frames.ts +3 -19
- package/src/shared/journal-projections.ts +0 -35
- package/src/shared/json-projection.ts +267 -147
- package/src/shared/native-journal.ts +157 -75
- package/src/shared/post-exit-stdio-guard.ts +172 -8
- package/src/shared/tui-action.ts +39 -0
- package/src/shared/types.ts +0 -257
- package/tsconfig.client.json +8 -0
- package/tsconfig.json +1 -0
- package/agents/context-builder.md +0 -115
- package/agents/debugger.md +0 -58
- package/agents/delegate.md +0 -14
- package/agents/fixer.md +0 -40
- package/agents/oracle.md +0 -82
- package/agents/planner.md +0 -83
- package/agents/researcher.md +0 -60
- package/agents/reviewer-claude.md +0 -78
- package/agents/reviewer-gpt.md +0 -78
- package/agents/reviewer-ponytail.md +0 -92
- package/agents/reviewer-security.md +0 -92
- package/agents/reviewer.md +0 -78
- package/agents/scout.md +0 -77
- package/agents/ui-designer.md +0 -58
- package/agents/watcher.md +0 -27
- package/agents/worker.md +0 -52
- package/agents/writer.md +0 -39
- package/dist/agents/agent-defaults.js +0 -9
- package/dist/agents/agent-definition.js +0 -196
- package/dist/agents/agent-management.js +0 -88
- package/dist/agents/agent-scope.js +0 -9
- package/dist/agents/agent-selection.js +0 -13
- package/dist/agents/agent-serializer.js +0 -88
- package/dist/agents/agents.js +0 -111
- package/dist/agents/builtin-overrides.js +0 -218
- package/dist/agents/chain-serializer.js +0 -3
- package/dist/agents/config-values.js +0 -52
- package/dist/agents/discovery-paths.js +0 -91
- package/dist/agents/frontmatter.js +0 -31
- package/dist/agents/identity.js +0 -46
- package/dist/agents/json-chain.js +0 -254
- package/dist/agents/management-config.js +0 -332
- package/dist/agents/management-format.js +0 -231
- package/dist/agents/management-persistence.js +0 -287
- package/dist/agents/management-targets.js +0 -136
- package/dist/agents/management-warnings.js +0 -81
- package/dist/agents/markdown-chain.js +0 -210
- package/dist/agents/package-agents.js +0 -154
- package/dist/agents/skill-files.js +0 -157
- package/dist/agents/skill-search-paths.js +0 -246
- package/dist/agents/skill-types.js +0 -1
- package/dist/agents/skills.js +0 -125
- package/dist/extension/acceptance-schema.js +0 -55
- package/dist/extension/build-info.js +0 -1
- package/dist/extension/chain-schema.js +0 -196
- package/dist/extension/child-runtime.js +0 -237
- package/dist/extension/compact-tools.js +0 -183
- package/dist/extension/config-schema.js +0 -29
- package/dist/extension/config.js +0 -38
- package/dist/extension/control-notice-schema.js +0 -37
- package/dist/extension/control-notices.js +0 -36
- package/dist/extension/delegation-bridges.js +0 -43
- package/dist/extension/doctor.js +0 -166
- package/dist/extension/everyday-schemas.js +0 -207
- package/dist/extension/fanout-child.js +0 -25
- package/dist/extension/index.js +0 -28
- package/dist/extension/message-renderers.js +0 -225
- package/dist/extension/nested-control-inbox.js +0 -154
- package/dist/extension/parent-runtime.js +0 -339
- package/dist/extension/primary-tool.js +0 -69
- package/dist/extension/result-snapshot.js +0 -4
- package/dist/extension/runtime-reload.js +0 -62
- package/dist/extension/runtime-storage.js +0 -43
- package/dist/extension/schema-overrides.js +0 -75
- package/dist/extension/schemas.js +0 -345
- package/dist/extension/tool-input.js +0 -35
- package/dist/extension/tool-result.js +0 -29
- package/dist/history/answer-texts.js +0 -57
- package/dist/history/canonical-result.js +0 -114
- package/dist/history/canonical-selection.js +0 -40
- package/dist/history/database-generation.js +0 -82
- package/dist/history/database.js +0 -96
- package/dist/history/entry-ingestion.js +0 -61
- package/dist/history/index.js +0 -344
- package/dist/history/ingest.js +0 -314
- package/dist/history/output-digests.js +0 -40
- package/dist/history/preview.js +0 -210
- package/dist/history/prune.js +0 -33
- package/dist/history/queries.js +0 -81
- package/dist/history/query-scope.js +0 -190
- package/dist/history/rows.js +0 -77
- package/dist/history/run-projection.js +0 -136
- package/dist/history/run-queries.js +0 -153
- package/dist/history/schema.js +0 -31
- package/dist/history/search-queries.js +0 -169
- package/dist/history/selected-record.js +0 -108
- package/dist/history/source-file.js +0 -45
- package/dist/history/source-watches.js +0 -141
- package/dist/history/store.js +0 -243
- package/dist/history/text-chunks.js +0 -168
- package/dist/history/text.js +0 -35
- package/dist/history/transcript-queries.js +0 -183
- package/dist/history/types.js +0 -8
- package/dist/history/values.js +0 -36
- package/dist/history/wire-inputs.js +0 -122
- package/dist/history/wire-models.js +0 -38
- package/dist/history/worker-runtime.js +0 -441
- package/dist/history/worker.js +0 -91
- package/dist/intercom/intercom-bridge.js +0 -140
- package/dist/intercom/live-intercom.js +0 -151
- package/dist/intercom/nested-result-tree.js +0 -163
- package/dist/intercom/result-delivery.js +0 -40
- package/dist/intercom/result-intercom.js +0 -216
- package/dist/pi-intercom/bridge-ask.js +0 -57
- package/dist/pi-intercom/bridge-broadcast.js +0 -60
- package/dist/pi-intercom/bridge-catalog.js +0 -372
- package/dist/pi-intercom/bridge-control.js +0 -104
- package/dist/pi-intercom/bridge-groups.js +0 -135
- package/dist/pi-intercom/bridge-launch-journal.js +0 -84
- package/dist/pi-intercom/bridge-launch-policy.js +0 -154
- package/dist/pi-intercom/bridge-launch.js +0 -327
- package/dist/pi-intercom/bridge-operations.js +0 -127
- package/dist/pi-intercom/bridge-rpc-process.js +0 -292
- package/dist/pi-intercom/interview.js +0 -236
- package/dist/pi-intercom/native-control-auth.js +0 -80
- package/dist/pi-intercom/native-control-protocol.js +0 -111
- package/dist/pi-intercom/native-control.js +0 -130
- package/dist/pi-intercom/peer-awareness.js +0 -66
- package/dist/pi-intercom/saved-transcript.js +0 -135
- package/dist/pi-intercom/subagent-events.js +0 -238
- package/dist/pi-intercom/subagent-live-events.js +0 -175
- package/dist/pi-intercom/supervisor.js +0 -282
- package/dist/pi-intercom/topic-actions.js +0 -177
- package/dist/pi-intercom/topics.js +0 -242
- package/dist/pi-intercom/transcript.js +0 -175
- package/dist/pi-intercom/ui/compose-paste.js +0 -93
- package/dist/pi-intercom/ui/compose.js +0 -247
- package/dist/pi-intercom/ui/inline-message.js +0 -80
- package/dist/pi-intercom/ui/message-renderers.js +0 -147
- package/dist/pi-intercom/ui/overlay.js +0 -181
- package/dist/pi-intercom/ui/session-list.js +0 -157
- package/dist/pi-intercom/ui/tool-renderers.js +0 -110
- package/dist/pi-intercom/ui/topic-view.js +0 -88
- package/dist/runs/background/async-chain-plan.js +0 -265
- package/dist/runs/background/async-control.js +0 -171
- package/dist/runs/background/async-execution.js +0 -179
- package/dist/runs/background/async-job-admission.js +0 -40
- package/dist/runs/background/async-job-projection.js +0 -169
- package/dist/runs/background/async-job-tracker.js +0 -353
- package/dist/runs/background/async-launch.js +0 -216
- package/dist/runs/background/async-plan.js +0 -116
- package/dist/runs/background/async-result-file.js +0 -82
- package/dist/runs/background/async-resume.js +0 -247
- package/dist/runs/background/async-run-discovery.js +0 -211
- package/dist/runs/background/async-run-location.js +0 -135
- package/dist/runs/background/async-run-record.js +0 -1
- package/dist/runs/background/async-run-repair.js +0 -223
- package/dist/runs/background/async-run-summary.js +0 -1
- package/dist/runs/background/async-single-plan.js +0 -105
- package/dist/runs/background/async-status-projection.js +0 -155
- package/dist/runs/background/async-status-render.js +0 -117
- package/dist/runs/background/async-status-validation.js +0 -181
- package/dist/runs/background/async-status.js +0 -3
- package/dist/runs/background/async-value.js +0 -21
- package/dist/runs/background/completion-dedupe.js +0 -42
- package/dist/runs/background/completion-delivery.js +0 -251
- package/dist/runs/background/completion-receipts.js +0 -237
- package/dist/runs/background/legacy-status-acceptance.js +0 -34
- package/dist/runs/background/notify.js +0 -111
- package/dist/runs/background/parallel-groups.js +0 -72
- package/dist/runs/background/result-payload.js +0 -178
- package/dist/runs/background/result-watcher.js +0 -435
- package/dist/runs/background/run-id-resolver.js +0 -84
- package/dist/runs/background/run-schemas.js +0 -189
- package/dist/runs/background/run-status-contracts.js +0 -14
- package/dist/runs/background/run-status-render.js +0 -270
- package/dist/runs/background/run-status.js +0 -274
- package/dist/runs/background/runner-attempt-output.js +0 -155
- package/dist/runs/background/runner-attempt.js +0 -263
- package/dist/runs/background/runner-child-executor.js +0 -166
- package/dist/runs/background/runner-child-observer.js +0 -197
- package/dist/runs/background/runner-completion-summary.js +0 -71
- package/dist/runs/background/runner-completion.js +0 -211
- package/dist/runs/background/runner-config.js +0 -1
- package/dist/runs/background/runner-contract.js +0 -1
- package/dist/runs/background/runner-dynamic.js +0 -121
- package/dist/runs/background/runner-finalization.js +0 -149
- package/dist/runs/background/runner-graph.js +0 -68
- package/dist/runs/background/runner-initial-status.js +0 -60
- package/dist/runs/background/runner-lifecycle.js +0 -142
- package/dist/runs/background/runner-monitor.js +0 -311
- package/dist/runs/background/runner-parallel.js +0 -203
- package/dist/runs/background/runner-prepare-step.js +0 -86
- package/dist/runs/background/runner-reporting.js +0 -153
- package/dist/runs/background/runner-status.js +0 -148
- package/dist/runs/background/runner-step-output.js +0 -90
- package/dist/runs/background/runner-step-record.js +0 -45
- package/dist/runs/background/runner-step.js +0 -112
- package/dist/runs/background/runner-streaming.js +0 -173
- package/dist/runs/background/runner-workflow.js +0 -213
- package/dist/runs/background/stale-run-reconciler.js +0 -198
- package/dist/runs/background/subagent-runner-launcher.js +0 -75
- package/dist/runs/background/subagent-runner.js +0 -81
- package/dist/runs/background/top-level-async.js +0 -6
- package/dist/runs/foreground/chain-clarify.js +0 -428
- package/dist/runs/foreground/clarification-draft.js +0 -87
- package/dist/runs/foreground/clarify-contracts.js +0 -1
- package/dist/runs/foreground/clarify-invocation.js +0 -163
- package/dist/runs/foreground/clarify-text-editor.js +0 -210
- package/dist/runs/foreground/clarify-view.js +0 -167
- package/dist/runs/foreground/execution-input.js +0 -296
- package/dist/runs/foreground/execution-routing.js +0 -33
- package/dist/runs/foreground/execution-timeout.js +0 -81
- package/dist/runs/foreground/foreground-control.js +0 -276
- package/dist/runs/foreground/foreground-memory.js +0 -99
- package/dist/runs/foreground/invocation-context.js +0 -55
- package/dist/runs/foreground/invocation-execution.js +0 -331
- package/dist/runs/foreground/invocation-expansion.js +0 -48
- package/dist/runs/foreground/management-actions.js +0 -295
- package/dist/runs/foreground/nested-control.js +0 -179
- package/dist/runs/foreground/question-continuation.js +0 -78
- package/dist/runs/foreground/question-control.js +0 -193
- package/dist/runs/foreground/resume-target.js +0 -221
- package/dist/runs/foreground/revival-launch-policy.js +0 -58
- package/dist/runs/foreground/run-async-path.js +0 -217
- package/dist/runs/foreground/run-interrupt.js +0 -164
- package/dist/runs/foreground/run-nudge.js +0 -278
- package/dist/runs/foreground/saved-revival.js +0 -251
- package/dist/runs/foreground/subagent-executor.js +0 -153
- package/dist/runs/foreground/subagent-params.js +0 -202
- package/dist/runs/foreground/wait-observation.js +0 -104
- package/dist/runs/foreground/wait-registration.js +0 -17
- package/dist/runs/foreground/wait-run.js +0 -301
- package/dist/runs/shared/acceptance-contract.js +0 -347
- package/dist/runs/shared/acceptance-defaults.js +0 -1
- package/dist/runs/shared/acceptance-evaluation.js +0 -276
- package/dist/runs/shared/acceptance-finalization.js +0 -356
- package/dist/runs/shared/acceptance-outcome.js +0 -53
- package/dist/runs/shared/acceptance-reports.js +0 -212
- package/dist/runs/shared/acceptance-submission.js +0 -167
- package/dist/runs/shared/acceptance-verification.js +0 -100
- package/dist/runs/shared/acceptance.js +0 -4
- package/dist/runs/shared/chain-outputs.js +0 -138
- package/dist/runs/shared/child-attempt-types.js +0 -1
- package/dist/runs/shared/child-attempt.js +0 -340
- package/dist/runs/shared/child-boundaries.js +0 -173
- package/dist/runs/shared/child-context-filter.js +0 -44
- package/dist/runs/shared/child-event-observer.js +0 -390
- package/dist/runs/shared/child-execution-cwd.js +0 -126
- package/dist/runs/shared/child-execution-outcome.js +0 -72
- package/dist/runs/shared/child-invocation.js +0 -54
- package/dist/runs/shared/child-message-validation.js +0 -215
- package/dist/runs/shared/child-native-accounting.js +0 -106
- package/dist/runs/shared/child-native-observation.js +0 -69
- package/dist/runs/shared/child-observation-spool.js +0 -169
- package/dist/runs/shared/child-observations.js +0 -195
- package/dist/runs/shared/child-presence.js +0 -3
- package/dist/runs/shared/child-route-env.js +0 -119
- package/dist/runs/shared/child-stream-observer.js +0 -221
- package/dist/runs/shared/child-stream-projection.js +0 -137
- package/dist/runs/shared/child-structured-tool.js +0 -27
- package/dist/runs/shared/claude-code.js +0 -162
- package/dist/runs/shared/claude-model.js +0 -42
- package/dist/runs/shared/claude-session.js +0 -83
- package/dist/runs/shared/claude-types.js +0 -1
- package/dist/runs/shared/completion-guard.js +0 -31
- package/dist/runs/shared/control-event-policy.js +0 -8
- package/dist/runs/shared/control-notification-owner.js +0 -13
- package/dist/runs/shared/dynamic-fanout.js +0 -289
- package/dist/runs/shared/dynamic-item.js +0 -102
- package/dist/runs/shared/history-index.js +0 -98
- package/dist/runs/shared/legacy-async-recovery.js +0 -114
- package/dist/runs/shared/legacy-output-recovery.js +0 -148
- package/dist/runs/shared/mcp-config-schema.js +0 -36
- package/dist/runs/shared/mcp-direct-tool-allowlist.js +0 -365
- package/dist/runs/shared/model-fallback.js +0 -247
- package/dist/runs/shared/mutating-tool-guard.js +0 -210
- package/dist/runs/shared/native-finalization-types.js +0 -1
- package/dist/runs/shared/native-finalization.js +0 -180
- package/dist/runs/shared/native-usage.js +0 -293
- package/dist/runs/shared/nested-control-records.js +0 -128
- package/dist/runs/shared/nested-events.js +0 -8
- package/dist/runs/shared/nested-path.js +0 -52
- package/dist/runs/shared/nested-projection.js +0 -155
- package/dist/runs/shared/nested-protocol.js +0 -18
- package/dist/runs/shared/nested-registry.js +0 -191
- package/dist/runs/shared/nested-render.js +0 -156
- package/dist/runs/shared/nested-route.js +0 -220
- package/dist/runs/shared/nested-validation.js +0 -216
- package/dist/runs/shared/owned-child-evidence.js +0 -125
- package/dist/runs/shared/owned-run-list.js +0 -146
- package/dist/runs/shared/owned-run-observation.js +0 -267
- package/dist/runs/shared/owned-run-progress.js +0 -109
- package/dist/runs/shared/owned-run-read-state.js +0 -1
- package/dist/runs/shared/owned-run-results.js +0 -202
- package/dist/runs/shared/owned-run-status.js +0 -180
- package/dist/runs/shared/owned-run-view.js +0 -51
- package/dist/runs/shared/owned-workflow-details.js +0 -17
- package/dist/runs/shared/owner-output.js +0 -43
- package/dist/runs/shared/parallel-utils.js +0 -49
- package/dist/runs/shared/parent-receipts.js +0 -126
- package/dist/runs/shared/parent-usage.js +0 -233
- package/dist/runs/shared/pi-args.js +0 -217
- package/dist/runs/shared/pi-launch-input.js +0 -1
- package/dist/runs/shared/pi-session-launch.js +0 -86
- package/dist/runs/shared/pi-spawn.js +0 -66
- package/dist/runs/shared/run-history-queries.js +0 -136
- package/dist/runs/shared/run-history.js +0 -176
- package/dist/runs/shared/run-id-ambiguity.js +0 -4
- package/dist/runs/shared/run-metadata-paths.js +0 -14
- package/dist/runs/shared/run-metadata.js +0 -158
- package/dist/runs/shared/run-persistence.js +0 -131
- package/dist/runs/shared/run-records.js +0 -9
- package/dist/runs/shared/run-restoration.js +0 -337
- package/dist/runs/shared/run-state-owner.js +0 -26
- package/dist/runs/shared/session-cwd-preload.js +0 -42
- package/dist/runs/shared/single-output.js +0 -297
- package/dist/runs/shared/stable-value.js +0 -15
- package/dist/runs/shared/streaming-text.js +0 -26
- package/dist/runs/shared/structured-output.js +0 -67
- package/dist/runs/shared/subagent-control.js +0 -246
- package/dist/runs/shared/subagent-prompt-runtime.js +0 -94
- package/dist/runs/shared/subagent-tool-loop-guard.js +0 -95
- package/dist/runs/shared/supervisor-question-state.js +0 -145
- package/dist/runs/shared/supervisor-questions.js +0 -284
- package/dist/runs/shared/workflow-graph.js +0 -306
- package/dist/runs/shared/workflow-policy.js +0 -157
- package/dist/runs/shared/worktree-contract.js +0 -1
- package/dist/runs/shared/worktree-hook.js +0 -138
- package/dist/runs/shared/worktree-location.js +0 -47
- package/dist/runs/shared/worktree-preservation.js +0 -8
- package/dist/runs/shared/worktree-process.js +0 -107
- package/dist/runs/shared/worktree.js +0 -386
- package/dist/shared/agent-context-policy.js +0 -116
- package/dist/shared/agent-dir.js +0 -14
- package/dist/shared/artifacts.js +0 -114
- package/dist/shared/atomic-json.js +0 -16
- package/dist/shared/chain-files.js +0 -72
- package/dist/shared/concurrency.js +0 -18
- package/dist/shared/content-preview.js +0 -115
- package/dist/shared/execution-cwd.js +0 -22
- package/dist/shared/file-coalescer.js +0 -22
- package/dist/shared/fork-context.js +0 -47
- package/dist/shared/formatters.js +0 -111
- package/dist/shared/journal-reader.js +0 -6
- package/dist/shared/lazy-tools.js +0 -43
- package/dist/shared/message-output.js +0 -116
- package/dist/shared/model-info.js +0 -85
- package/dist/shared/native-import.js +0 -20
- package/dist/shared/native-session-loader.js +0 -17
- package/dist/shared/native-session.js +0 -4
- package/dist/shared/native-tui.js +0 -23
- package/dist/shared/native-typebox.js +0 -32
- package/dist/shared/prompt-sections.js +0 -10
- package/dist/shared/session-entries.js +0 -87
- package/dist/shared/session-identity.js +0 -16
- package/dist/shared/settings.js +0 -121
- package/dist/shared/status-format.js +0 -171
- package/dist/shared/task-file-policy.js +0 -24
- package/dist/shared/temp-root.js +0 -143
- package/dist/shared/types/acceptance.js +0 -1
- package/dist/shared/types/async.js +0 -1
- package/dist/shared/types/config.js +0 -1
- package/dist/shared/types/details.js +0 -1
- package/dist/shared/types/history.js +0 -1
- package/dist/shared/types/inputs.js +0 -1
- package/dist/shared/types/intercom.js +0 -1
- package/dist/shared/types/launch.js +0 -1
- package/dist/shared/types/messages.js +0 -1
- package/dist/shared/types/nested.js +0 -1
- package/dist/shared/types/owned-runs.js +0 -1
- package/dist/shared/types/progress.js +0 -1
- package/dist/shared/types/questions.js +0 -1
- package/dist/shared/types/results.js +0 -1
- package/dist/shared/types/state.js +0 -1
- package/dist/shared/types/usage.js +0 -1
- package/dist/shared/types/workflow.js +0 -1
- package/dist/shared/ui-mode.js +0 -3
- package/dist/shared/utils.js +0 -128
- package/dist/slash/command-discovery.js +0 -83
- package/dist/slash/command-input.js +0 -190
- package/dist/slash/prompt-template-bridge.js +0 -122
- package/dist/slash/prompt-template-contract.js +0 -77
- package/dist/slash/prompt-template-results.js +0 -125
- package/dist/slash/request-protocol.js +0 -68
- package/dist/slash/result-delivery.js +0 -237
- package/dist/slash/saved-chain.js +0 -78
- package/dist/slash/slash-bridge.js +0 -150
- package/dist/slash/slash-commands.js +0 -136
- package/dist/slash/slash-live-state.js +0 -267
- package/dist/tui/action-hints.js +0 -103
- package/dist/tui/activity-lines.js +0 -32
- package/dist/tui/agent-browser.js +0 -290
- package/dist/tui/agent-controls.js +0 -289
- package/dist/tui/agent-conversation.js +0 -444
- package/dist/tui/agent-dock.js +0 -171
- package/dist/tui/agent-history.js +0 -50
- package/dist/tui/agent-model.js +0 -62
- package/dist/tui/agent-picker.js +0 -262
- package/dist/tui/agent-view.js +0 -350
- package/dist/tui/compact-results.js +0 -193
- package/dist/tui/conversation-details.js +0 -190
- package/dist/tui/conversation-frame.js +0 -135
- package/dist/tui/conversation-history.js +0 -210
- package/dist/tui/conversation-menu.js +0 -78
- package/dist/tui/conversation-notices.js +0 -79
- package/dist/tui/conversation-selection.js +0 -58
- package/dist/tui/conversation-viewport.js +0 -129
- package/dist/tui/direction-message.js +0 -27
- package/dist/tui/display.js +0 -282
- package/dist/tui/editor-viewport.js +0 -18
- package/dist/tui/expanded-content.js +0 -87
- package/dist/tui/expanded-multi.js +0 -170
- package/dist/tui/expanded-single.js +0 -65
- package/dist/tui/history-cards.js +0 -202
- package/dist/tui/history-display.js +0 -238
- package/dist/tui/history-json.js +0 -16
- package/dist/tui/history-metadata.js +0 -152
- package/dist/tui/history-record.js +0 -251
- package/dist/tui/history-text.js +0 -34
- package/dist/tui/indexed-history.js +0 -116
- package/dist/tui/nested-widget.js +0 -120
- package/dist/tui/picker-page.js +0 -59
- package/dist/tui/render.js +0 -72
- package/dist/tui/result-facts.js +0 -64
- package/dist/tui/task-observation.js +0 -59
- package/dist/tui/task-store.js +0 -366
- package/dist/tui/text-values.js +0 -16
- package/dist/tui/view-connections.js +0 -47
- package/dist/tui/view-model.js +0 -94
- package/dist/tui/view-persistence.js +0 -51
- package/dist/tui/view-ports.js +0 -1
- package/dist/tui/view-session.js +0 -37
- package/dist/tui/widget-details.js +0 -144
- package/dist/tui/widget-status.js +0 -245
- package/dist/tui/widget.js +0 -145
- package/dist/tui/workflow-labels.js +0 -223
- package/dist/tui/workflow-outcomes.js +0 -124
- package/generated/RunValidators.d.ts +0 -28
- package/generated/RunValidators.js +0 -2
- package/prompts/gather-context-and-clarify.md +0 -14
- package/prompts/parallel-cleanup.md +0 -65
- package/prompts/parallel-context-build.md +0 -59
- package/prompts/parallel-handoff-plan.md +0 -68
- package/prompts/parallel-research.md +0 -55
- package/prompts/parallel-review.md +0 -61
- package/prompts/review-loop.md +0 -44
- package/scripts/generate-run-schemas.mjs +0 -210
- package/skills/pi-intercom/evals/evals.json +0 -29
- package/skills/pi-intercom/evals/trigger-evals.json +0 -47
- package/skills/pi-intercom/references/peer-sessions.md +0 -74
- package/skills/pi-subagents/evals/evals.json +0 -29
- package/skills/pi-subagents/evals/trigger-evals.json +0 -42
- package/skills/pi-subagents/references/full-orchestration-guide.md +0 -1005
- package/src/agents/agent-defaults.ts +0 -13
- package/src/agents/agent-definition.ts +0 -253
- package/src/agents/agent-management.ts +0 -120
- package/src/agents/agent-scope.ts +0 -11
- package/src/agents/agent-selection.ts +0 -22
- package/src/agents/agent-serializer.ts +0 -90
- package/src/agents/agents.ts +0 -214
- package/src/agents/builtin-overrides.ts +0 -297
- package/src/agents/chain-serializer.ts +0 -3
- package/src/agents/config-values.ts +0 -57
- package/src/agents/discovery-paths.ts +0 -134
- package/src/agents/frontmatter.ts +0 -39
- package/src/agents/identity.ts +0 -61
- package/src/agents/json-chain.ts +0 -305
- package/src/agents/management-config.ts +0 -342
- package/src/agents/management-format.ts +0 -243
- package/src/agents/management-persistence.ts +0 -408
- package/src/agents/management-targets.ts +0 -260
- package/src/agents/management-warnings.ts +0 -115
- package/src/agents/markdown-chain.ts +0 -237
- package/src/agents/package-agents.ts +0 -231
- package/src/agents/skill-files.ts +0 -182
- package/src/agents/skill-search-paths.ts +0 -289
- package/src/agents/skill-types.ts +0 -31
- package/src/agents/skills.ts +0 -179
- package/src/extension/acceptance-schema.ts +0 -88
- package/src/extension/build-info.ts +0 -2
- package/src/extension/chain-schema.ts +0 -276
- package/src/extension/child-runtime.ts +0 -302
- package/src/extension/compact-tools.ts +0 -271
- package/src/extension/config-schema.ts +0 -59
- package/src/extension/config.ts +0 -45
- package/src/extension/control-notice-schema.ts +0 -55
- package/src/extension/control-notices.ts +0 -71
- package/src/extension/delegation-bridges.ts +0 -59
- package/src/extension/doctor.ts +0 -207
- package/src/extension/everyday-schemas.ts +0 -252
- package/src/extension/fanout-child.ts +0 -33
- package/src/extension/index.ts +0 -31
- package/src/extension/message-renderers.ts +0 -334
- package/src/extension/nested-control-inbox.ts +0 -196
- package/src/extension/parent-runtime.ts +0 -405
- package/src/extension/primary-tool.ts +0 -130
- package/src/extension/result-snapshot.ts +0 -9
- package/src/extension/runtime-reload.ts +0 -72
- package/src/extension/runtime-storage.ts +0 -49
- package/src/extension/schema-overrides.ts +0 -114
- package/src/extension/schemas.ts +0 -477
- package/src/extension/tool-input.ts +0 -46
- package/src/extension/tool-result.ts +0 -47
- package/src/history/answer-texts.ts +0 -74
- package/src/history/canonical-result.ts +0 -138
- package/src/history/canonical-selection.ts +0 -54
- package/src/history/database-generation.ts +0 -86
- package/src/history/database.ts +0 -97
- package/src/history/entry-ingestion.ts +0 -129
- package/src/history/index.ts +0 -434
- package/src/history/ingest.ts +0 -387
- package/src/history/output-digests.ts +0 -41
- package/src/history/preview.ts +0 -235
- package/src/history/prune.ts +0 -48
- package/src/history/queries.ts +0 -125
- package/src/history/query-scope.ts +0 -278
- package/src/history/rows.ts +0 -118
- package/src/history/run-projection.ts +0 -162
- package/src/history/run-queries.ts +0 -199
- package/src/history/schema.ts +0 -34
- package/src/history/search-queries.ts +0 -223
- package/src/history/selected-record.ts +0 -140
- package/src/history/source-file.ts +0 -51
- package/src/history/source-watches.ts +0 -156
- package/src/history/store.ts +0 -332
- package/src/history/text-chunks.ts +0 -186
- package/src/history/text.ts +0 -43
- package/src/history/transcript-queries.ts +0 -257
- package/src/history/types.ts +0 -29
- package/src/history/values.ts +0 -36
- package/src/history/wire-inputs.ts +0 -141
- package/src/history/wire-models.ts +0 -51
- package/src/history/worker-runtime.ts +0 -502
- package/src/history/worker.ts +0 -99
- package/src/intercom/intercom-bridge.ts +0 -190
- package/src/intercom/live-intercom.ts +0 -209
- package/src/intercom/nested-result-tree.ts +0 -213
- package/src/intercom/result-delivery.ts +0 -56
- package/src/intercom/result-intercom.ts +0 -308
- package/src/pi-intercom/bridge-ask.ts +0 -64
- package/src/pi-intercom/bridge-broadcast.ts +0 -70
- package/src/pi-intercom/bridge-catalog.ts +0 -489
- package/src/pi-intercom/bridge-control.ts +0 -179
- package/src/pi-intercom/bridge-groups.ts +0 -169
- package/src/pi-intercom/bridge-launch-journal.ts +0 -122
- package/src/pi-intercom/bridge-launch-policy.ts +0 -190
- package/src/pi-intercom/bridge-launch.ts +0 -506
- package/src/pi-intercom/bridge-operations.ts +0 -169
- package/src/pi-intercom/bridge-rpc-process.ts +0 -330
- package/src/pi-intercom/interview.ts +0 -295
- package/src/pi-intercom/native-control-auth.ts +0 -89
- package/src/pi-intercom/native-control-protocol.ts +0 -180
- package/src/pi-intercom/native-control.ts +0 -160
- package/src/pi-intercom/peer-awareness.ts +0 -84
- package/src/pi-intercom/saved-transcript.ts +0 -175
- package/src/pi-intercom/subagent-events.ts +0 -299
- package/src/pi-intercom/subagent-live-events.ts +0 -236
- package/src/pi-intercom/supervisor.ts +0 -362
- package/src/pi-intercom/topic-actions.ts +0 -243
- package/src/pi-intercom/topics.ts +0 -271
- package/src/pi-intercom/transcript.ts +0 -226
- package/src/pi-intercom/ui/compose-paste.ts +0 -109
- package/src/pi-intercom/ui/compose.ts +0 -305
- package/src/pi-intercom/ui/inline-message.ts +0 -110
- package/src/pi-intercom/ui/message-renderers.ts +0 -182
- package/src/pi-intercom/ui/overlay.ts +0 -238
- package/src/pi-intercom/ui/session-list.ts +0 -222
- package/src/pi-intercom/ui/tool-renderers.ts +0 -148
- package/src/pi-intercom/ui/topic-view.ts +0 -107
- package/src/runs/background/async-chain-plan.ts +0 -451
- package/src/runs/background/async-control.ts +0 -219
- package/src/runs/background/async-execution.ts +0 -227
- package/src/runs/background/async-job-admission.ts +0 -54
- package/src/runs/background/async-job-projection.ts +0 -225
- package/src/runs/background/async-job-tracker.ts +0 -441
- package/src/runs/background/async-launch.ts +0 -319
- package/src/runs/background/async-plan.ts +0 -285
- package/src/runs/background/async-result-file.ts +0 -104
- package/src/runs/background/async-resume.ts +0 -386
- package/src/runs/background/async-run-discovery.ts +0 -264
- package/src/runs/background/async-run-location.ts +0 -194
- package/src/runs/background/async-run-record.ts +0 -14
- package/src/runs/background/async-run-repair.ts +0 -307
- package/src/runs/background/async-run-summary.ts +0 -71
- package/src/runs/background/async-single-plan.ts +0 -168
- package/src/runs/background/async-status-projection.ts +0 -188
- package/src/runs/background/async-status-render.ts +0 -164
- package/src/runs/background/async-status-validation.ts +0 -238
- package/src/runs/background/async-status.ts +0 -9
- package/src/runs/background/async-value.ts +0 -29
- package/src/runs/background/completion-dedupe.ts +0 -65
- package/src/runs/background/completion-delivery.ts +0 -321
- package/src/runs/background/completion-receipts.ts +0 -309
- package/src/runs/background/legacy-status-acceptance.ts +0 -38
- package/src/runs/background/notify.ts +0 -174
- package/src/runs/background/parallel-groups.ts +0 -102
- package/src/runs/background/result-payload.ts +0 -268
- package/src/runs/background/result-watcher.ts +0 -520
- package/src/runs/background/run-id-resolver.ts +0 -138
- package/src/runs/background/run-schemas.ts +0 -240
- package/src/runs/background/run-status-contracts.ts +0 -46
- package/src/runs/background/run-status-render.ts +0 -364
- package/src/runs/background/run-status.ts +0 -366
- package/src/runs/background/runner-attempt-output.ts +0 -281
- package/src/runs/background/runner-attempt.ts +0 -354
- package/src/runs/background/runner-child-executor.ts +0 -232
- package/src/runs/background/runner-child-observer.ts +0 -278
- package/src/runs/background/runner-completion-summary.ts +0 -106
- package/src/runs/background/runner-completion.ts +0 -274
- package/src/runs/background/runner-config.ts +0 -52
- package/src/runs/background/runner-contract.ts +0 -51
- package/src/runs/background/runner-dynamic.ts +0 -185
- package/src/runs/background/runner-finalization.ts +0 -203
- package/src/runs/background/runner-graph.ts +0 -91
- package/src/runs/background/runner-initial-status.ts +0 -72
- package/src/runs/background/runner-lifecycle.ts +0 -159
- package/src/runs/background/runner-monitor.ts +0 -401
- package/src/runs/background/runner-parallel.ts +0 -279
- package/src/runs/background/runner-prepare-step.ts +0 -128
- package/src/runs/background/runner-reporting.ts +0 -192
- package/src/runs/background/runner-status.ts +0 -220
- package/src/runs/background/runner-step-output.ts +0 -156
- package/src/runs/background/runner-step-record.ts +0 -76
- package/src/runs/background/runner-step.ts +0 -150
- package/src/runs/background/runner-streaming.ts +0 -220
- package/src/runs/background/runner-workflow.ts +0 -284
- package/src/runs/background/stale-run-reconciler.ts +0 -312
- package/src/runs/background/subagent-runner-launcher.ts +0 -88
- package/src/runs/background/subagent-runner.ts +0 -85
- package/src/runs/background/top-level-async.ts +0 -15
- package/src/runs/foreground/chain-clarify.ts +0 -505
- package/src/runs/foreground/clarification-draft.ts +0 -92
- package/src/runs/foreground/clarify-contracts.ts +0 -33
- package/src/runs/foreground/clarify-invocation.ts +0 -204
- package/src/runs/foreground/clarify-text-editor.ts +0 -229
- package/src/runs/foreground/clarify-view.ts +0 -222
- package/src/runs/foreground/execution-input.ts +0 -401
- package/src/runs/foreground/execution-routing.ts +0 -41
- package/src/runs/foreground/execution-timeout.ts +0 -92
- package/src/runs/foreground/foreground-control.ts +0 -342
- package/src/runs/foreground/foreground-memory.ts +0 -132
- package/src/runs/foreground/invocation-context.ts +0 -88
- package/src/runs/foreground/invocation-execution.ts +0 -465
- package/src/runs/foreground/invocation-expansion.ts +0 -58
- package/src/runs/foreground/management-actions.ts +0 -360
- package/src/runs/foreground/nested-control.ts +0 -248
- package/src/runs/foreground/question-continuation.ts +0 -112
- package/src/runs/foreground/question-control.ts +0 -309
- package/src/runs/foreground/resume-target.ts +0 -330
- package/src/runs/foreground/revival-launch-policy.ts +0 -112
- package/src/runs/foreground/run-async-path.ts +0 -327
- package/src/runs/foreground/run-interrupt.ts +0 -202
- package/src/runs/foreground/run-nudge.ts +0 -355
- package/src/runs/foreground/saved-revival.ts +0 -356
- package/src/runs/foreground/subagent-executor.ts +0 -203
- package/src/runs/foreground/subagent-params.ts +0 -392
- package/src/runs/foreground/wait-observation.ts +0 -160
- package/src/runs/foreground/wait-registration.ts +0 -18
- package/src/runs/foreground/wait-run.ts +0 -366
- package/src/runs/shared/acceptance-contract.ts +0 -458
- package/src/runs/shared/acceptance-defaults.ts +0 -1
- package/src/runs/shared/acceptance-evaluation.ts +0 -349
- package/src/runs/shared/acceptance-finalization.ts +0 -495
- package/src/runs/shared/acceptance-outcome.ts +0 -69
- package/src/runs/shared/acceptance-reports.ts +0 -246
- package/src/runs/shared/acceptance-submission.ts +0 -251
- package/src/runs/shared/acceptance-verification.ts +0 -118
- package/src/runs/shared/acceptance.ts +0 -31
- package/src/runs/shared/chain-outputs.ts +0 -206
- package/src/runs/shared/child-attempt-types.ts +0 -118
- package/src/runs/shared/child-attempt.ts +0 -387
- package/src/runs/shared/child-boundaries.ts +0 -217
- package/src/runs/shared/child-context-filter.ts +0 -53
- package/src/runs/shared/child-event-observer.ts +0 -496
- package/src/runs/shared/child-execution-cwd.ts +0 -162
- package/src/runs/shared/child-execution-outcome.ts +0 -103
- package/src/runs/shared/child-invocation.ts +0 -74
- package/src/runs/shared/child-message-validation.ts +0 -233
- package/src/runs/shared/child-native-accounting.ts +0 -154
- package/src/runs/shared/child-native-observation.ts +0 -79
- package/src/runs/shared/child-observation-spool.ts +0 -193
- package/src/runs/shared/child-observations.ts +0 -229
- package/src/runs/shared/child-presence.ts +0 -6
- package/src/runs/shared/child-route-env.ts +0 -142
- package/src/runs/shared/child-stream-observer.ts +0 -302
- package/src/runs/shared/child-stream-projection.ts +0 -160
- package/src/runs/shared/child-structured-tool.ts +0 -38
- package/src/runs/shared/claude-code.ts +0 -216
- package/src/runs/shared/claude-model.ts +0 -67
- package/src/runs/shared/claude-session.ts +0 -124
- package/src/runs/shared/claude-types.ts +0 -31
- package/src/runs/shared/completion-guard.ts +0 -44
- package/src/runs/shared/control-event-policy.ts +0 -15
- package/src/runs/shared/control-notification-owner.ts +0 -20
- package/src/runs/shared/dynamic-fanout.ts +0 -459
- package/src/runs/shared/dynamic-item.ts +0 -114
- package/src/runs/shared/history-index.ts +0 -130
- package/src/runs/shared/legacy-async-recovery.ts +0 -153
- package/src/runs/shared/legacy-output-recovery.ts +0 -214
- package/src/runs/shared/mcp-config-schema.ts +0 -46
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -465
- package/src/runs/shared/model-fallback.ts +0 -344
- package/src/runs/shared/mutating-tool-guard.ts +0 -295
- package/src/runs/shared/native-finalization-types.ts +0 -29
- package/src/runs/shared/native-finalization.ts +0 -252
- package/src/runs/shared/native-usage.ts +0 -396
- package/src/runs/shared/nested-control-records.ts +0 -178
- package/src/runs/shared/nested-events.ts +0 -45
- package/src/runs/shared/nested-path.ts +0 -65
- package/src/runs/shared/nested-projection.ts +0 -230
- package/src/runs/shared/nested-protocol.ts +0 -67
- package/src/runs/shared/nested-registry.ts +0 -273
- package/src/runs/shared/nested-render.ts +0 -217
- package/src/runs/shared/nested-route.ts +0 -292
- package/src/runs/shared/nested-validation.ts +0 -291
- package/src/runs/shared/owned-child-evidence.ts +0 -184
- package/src/runs/shared/owned-run-list.ts +0 -187
- package/src/runs/shared/owned-run-observation.ts +0 -368
- package/src/runs/shared/owned-run-progress.ts +0 -172
- package/src/runs/shared/owned-run-read-state.ts +0 -7
- package/src/runs/shared/owned-run-results.ts +0 -289
- package/src/runs/shared/owned-run-status.ts +0 -239
- package/src/runs/shared/owned-run-view.ts +0 -65
- package/src/runs/shared/owned-workflow-details.ts +0 -24
- package/src/runs/shared/owner-output.ts +0 -73
- package/src/runs/shared/parallel-utils.ts +0 -93
- package/src/runs/shared/parent-receipts.ts +0 -186
- package/src/runs/shared/parent-usage.ts +0 -344
- package/src/runs/shared/pi-args.ts +0 -280
- package/src/runs/shared/pi-launch-input.ts +0 -48
- package/src/runs/shared/pi-session-launch.ts +0 -94
- package/src/runs/shared/pi-spawn.ts +0 -76
- package/src/runs/shared/run-history-queries.ts +0 -195
- package/src/runs/shared/run-history.ts +0 -221
- package/src/runs/shared/run-id-ambiguity.ts +0 -8
- package/src/runs/shared/run-metadata-paths.ts +0 -17
- package/src/runs/shared/run-metadata.ts +0 -240
- package/src/runs/shared/run-persistence.ts +0 -181
- package/src/runs/shared/run-records.ts +0 -19
- package/src/runs/shared/run-restoration.ts +0 -455
- package/src/runs/shared/run-state-owner.ts +0 -31
- package/src/runs/shared/session-cwd-preload.ts +0 -47
- package/src/runs/shared/single-output.ts +0 -416
- package/src/runs/shared/stable-value.ts +0 -15
- package/src/runs/shared/streaming-text.ts +0 -45
- package/src/runs/shared/structured-output.ts +0 -98
- package/src/runs/shared/subagent-control.ts +0 -352
- package/src/runs/shared/subagent-prompt-runtime.ts +0 -119
- package/src/runs/shared/subagent-tool-loop-guard.ts +0 -139
- package/src/runs/shared/supervisor-question-state.ts +0 -221
- package/src/runs/shared/supervisor-questions.ts +0 -410
- package/src/runs/shared/workflow-graph.ts +0 -422
- package/src/runs/shared/workflow-policy.ts +0 -260
- package/src/runs/shared/worktree-contract.ts +0 -29
- package/src/runs/shared/worktree-hook.ts +0 -181
- package/src/runs/shared/worktree-location.ts +0 -61
- package/src/runs/shared/worktree-preservation.ts +0 -10
- package/src/runs/shared/worktree-process.ts +0 -132
- package/src/runs/shared/worktree.ts +0 -507
- package/src/shared/agent-context-policy.ts +0 -215
- package/src/shared/agent-dir.ts +0 -15
- package/src/shared/artifacts.ts +0 -126
- package/src/shared/atomic-json.ts +0 -19
- package/src/shared/chain-files.ts +0 -72
- package/src/shared/concurrency.ts +0 -27
- package/src/shared/content-preview.ts +0 -117
- package/src/shared/execution-cwd.ts +0 -39
- package/src/shared/file-coalescer.ts +0 -31
- package/src/shared/fork-context.ts +0 -72
- package/src/shared/formatters.ts +0 -125
- package/src/shared/journal-reader.ts +0 -18
- package/src/shared/lazy-tools.ts +0 -85
- package/src/shared/message-output.ts +0 -146
- package/src/shared/model-info.ts +0 -117
- package/src/shared/native-import.ts +0 -25
- package/src/shared/native-session-loader.ts +0 -13
- package/src/shared/native-session.ts +0 -6
- package/src/shared/native-tui.ts +0 -20
- package/src/shared/native-typebox.ts +0 -29
- package/src/shared/prompt-sections.ts +0 -16
- package/src/shared/session-entries.ts +0 -108
- package/src/shared/session-identity.ts +0 -25
- package/src/shared/settings.ts +0 -196
- package/src/shared/status-format.ts +0 -232
- package/src/shared/stream-json.d.ts +0 -10
- package/src/shared/task-file-policy.ts +0 -35
- package/src/shared/temp-root.ts +0 -158
- package/src/shared/types/acceptance.ts +0 -149
- package/src/shared/types/async.ts +0 -247
- package/src/shared/types/config.ts +0 -139
- package/src/shared/types/details.ts +0 -104
- package/src/shared/types/history.ts +0 -217
- package/src/shared/types/inputs.ts +0 -4
- package/src/shared/types/intercom.ts +0 -57
- package/src/shared/types/launch.ts +0 -39
- package/src/shared/types/messages.ts +0 -104
- package/src/shared/types/nested.ts +0 -153
- package/src/shared/types/owned-runs.ts +0 -148
- package/src/shared/types/progress.ts +0 -106
- package/src/shared/types/questions.ts +0 -103
- package/src/shared/types/results.ts +0 -119
- package/src/shared/types/state.ts +0 -56
- package/src/shared/types/usage.ts +0 -36
- package/src/shared/types/workflow.ts +0 -187
- package/src/shared/ui-mode.ts +0 -5
- package/src/shared/utils.ts +0 -148
- package/src/slash/command-discovery.ts +0 -110
- package/src/slash/command-input.ts +0 -232
- package/src/slash/prompt-template-bridge.ts +0 -161
- package/src/slash/prompt-template-contract.ts +0 -152
- package/src/slash/prompt-template-results.ts +0 -189
- package/src/slash/request-protocol.ts +0 -87
- package/src/slash/result-delivery.ts +0 -312
- package/src/slash/saved-chain.ts +0 -115
- package/src/slash/slash-bridge.ts +0 -224
- package/src/slash/slash-commands.ts +0 -195
- package/src/slash/slash-live-state.ts +0 -350
- package/src/tui/action-hints.ts +0 -155
- package/src/tui/activity-lines.ts +0 -40
- package/src/tui/agent-browser.ts +0 -354
- package/src/tui/agent-controls.ts +0 -355
- package/src/tui/agent-conversation.ts +0 -514
- package/src/tui/agent-dock.ts +0 -250
- package/src/tui/agent-history.ts +0 -68
- package/src/tui/agent-model.ts +0 -78
- package/src/tui/agent-picker.ts +0 -325
- package/src/tui/agent-view.ts +0 -403
- package/src/tui/compact-results.ts +0 -342
- package/src/tui/conversation-details.ts +0 -206
- package/src/tui/conversation-frame.ts +0 -184
- package/src/tui/conversation-history.ts +0 -260
- package/src/tui/conversation-menu.ts +0 -119
- package/src/tui/conversation-notices.ts +0 -116
- package/src/tui/conversation-selection.ts +0 -66
- package/src/tui/conversation-viewport.ts +0 -169
- package/src/tui/direction-message.ts +0 -35
- package/src/tui/display.ts +0 -409
- package/src/tui/editor-viewport.ts +0 -19
- package/src/tui/expanded-content.ts +0 -134
- package/src/tui/expanded-multi.ts +0 -264
- package/src/tui/expanded-single.ts +0 -92
- package/src/tui/history-cards.ts +0 -298
- package/src/tui/history-display.ts +0 -334
- package/src/tui/history-json.ts +0 -17
- package/src/tui/history-metadata.ts +0 -177
- package/src/tui/history-record.ts +0 -321
- package/src/tui/history-text.ts +0 -34
- package/src/tui/indexed-history.ts +0 -149
- package/src/tui/nested-widget.ts +0 -192
- package/src/tui/picker-page.ts +0 -80
- package/src/tui/render.ts +0 -104
- package/src/tui/result-facts.ts +0 -99
- package/src/tui/task-observation.ts +0 -96
- package/src/tui/task-store.ts +0 -432
- package/src/tui/text-values.ts +0 -20
- package/src/tui/view-connections.ts +0 -64
- package/src/tui/view-model.ts +0 -181
- package/src/tui/view-persistence.ts +0 -57
- package/src/tui/view-ports.ts +0 -55
- package/src/tui/view-session.ts +0 -42
- package/src/tui/widget-details.ts +0 -220
- package/src/tui/widget-status.ts +0 -331
- package/src/tui/widget.ts +0 -208
- package/src/tui/workflow-labels.ts +0 -340
- package/src/tui/workflow-outcomes.ts +0 -150
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
-
import {
|
|
2
|
+
import { JournalFrames } from "./journal-frames.js";
|
|
3
3
|
import { nativeProjection } from "./journal-projections.js";
|
|
4
|
-
import { isRecord
|
|
4
|
+
import { isRecord } from "./unknown.js";
|
|
5
5
|
function preview(record, parent, legacy) {
|
|
6
6
|
const entry = record.value;
|
|
7
7
|
if (typeof entry.type !== "string") {
|
|
@@ -18,45 +18,40 @@ function preview(record, parent, legacy) {
|
|
|
18
18
|
};
|
|
19
19
|
return { value, start: record.start, end: record.end };
|
|
20
20
|
}
|
|
21
|
-
function configurationModel(value) {
|
|
22
|
-
const message = recordAt(value, "message");
|
|
23
|
-
const provider = value.type === "model_change" ? value.provider : message?.provider;
|
|
24
|
-
const model = value.type === "model_change" ? value.modelId : message?.model;
|
|
25
|
-
return typeof provider === "string" && typeof model === "string"
|
|
26
|
-
? `${provider}/${model}`
|
|
27
|
-
: undefined;
|
|
28
|
-
}
|
|
29
21
|
export class NativeJournal {
|
|
30
22
|
records = [];
|
|
31
23
|
byId = new Map();
|
|
32
24
|
stamp;
|
|
33
25
|
end;
|
|
34
26
|
file;
|
|
35
|
-
|
|
27
|
+
identity;
|
|
28
|
+
offset = 0;
|
|
29
|
+
frames;
|
|
30
|
+
constructor(file, policy = "inspect", requireNewline = policy === "live", options = {}) {
|
|
36
31
|
this.file = file;
|
|
37
|
-
|
|
32
|
+
let parent = null;
|
|
33
|
+
this.frames = new JournalFrames(options.select ?? nativeProjection, (raw) => {
|
|
34
|
+
const record = preview(raw, parent, this.records[0]?.value.version === 1);
|
|
35
|
+
if (!record) {
|
|
36
|
+
if (policy !== "inspect") {
|
|
37
|
+
throw new SyntaxError(`Native record at byte ${raw.start} requires a type`);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (record.value.type !== "session") {
|
|
42
|
+
parent = record.value.id;
|
|
43
|
+
}
|
|
44
|
+
this.records.push(record);
|
|
45
|
+
this.byId.set(record.value.id, record);
|
|
46
|
+
}, { policy, requireNewline });
|
|
47
|
+
const fd = fs.openSync(file, fs.constants.O_RDONLY | (policy === "live" ? fs.constants.O_NOFOLLOW : 0));
|
|
38
48
|
try {
|
|
39
49
|
const stat = fs.fstatSync(fd, { bigint: true });
|
|
40
50
|
this.stamp = journalStamp(stat);
|
|
51
|
+
this.identity = `${stat.dev}:${stat.ino}`;
|
|
41
52
|
this.end = Number(stat.size);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const record = preview(raw, parent, this.records[0]?.value.version === 1);
|
|
45
|
-
if (!record) {
|
|
46
|
-
if (policy !== "inspect") {
|
|
47
|
-
throw new SyntaxError(`Native record at byte ${raw.start} requires a type`);
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (record.value.type !== "session") {
|
|
52
|
-
parent = record.value.id;
|
|
53
|
-
}
|
|
54
|
-
this.records.push(record);
|
|
55
|
-
this.byId.set(record.value.id, record);
|
|
56
|
-
}, { policy, requireNewline, end: this.end });
|
|
57
|
-
if (journalStamp(fs.fstatSync(fd, { bigint: true })) !== this.stamp) {
|
|
58
|
-
throw new Error("Journal changed while indexing; refresh history.");
|
|
59
|
-
}
|
|
53
|
+
this.index(fd, Math.min(this.end, options.readBytes ?? Infinity));
|
|
54
|
+
this.checkInitial(stat, fs.fstatSync(fd, { bigint: true }), policy);
|
|
60
55
|
}
|
|
61
56
|
finally {
|
|
62
57
|
fs.closeSync(fd);
|
|
@@ -65,21 +60,101 @@ export class NativeJournal {
|
|
|
65
60
|
throw new Error("Not a readable native Pi session.");
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
|
-
|
|
63
|
+
checkInitial(before, after, policy) {
|
|
64
|
+
if (journalStamp(after) !== this.stamp &&
|
|
65
|
+
(policy !== "live" ||
|
|
66
|
+
after.size < before.size ||
|
|
67
|
+
`${after.dev}:${after.ino}` !== this.identity)) {
|
|
68
|
+
throw new Error("Journal changed while indexing; refresh history.");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
index(fd, end) {
|
|
72
|
+
const buffer = Buffer.allocUnsafe(65536);
|
|
73
|
+
while (this.offset < end) {
|
|
74
|
+
const count = fs.readSync(fd, buffer, 0, Math.min(buffer.length, end - this.offset), this.offset);
|
|
75
|
+
if (count === 0) {
|
|
76
|
+
throw new Error("Journal truncated while reading");
|
|
77
|
+
}
|
|
78
|
+
this.frames.write(buffer.subarray(0, count));
|
|
79
|
+
this.offset += count;
|
|
80
|
+
}
|
|
81
|
+
this.frames.finish();
|
|
82
|
+
}
|
|
83
|
+
get indexed() {
|
|
84
|
+
return this.offset === this.end;
|
|
85
|
+
}
|
|
86
|
+
/** Incremental, LF-published indexing. Append work is budgeted independently of paint. */
|
|
87
|
+
refresh(bytes = 256 * 1024) {
|
|
88
|
+
const fd = fs.openSync(this.file, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
|
|
89
|
+
try {
|
|
90
|
+
const stat = fs.fstatSync(fd, { bigint: true });
|
|
91
|
+
if (`${stat.dev}:${stat.ino}` !== this.identity || Number(stat.size) < this.offset) {
|
|
92
|
+
throw new Error("Native journal was replaced or truncated; reopen this conversation.");
|
|
93
|
+
}
|
|
94
|
+
if (journalStamp(stat) === this.stamp && this.indexed) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
const previous = this.records.length;
|
|
98
|
+
this.end = Number(stat.size);
|
|
99
|
+
this.index(fd, Math.min(this.end, this.offset + bytes));
|
|
100
|
+
this.stamp = journalStamp(stat);
|
|
101
|
+
return previous !== this.records.length;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
fs.closeSync(fd);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Project one immutable, published record, including bounded slices of very large strings. */
|
|
108
|
+
async project(record, select, stringChunk, signal) {
|
|
109
|
+
const fd = fs.openSync(this.file, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
|
|
110
|
+
let stream;
|
|
111
|
+
try {
|
|
112
|
+
const stat = fs.fstatSync(fd, { bigint: true });
|
|
113
|
+
if (`${stat.dev}:${stat.ino}` !== this.identity || Number(stat.size) < record.end) {
|
|
114
|
+
throw new Error("Native journal was replaced or truncated.");
|
|
115
|
+
}
|
|
116
|
+
let value;
|
|
117
|
+
const frames = new JournalFrames(select, (entry) => {
|
|
118
|
+
value = entry.value;
|
|
119
|
+
}, { policy: "live", start: record.start, stringChunk });
|
|
120
|
+
stream = fs.createReadStream(this.file, {
|
|
121
|
+
fd,
|
|
122
|
+
start: record.start,
|
|
123
|
+
end: record.end - 1,
|
|
124
|
+
highWaterMark: 65536,
|
|
125
|
+
signal,
|
|
126
|
+
});
|
|
127
|
+
for await (const chunk of stream) {
|
|
128
|
+
if (!Buffer.isBuffer(chunk)) {
|
|
129
|
+
throw new TypeError("Native journal reads require bytes.");
|
|
130
|
+
}
|
|
131
|
+
frames.write(chunk);
|
|
132
|
+
}
|
|
133
|
+
frames.finish();
|
|
134
|
+
if (!value) {
|
|
135
|
+
throw new Error("Native entry is not published.");
|
|
136
|
+
}
|
|
137
|
+
return value;
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
if (stream) {
|
|
141
|
+
stream.destroy();
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
fs.closeSync(fd);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
branch(leaf) {
|
|
69
149
|
if (leaf === null) {
|
|
70
150
|
return [];
|
|
71
151
|
}
|
|
72
|
-
const eligible = endedAt === undefined
|
|
73
|
-
? this.records
|
|
74
|
-
: this.records.filter((record) => record.value.type === "session" ||
|
|
75
|
-
Date.parse(record.value.timestamp ?? "") <= endedAt);
|
|
76
152
|
let current = leaf !== undefined && leaf !== ""
|
|
77
153
|
? this.byId.get(leaf)
|
|
78
|
-
:
|
|
154
|
+
: this.records.findLast((record) => record.value.type !== "session");
|
|
79
155
|
const path = [];
|
|
80
156
|
const seen = new Set();
|
|
81
|
-
|
|
82
|
-
while (current && current.value.type !== "session" && allowed.has(current.value.id)) {
|
|
157
|
+
while (current && current.value.type !== "session") {
|
|
83
158
|
if (seen.has(current.value.id)) {
|
|
84
159
|
throw new Error("Cyclic journal ancestry");
|
|
85
160
|
}
|
|
@@ -116,24 +191,16 @@ export class NativeJournal {
|
|
|
116
191
|
fs.closeSync(fd);
|
|
117
192
|
}
|
|
118
193
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if (model) {
|
|
132
|
-
result.model = configurationModel(model);
|
|
133
|
-
result.modelRecordedAt = Date.parse(model.timestamp ?? "");
|
|
134
|
-
}
|
|
135
|
-
return result;
|
|
136
|
-
}
|
|
194
|
+
}
|
|
195
|
+
/** Native v3 writers append after attachment; loading older formats can rewrite in place.
|
|
196
|
+
* Outside prefix edits followed by same-inode growth are not an append-only operation.
|
|
197
|
+
*/
|
|
198
|
+
export function nativeAppend(before, after, header) {
|
|
199
|
+
return (header?.type === "session" &&
|
|
200
|
+
header.version === 3 &&
|
|
201
|
+
before.dev === after.dev &&
|
|
202
|
+
before.ino === after.ino &&
|
|
203
|
+
after.size > before.size);
|
|
137
204
|
}
|
|
138
205
|
export function journalStamp(stat) {
|
|
139
206
|
return `${stat.dev}:${stat.ino}:${stat.size}:${stat.mtimeNs}:${stat.ctimeNs}`;
|
|
@@ -1,6 +1,27 @@
|
|
|
1
|
-
import { execFileSync } from "node:child_process";
|
|
2
|
-
import {
|
|
1
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
2
|
+
import { readFileSync, readlinkSync } from "node:fs";
|
|
3
|
+
import { isLinuxProcessReplaced, readLinuxProcess } from "../pi-intercom/broker/pid.js";
|
|
3
4
|
import { hasErrorCode } from "./unknown.js";
|
|
5
|
+
const BIRTH_FIELDS = ["lstart=", "pgid="];
|
|
6
|
+
/** Capture only a real, cross-process clock context; unavailable context proves nothing. */
|
|
7
|
+
export function readProcessClock() {
|
|
8
|
+
if (process.platform !== "android") {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const boot = readFileSync("/proc/sys/kernel/random/boot_id", "utf8").trim();
|
|
13
|
+
const namespace = readlinkSync("/proc/self/ns/time");
|
|
14
|
+
const at = process.hrtime.bigint();
|
|
15
|
+
return at > 0n &&
|
|
16
|
+
/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(boot) &&
|
|
17
|
+
/^time:\[\d+\]$/.test(namespace)
|
|
18
|
+
? { boot, namespace, at: at.toString() }
|
|
19
|
+
: undefined;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
4
25
|
/** Capture the detached group leader's birth identity; Pi may replace its command-line title. */
|
|
5
26
|
export function readChildProcessIdentity(pid) {
|
|
6
27
|
if (!Number.isSafeInteger(pid) || pid <= 0) {
|
|
@@ -9,21 +30,113 @@ export function readChildProcessIdentity(pid) {
|
|
|
9
30
|
if (process.platform === "linux") {
|
|
10
31
|
return readLinuxProcess(pid)?.identity;
|
|
11
32
|
}
|
|
33
|
+
return groupLeader(pid, readPsFields(pid, BIRTH_FIELDS));
|
|
34
|
+
}
|
|
35
|
+
function groupLeader(pid, birth) {
|
|
36
|
+
return Number(birth?.split(" ").at(-1)) === pid ? birth : undefined;
|
|
37
|
+
}
|
|
38
|
+
// Always one PID: Darwin ps given several PIDs scans every process at many times the cost.
|
|
39
|
+
function psArguments(pid, fields) {
|
|
40
|
+
return ["-p", String(pid), ...fields.flatMap((field) => ["-o", field])];
|
|
41
|
+
}
|
|
42
|
+
function psOptions(zone) {
|
|
43
|
+
const env = { ...process.env, LC_ALL: "C", ...(zone === undefined ? {} : { TZ: zone }) };
|
|
44
|
+
return { encoding: "utf8", timeout: 1000, env };
|
|
45
|
+
}
|
|
46
|
+
function readPsFields(pid, fields, zone) {
|
|
12
47
|
try {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
timeout: 1000,
|
|
48
|
+
return execFileSync("ps", psArguments(pid, fields), {
|
|
49
|
+
...psOptions(zone),
|
|
16
50
|
stdio: ["ignore", "pipe", "ignore"],
|
|
17
|
-
env: { ...process.env, LC_ALL: "C" },
|
|
18
51
|
})
|
|
19
52
|
.trim()
|
|
20
53
|
.replace(/\s+/g, " ");
|
|
21
|
-
return Number(identity.split(" ").at(-1)) === pid ? identity : undefined;
|
|
22
54
|
}
|
|
23
55
|
catch {
|
|
24
56
|
return undefined;
|
|
25
57
|
}
|
|
26
58
|
}
|
|
59
|
+
/** Nonblocking `readPsFields`; a failed run likewise observes nothing. */
|
|
60
|
+
function observePsFields(pid, fields, zone) {
|
|
61
|
+
return new Promise((resolve) => {
|
|
62
|
+
execFile("ps", psArguments(pid, fields), psOptions(zone), (error, stdout) => {
|
|
63
|
+
resolve(error ? undefined : stdout.trim().replace(/\s+/g, " "));
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// C-locale ps lstart (whole-second birth, in the reader's zone), then the process group.
|
|
68
|
+
const PS_IDENTITY = /^[A-Z][a-z]{2} ([A-Z][a-z]{2}) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4}) \d+$/;
|
|
69
|
+
const MONTHS = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
|
70
|
+
/** Parses a birth observed with TZ=UTC0. */
|
|
71
|
+
function utcBirth(birth) {
|
|
72
|
+
const [, month = "", day, hours, minutes, seconds, year] = PS_IDENTITY.exec(birth ?? "") ?? [];
|
|
73
|
+
const index = MONTHS.indexOf(month);
|
|
74
|
+
// Unreadable or malformed observations yield NaN, which never proves a later birth.
|
|
75
|
+
return month.length === 3 && index % 3 === 0
|
|
76
|
+
? Date.UTC(Number(year), index / 3, Number(day), Number(hours), Number(minutes), Number(seconds))
|
|
77
|
+
: Number.NaN;
|
|
78
|
+
}
|
|
79
|
+
function sameClock(left, right) {
|
|
80
|
+
return left.boot === right.boot && left.namespace === right.namespace;
|
|
81
|
+
}
|
|
82
|
+
/** Android's elapsed age bounds birth in the saved monotonic clock, never wall time. */
|
|
83
|
+
function clockBound(clock) {
|
|
84
|
+
const before = readProcessClock();
|
|
85
|
+
return clock !== undefined && before !== undefined && sameClock(clock, before)
|
|
86
|
+
? { clock, before }
|
|
87
|
+
: undefined;
|
|
88
|
+
}
|
|
89
|
+
/** `elapsed` is observed after the bound's `before` read; the closing clock read follows both. */
|
|
90
|
+
function bornAfter({ clock, before }, elapsed = "") {
|
|
91
|
+
const after = readProcessClock();
|
|
92
|
+
if (after === undefined || !sameClock(before, after) || !/^\d+$/.test(elapsed)) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
// Include displayed-second and native tick uncertainty. BOOTTIME age includes suspend,
|
|
96
|
+
// unlike hrtime's MONOTONIC clock, so suspend only moves this lower bound earlier.
|
|
97
|
+
const birth = BigInt(before.at) - (BigInt(elapsed) + 2n) * 1000000000n;
|
|
98
|
+
return BigInt(after.at) >= BigInt(before.at) && birth > BigInt(clock.at);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* True only when a live PID provably names a different process than an owner-published record.
|
|
102
|
+
* Darwin identities are unzoned local times, so they are never compared across zones; only a
|
|
103
|
+
* UTC-observed birth strictly after the record's publication proves replacement. Android uses
|
|
104
|
+
* a conservative elapsed-age bound against its recorded boot-qualified monotonic clock.
|
|
105
|
+
*/
|
|
106
|
+
export function isChildProcessReplaced(pid, recorded, published, clock) {
|
|
107
|
+
if (process.platform === "linux") {
|
|
108
|
+
return isLinuxProcessReplaced(pid, recorded);
|
|
109
|
+
}
|
|
110
|
+
if (!PS_IDENTITY.test(recorded)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
if (process.platform === "android") {
|
|
114
|
+
const bound = clockBound(clock);
|
|
115
|
+
return bound !== undefined && bornAfter(bound, readPsFields(pid, ["etimes="]));
|
|
116
|
+
}
|
|
117
|
+
return published !== undefined && utcBirth(readPsFields(pid, BIRTH_FIELDS, "UTC0")) > published;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Nonblocking `readChildProcessIdentity(pid) !== recorded && isChildProcessReplaced(...)` for
|
|
121
|
+
* routine liveness. Signals still need the fresh synchronous proof.
|
|
122
|
+
*/
|
|
123
|
+
export async function observeChildProcessReplaced(pid, recorded, published, clock) {
|
|
124
|
+
if (process.platform === "linux") {
|
|
125
|
+
return readChildProcessIdentity(pid) !== recorded && isLinuxProcessReplaced(pid, recorded);
|
|
126
|
+
}
|
|
127
|
+
if (!PS_IDENTITY.test(recorded) ||
|
|
128
|
+
groupLeader(pid, await observePsFields(pid, BIRTH_FIELDS)) === recorded) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
if (process.platform === "android") {
|
|
132
|
+
const bound = clockBound(clock);
|
|
133
|
+
return bound !== undefined && bornAfter(bound, await observePsFields(pid, ["etimes="]));
|
|
134
|
+
}
|
|
135
|
+
if (published === undefined) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return utcBirth(await observePsFields(pid, BIRTH_FIELDS, "UTC0")) > published;
|
|
139
|
+
}
|
|
27
140
|
function trySignalChild(child, signal) {
|
|
28
141
|
try {
|
|
29
142
|
return child.kill(signal);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MouseRegion, TruncatedText, truncateToWidth, visibleWidth, } from "@earendil-works/pi-tui";
|
|
2
|
+
export function actionText(text, action) {
|
|
3
|
+
const component = new TruncatedText(text, 0, 0);
|
|
4
|
+
return new MouseRegion(component, (event) => {
|
|
5
|
+
if ((event.type !== "press" && event.type !== "click") ||
|
|
6
|
+
event.button !== "left" ||
|
|
7
|
+
event.x >= visibleWidth(truncateToWidth(text, event.width))) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (event.type === "click") {
|
|
11
|
+
action(event.x);
|
|
12
|
+
}
|
|
13
|
+
return { handled: true, render: event.type === "click" };
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/** Each visible hint dispatches the same action as its corresponding keyboard binding. */
|
|
17
|
+
export function actionHints(hints) {
|
|
18
|
+
return actionText(hints.map((hint) => hint.text).join(" · "), (column) => {
|
|
19
|
+
let start = 0;
|
|
20
|
+
for (const hint of hints) {
|
|
21
|
+
const end = start + visibleWidth(hint.text);
|
|
22
|
+
if (column >= start && column < end) {
|
|
23
|
+
hint.action();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
start = end + 3;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
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
|
-
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** JSON and caught failures cross the process/filesystem boundary as unknown values. */
|
|
2
|
+
export type UnknownRecord = Readonly<Record<string, unknown>>;
|
|
3
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
4
|
+
export declare function isUnknownArray(value: unknown): value is readonly unknown[];
|
|
5
|
+
export declare function recordAt(value: unknown, key: string | number): UnknownRecord | undefined;
|
|
6
|
+
export declare function errorMessage(error: unknown): string;
|
|
7
|
+
export declare function hasErrorCode(error: unknown, code: string): boolean;
|
|
8
|
+
/** Retain native error names without letting a broken stringifier replace the caught failure. */
|
|
9
|
+
export declare function errorDescription(error: unknown): string;
|
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,8 @@ 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.
|
|
40
|
+
The active-child viewer has an approved aggregate budget of 19,000 source lines
|
|
41
|
+
and 22,500 production lines. The 1 MiB byte ceiling and all lint limits stay unchanged.
|