pum-agent 0.2.34-beta.1 → 0.2.35-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 +10 -2
- package/package.json +1 -1
- package/src/animation.tsx +20 -7
- package/src/app.tsx +786 -40
- package/src/check-mode-prompt.ts +13 -13
- package/src/check-mode.ts +105 -10
- package/src/cli.ts +36 -1
- package/src/commands.ts +37 -1
- package/src/context-estimate.ts +55 -0
- package/src/context-guidance.ts +5 -5
- package/src/context-recovery.ts +22 -0
- package/src/context-window.ts +127 -48
- package/src/conversation-branch-popup.tsx +46 -0
- package/src/conversation-branch.ts +227 -0
- package/src/file-checkpoints.ts +337 -0
- package/src/file-mutation-guard.ts +224 -0
- package/src/filesystem-sandbox.ts +5 -2
- package/src/headless.ts +87 -9
- package/src/help-popup.tsx +6 -0
- package/src/index.tsx +2 -0
- package/src/lsp-files.ts +102 -0
- package/src/lsp-protocol.ts +275 -0
- package/src/lsp.ts +203 -0
- package/src/main.tsx +154 -16
- package/src/mcp-config.ts +100 -0
- package/src/mcp-process.ts +244 -0
- package/src/mcp-protocol.ts +385 -0
- package/src/mcp.ts +230 -0
- package/src/memory-context.ts +91 -0
- package/src/memory.ts +25 -23
- package/src/operational-context.ts +91 -0
- package/src/plan-mode.ts +139 -0
- package/src/project-validation.ts +331 -0
- package/src/replay.ts +6 -0
- package/src/request-diagnostics-access.ts +25 -0
- package/src/request-diagnostics.ts +210 -0
- package/src/runtime-settings.ts +352 -0
- package/src/sandbox/linux.ts +31 -6
- package/src/sandbox/types.ts +5 -0
- package/src/session-lock-runtime.ts +332 -25
- package/src/status-bar.tsx +2 -0
- package/src/status-metadata.ts +8 -1
- package/src/subagents/manager.ts +137 -23
- package/src/subagents/readonly.ts +34 -11
- package/src/theme.ts +10 -9
- package/src/tool-groups.ts +60 -26
- package/src/transcript-history.ts +93 -18
- package/src/web-search.ts +228 -33
package/README.md
CHANGED
|
@@ -88,6 +88,7 @@ PUM uses [pi](https://github.com/earendil-works/pi) for the agent loop and
|
|
|
88
88
|
| [Safety](docs/security.md) | Filesystem sandbox, Check mode, native sandbox, outer sandbox |
|
|
89
89
|
| [Appearance](docs/appearance.md) | Transcript detail, themes, Markdown, animation, title |
|
|
90
90
|
| [Configuration](docs/configuration.md) | Where PUM stores things, and what |
|
|
91
|
+
| [Request diagnostics](docs/request-diagnostics.md) | Opt-in safe request reports; transport signals are not server cache hits |
|
|
91
92
|
|
|
92
93
|
## Requirements
|
|
93
94
|
|
|
@@ -119,6 +120,10 @@ bun run start
|
|
|
119
120
|
Use `bun run start -r` to resume the latest session for the current directory,
|
|
120
121
|
and `/login` to add or update a provider later.
|
|
121
122
|
Inside the TUI, `/history` or its alias `/resume` opens the saved-session browser.
|
|
123
|
+
For local request debugging, start with `PUM_REQUEST_DIAGNOSTICS=1 bun run start`
|
|
124
|
+
and use `/diagnostics` in the selected transcript. Headless runs emit the safe
|
|
125
|
+
report on stderr only. Diagnostics stay in bounded process memory, not session
|
|
126
|
+
files, and do not establish provider cache hits. See [Request diagnostics](docs/request-diagnostics.md).
|
|
122
127
|
|
|
123
128
|
Agents have separate context tools: `history` searches and reads the active session
|
|
124
129
|
transcript. `get_context_remaining` reports the context budget. `new_context`
|
|
@@ -159,8 +164,11 @@ git diff --check
|
|
|
159
164
|
Run the TUI from the repository root with `bun run start`, and refresh the
|
|
160
165
|
README images with `bun run scripts/capture-screenshots.tsx`. Use a throwaway
|
|
161
166
|
`PUM_DIR` for local integration tests, and capture TUI output through `tmux`
|
|
162
|
-
rather than piping standard output. [AGENTS.md](AGENTS.md) holds the
|
|
163
|
-
|
|
167
|
+
rather than piping standard output. [AGENTS.md](AGENTS.md) holds the mandatory
|
|
168
|
+
security/workflow core and routes to the [indexed current contracts](docs/agent-guidance/README.md),
|
|
169
|
+
[source layout](docs/agent-guidance/layout.md), and [TUI test guidance](docs/agent-guidance/testing.md).
|
|
170
|
+
Detailed rules remain mandatory; [historical research](docs/agent-guidance/historical-references.md)
|
|
171
|
+
is clearly separated from current authority.
|
|
164
172
|
|
|
165
173
|
## Release status
|
|
166
174
|
|
package/package.json
CHANGED
package/src/animation.tsx
CHANGED
|
@@ -60,9 +60,9 @@ export const CARET_FADE_STEPS = 16;
|
|
|
60
60
|
const ease = (t: number) => (1 - Math.cos(Math.max(0, Math.min(1, t)) * Math.PI)) / 2;
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
* The caret
|
|
64
|
-
*
|
|
65
|
-
*
|
|
63
|
+
* The caret's brightness envelope. Opaque backgrounds use a smooth fade;
|
|
64
|
+
* unknown (transparent) backgrounds use its midpoint as a blink threshold.
|
|
65
|
+
* Both keep one cell occupied so the row's width never changes.
|
|
66
66
|
*/
|
|
67
67
|
export function caretAlpha(elapsedMs: number): number {
|
|
68
68
|
const phase = (((elapsedMs % CARET_PERIOD_MS) + CARET_PERIOD_MS) % CARET_PERIOD_MS)
|
|
@@ -504,7 +504,7 @@ export function useShimmerText(opts: {
|
|
|
504
504
|
const stop = subscribe((elapsedMs) => {
|
|
505
505
|
if (!ref.current) return;
|
|
506
506
|
const styled = shimmer(latest.current, base, hi, elapsedMs);
|
|
507
|
-
if (caret) styled.chunks.push(
|
|
507
|
+
if (caret) styled.chunks.push(caretChunk(behind, hi, caretAlpha(elapsedMs)));
|
|
508
508
|
ref.current.content = styled;
|
|
509
509
|
});
|
|
510
510
|
return () => {
|
|
@@ -521,7 +521,18 @@ export function useShimmerText(opts: {
|
|
|
521
521
|
return ref;
|
|
522
522
|
}
|
|
523
523
|
|
|
524
|
-
/**
|
|
524
|
+
/**
|
|
525
|
+
* Transparent has no RGB background to fade toward. Its zero RGB channels are
|
|
526
|
+
* not the terminal's colour, and terminal foreground alpha is not a portable
|
|
527
|
+
* way to recover that colour. Blink a width-stable space instead. Opaque custom
|
|
528
|
+
* backgrounds retain the smooth linear-light fade; neither path paints a bg.
|
|
529
|
+
*/
|
|
530
|
+
export function caretChunk(background: RGBA, lit: RGBA, strength: number): TextChunk {
|
|
531
|
+
if (background.a < 1) return fg(lit)(strength >= 0.5 ? CARET : " ");
|
|
532
|
+
return fg(mixLight(background, lit, strength))(CARET);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/** Own styled text and append a width-stable caret while active. */
|
|
525
536
|
export function useBlinkingText(opts: {
|
|
526
537
|
chunks: TextChunk[];
|
|
527
538
|
contentKey: string;
|
|
@@ -543,8 +554,10 @@ export function useBlinkingText(opts: {
|
|
|
543
554
|
|
|
544
555
|
const paint = useCallback(() => {
|
|
545
556
|
if (!ref.current) return;
|
|
546
|
-
|
|
547
|
-
|
|
557
|
+
ref.current.content = new StyledText([
|
|
558
|
+
...latest.current,
|
|
559
|
+
caretChunk(behind, lit, caretStep.current / CARET_FADE_STEPS),
|
|
560
|
+
]);
|
|
548
561
|
}, [behind, lit]);
|
|
549
562
|
|
|
550
563
|
useEffect(() => {
|