@erichll/pi-sandbox 0.18.1 → 0.19.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 +28 -0
- package/README.md +15 -11
- package/package.json +6 -6
- package/src/pi-subagents-native.ts +7 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.19.0 - 2026-09-20
|
|
4
|
+
|
|
5
|
+
- Require Pi `^0.86.0` for both the development and peer dependency of
|
|
6
|
+
`@earendil-works/pi-coding-agent`, and depend on `@erichll/pi-auto-review`
|
|
7
|
+
`^0.19.0` so the pair shares the same Pi floor. The `pi-subagents` runtime
|
|
8
|
+
peer stays `>=0.66.0`.
|
|
9
|
+
- Revalidated against Pi 0.86.0: the package test suite passes (88 pass, 1
|
|
10
|
+
skipped), the deterministic `gate:pi-subagents` preflight passes, and the
|
|
11
|
+
model-backed gate passes both phases (native baseline host-readable,
|
|
12
|
+
protected sandboxed Bash blocked from the host read) with native
|
|
13
|
+
acknowledgement `@erichll:pi-sandbox`.
|
|
14
|
+
- Recorded the Pi 0.86.0 floor in `README.md`, `docs/compat-notes.md`, and the
|
|
15
|
+
`pi-subagents-native.ts` compatibility notes: protected mode with
|
|
16
|
+
pi-subagents 0.68.0+ needs Pi 0.86.0 or newer.
|
|
17
|
+
|
|
18
|
+
## 0.18.2 - 2026-09-20
|
|
19
|
+
|
|
20
|
+
- Pin the development `pi-subagents` baseline to `^0.69.0` and Pi to
|
|
21
|
+
`^0.85.1`. The runtime peer stays `>=0.66.0`.
|
|
22
|
+
- Revalidated protected native mode against published pi-subagents 0.69.0:
|
|
23
|
+
the `./capability-ceiling` export path, `SUBAGENT_CAPABILITY_CEILING_VERSION`
|
|
24
|
+
1, `registerSubagentCapabilityCeiling`, discovery/canonical resolution, and
|
|
25
|
+
the config loader with `scheduledRuns` are unchanged. The deterministic gate
|
|
26
|
+
and the package test suite pass against 0.67.0 and 0.69.0.
|
|
27
|
+
- Recorded in `docs/compat-notes.md` that protected mode with pi-subagents
|
|
28
|
+
0.68.0+ needs Pi 0.85.1 or newer: 0.85.0 does not ship
|
|
29
|
+
`@earendil-works/pi-server`, so background children fail to launch there.
|
|
30
|
+
|
|
3
31
|
## 0.18.1 - 2026-09-17
|
|
4
32
|
|
|
5
33
|
- Trim redundant paths from default `denyWrite` policy (`settings.json`,
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ also run complete process-backed subagent trees inside independent sandboxes.
|
|
|
9
9
|
- [Security model](#security-model)
|
|
10
10
|
- [Linux requirements](#linux-requirements)
|
|
11
11
|
- [Subagent provider](#subagent-provider)
|
|
12
|
-
- [`pi-subagents`
|
|
12
|
+
- [`pi-subagents` native-background tool boundary](#pi-subagents-native-background-tool-boundary)
|
|
13
13
|
- [Network domain policy](#network-domain-policy)
|
|
14
14
|
- [Optional host IPC fallback](#optional-host-ipc-fallback)
|
|
15
15
|
- [Additional trusted read paths](#additional-trusted-read-paths)
|
|
@@ -90,14 +90,16 @@ Supported modes:
|
|
|
90
90
|
|
|
91
91
|
- `builtin` (default): register the process-backed `subagent` tool and sandbox
|
|
92
92
|
each complete worker process tree.
|
|
93
|
-
- `pi-subagents`: let `pi-subagents 0.
|
|
93
|
+
- `pi-subagents`: let `pi-subagents >=0.66.0` own orchestration under the required
|
|
94
94
|
native-background tool boundary described below.
|
|
95
95
|
- `off`: protect Bash only.
|
|
96
96
|
|
|
97
|
-
### `pi-subagents`
|
|
97
|
+
### `pi-subagents` native-background tool boundary
|
|
98
98
|
|
|
99
|
-
This provider
|
|
100
|
-
fails closed if its public ceiling API or internal discovery layout
|
|
99
|
+
This provider supports the `pi-subagents >=0.66.0` line (validated through
|
|
100
|
+
0.69.0) and fails closed if its public ceiling API or internal discovery layout
|
|
101
|
+
drifts. The peer dependency is a floor with no upper pin; the loader's explicit
|
|
102
|
+
export and layout checks are the real gate.
|
|
101
103
|
Configure both the protection mode and a non-empty canonical whitelist:
|
|
102
104
|
|
|
103
105
|
```json
|
|
@@ -113,9 +115,9 @@ Configure both the protection mode and a non-empty canonical whitelist:
|
|
|
113
115
|
The `pi-subagents` config at
|
|
114
116
|
`~/.pi/agent/extensions/subagent/config.json` must also contain
|
|
115
117
|
`"scheduledRuns": { "enabled": false }`. Every launch must explicitly set
|
|
116
|
-
`async: true`. Only direct single-agent launches are supported.
|
|
117
|
-
|
|
118
|
-
extensions, so both are rejected along with named workflows, schedules,
|
|
118
|
+
`async: true`. Only direct single-agent launches are supported. Public
|
|
119
|
+
`workflowScript` / `workflowScriptPath` children disable ambient
|
|
120
|
+
extensions upstream, so both are rejected along with named workflows, schedules,
|
|
119
121
|
configuration mutations, resume, nested subagents, and external runners.
|
|
120
122
|
|
|
121
123
|
Every child is constrained by the upstream capability ceiling to `bash`,
|
|
@@ -124,7 +126,7 @@ acknowledge `@erichll:pi-sandbox`; writes can therefore occur only through the
|
|
|
124
126
|
sandboxed Bash tool. `write`, `edit`, MCP, and other extension tools are not
|
|
125
127
|
available.
|
|
126
128
|
|
|
127
|
-
| Capability | `builtin` | `pi-subagents`
|
|
129
|
+
| Capability | `builtin` | `pi-subagents` protected mode |
|
|
128
130
|
| --- | --- | --- |
|
|
129
131
|
| Outer worker sandbox | Yes | No |
|
|
130
132
|
| Bash sandbox | Yes | Yes |
|
|
@@ -276,11 +278,13 @@ npm test
|
|
|
276
278
|
npm run gate:pi-subagents
|
|
277
279
|
```
|
|
278
280
|
|
|
279
|
-
`gate:pi-subagents` verifies the pinned package layout,
|
|
281
|
+
`gate:pi-subagents` verifies the pinned development dependency's package layout,
|
|
282
|
+
discovery behavior,
|
|
280
283
|
capability ceiling, and protected launch policy in an isolated temporary agent
|
|
281
284
|
directory. It never reads or updates production Pi configuration. Model-backed
|
|
282
285
|
acceptance requires `PI_SUBAGENTS_GATE_MODEL` and an already-exported matching
|
|
283
|
-
credential; missing prerequisites are reported as `SKIP`.
|
|
286
|
+
credential; missing prerequisites are reported as `SKIP`. Protected mode with
|
|
287
|
+
pi-subagents 0.68.0 or newer needs Pi 0.86.0 or newer.
|
|
284
288
|
|
|
285
289
|
The test suite covers real Linux Sandbox Runtime enforcement when its native
|
|
286
290
|
dependencies are installed, plus deterministic broker, network approval,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@erichll/pi-sandbox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Linux (bubblewrap) and macOS (Seatbelt) process sandbox for Pi backed by Anthropic's @anthropic-ai/sandbox-runtime. Fail-closed static filesystem policy plus per-connection network approval from pi-auto-review; sandboxes main-agent Bash and built-in subagent process trees.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -51,11 +51,11 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@anthropic-ai/sandbox-runtime": "0.0.75",
|
|
54
|
-
"@erichll/pi-auto-review": "^0.
|
|
54
|
+
"@erichll/pi-auto-review": "^0.19.0",
|
|
55
55
|
"jiti": "2.7.0"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"@earendil-works/pi-coding-agent": "^0.
|
|
58
|
+
"@earendil-works/pi-coding-agent": "^0.86.0",
|
|
59
59
|
"pi-subagents": ">=0.66.0",
|
|
60
60
|
"typebox": ">=1.0.0"
|
|
61
61
|
},
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@earendil-works/pi-coding-agent": "^0.
|
|
69
|
-
"@earendil-works/pi-server": "^0.
|
|
68
|
+
"@earendil-works/pi-coding-agent": "^0.86.0",
|
|
69
|
+
"@earendil-works/pi-server": "^0.86.0",
|
|
70
70
|
"@types/node": "^26.2.0",
|
|
71
|
-
"pi-subagents": "^0.
|
|
71
|
+
"pi-subagents": "^0.69.0",
|
|
72
72
|
"typescript": "^6.0.3"
|
|
73
73
|
}
|
|
74
74
|
}
|
|
@@ -7,9 +7,13 @@ import { createJiti } from "jiti";
|
|
|
7
7
|
* Compatible pi-subagents line: 0.66.0 and above (no upper pin). Any new minor
|
|
8
8
|
* is accepted, so the exports/ceiling checks below are the real compatibility
|
|
9
9
|
* gate; this range only rejects old lines and guards against blind
|
|
10
|
-
* accept-on-drift. Revalidated against 0.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* accept-on-drift. Revalidated against 0.69.0: ceiling registry
|
|
11
|
+
* (`SUBAGENT_CAPABILITY_CEILING_VERSION` 1), the `./capability-ceiling` export
|
|
12
|
+
* path, discovery/canonical resolution, and the config loader with
|
|
13
|
+
* `scheduledRuns` are unchanged since 0.66.0 (verified 2026-09-19 against the
|
|
14
|
+
* published 0.69.0 package). Protected mode needs Pi 0.86.0 or newer (the
|
|
15
|
+
* package peer floor) with pi-subagents 0.68.0+: 0.85.0 does not ship
|
|
16
|
+
* `@earendil-works/pi-server`, so background children fail to launch there.
|
|
13
17
|
*/
|
|
14
18
|
export const PI_SUBAGENTS_COMPAT_RANGE = ">=0.66.0";
|
|
15
19
|
export const NATIVE_CHILD_TOOLS = ["bash", "read", "grep", "find", "ls"] as const;
|