pum-agent 0.2.10-beta.1 → 0.2.11-beta.1
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/README.md +13 -14
- package/package.json +1 -1
- package/src/transcript.tsx +2 -2
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ The following screens are real OpenTUI renders captured through `tmux`. A local
|
|
|
47
47
|
- **External triggers:** Supervise background commands such as `gh run watch` and automatically wake the exact target agent when they exit.
|
|
48
48
|
- **Provider choice:** Search the providers exposed by pi, or add an OpenAI-compatible custom endpoint.
|
|
49
49
|
- **Filesystem boundary:** `read`, `write`, and `edit` stay inside the project and configured allowed roots. `apply_patch` stays project-local.
|
|
50
|
-
- **Optional safeguards:**
|
|
50
|
+
- **Optional safeguards:** Turn on Check mode to gate `bash`, `edit`, `apply_patch`, and external-trigger process proposals. Supported hosts can also use native Bash sandboxing through Bubblewrap or Windows CreateProcessInSandbox.
|
|
51
51
|
- **Terminal-first appearance:** Nine themes, semantic color overrides, Unicode glyphs, and optional animation.
|
|
52
52
|
|
|
53
53
|
PUM uses [pi](https://github.com/earendil-works/pi) for the agent loop and [OpenTUI](https://github.com/anomalyco/opentui) for rendering.
|
|
@@ -250,21 +250,22 @@ This boundary does not isolate `bash`, package scripts, extensions, or trigger p
|
|
|
250
250
|
|
|
251
251
|
### Check mode
|
|
252
252
|
|
|
253
|
-
Select
|
|
253
|
+
Select Check mode in `Ctrl+P` — either **Off** or **On**. It applies to `bash`, `edit`, `apply_patch`, and external-trigger process execution:
|
|
254
254
|
|
|
255
|
-
- **
|
|
256
|
-
- **
|
|
257
|
-
- **Ask:** Show the approval popup for every checked call that passes hard rules, unless an exact session or project approval already matches. A verifier `SAFE`, unclear, error, or unavailable result still requires approval.
|
|
255
|
+
- **Off:** Checked tools run without the deterministic policy or the advisory verifier.
|
|
256
|
+
- **On:** The deterministic policy runs first, then an advisory verifier reviews the complete proposal.
|
|
258
257
|
|
|
259
|
-
|
|
258
|
+
On allows ordinary complete project-local calls, explicit on-mode external reads (read-only), and project-local edits. It accepts one direct `npm pack` only when lifecycle scripts are disabled, an explicit cache stays in an approved root, output stays in an approved root, and any package operand is one exact registry version. On also accepts one direct `npm install` of one exact registry version only when `--ignore-scripts`, an approved `--prefix`, and an approved `--cache` are explicit. File, Git, URL, tag, range, composed, general install, and global-install forms remain blocked. On hard-blocks external writes, location changes, execution operands, ambiguous path access, escaping links or junctions, credential access, privilege escalation, persistence, remote-script execution, destructive Git operations, and broad deletion. These hard blocks cannot be overridden and never open a popup.
|
|
260
259
|
|
|
261
|
-
|
|
260
|
+
On blocks an explicit verifier verdict of `UNSAFE`. An unclear, unavailable, failed, or timed-out review does not block a fully validated call. The only exception outside the verifier verdict is a deterministic match for a direct main-agent `npm publish` or `npm dist-tag add ... latest`, which On allows outright. The verifier category does not control this exception. Managed subagents cannot use it.
|
|
261
|
+
|
|
262
|
+
There is no approval popup and no approval store. Check mode is off by default.
|
|
262
263
|
|
|
263
|
-
|
|
264
|
+
Use `/check-path list`, `/check-path add <directory>`, `/check-path remove <directory>`, or `/check-path clear` to manage up to 16 additional directory roots for the current launch project. The filesystem sandbox applies these roots to `read`, `write`, and `edit`. Bash, edit, and external-trigger checks also use these roots; `apply_patch` remains project-local. Added roots are canonicalized and remain subject to credential, traversal, symlink or junction, broad-deletion, and other hard blocks.
|
|
264
265
|
|
|
265
|
-
|
|
266
|
+
For `edit` and `apply_patch`, PUM validates the complete proposed change before any mutation. Review data includes the unified diff, changed paths, line counts, sensitivity flags, project containment, and full-content SHA-256. Invalid, stale, malformed, escaping, or incompletely analyzed input blocks the call. Patch length alone does not block a complete validated on-mode call.
|
|
266
267
|
|
|
267
|
-
The verifier uses a structured decision schema. One unclear response can receive one adjudication under the shared 15-second watchdog.
|
|
268
|
+
The verifier uses a structured decision schema. One unclear response can receive one bounded adjudication under the shared 15-second watchdog. On blocks aborts, malformed verifier replies, and incomplete analysis, and it blocks any explicit `UNSAFE` verdict. Check mode is off by default.
|
|
268
269
|
|
|
269
270
|
#### Native Bash sandbox
|
|
270
271
|
|
|
@@ -276,7 +277,7 @@ The **Sandbox** setting has three modes:
|
|
|
276
277
|
|
|
277
278
|
Check mode **Off** always uses pi's normal unsandboxed Bash backend. For an active Check mode, PUM recomputes the sandbox policy from the exact approved command, authoritative working directory, configured additional roots, and deterministic access analysis. Model input cannot supply policy fields.
|
|
278
279
|
|
|
279
|
-
The project and configured additional roots are writable. Explicit
|
|
280
|
+
The project and configured additional roots are writable. Explicit on-mode external reads are mounted read-only. PUM configuration and common credential paths are denied, and credential-shaped or process-injection environment variables are removed. A private temporary directory is supplied for the command. Safe pi metadata such as `PI_PROVIDER`, `PI_MODEL`, and `PI_REASONING_LEVEL` remains available; session paths and identifiers are withheld.
|
|
280
281
|
|
|
281
282
|
Network access is denied unless deterministic analysis recognizes an approved network operation. Bubblewrap's host-network mode is all-or-nothing and is **not domain-filtered**. Windows similarly grants or withholds the SDK's broad network capabilities; it does not provide hostname allowlists.
|
|
282
283
|
|
|
@@ -286,7 +287,7 @@ External triggers preserve direct executable/argument boundaries and continue to
|
|
|
286
287
|
|
|
287
288
|
The filesystem sandbox is a process-local path guard for `read`, `write`, `edit`, and `apply_patch`. It does not replace native Bash isolation and does not cover scripts, extensions, or trigger processes.
|
|
288
289
|
|
|
289
|
-
Verifier prompts stay bounded. For an oversized
|
|
290
|
+
Verifier prompts stay bounded. For an oversized On-mode review, PUM sends complete validation metadata, counts, findings, and SHA-256 digests. PUM does not send a raw prefix or suffix as if it were complete.
|
|
290
291
|
|
|
291
292
|
### Hosted web search
|
|
292
293
|
|
|
@@ -328,8 +329,6 @@ Set `PUM_DIR` to override the complete PUM data directory.
|
|
|
328
329
|
| `prompt-stash.json` | Stashed prompts by working directory |
|
|
329
330
|
| `sessions/` | Main conversation sessions |
|
|
330
331
|
| `subagents/` | Persistent subagent sessions |
|
|
331
|
-
| `check-mode-cache.json` | Accepted checks for eligible read-only Git commands |
|
|
332
|
-
| `check-mode-approvals.json` | Exact project approvals created in Ask mode |
|
|
333
332
|
|
|
334
333
|
PUM preserves all stashed prompt occurrences. PUM also keeps the 100 most recent additional sent-history occurrences for each working directory.
|
|
335
334
|
|
package/package.json
CHANGED
package/src/transcript.tsx
CHANGED
|
@@ -232,7 +232,7 @@ export function TextLine({
|
|
|
232
232
|
<Row glyph={GUTTER} glyphColor={color}>
|
|
233
233
|
<text
|
|
234
234
|
ref={workingCaret ? textCaret : undefined}
|
|
235
|
-
content={workingCaret ?
|
|
235
|
+
content={workingCaret ? "" : displayText}
|
|
236
236
|
fg={color}
|
|
237
237
|
selectable
|
|
238
238
|
wrapMode="word"
|
|
@@ -424,7 +424,7 @@ export function ToolLine({
|
|
|
424
424
|
{prefix ? <text content={prefix} selectable style={{ flexShrink: 0 }} /> : null}
|
|
425
425
|
<text
|
|
426
426
|
ref={workingCaret ? caret : undefined}
|
|
427
|
-
content={workingCaret ?
|
|
427
|
+
content={workingCaret ? "" : new StyledText(bodyChunks)}
|
|
428
428
|
selectable
|
|
429
429
|
wrapMode="word"
|
|
430
430
|
style={{ flexGrow: 1, flexShrink: 1, minWidth: 0 }}
|