pi-amq 0.1.2 → 0.1.4
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 +9 -0
- package/dist/extension/runtime.d.ts.map +1 -1
- package/dist/extension/runtime.js +20 -12
- package/dist/extension/runtime.js.map +1 -1
- package/dist/extension/worker-runtime.d.ts.map +1 -1
- package/dist/extension/worker-runtime.js +20 -8
- package/dist/extension/worker-runtime.js.map +1 -1
- package/dist/extension/worker-tools.d.ts +2 -2
- package/dist/extension/worker-tools.d.ts.map +1 -1
- package/dist/extension/worker-tools.js +2 -1
- package/dist/extension/worker-tools.js.map +1 -1
- package/dist/integration/fleet-view.d.ts +21 -3
- package/dist/integration/fleet-view.d.ts.map +1 -1
- package/dist/integration/fleet-view.js +104 -9
- package/dist/integration/fleet-view.js.map +1 -1
- package/dist/integration/launch-preview.d.ts.map +1 -1
- package/dist/integration/launch-preview.js +21 -3
- package/dist/integration/launch-preview.js.map +1 -1
- package/dist/transport/runtime-status.d.ts.map +1 -1
- package/dist/transport/runtime-status.js +19 -4
- package/dist/transport/runtime-status.js.map +1 -1
- package/dist/workflow/run-store.d.ts +3 -2
- package/dist/workflow/run-store.d.ts.map +1 -1
- package/dist/workflow/run-store.js +4 -4
- package/dist/workflow/run-store.js.map +1 -1
- package/dist/workflow/worker-child-extension.d.ts.map +1 -1
- package/dist/workflow/worker-child-extension.js +104 -32
- package/dist/workflow/worker-child-extension.js.map +1 -1
- package/dist/workflow/worker-launch.d.ts +7 -4
- package/dist/workflow/worker-launch.d.ts.map +1 -1
- package/dist/workflow/worker-launch.js +38 -5
- package/dist/workflow/worker-launch.js.map +1 -1
- package/dist/workflow/worker-process-supervisor.d.ts +1 -0
- package/dist/workflow/worker-process-supervisor.d.ts.map +1 -1
- package/dist/workflow/worker-process-supervisor.js +131 -77
- package/dist/workflow/worker-process-supervisor.js.map +1 -1
- package/dist/workflow/workflow-types.d.ts +11 -3
- package/dist/workflow/workflow-types.d.ts.map +1 -1
- package/dist/workflow/workflow-types.js.map +1 -1
- package/docs/conformance.md +3 -3
- package/docs/contracts/deferred-findings.md +49 -0
- package/docs/contracts/worker-runtime.md +1 -1
- package/docs/design.md +4 -4
- package/docs/operator-guide.md +2 -2
- package/extension/runtime.ts +20 -11
- package/extension/worker-runtime.ts +21 -8
- package/extension/worker-tools.ts +2 -1
- package/integration/fleet-view.ts +138 -10
- package/integration/launch-preview.ts +26 -3
- package/package.json +1 -1
- package/transport/runtime-status.ts +15 -4
- package/workflow/run-store.ts +9 -7
- package/workflow/worker-child-extension.ts +116 -34
- package/workflow/worker-launch.ts +51 -12
- package/workflow/worker-process-supervisor.ts +160 -75
- package/workflow/workflow-types.ts +13 -3
- package/docs//346/250/241/345/236/213/345/274/272/345/272/246/344/270/216Harness/345/244/215/346/235/202/345/272/246.md +0 -1011
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../../workflow/workflow-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../../workflow/workflow-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-types.js","sourceRoot":"","sources":["../../workflow/workflow-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-types.js","sourceRoot":"","sources":["../../workflow/workflow-types.ts"],"names":[],"mappings":"AA6VA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM;IACN,WAAW;IACX,MAAM;IACN,SAAS;IACT,kBAAkB;IAClB,WAAW;IACX,WAAW;IACX,iBAAiB;CACT,CAAC"}
|
package/docs/conformance.md
CHANGED
|
@@ -55,12 +55,12 @@ explicitly.
|
|
|
55
55
|
| 28 | Spawn contract validation | `test/workflow-run-store.test.ts` — `[appendix 28,41]` invalid-contract no-mutation<br>`test/worker-process-supervisor.test.ts` — `[appendix 28]` required-field matrix and `[appendix 28,34]` grant/depth/concurrency preflight | partially | Goal, acceptance, constraints, budget, model, capability, and workspace omissions all refuse before ledger, worker-session lease, or process effects. Capability, budget, and unresolved trust also fail closed. Missing: an explicit mutation-grant authority and exceedance oracle. |
|
|
56
56
|
| 29 | Idempotent `spawn_worker` | `test/worker-process-supervisor.test.ts` — `[appendix 28,34]` repeated request returns the existing worker | partially | Same-key replay and conflict fencing exist. Missing: a literal driver crash between tool return and caller observation. |
|
|
57
57
|
| 30 | One worker session, one owner | `test/workflow-lease.test.ts` — three `[appendix 30]` exclusivity/takeover/fail-closed tests<br>`test/worker-process-supervisor.test.ts` — run-scoped sessions, authoritative child exit, and PID-disappearance negative control | implemented | Canonical session leases are generation-fenced. Lease-owner staleness and worker lifecycle exit remain separate; PID disappearance never synthesizes worker exit or replacement. |
|
|
58
|
-
| 31 | Parent death and stale output | `test/node-pi-process-factory.test.ts` — `[appendix 31]` parent-liveness and process-group tests<br>`test/worker-process-supervisor.test.ts` — `[appendix 30,31,40]` detached no-replay recovery, `[appendix 31,32,34]` uncertain-effect ambiguity,
|
|
58
|
+
| 31 | Parent death and stale output | `test/node-pi-process-factory.test.ts` — `[appendix 31]` parent-liveness and process-group tests<br>`test/worker-process-supervisor.test.ts` — `[appendix 30,31,40]` detached no-replay recovery, `[appendix 31,32,34]` uncertain-effect ambiguity, `[appendix 31]` live stale-output fencing, and JSON settled liveness release | implemented | Parent loss leaves a known-live worker running with detached control and run needs-attention; uncertain effects enter ambiguity. After supervisor takeover, a live mutating old-generation worker cannot commit result, usage, candidate, or exit facts. A settled JSON one-shot releases its liveness pipe only after the correlated settled envelope. |
|
|
59
59
|
| 32 | Broken RPC pipe after uncertain work | `test/worker-process-supervisor.test.ts` — `[appendix 31,32,34]` uncertain external exit becomes ambiguous<br>`test/workflow-run-store.test.ts` — `[appendix 32]` durable reconciliation | implemented | Uncertain effects become ambiguous, never replay, and require explicit reconciliation. |
|
|
60
|
-
| 33 | JSON/RPC contract boundary | `test/worker-launch-contract.test.ts` and `test/worker-process-supervisor.test.ts` — `[appendix 24,33,36]`, `[appendix 33]` | partially | JSON
|
|
60
|
+
| 33 | JSON/RPC contract boundary | `test/worker-launch-contract.test.ts` and `test/worker-process-supervisor.test.ts` — `[appendix 24,33,36]`, `[appendix 33]`, EOF-before-ready, and exit-after-drain<br>`test/stock-worker-protocol-integration.test.ts` — real Pi JSON/RPC fd-4 and descriptor-mismatch cases | partially | JSON closes stdin before ready while RPC retains stdin for control. Both use a dedicated worker-control descriptor; Pi stdout and diagnostic stderr cannot impersonate launch parity. Driver-inbox forwarding is not part of W3. |
|
|
61
61
|
| 34 | Hard budget enforcement | `test/worker-process-supervisor.test.ts` — `[appendix 28,34]`, `[appendix 31,32,34]`, and five `[appendix 34]` cases | implemented | Every run ceiling has direct evidence: max-workers, concurrency, depth, total attempts, token, wall-clock, cost, and output bytes. Preflight exhaustion refuses before process creation or ledger mutation; observed runtime exhaustion persists the trigger usage and cancellation intent before signaling. |
|
|
62
62
|
| 35 | Mutation isolation | — | deferred-with-reason | Requires worker mutation/worktree leases and concurrent mutating worker execution. |
|
|
63
|
-
| 36 | Child launch parity and trust | `test/worker-launch-contract.test.ts` — `[appendix 24,33,36]
|
|
63
|
+
| 36 | Child launch parity and trust | `test/worker-launch-contract.test.ts` — `[appendix 24,33,36]`, `[appendix 28,33,36]`, schema-1 historical compatibility, and schema-2 fd parity<br>`test/stock-worker-protocol-integration.test.ts` — real Pi descriptor mismatch fails closed | implemented | Model, thinking level, cwd, tools, capability, channel, trust, and liveness/control descriptor mismatches fail before useful child work. |
|
|
64
64
|
| 37 | Dormant transport independence | `test/workflow-run-store.test.ts` — `[appendix 37,47,48] zero-AMQ run demonstrates three governed workers and live FleetView`<br>`test/extension-registration.test.ts` and `test/worker-tools.test.ts` | implemented | One interactive non-AMQ run exercises three distinct model/difficulty/channel contracts, steer, cancellation, collection, Gate completion, budget projection, and Fleet navigation while proving no `.agent-mail` path is created. Worker tools register independently of transport activation. |
|
|
65
65
|
| 38 | Cross-domain correlation without merged state | `test/workflow-domain-isolation.test.ts` — `[appendix 38]` | implemented | AMQ correlation cannot cross-replay or mutate the workflow persistence owner. |
|
|
66
66
|
| 39 | Ledger projection correctness | `test/workflow-run-store.test.ts` — `[appendix 26,39,40]` and `[appendix 39,45]` | implemented | Snapshot corruption is ignored in favor of the contiguous event chain; gaps and checksum changes fail closed. |
|
|
@@ -74,3 +74,52 @@ path that lies **outside** every seam listed above.
|
|
|
74
74
|
|
|
75
75
|
A bug found *inside* one of those seams is an ordinary bug fix in that seam. It is not evidence
|
|
76
76
|
that a new active-frame owner is needed, and it does not reopen this row.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## DF-3 — Spawn identity is sampled during the child's `exec` transition
|
|
81
|
+
|
|
82
|
+
**Status:** deferred.
|
|
83
|
+
|
|
84
|
+
**Observation.** `workflow/worker-process-supervisor.ts` proves child identity with a single
|
|
85
|
+
`inspect(child.pid)` immediately after `waitForSpawn` resolves. When the launcher is a wrapper
|
|
86
|
+
script — which is the normal shape for a PATH- or Homebrew-installed `pi`, and the reason
|
|
87
|
+
[§A.5.1](../design.md#a51-namespace-and-authority) supports PATH launch at all — `waitForSpawn`
|
|
88
|
+
resolves while `/bin/sh` still owns the image, before `exec` replaces it. Darwin `ps -o comm=`
|
|
89
|
+
therefore reports a value that changes underneath the sample:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
t=0ms "/bin/sh"
|
|
93
|
+
t=50ms "/opt/homebrew/Cellar/node/<version>/bin/node"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Reproduced 150 spawns of a `#!/bin/sh` + `exec node` wrapper under process churn:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
{"live":148,"unknown":2}
|
|
100
|
+
recorded executables: [ ".../bin/node", "/bin/sh" ]
|
|
101
|
+
diag: Darwin process executable is unavailable
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Two consequences follow from the one cause:
|
|
105
|
+
|
|
106
|
+
- `selectDarwinExecutable` has no fallback for a child PID — only `pid === process.pid` falls back
|
|
107
|
+
to `process.execPath` — so a transient non-absolute `comm` yields `unknown` and the attempt
|
|
108
|
+
fails with "Spawned worker identity could not be proven" (~1.3% under load);
|
|
109
|
+
- the same launcher records either `/bin/sh` or the node path, so a later comparison in
|
|
110
|
+
`workflow/workflow-lease.ts` reaches "PID executable changed" and judges a live worker stale.
|
|
111
|
+
|
|
112
|
+
The visible symptom today is that `test/worker-runtime-reload.test.ts` — "worker runtime core
|
|
113
|
+
survives extension replacement without duplicate UI subscribers" — fails intermittently in the
|
|
114
|
+
full suite and passes in isolation.
|
|
115
|
+
|
|
116
|
+
**Why it is deferred.** The narrow fix (resample until two reads agree) and the deeper fix (drop
|
|
117
|
+
`executable` from the identity predicate, leaving pid plus `processStartIdentity` plus
|
|
118
|
+
`bootIdentity`) trade against each other, and the deeper one weakens Darwin PID-reuse defence
|
|
119
|
+
because `lstart` has one-second resolution. It also rewrites a persisted lease field, which is an
|
|
120
|
+
expensive-to-reverse seam requiring the [§17](../design.md#17-versioning-and-compatibility)
|
|
121
|
+
migration path. Neither belongs inside a worker-control-channel change.
|
|
122
|
+
|
|
123
|
+
**Reopen only on:** any work that touches spawn-time identity capture or the lease staleness
|
|
124
|
+
predicate, or a reproduced production spawn failure or false-stale judgement outside the test
|
|
125
|
+
suite. An intermittent red on the reload test alone is this row, not a new finding.
|
|
@@ -34,7 +34,7 @@ implementation drifted from the section.
|
|
|
34
34
|
| Lifecycle and recovery rules | [§A.5.3](../design.md#a53-lifecycle-and-recovery-rules) | `evaluateRunTransition`, `evaluateWorkerAttemptTransition` | `workflow/run-gate.ts`, `workflow/worker-gate.ts` | `test/run-gate.test.ts`, `test/worker-gate.test.ts` |
|
|
35
35
|
| Completion notices | [§A.5.3](../design.md#a53-lifecycle-and-recovery-rules) | `WorkerCompletionNotifier` | `integration/worker-completion-notifier.ts` | `test/worker-completion-notifier.test.ts` |
|
|
36
36
|
| Implemented W2 process-supervision boundary | [§A.5.4](../design.md#a54-implemented-w2-process-supervision-boundary) | `WorkerProcessSupervisor`, `NodePiProcessFactory` | `workflow/worker-process-supervisor.ts` | `test/worker-process-supervisor.test.ts`, `test/node-pi-process-factory.test.ts` |
|
|
37
|
-
| Exact send-only child launch contract | [§A.5.4](../design.md#a54-implemented-w2-process-supervision-boundary) | `
|
|
37
|
+
| Exact send-only child launch contract | [§A.5.4](../design.md#a54-implemented-w2-process-supervision-boundary) | `parseWorkerLaunchContract`, `parseWorkerLaunchContractV2`, `resolveWorkerLaunch`, `validateWorkerChildContext` | `workflow/worker-launch.ts`, `workflow/worker-child-extension.ts` | `test/worker-launch-contract.test.ts`, `test/stock-worker-protocol-integration.test.ts` — schema-1 historical read compatibility plus real Pi JSON/RPC fd-4 and fail-closed descriptor evidence |
|
|
38
38
|
| Worker session fork source | [§A.5.4](../design.md#a54-implemented-w2-process-supervision-boundary) | `describeCurrentPiSessionFork`, `NodePiSessionForker` | `workflow/pi-session-fork.ts` | `test/pi-session-fork.test.ts` |
|
|
39
39
|
| Supervisor process identity | [§A.5.4](../design.md#a54-implemented-w2-process-supervision-boundary) | `SystemProcessIdentityInspector` — the only owner outside the receiver lease's own inspector | `workflow/system-process-inspector.ts` | `test/system-process-inspector.test.ts` — see [deferred findings](deferred-findings.md) |
|
|
40
40
|
|
package/docs/design.md
CHANGED
|
@@ -252,7 +252,7 @@ An unpinned launch may use explicit extension flags. In that mode every particip
|
|
|
252
252
|
|
|
253
253
|
### 6.3 Dormant to confirmed bind
|
|
254
254
|
|
|
255
|
-
Dormant mode
|
|
255
|
+
Dormant mode remains inspectable through `/amq status`, RPC status, and the `/amq bind` onboarding command, but it does not occupy the persistent TUI footer. It does not activate mutating LLM tools, acquire a lease, watch, claim, or publish active presence.
|
|
256
256
|
|
|
257
257
|
The confirmed flow is:
|
|
258
258
|
|
|
@@ -1224,9 +1224,9 @@ The extra model turn on resume is intentional: the ledger supplies truth, while
|
|
|
1224
1224
|
|
|
1225
1225
|
W2 implemented the internal process-governance layer without registering model-visible worker tools. W3 now exposes the six atomic tools through the extension composition root while retaining this W2 process boundary.
|
|
1226
1226
|
|
|
1227
|
-
Every attempt persists a schema-
|
|
1227
|
+
Every new attempt persists a schema-2 launch contract containing the run/worker/attempt identities and both generations, `transportMode:"send-only"`, exact channel, depth, model/thinking level, capabilities, projected pi tools, cwd/worktree, project-trust decision, worker budget, side-effect policy, parent-liveness FD, worker-control FD, and a deterministic per-worker session directory. Historical schema-1 launch contracts remain readable ledger evidence but are never used to launch a new child. The supervisor removes inherited `AM_*`, `ORCH_*`, parent `PI_SESSION_*`, and stale `PI_AMQ_*` values, then injects only the new launch-contract path plus generation-bound liveness and worker-control descriptors. The child extension validates the descriptor environment, mode, model, thinking, cwd, trust, tools, and receiver-authority absence before provider work; mismatch requests shutdown and, when the authenticated control descriptor is usable, emits a generation-correlated refusal.
|
|
1228
1228
|
|
|
1229
|
-
JSON is selected only for bounded one-shot work with no live steer or driver-inbox forwarding capability. Its prompt is fixed at process creation and
|
|
1229
|
+
JSON is selected only for bounded one-shot work with no live steer or driver-inbox forwarding capability. Its prompt is fixed at process creation. After process identity, lease activation, durable start evidence, and stream monitoring are established, the supervisor closes JSON stdin before awaiting the generation-correlated ready handshake. RPC is selected for multi-turn or live-control work: it keeps stdin open, starts without a prompt, validates the ready generation, then accepts JSONL prompt/abort control. Both modes emit `pi_amq_worker_*` control envelopes only through inherited FD 4; stdout remains Pi's JSON/RPC event stream and stderr remains diagnostic output. The streaming decoders tolerate a UTF-8 sequence split across chunks and parse one final unterminated line at EOF. Each stdout or worker-control JSONL line is capped at 4 MiB; overflow records a structured `protocol_output_limit` error and cancels the attempt. A raw child exit cannot defeat a ready envelope already buffered in the control pipe: missing-ready failure is established only after process exit and worker-control drain. Once a JSON worker emits generation-correlated `worker_settled`, the supervisor closes its parent-liveness pipe so the one-shot Pi process can exit; RPC retains that pipe until ordinary cancellation or process teardown. Only the final 128 KiB of stderr is retained for a failed-exit diagnostic. Contract revisions queued during inference are released by a generation-correlated `agent_settled` event, not by `message_end`, because retries and follow-up turns may still be active at message completion. A broken RPC pipe is never reconnectable state. `(debate: stock Pi 0.80.10, 0.84.1, and 0.84.2 await readPipedStdin before runPrintMode/session.bindExtensions, making JSON ready-before-EOF impossible; Pi 0.84.2 redirects extension process.stdout to stderr in both JSON and RPC, requiring a dedicated worker-control descriptor; process exit is adjudicated only after that descriptor drains so a buffered ready remains authoritative.)`
|
|
1230
1230
|
|
|
1231
1231
|
The deterministic session path leased before spawn is the worker's exclusive pi session directory. Pi allocates its JSONL filename inside that directory; the child-ready event records the actual generated session file in the ledger. Reservation ownership initially carries the current supervisor's full process evidence and is atomically promoted, under the same lease generation, to the spawned child's PID/start/boot/executable/host evidence. This closes the create-process-before-session-lease race while making one worker's full session namespace exclusive.
|
|
1232
1232
|
|
|
@@ -1365,7 +1365,7 @@ Phase 4 presents live worker state without transferring session authority. The i
|
|
|
1365
1365
|
The Phase 4 ladder is deliberately layered:
|
|
1366
1366
|
|
|
1367
1367
|
1. Active tool calls expose bounded progress through the tool result row's `onUpdate` path.
|
|
1368
|
-
2. A render-only `belowEditor` widget, installed with `ctx.ui.setWidget`, lists the main session plus every worker
|
|
1368
|
+
2. A render-only `belowEditor` widget, installed with `ctx.ui.setWidget`, stays absent until the authoritative ledger/supervisor projection contains at least one worker. Once present, it lists the main session plus every known worker. Compact hierarchical rows use semantic state markers and color, meaningful role names, bounded handles and models, spend, and relative last activity instead of raw timestamps. Supervisor events update the projection and call `invalidate()`, so list state changes live without closing or reopening it.
|
|
1369
1369
|
3. Keyboard handling uses `ctx.ui.onTerminalInput`, which runs before the focused editor. It may consume navigation only when `ctx.ui.getEditorText() === ""`: down-arrow at an empty prompt focuses the list, up/down changes selection, Enter opens the selected worker's live conversation overlay, and Esc walks detail -> list -> closed. Typing and every non-navigation key are never intercepted. There is no chord shortcut.
|
|
1370
1370
|
4. The detail view uses `ctx.ui.custom(..., { overlay: true })` and tails the worker's own pi session file or current RPC event feed read-only. It includes the reference viewer's inline steer composer on Enter and guarded stop gesture `x,x`. Steer is enabled only for the current correlated RPC generation. A JSON worker renders the disabled notice exactly `one-shot worker, cannot steer`; no input is buffered for later delivery. Stop records a normal scoped cancellation intent and reports requested/observed/indeterminate termination through `WorkerRuntime` rather than equating a keypress or signal with death.
|
|
1371
1371
|
5. Closing the detail returns to the list; closing the list returns focus to the main editor. Inspection is a non-blocking overlay, not `switchSession`: the main model and all workers continue running, and overlay updates cannot block or reorder AMQ delivery.
|
package/docs/operator-guide.md
CHANGED
|
@@ -76,7 +76,7 @@ Unlimited run dimensions require an explicit `--worker-unlimited=<dimensions|all
|
|
|
76
76
|
|
|
77
77
|
## FleetView
|
|
78
78
|
|
|
79
|
-
FleetView appears below the editor
|
|
79
|
+
FleetView appears below the editor only after the worker runtime has at least one authoritative worker row; an ordinary pi session does not reserve empty Fleet space. Once visible, it projects the main session and workers with compact role, model, lifecycle, spend, and relative-activity rows. The detail overlay reads the current projection and bounded live session tail.
|
|
80
80
|
|
|
81
81
|
RPC workers may receive generation-fenced steer input and directionally granted peer input. Peer messages wait for the recipient inference boundary and their pending count is visible in Fleet/tool projections. A blocked row displays its exact typed-wait reason and correlation; operators must copy that correlation into the intended steer or revision. `x,x` requests cancellation and is also generation-fenced. JSON workers are one-shot and cannot be steered, receive peer grants, or declare typed waits. Fleet actions report requested outcomes; the process and Gate observations remain authoritative. Stall markers are running-only facts—the runtime never auto-nudges, retries, steers, or cancels from them.
|
|
82
82
|
|
|
@@ -84,7 +84,7 @@ RPC workers may receive generation-fenced steer input and directionally granted
|
|
|
84
84
|
|
|
85
85
|
AMQ uses verified physical root and handle identity, one receiver lease, durable bridge journal, priority-aware delivery, exact per-envelope reply provenance, receipts, and a terminal DLQ. Ordinary workers are send-only and never compete for the receiver lease. Use exact envelope IDs when replying.
|
|
86
86
|
|
|
87
|
-
The extension can remain dormant without blocking WorkerRuntime. `/amq bind` performs confirmed onboarding or binds a verified existing context. `/amq status|inbox|pause|resume|ingest|takeover|dlq|trace|doctor` exposes operator actions. Authorized fresh-session mail automatically replaces the current session (pi >= 0.84.2 is required); the journal marks it `injected` once the kickoff becomes disk-visible in the replacement session, which pi may flush slightly after delivery — that in-between state is a normal `pending` record with its target already committed, not a failure. If the replacement is cancelled, its command dispatch never completes, or the kickoff cannot be found in either the replacement session or on disk, it stays pending and `/amq ingest` visibly promotes it into the current session instead.
|
|
87
|
+
The extension can remain dormant without blocking WorkerRuntime. Dormant transport stays out of the persistent TUI footer; `/amq status` and RPC status retain its exact diagnostics. `/amq bind` performs confirmed onboarding or binds a verified existing context. `/amq status|inbox|pause|resume|ingest|takeover|dlq|trace|doctor` exposes operator actions. Authorized fresh-session mail automatically replaces the current session (pi >= 0.84.2 is required); the journal marks it `injected` once the kickoff becomes disk-visible in the replacement session, which pi may flush slightly after delivery — that in-between state is a normal `pending` record with its target already committed, not a failure. If the replacement is cancelled, its command dispatch never completes, or the kickoff cannot be found in either the replacement session or on disk, it stays pending and `/amq ingest` visibly promotes it into the current session instead.
|
|
88
88
|
|
|
89
89
|
## Troubleshooting
|
|
90
90
|
|
package/extension/runtime.ts
CHANGED
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
FleetDetailController,
|
|
25
25
|
MutableFleetProjectionSource,
|
|
26
26
|
handleFleetInput,
|
|
27
|
+
projectVisibleFleet,
|
|
27
28
|
renderFleetDetail,
|
|
28
29
|
type FleetAgentRecord,
|
|
29
30
|
} from "../integration/fleet-view.js";
|
|
@@ -218,7 +219,7 @@ export class PiAmqRuntime {
|
|
|
218
219
|
});
|
|
219
220
|
this.#activateTools("dormant");
|
|
220
221
|
this.#installSurfaces(ctx);
|
|
221
|
-
this.#updateMainFleet(ctx, "
|
|
222
|
+
this.#updateMainFleet(ctx, ctx.isIdle() ? "idle" : "busy");
|
|
222
223
|
return;
|
|
223
224
|
}
|
|
224
225
|
this.#resolver = new BindingResolver(this.#adapter);
|
|
@@ -239,7 +240,7 @@ export class PiAmqRuntime {
|
|
|
239
240
|
});
|
|
240
241
|
this.#activateTools("dormant");
|
|
241
242
|
this.#installSurfaces(ctx);
|
|
242
|
-
this.#updateMainFleet(ctx, "
|
|
243
|
+
this.#updateMainFleet(ctx, ctx.isIdle() ? "idle" : "busy");
|
|
243
244
|
return;
|
|
244
245
|
}
|
|
245
246
|
|
|
@@ -726,11 +727,21 @@ export class PiAmqRuntime {
|
|
|
726
727
|
this.#unsubscribeTerminal?.();
|
|
727
728
|
this.#fleetModel?.dispose();
|
|
728
729
|
if (ctx.mode === "tui") {
|
|
729
|
-
ctx.ui.setWidget(WIDGET_KEY, (tui) => {
|
|
730
|
-
const model = new FleetListModel(this.#fleet, () => tui.requestRender()
|
|
730
|
+
ctx.ui.setWidget(WIDGET_KEY, (tui, theme) => {
|
|
731
|
+
const model = new FleetListModel(this.#fleet, () => tui.requestRender(), {
|
|
732
|
+
style: {
|
|
733
|
+
accent: (value) => theme.fg("accent", value),
|
|
734
|
+
muted: (value) => theme.fg("muted", value),
|
|
735
|
+
dim: (value) => theme.fg("dim", value),
|
|
736
|
+
success: (value) => theme.fg("success", value),
|
|
737
|
+
warning: (value) => theme.fg("warning", value),
|
|
738
|
+
error: (value) => theme.fg("error", value),
|
|
739
|
+
bold: (value) => theme.bold(value),
|
|
740
|
+
},
|
|
741
|
+
});
|
|
731
742
|
this.#fleetModel = model;
|
|
732
743
|
return {
|
|
733
|
-
render: () => model.render(),
|
|
744
|
+
render: (width: number) => model.render(width),
|
|
734
745
|
invalidate: () => undefined,
|
|
735
746
|
dispose: () => model.dispose(),
|
|
736
747
|
};
|
|
@@ -775,7 +786,7 @@ export class PiAmqRuntime {
|
|
|
775
786
|
},
|
|
776
787
|
dispose: unsubscribe,
|
|
777
788
|
};
|
|
778
|
-
}, { overlay: true });
|
|
789
|
+
}, { overlay: true, onHandle: (handle) => handle.focus() });
|
|
779
790
|
}
|
|
780
791
|
|
|
781
792
|
#updateMainFleet(ctx: ExtensionContext, state: FleetAgentRecord["state"], selectedModel?: string): void {
|
|
@@ -794,14 +805,12 @@ export class PiAmqRuntime {
|
|
|
794
805
|
}
|
|
795
806
|
|
|
796
807
|
#commitFleet(): void {
|
|
797
|
-
this.#fleet.update(
|
|
798
|
-
...(this.#mainFleet ? [this.#mainFleet] : []),
|
|
799
|
-
...this.#workerFleet,
|
|
800
|
-
]);
|
|
808
|
+
this.#fleet.update(projectVisibleFleet(this.#mainFleet, this.#workerFleet));
|
|
801
809
|
if (this.#ctx?.mode === "rpc") {
|
|
810
|
+
const rows = this.#fleet.snapshot().flatMap(renderFleetRow);
|
|
802
811
|
this.#ctx.ui.setWidget(
|
|
803
812
|
WIDGET_KEY,
|
|
804
|
-
|
|
813
|
+
rows.length > 0 ? rows : undefined,
|
|
805
814
|
{ placement: "belowEditor" },
|
|
806
815
|
);
|
|
807
816
|
}
|
|
@@ -621,6 +621,7 @@ export class PiWorkerRuntime implements WorkerToolProvider {
|
|
|
621
621
|
throw new TypeError("Primary and fallback model chain entries must be unique");
|
|
622
622
|
}
|
|
623
623
|
const context = params.context ?? "fresh";
|
|
624
|
+
const budget = params.budget ?? defaultWorkerBudget();
|
|
624
625
|
const forkSource = context === "fork"
|
|
625
626
|
? describeCurrentPiSessionFork(ctx.sessionManager)
|
|
626
627
|
: undefined;
|
|
@@ -635,11 +636,11 @@ export class PiWorkerRuntime implements WorkerToolProvider {
|
|
|
635
636
|
acceptance: params.acceptance,
|
|
636
637
|
constraints: params.constraints,
|
|
637
638
|
budget: {
|
|
638
|
-
maxAttempts:
|
|
639
|
-
maxWallClockMs:
|
|
640
|
-
maxTokens:
|
|
641
|
-
maxCostUsd:
|
|
642
|
-
maxOutputBytes:
|
|
639
|
+
maxAttempts: budget.max_attempts,
|
|
640
|
+
maxWallClockMs: budget.max_wall_clock_ms,
|
|
641
|
+
maxTokens: budget.max_tokens,
|
|
642
|
+
maxCostUsd: budget.max_cost_usd,
|
|
643
|
+
maxOutputBytes: budget.max_output_bytes,
|
|
643
644
|
},
|
|
644
645
|
model: { provider: selected.provider, id: selected.id, thinkingLevel },
|
|
645
646
|
...(modelFallbacks.length > 0 ? { modelFallbacks } : {}),
|
|
@@ -797,7 +798,7 @@ export class PiWorkerRuntime implements WorkerToolProvider {
|
|
|
797
798
|
return {
|
|
798
799
|
id: worker.workerId,
|
|
799
800
|
handle: worker.workerId,
|
|
800
|
-
role: "worker",
|
|
801
|
+
role: contract.role?.name ?? "worker",
|
|
801
802
|
model: `${selectedModel.provider}/${selectedModel.id}`,
|
|
802
803
|
state: fleetState(worker.state),
|
|
803
804
|
spend: attempt?.usage.costUsd ?? null,
|
|
@@ -990,7 +991,7 @@ export function projectFleetRecords(run: RunProjectionV2): readonly FleetAgentRe
|
|
|
990
991
|
return {
|
|
991
992
|
id: worker.workerId,
|
|
992
993
|
handle: worker.workerId,
|
|
993
|
-
role: "worker",
|
|
994
|
+
role: contract.role?.name ?? "worker",
|
|
994
995
|
model: `${selectedModel.provider}/${selectedModel.id}`,
|
|
995
996
|
state: fleetState(worker.state),
|
|
996
997
|
spend: attempt?.usage.costUsd ?? null,
|
|
@@ -1104,6 +1105,16 @@ export async function confirmedRunBudget(
|
|
|
1104
1105
|
};
|
|
1105
1106
|
}
|
|
1106
1107
|
|
|
1108
|
+
function defaultWorkerBudget(): NonNullable<SpawnWorkerToolParameters["budget"]> {
|
|
1109
|
+
return {
|
|
1110
|
+
max_attempts: limited(16),
|
|
1111
|
+
max_wall_clock_ms: limited(3_600_000),
|
|
1112
|
+
max_tokens: limited(500_000),
|
|
1113
|
+
max_cost_usd: limited(50),
|
|
1114
|
+
max_output_bytes: limited(67_108_864),
|
|
1115
|
+
};
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1107
1118
|
async function launchAuthority(ctx: ExtensionContext) {
|
|
1108
1119
|
const models = availablePiModels(ctx);
|
|
1109
1120
|
return {
|
|
@@ -1355,9 +1366,11 @@ function fleetState(state: string): FleetAgentRecord["state"] {
|
|
|
1355
1366
|
case "ambiguous":
|
|
1356
1367
|
return "ambiguous";
|
|
1357
1368
|
case "done":
|
|
1369
|
+
return "done";
|
|
1358
1370
|
case "failed":
|
|
1371
|
+
return "failed";
|
|
1359
1372
|
case "cancelled":
|
|
1360
|
-
return "
|
|
1373
|
+
return "cancelled";
|
|
1361
1374
|
default:
|
|
1362
1375
|
return "ambiguous";
|
|
1363
1376
|
}
|
|
@@ -74,7 +74,7 @@ const SpawnParameters = Type.Object({
|
|
|
74
74
|
goal: Type.String(),
|
|
75
75
|
acceptance: Type.Array(Type.String(), { minItems: 1 }),
|
|
76
76
|
constraints: Type.Array(Type.String()),
|
|
77
|
-
budget: WorkerBudget,
|
|
77
|
+
budget: Type.Optional(WorkerBudget),
|
|
78
78
|
model: Type.Optional(Model),
|
|
79
79
|
fallback_models: Type.Optional(Type.Array(Model, { maxItems: 4 })),
|
|
80
80
|
capabilities: Type.Optional(Type.Array(Type.String())),
|
|
@@ -173,6 +173,7 @@ export function registerWorkerTools(pi: ExtensionAPI, provider: WorkerToolProvid
|
|
|
173
173
|
"When tier selection is unavailable or uncertain, omit model so the current model is used.",
|
|
174
174
|
"Keep acceptance criteria falsifiable and grant only the required workspace and capabilities.",
|
|
175
175
|
"Use continue_worker_id only for deliberate continuation after the prior worker is terminal and proven dead; the new request remains a fresh contract.",
|
|
176
|
+
"If the user does not specify a budget, omit budget; the runtime defaults to the shipped maximum ceilings for each bounded dimension.",
|
|
176
177
|
],
|
|
177
178
|
parameters: SpawnParameters,
|
|
178
179
|
async execute(_id, params, signal, _onUpdate, ctx) {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Modified for pi-amq: render-only authoritative projection; no AgentManager.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
export type FleetLifecycle = "idle" | "busy" | "paused" | "offline" | "ambiguous";
|
|
10
|
+
export type FleetLifecycle = "idle" | "busy" | "paused" | "offline" | "ambiguous" | "done" | "failed" | "cancelled";
|
|
11
11
|
|
|
12
12
|
export interface FleetAgentRecord {
|
|
13
13
|
readonly id: string;
|
|
@@ -27,6 +27,38 @@ export interface FleetProjectionSource {
|
|
|
27
27
|
subscribe(listener: () => void): () => void;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
export interface FleetListStyle {
|
|
31
|
+
readonly accent: (value: string) => string;
|
|
32
|
+
readonly muted: (value: string) => string;
|
|
33
|
+
readonly dim: (value: string) => string;
|
|
34
|
+
readonly success: (value: string) => string;
|
|
35
|
+
readonly warning: (value: string) => string;
|
|
36
|
+
readonly error: (value: string) => string;
|
|
37
|
+
readonly bold: (value: string) => string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface FleetListPresentation {
|
|
41
|
+
readonly style?: FleetListStyle;
|
|
42
|
+
readonly now?: () => number;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface FleetVisibilityOptions {
|
|
46
|
+
readonly now?: number;
|
|
47
|
+
readonly cancelledRetentionMs?: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const DEFAULT_CANCELLED_RETENTION_MS = 5 * 60 * 1_000;
|
|
51
|
+
|
|
52
|
+
export function projectVisibleFleet(
|
|
53
|
+
main: FleetAgentRecord | undefined,
|
|
54
|
+
workers: readonly FleetAgentRecord[],
|
|
55
|
+
options: FleetVisibilityOptions = {},
|
|
56
|
+
): readonly FleetAgentRecord[] {
|
|
57
|
+
const visibleWorkers = workers.filter((worker) => !isExpiredCancelled(worker, options));
|
|
58
|
+
if (visibleWorkers.length === 0) return [];
|
|
59
|
+
return main ? [main, ...visibleWorkers] : [...visibleWorkers];
|
|
60
|
+
}
|
|
61
|
+
|
|
30
62
|
export class MutableFleetProjectionSource implements FleetProjectionSource {
|
|
31
63
|
#records: readonly FleetAgentRecord[];
|
|
32
64
|
readonly #listeners = new Set<() => void>();
|
|
@@ -52,13 +84,21 @@ export class MutableFleetProjectionSource implements FleetProjectionSource {
|
|
|
52
84
|
|
|
53
85
|
export class FleetListModel {
|
|
54
86
|
readonly #source: FleetProjectionSource;
|
|
87
|
+
readonly #style: FleetListStyle;
|
|
88
|
+
readonly #now: () => number;
|
|
55
89
|
#selected = 0;
|
|
56
90
|
#open = false;
|
|
57
91
|
#invalidations = 0;
|
|
58
92
|
readonly #unsubscribe: () => void;
|
|
59
93
|
|
|
60
|
-
constructor(
|
|
94
|
+
constructor(
|
|
95
|
+
source: FleetProjectionSource,
|
|
96
|
+
invalidate: () => void,
|
|
97
|
+
presentation: FleetListPresentation = {},
|
|
98
|
+
) {
|
|
61
99
|
this.#source = source;
|
|
100
|
+
this.#style = presentation.style ?? PLAIN_STYLE;
|
|
101
|
+
this.#now = presentation.now ?? Date.now;
|
|
62
102
|
this.#unsubscribe = source.subscribe(() => {
|
|
63
103
|
const last = Math.max(0, this.#source.snapshot().length - 1);
|
|
64
104
|
this.#selected = Math.min(this.#selected, last);
|
|
@@ -93,19 +133,40 @@ export class FleetListModel {
|
|
|
93
133
|
this.#selected = Math.max(0, Math.min(count - 1, this.#selected + delta));
|
|
94
134
|
}
|
|
95
135
|
|
|
96
|
-
render(): string[] {
|
|
136
|
+
render(width = 120): string[] {
|
|
97
137
|
const records = this.#source.snapshot();
|
|
98
|
-
if (records.length === 0) return [
|
|
138
|
+
if (records.length === 0) return [];
|
|
139
|
+
const workerCount = records.filter((record) => record.mode !== "main").length;
|
|
99
140
|
return [
|
|
100
|
-
"Fleet"
|
|
101
|
-
...records.
|
|
102
|
-
const marker = this.#open && index === this.#selected ? ">" : " ";
|
|
103
|
-
const spend = record.spend === null ? "-" : `$${record.spend.toFixed(4)}`;
|
|
104
|
-
return `${marker} ${record.handle}/${record.role} ${record.model} ${record.state} ${spend} ${record.lastActivity}`;
|
|
105
|
-
}),
|
|
141
|
+
`${this.#style.accent(this.#style.bold("Fleet"))}${this.#style.muted(` · ${workerCount} ${workerCount === 1 ? "worker" : "workers"}`)}`,
|
|
142
|
+
...records.flatMap((record, index) => this.#renderRecord(record, index, width)),
|
|
106
143
|
];
|
|
107
144
|
}
|
|
108
145
|
|
|
146
|
+
#renderRecord(record: FleetAgentRecord, index: number, width: number): string[] {
|
|
147
|
+
const selected = this.#open && index === this.#selected;
|
|
148
|
+
const appearance = stateAppearance(record.state, this.#style);
|
|
149
|
+
const label = record.mode === "main" ? "main" : record.role;
|
|
150
|
+
const handle = record.mode === "main" || record.handle === label
|
|
151
|
+
? ""
|
|
152
|
+
: ` · ${shortHandle(record.handle)}`;
|
|
153
|
+
const firstPrefix = selected ? this.#style.accent("›") : " ";
|
|
154
|
+
const styledLabel = selected
|
|
155
|
+
? this.#style.accent(this.#style.bold(label))
|
|
156
|
+
: this.#style.bold(label);
|
|
157
|
+
const first = `${firstPrefix} ${appearance.icon} ${styledLabel}${this.#style.dim(handle)}`;
|
|
158
|
+
|
|
159
|
+
const activity = relativeActivity(record.lastActivity, this.#now());
|
|
160
|
+
const spend = record.spend === null ? "" : ` · $${record.spend.toFixed(4)}`;
|
|
161
|
+
const suffix = ` · ${activity}${spend}`;
|
|
162
|
+
const modelWidth = Math.max(8, Math.min(36, width - suffix.length - record.state.length - 10));
|
|
163
|
+
const second = ` ${this.#style.muted(truncateText(record.model, modelWidth))}`
|
|
164
|
+
+ this.#style.dim(" · ")
|
|
165
|
+
+ appearance.state
|
|
166
|
+
+ this.#style.dim(suffix);
|
|
167
|
+
return [first, second];
|
|
168
|
+
}
|
|
169
|
+
|
|
109
170
|
dispose(): void {
|
|
110
171
|
this.#unsubscribe();
|
|
111
172
|
}
|
|
@@ -123,6 +184,7 @@ export function handleFleetInput(options: {
|
|
|
123
184
|
if (options.editorText !== "") return { consume: false };
|
|
124
185
|
const { data, list } = options;
|
|
125
186
|
if (!list.open && isDown(data)) {
|
|
187
|
+
if (!list.selected) return { consume: false };
|
|
126
188
|
list.focus();
|
|
127
189
|
return { consume: true, action: "focus" };
|
|
128
190
|
}
|
|
@@ -284,3 +346,69 @@ function isDown(data: string): boolean {
|
|
|
284
346
|
function isUp(data: string): boolean {
|
|
285
347
|
return data === "\u001b[A";
|
|
286
348
|
}
|
|
349
|
+
|
|
350
|
+
const identity = (value: string): string => value;
|
|
351
|
+
|
|
352
|
+
const PLAIN_STYLE: FleetListStyle = {
|
|
353
|
+
accent: identity,
|
|
354
|
+
muted: identity,
|
|
355
|
+
dim: identity,
|
|
356
|
+
success: identity,
|
|
357
|
+
warning: identity,
|
|
358
|
+
error: identity,
|
|
359
|
+
bold: identity,
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
function stateAppearance(
|
|
363
|
+
state: FleetLifecycle,
|
|
364
|
+
style: FleetListStyle,
|
|
365
|
+
): { readonly icon: string; readonly state: string } {
|
|
366
|
+
switch (state) {
|
|
367
|
+
case "busy":
|
|
368
|
+
return { icon: style.success("●"), state: style.success(state) };
|
|
369
|
+
case "idle":
|
|
370
|
+
return { icon: style.muted("○"), state: style.muted(state) };
|
|
371
|
+
case "paused":
|
|
372
|
+
return { icon: style.warning("Ⅱ"), state: style.warning(state) };
|
|
373
|
+
case "offline":
|
|
374
|
+
return { icon: style.dim("◇"), state: style.dim(state) };
|
|
375
|
+
case "done":
|
|
376
|
+
return { icon: style.success("✓"), state: style.success(state) };
|
|
377
|
+
case "failed":
|
|
378
|
+
return { icon: style.error("✕"), state: style.error(state) };
|
|
379
|
+
case "cancelled":
|
|
380
|
+
return { icon: style.warning("◌"), state: style.warning(state) };
|
|
381
|
+
case "ambiguous":
|
|
382
|
+
return { icon: style.error("!"), state: style.error(state) };
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
function shortHandle(handle: string): string {
|
|
387
|
+
return truncateText(handle, 10);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
function truncateText(value: string, maximum: number): string {
|
|
391
|
+
if (value.length <= maximum) return value;
|
|
392
|
+
return `${value.slice(0, Math.max(1, maximum - 1))}…`;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
function isExpiredCancelled(record: FleetAgentRecord, options: FleetVisibilityOptions): boolean {
|
|
396
|
+
if (record.state !== "cancelled") return false;
|
|
397
|
+
const now = options.now ?? Date.now();
|
|
398
|
+
const retentionMs = options.cancelledRetentionMs ?? DEFAULT_CANCELLED_RETENTION_MS;
|
|
399
|
+
const timestamp = Date.parse(record.lastActivity);
|
|
400
|
+
return Number.isFinite(timestamp) && now - timestamp >= retentionMs;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function relativeActivity(value: string, now: number): string {
|
|
404
|
+
const timestamp = Date.parse(value);
|
|
405
|
+
if (!Number.isFinite(timestamp)) return "unknown";
|
|
406
|
+
const elapsedSeconds = Math.max(0, Math.floor((now - timestamp) / 1_000));
|
|
407
|
+
if (elapsedSeconds < 5) return "now";
|
|
408
|
+
if (elapsedSeconds < 60) return `${elapsedSeconds}s ago`;
|
|
409
|
+
const elapsedMinutes = Math.floor(elapsedSeconds / 60);
|
|
410
|
+
if (elapsedMinutes < 60) return `${elapsedMinutes}m ago`;
|
|
411
|
+
const elapsedHours = Math.floor(elapsedMinutes / 60);
|
|
412
|
+
if (elapsedHours < 24) return `${elapsedHours}h ago`;
|
|
413
|
+
return `${Math.floor(elapsedHours / 24)}d ago`;
|
|
414
|
+
}
|
|
@@ -175,7 +175,15 @@ export async function openLaunchPreview(
|
|
|
175
175
|
const model = new LaunchPreviewModel(options);
|
|
176
176
|
return ctx.ui.custom<LaunchPreviewDecision>((tui, _theme, _keys, done) => {
|
|
177
177
|
return new LaunchPreviewComponent(model, done, () => tui.requestRender());
|
|
178
|
-
}, {
|
|
178
|
+
}, {
|
|
179
|
+
overlay: true,
|
|
180
|
+
overlayOptions: {
|
|
181
|
+
width: "90%",
|
|
182
|
+
maxHeight: "80%",
|
|
183
|
+
margin: 1,
|
|
184
|
+
},
|
|
185
|
+
onHandle: (handle) => handle.focus(),
|
|
186
|
+
});
|
|
179
187
|
}
|
|
180
188
|
|
|
181
189
|
class LaunchPreviewComponent {
|
|
@@ -258,7 +266,6 @@ class LaunchPreviewComponent {
|
|
|
258
266
|
const field = EDITABLE_FIELDS[this.#field]!;
|
|
259
267
|
const dimension = BUDGET_DIMENSIONS[this.#budgetDimension]!;
|
|
260
268
|
const lines = [
|
|
261
|
-
`Launch preview · ${this.#model.count} proposed worker${this.#model.count === 1 ? "" : "s"}`,
|
|
262
269
|
"↑↓ worker · Tab field · ←→ cycle · [ ] budget dimension · e edit · Enter launch all · Esc cancel all",
|
|
263
270
|
"",
|
|
264
271
|
...Array.from({ length: this.#model.count }, (_, index) => {
|
|
@@ -283,7 +290,11 @@ class LaunchPreviewComponent {
|
|
|
283
290
|
...(this.#editing ? [` ${this.#editing}> ${this.#buffer}_`] : []),
|
|
284
291
|
...(this.#diagnostic ? [` ${this.#diagnostic}`] : []),
|
|
285
292
|
];
|
|
286
|
-
return
|
|
293
|
+
return borderedLines(
|
|
294
|
+
`Launch preview · ${this.#model.count} proposed worker${this.#model.count === 1 ? "" : "s"}`,
|
|
295
|
+
lines,
|
|
296
|
+
Math.max(20, width),
|
|
297
|
+
);
|
|
287
298
|
}
|
|
288
299
|
|
|
289
300
|
invalidate(): void {}
|
|
@@ -366,6 +377,18 @@ function row(label: string, value: string, selected: string): string {
|
|
|
366
377
|
return `${selected === label.split(".")[0] ? ">" : " "} ${label}: ${value}`;
|
|
367
378
|
}
|
|
368
379
|
|
|
380
|
+
function borderedLines(title: string, lines: readonly string[], width: number): string[] {
|
|
381
|
+
const innerWidth = Math.max(1, width - 4);
|
|
382
|
+
const topLabel = ` ${title} `;
|
|
383
|
+
const top = `╭${truncate(topLabel, innerWidth).padEnd(innerWidth, "─")}╮`;
|
|
384
|
+
const bottom = `╰${"─".repeat(innerWidth)}╯`;
|
|
385
|
+
return [
|
|
386
|
+
top,
|
|
387
|
+
...lines.map((line) => `│ ${truncate(line, innerWidth).padEnd(innerWidth, " ")} │`),
|
|
388
|
+
bottom,
|
|
389
|
+
];
|
|
390
|
+
}
|
|
391
|
+
|
|
369
392
|
function wrap(index: number, delta: -1 | 1, length: number): number {
|
|
370
393
|
return (index + delta + length) % length;
|
|
371
394
|
}
|