@elpapi42/pi-fleet 0.1.0-beta.5 → 0.1.0-beta.8
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 +32 -0
- package/README.md +1 -1
- package/dist/cli-meta.json +4 -4
- package/dist/cli.mjs +12 -7
- package/dist/cli.mjs.map +2 -2
- package/dist/runtime-manifest.json +12 -12
- package/dist/runtime-meta.json +4 -4
- package/dist/runtime.mjs +56 -2
- package/dist/runtime.mjs.map +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,38 @@
|
|
|
12
12
|
- Added a nightly reliability workflow and an isolated soak suite covering 500 concurrent ordered sends and 100 name lifecycle cycles.
|
|
13
13
|
- Reject invalid UTF-8 in stdin and Pi RPC stdout instead of silently replacing bytes at either protocol boundary.
|
|
14
14
|
|
|
15
|
+
## 0.1.0-beta.8 — 2026-07-20
|
|
16
|
+
|
|
17
|
+
Publishes the beta.7 manual-testing fixes after its immutable tag failed before npm publication.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- The process-tree fixture now waits for both parent and child SIGTERM handlers through an IPC readiness handshake before exposing their PIDs, removing a CI scheduling race while preserving the real escalation assertion.
|
|
22
|
+
- Includes the beta.7 `watch` EPIPE and pre-dispatch restoration-failure fixes; beta.7 itself was never published to npm.
|
|
23
|
+
|
|
24
|
+
## 0.1.0-beta.7 — 2026-07-20
|
|
25
|
+
|
|
26
|
+
Continued direct CLI edge-case testing. No intentional command-surface change.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- `watch` now treats downstream `EPIPE` as normal client disconnection, exiting successfully without misreporting a closed output pipe as `invalid_arguments`.
|
|
31
|
+
- A restoration failure proven to occur before prompt dispatch now returns `pi_start_failed`, marks the send definitively failed, leaves the agent `failed + absent`, and releases process capacity instead of claiming `delivery_uncertain` and leaving `restoring + starting` state.
|
|
32
|
+
- Restoration cleanup uncertainty remains fail-closed as `incarnation_cleanup_uncertain` with its process slot retained when Fleet cannot prove the spawned process is gone.
|
|
33
|
+
|
|
34
|
+
### Manual validation
|
|
35
|
+
|
|
36
|
+
- Exercised active runtime death with held clients, hanging/HTTP-error/malformed providers, 19 MB watch backpressure, stdin limits, Unicode paths, extension UI cancellation, oversized session records, watch pipe closure, and missing-cwd restoration in isolated environments.
|
|
37
|
+
|
|
38
|
+
## 0.1.0-beta.6 — 2026-07-20
|
|
39
|
+
|
|
40
|
+
Manual interruption-semantics correction. No intentional command-surface change.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- `receive` now returns the agent's stored failure code when the agent is failed instead of returning an older assistant response as successful completion of interrupted work.
|
|
45
|
+
- Added regression coverage for the exact state observed during manual testing: a previous response exists, later work is interrupted, the Pi process is absent, and immediate receive reports `runtime_interrupted`.
|
|
46
|
+
|
|
15
47
|
## 0.1.0-beta.5 — 2026-07-20
|
|
16
48
|
|
|
17
49
|
Release-pipeline reliability follow-up; includes the beta.4 receive and argument-validation fixes.
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ create · send · receive · status · list · watch · destroy
|
|
|
8
8
|
|
|
9
9
|
Fleet keeps a Pi process resident when possible, restores it from the same native Pi session when absent, accepts repeated steering input, and returns the latest assistant message after Pi becomes idle. Pi sessions remain under your control: Fleet references them but never copies or deletes them.
|
|
10
10
|
|
|
11
|
-
> **Beta:** `0.1.0-beta.
|
|
11
|
+
> **Beta:** `0.1.0-beta.8` has passed deterministic Linux x64 fault, recovery, package, compatibility, and resource-stability tests with Pi `0.80.10`. Its tag workflow requires a fresh registry-install operational smoke, and direct isolated testing covers lifecycle, timeout, repeated receive, raw watch and pipe disconnection, session mutation and selectors, concurrency, Pi/runtime crash recovery, capacity, interrupted-work responses, provider failures, extension UI cancellation, and failed restoration. Actual logout/reboot recovery, macOS launchd/containment, automatic upgrades, and public service-management UX are not yet release-validated.
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
package/dist/cli-meta.json
CHANGED
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
"format": "esm"
|
|
305
305
|
},
|
|
306
306
|
"src/cli/commands/watch.ts": {
|
|
307
|
-
"bytes":
|
|
307
|
+
"bytes": 793,
|
|
308
308
|
"imports": [
|
|
309
309
|
{
|
|
310
310
|
"path": "node:events",
|
|
@@ -593,7 +593,7 @@
|
|
|
593
593
|
"imports": [],
|
|
594
594
|
"exports": [],
|
|
595
595
|
"inputs": {},
|
|
596
|
-
"bytes":
|
|
596
|
+
"bytes": 270235
|
|
597
597
|
},
|
|
598
598
|
"dist/cli.mjs": {
|
|
599
599
|
"imports": [
|
|
@@ -810,7 +810,7 @@
|
|
|
810
810
|
"bytesInOutput": 265
|
|
811
811
|
},
|
|
812
812
|
"src/cli/commands/watch.ts": {
|
|
813
|
-
"bytesInOutput":
|
|
813
|
+
"bytesInOutput": 552
|
|
814
814
|
},
|
|
815
815
|
"src/cli/program.ts": {
|
|
816
816
|
"bytesInOutput": 2440
|
|
@@ -837,7 +837,7 @@
|
|
|
837
837
|
"bytesInOutput": 1191
|
|
838
838
|
}
|
|
839
839
|
},
|
|
840
|
-
"bytes":
|
|
840
|
+
"bytes": 150476
|
|
841
841
|
}
|
|
842
842
|
}
|
|
843
843
|
}
|
package/dist/cli.mjs
CHANGED
|
@@ -3385,7 +3385,7 @@ function splitArgv(argv) {
|
|
|
3385
3385
|
|
|
3386
3386
|
// src/shared/product-identity.ts
|
|
3387
3387
|
var PRODUCT_BINARY = "pifleet";
|
|
3388
|
-
var PRODUCT_VERSION = "0.1.0-beta.
|
|
3388
|
+
var PRODUCT_VERSION = "0.1.0-beta.8";
|
|
3389
3389
|
|
|
3390
3390
|
// src/cli/commands/create.ts
|
|
3391
3391
|
import { resolve } from "node:path";
|
|
@@ -3555,14 +3555,19 @@ async function runStatus(input, context) {
|
|
|
3555
3555
|
import { once } from "node:events";
|
|
3556
3556
|
async function runWatch(name, context) {
|
|
3557
3557
|
if (!isAgentName(name)) throw new Error("invalid agent name");
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3558
|
+
try {
|
|
3559
|
+
for await (const result of context.client.watchSession({ name }, { signal: context.signal })) {
|
|
3560
|
+
if (!result.ok) {
|
|
3561
|
+
writeError(context.stderr, result.error, false);
|
|
3562
|
+
return 1;
|
|
3563
|
+
}
|
|
3564
|
+
if (!context.stdout.write(result.value.bytes)) await once(context.stdout, "drain");
|
|
3562
3565
|
}
|
|
3563
|
-
|
|
3566
|
+
return 0;
|
|
3567
|
+
} catch (error) {
|
|
3568
|
+
if (error.code === "EPIPE") return 0;
|
|
3569
|
+
throw error;
|
|
3564
3570
|
}
|
|
3565
|
-
return 0;
|
|
3566
3571
|
}
|
|
3567
3572
|
|
|
3568
3573
|
// src/cli/program.ts
|