agentgui 1.0.1091 → 1.0.1092
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/AGENTS.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# AgentGUI — Agent Notes
|
|
2
2
|
|
|
3
|
+
## Docstudio design-cue follow-up (2026-07-23) — fifty-first run
|
|
4
|
+
|
|
5
|
+
Ninth docstudio-cue pass. A fresh Explore-agent survey (told the full 50-run ported list) re-read every remaining docstudio surface not previously examined name-by-name (`collection-item-actions.js`, `collection-page.js`, `tool-approval-panel.js`, `thread-list-actions.js`, `thread-list-renderer.js`, `streaming/reasoning-block.js`, `utils/csv-export.js`, `components/user-analytics.js`) and confirmed most candidates were already covered under a different name (`tool-approval-panel.js`'s menu = kit `PermissionMenu`; `reasoning-block.js` = kit `ThinkingNode`; `user-analytics.js` stat grid = kit `StatTile`/`StatsGrid`; CSV export = agentgui's existing `downloadBlob` JSON export pattern, narrower not net-new). One genuine, narrow gap survived: `collection-item-actions.js:27-32` `renderChips()` renders removable tag chips (label + inline `x` dismiss button) for the "My Collection" prompt tag editor — the kit's `Chip` (`design/src/components/shell.js:33`) was purely presentational with no dismiss affordance at all. Added an optional `onRemove` prop: when supplied, `Chip` renders a trailing `<button class="ds-chip-remove-btn" aria-label="Remove">` (the existing `x` `Icon()`) that calls `onRemove()` on click (`e.stopPropagation()`'d so it never bubbles into a parent chip-click handler); omitted entirely (byte-identical to the old shape) when not supplied, so every existing `Chip` call site is unaffected. CSS landed in `design/src/css/app-shell/primitives.css`: a small 16px (24px under `pointer:coarse`) circular button, neutral-at-rest/tinted-on-hover-focus per the standing color-reserved-for-meaning convention. The button class needed a `ds-` prefix (not a new bare `chip-remove` token) to pass the kit's `lint-classes.mjs` family-prefix guard — `chip` itself is grandfathered on the FROZEN legacy list, but new sub-tokens off it are not automatically covered. Kit built+tested (`bun test.js` all pass), docs regenerated (`docs/component-props.md`, 218 symbols, 0 drift). Kit rebased once onto a concurrent `v0.0.358`/`v0.0.359` release (dist-only conflict, rebuilt fresh from merged sources per the standing discipline, not hand-merged). Kit pushed `c47f681`, all 3 kit CI checks green (ci/Publish 247420 to npm/Deploy GH Pages). agentgui re-vendored both dist files; browser-witnessed live on `localhost:3009/gm/`: imported the live-served vendored bundle, mounted `Chip({tone:'blue',onRemove})` into real DOM via `applyDiff`, confirmed the rendered markup (`<button class="ds-chip-remove-btn" aria-label="Remove">` with the `x` SVG), and confirmed a real click fired the `onRemove` callback (`calls:1`). **Real tooling defect diagnosed+fixed this run, not papered over**: browser verb dispatches intermittently failed `"plugin gm not loaded"` or silently hung the full 60s timeout with no output file at all, repeatedly crashing the watcher heartbeat mid-dispatch. Root-caused to a genuinely different failure mode than the 50th run's stale-supervisor issue: **two full sets of zombie Chromium process trees for the agentgui project's own `.gm/browser-chrome-profile-` directory were left running from earlier failed/timed-out dispatches in this same session**, holding the CDP debug port and profile lock so every subsequent dispatch's Chrome launch (or reuse) wedged. Killing every chromium PID under the project's profile dir (leaving the daemon's own management alone) immediately unblocked clean, fast (<1s) dispatches. **Also newly confirmed: the `browser` verb's actual accepted JSON body shape in this env is `{"code": "<script>"}`, evaluated directly in the CURRENTLY-LOADED PAGE's `window`/`document` context (not a Puppeteer/Playwright `page` object at all — there is no `page.goto`/`page.title()` in this shape, despite AGENTS.md's `url=`/`dom=`-prefix documentation describing a `page`-scoped API)** — navigating via `window.location.href = '...'` inside one `{code}` dispatch throws `"Inspected target navigated or closed"` (expected: the navigation kills the CDP session synchronously mid-eval), but the session persists across dispatches, so a SECOND `{code}` dispatch against the same session lands in the newly-navigated page correctly. The `url=`/`dom=`-prefixed plain-text body forms documented elsewhere in this file did not work in this env at all (`"host_browser_exec returned empty"` or no output ever produced) — future sessions hitting the identical symptom should use the two-dispatch `{code}` navigate-then-eval pattern demonstrated this run rather than re-litigating the prefix forms from scratch.
|
|
6
|
+
|
|
3
7
|
## Docstudio design-cue follow-up (2026-07-23) — fiftieth run
|
|
4
8
|
|
|
5
9
|
Eighth docstudio-cue pass. A fresh Explore-agent survey (told the full 49-run ported list) read every remaining unmined docstudio surface — admin-observability-{views,chart}.js, marketplace-{trending,card,flag}.js, documents/drive-picker.js, documents/file-upload.js, streaming/tts-player.js, thread-list-realtime.js, capture-page.js/capture-runner.js, and admin users/tags/archives/audit/moderation tabs — and came back near-exhausted: nearly everything was either already covered under a different name (docstudio's tts-player is *less* mature than the kit's own `voice.js`), pure business logic with no portable UI (drive-picker delegates to Google's native picker iframe; file-upload/thread-list-realtime have no render surface at all), or app-specific GCP wiring (the observability panels' Cloud Logging deep-links). One genuine, narrow gap survived: `admin-observability-views.js:132-161` `endpointsView()` color-codes percentile-latency/success-rate table cells (green >=99%, amber >=95%, red below) with no kit equivalent — `Table` had no notion of a value implying good/warn/bad. Ported the portable convention (not the GCP wiring) as `RateCell({value, tone})` in `design/src/components/data-density.js`, a plain tone-colored `<span>` over the existing `--success`/`--warn`/`--danger` tokens that drops into any `Table` cell, matching `Table`'s own onSort host-owns-the-logic convention (this component has no opinion on thresholds). While touching `data-density.js`, found and fixed a real, unrelated, previously-undiscovered gap: **its entire component set (`PhaseWalk`/`TreeNode`/`BarRow`/`StatTile`/`StatsGrid`/`SubGrid`/`SessionRow`/`DevRow`/`LiveLog`) was never wired into `src/components.js`'s barrel** — unreachable from the built bundle despite having real CSS in `data-density.css`, since before this run. Fixed by adding the barrel export line alongside the new `RateCell`. Kit built+tested (`bun test.js` all pass, 0 lint errors), docs regenerated (`docs/component-props.md`, 218 symbols, 0 drift). Kit pushed `72d88b6`, all 3 kit CI checks green (ci/Publish 247420 to npm/Deploy GH Pages). agentgui re-vendored both dist files; browser-witnessed live on `localhost:3009/gm/`: imported the live-served vendored bundle directly, confirmed `mod.components.RateCell`/`mod.components.StatTile` both callable, and mounted `RateCell({value:"UNIQ_99_4",tone:"good"})` into real DOM via `applyDiff` — rendered exactly `<span class="ds-rate-cell ds-rate-cell-good">UNIQ_99_4</span>`, confirming the CSS tone-class wiring works end-to-end live. **Real tooling defect diagnosed+fixed this run, not papered over**: mid-session, `browser` verb dispatches intermittently failed `"plugin gm not loaded"` — root-caused via `.gm/exec-spool/.watcher.log` to a **leftover stale `gm-plugkit` `supervisor.js` process** (pid alive since a prior session, `Jul19`) running independently alongside the healthy native `agentplug-runner` daemon, periodically trying to respawn the watcher via the *retired* JS `plugkit-wasm-wrapper.js` path (`Cannot find module './wrapper/wasi-shim.js'` — the exact historically-resolved npm-packaging defect from the 48th run, recurring here via a stale cached supervisor rather than a fresh regression) and crash-looping. A separately-wedged long-lived Chrome process for the agentgui project profile (alive since `Jul17`) was also found wedging evals to 60s timeouts. Killed both stale processes, rebooted a fresh daemon (`bun x gm-plugkit@latest spool`) — confirmed fixed via two clean subsequent dispatches, no further crash-loop lines. **Also newly confirmed: writing a spool verb input file under a task-number that collides with an existing `out/<verb>-<N>.json` from an earlier turn in the same session silently returns the STALE cached output instead of running the fresh dispatch** — the watcher appears to treat a pre-existing out-file as already-satisfied and skip reprocessing. Always pick a task number confirmed absent from `out/` (e.g. jump to a clearly-unused block like 100+) rather than trusting sequential same-session numbering, especially after a long session with many prior dispatches.
|
package/package.json
CHANGED
|
@@ -1252,6 +1252,25 @@
|
|
|
1252
1252
|
.ds-247420 .chip.tone-orange { background: color-mix(in oklab, var(--flame) 30%, var(--sun) 70%); color: var(--ink); }
|
|
1253
1253
|
.ds-247420 .chip.tone-yellow { background: var(--sun); color: var(--ink); }
|
|
1254
1254
|
|
|
1255
|
+
/* Removable chip — a trailing dismiss (x) button for editable tag/filter
|
|
1256
|
+
chip lists (session tags, saved-search chips). Reuses the chip's own
|
|
1257
|
+
tone/size; the button itself stays neutral-at-rest, per the standing
|
|
1258
|
+
color-reserved-for-meaning convention, tinting only on hover/focus. */
|
|
1259
|
+
.ds-247420 .chip.ds-chip-removable { padding-right: var(--space-1); }
|
|
1260
|
+
.ds-247420 .ds-chip-remove-btn {
|
|
1261
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1262
|
+
width: 16px; height: 16px; margin-left: var(--space-half);
|
|
1263
|
+
padding: 0; border: none; border-radius: var(--r-pill);
|
|
1264
|
+
background: transparent; color: currentColor; opacity: 0.7;
|
|
1265
|
+
cursor: pointer;
|
|
1266
|
+
}
|
|
1267
|
+
.ds-247420 .ds-chip-remove-btn:hover, .ds-247420 .ds-chip-remove-btn:focus-visible { opacity: 1; background: color-mix(in oklab, currentColor 16%, transparent); }
|
|
1268
|
+
.ds-247420 .ds-chip-remove-btn svg { width: 10px; height: 10px; }
|
|
1269
|
+
@media (pointer: coarse) {
|
|
1270
|
+
.ds-247420 .ds-chip-remove-btn { width: 24px; height: 24px; margin-left: 0; }
|
|
1271
|
+
.ds-247420 .ds-chip-remove-btn svg { width: 12px; height: 12px; }
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1255
1274
|
/* ds-pill — plain neutral chip, distinct from the toned .ds-badge/.chip family
|
|
1256
1275
|
(gmsniff's .pill: a bare rounded label with no semantic tone). */
|
|
1257
1276
|
.ds-247420 .ds-pill {
|
|
@@ -5475,6 +5494,118 @@
|
|
|
5475
5494
|
}
|
|
5476
5495
|
.ds-247420 .ds-sheet-preview-error-action:hover { background: var(--bg-2); }
|
|
5477
5496
|
.ds-247420 .ds-sheet-preview-error-action:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: 2px; }
|
|
5497
|
+
/* ============================================================
|
|
5498
|
+
Git status panel + diff view — changed-file list, unified diff.
|
|
5499
|
+
============================================================ */
|
|
5500
|
+
|
|
5501
|
+
.ds-247420 .ds-git-status-grid {
|
|
5502
|
+
display: flex; flex-direction: column; gap: 2px;
|
|
5503
|
+
}
|
|
5504
|
+
.ds-247420 .ds-git-row {
|
|
5505
|
+
display: flex; align-items: center; gap: 10px;
|
|
5506
|
+
width: 100%; padding: 7px 12px;
|
|
5507
|
+
background: none; border: var(--bw-hair) solid transparent; border-radius: var(--r-2);
|
|
5508
|
+
color: var(--fg); font: inherit; text-align: left; cursor: pointer;
|
|
5509
|
+
transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease);
|
|
5510
|
+
}
|
|
5511
|
+
.ds-247420 .ds-git-row:hover { background: var(--bg-2); border-color: var(--rule); }
|
|
5512
|
+
.ds-247420 .ds-git-row.active { background: var(--accent-tint); border-color: var(--accent); }
|
|
5513
|
+
.ds-247420 .ds-git-row:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
5514
|
+
.ds-247420 .ds-git-row[disabled] { cursor: default; }
|
|
5515
|
+
|
|
5516
|
+
.ds-247420 .ds-git-status-chip {
|
|
5517
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
5518
|
+
flex: 0 0 auto; width: 18px; height: 18px;
|
|
5519
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro); font-weight: 700;
|
|
5520
|
+
border-radius: var(--r-1);
|
|
5521
|
+
}
|
|
5522
|
+
.ds-247420 .ds-git-status-chip.tone-add { color: var(--green-2); background: color-mix(in oklab, var(--green-2) 16%, transparent); }
|
|
5523
|
+
.ds-247420 .ds-git-status-chip.tone-modify { color: var(--sun); background: color-mix(in oklab, var(--sun) 16%, transparent); }
|
|
5524
|
+
.ds-247420 .ds-git-status-chip.tone-delete { color: var(--flame); background: color-mix(in oklab, var(--flame) 16%, transparent); }
|
|
5525
|
+
.ds-247420 .ds-git-status-chip.tone-neutral { color: var(--fg-3); background: var(--bg-2); }
|
|
5526
|
+
|
|
5527
|
+
.ds-247420 .ds-git-row-icon { display: inline-flex; flex: 0 0 auto; color: var(--fg-3); }
|
|
5528
|
+
.ds-247420 .ds-git-row-path {
|
|
5529
|
+
flex: 1 1 auto; min-width: 0;
|
|
5530
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
5531
|
+
font-family: var(--ff-mono); font-size: var(--fs-sm);
|
|
5532
|
+
}
|
|
5533
|
+
.ds-247420 .ds-git-row-tag {
|
|
5534
|
+
flex: 0 0 auto; font-size: var(--fs-micro); color: var(--fg-3);
|
|
5535
|
+
border: var(--bw-hair) solid var(--rule); border-radius: var(--r-1); padding: 1px 6px;
|
|
5536
|
+
}
|
|
5537
|
+
.ds-247420 .ds-git-row-stats { flex: 0 0 auto; display: inline-flex; gap: 6px; font-family: var(--ff-mono); font-size: var(--fs-micro); }
|
|
5538
|
+
.ds-247420 .ds-git-stat-add { color: var(--green-2); }
|
|
5539
|
+
.ds-247420 .ds-git-stat-del { color: var(--flame); }
|
|
5540
|
+
|
|
5541
|
+
.ds-247420 .ds-git-empty {
|
|
5542
|
+
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
5543
|
+
gap: var(--space-2); padding: var(--space-6) var(--space-3);
|
|
5544
|
+
color: var(--fg-3); text-align: center;
|
|
5545
|
+
}
|
|
5546
|
+
.ds-247420 .ds-git-empty-glyph { opacity: 0.55; }
|
|
5547
|
+
|
|
5548
|
+
/* Diff view */
|
|
5549
|
+
.ds-247420 .ds-git-diff {
|
|
5550
|
+
display: flex; flex-direction: column; gap: var(--space-2);
|
|
5551
|
+
background: var(--ink); color: var(--paper);
|
|
5552
|
+
border-radius: var(--r-2); overflow: hidden;
|
|
5553
|
+
}
|
|
5554
|
+
.ds-247420 .ds-git-diff-head {
|
|
5555
|
+
padding: var(--space-2) var(--space-3);
|
|
5556
|
+
border-bottom: var(--bw-hair) solid color-mix(in oklab, var(--paper) 18%, transparent);
|
|
5557
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
5558
|
+
}
|
|
5559
|
+
.ds-247420 .ds-git-diff-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-sm); }
|
|
5560
|
+
.ds-247420 .ds-git-hunk + .ds-git-hunk { border-top: var(--bw-hair) solid color-mix(in oklab, var(--paper) 12%, transparent); }
|
|
5561
|
+
.ds-247420 .ds-git-hunk-header {
|
|
5562
|
+
padding: 4px var(--space-3);
|
|
5563
|
+
color: var(--purple-2); font-family: var(--ff-mono); font-size: var(--fs-micro);
|
|
5564
|
+
background: color-mix(in oklab, var(--paper) 6%, transparent);
|
|
5565
|
+
}
|
|
5566
|
+
.ds-247420 .ds-git-hunk-body {
|
|
5567
|
+
margin: 0; padding: 0 0 var(--space-2);
|
|
5568
|
+
font-family: var(--ff-mono); font-size: var(--fs-xs); line-height: var(--lh-base);
|
|
5569
|
+
white-space: pre; overflow-x: auto; tab-size: 2;
|
|
5570
|
+
}
|
|
5571
|
+
.ds-247420 .ds-git-line {
|
|
5572
|
+
display: block; padding: 0 var(--space-3);
|
|
5573
|
+
}
|
|
5574
|
+
.ds-247420 .ds-git-line-add { background: color-mix(in oklab, var(--green-2) 16%, transparent); color: var(--paper); }
|
|
5575
|
+
.ds-247420 .ds-git-line-del { background: color-mix(in oklab, var(--flame) 16%, transparent); color: var(--paper); }
|
|
5576
|
+
.ds-247420 .ds-git-line-context { color: var(--paper-3); }
|
|
5577
|
+
|
|
5578
|
+
/* ============================================================
|
|
5579
|
+
WorktreeSwitcher — trigger + dropdown menu of worktrees/branches.
|
|
5580
|
+
============================================================ */
|
|
5581
|
+
.ds-247420 .ds-wts { display: inline-flex; }
|
|
5582
|
+
.ds-247420 .ds-wts-trigger {
|
|
5583
|
+
display: inline-flex; align-items: center; gap: 8px;
|
|
5584
|
+
padding: 5px 10px; min-height: 32px;
|
|
5585
|
+
background: var(--bg); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-1);
|
|
5586
|
+
color: var(--fg); font: inherit; font-size: var(--fs-sm); cursor: pointer;
|
|
5587
|
+
max-width: 220px;
|
|
5588
|
+
}
|
|
5589
|
+
.ds-247420 .ds-wts-trigger:hover { background: var(--bg-2); }
|
|
5590
|
+
.ds-247420 .ds-wts-trigger:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
5591
|
+
.ds-247420 .ds-wts-trigger-branch {
|
|
5592
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
5593
|
+
font-family: var(--ff-mono);
|
|
5594
|
+
}
|
|
5595
|
+
.ds-247420 .ds-wts-trigger-caret { display: inline-flex; flex: 0 0 auto; color: var(--fg-3); }
|
|
5596
|
+
|
|
5597
|
+
.ds-247420 .ds-wts-item-body { display: flex; align-items: center; gap: 8px; min-width: 0; }
|
|
5598
|
+
.ds-247420 .ds-wts-item-check { display: inline-flex; flex: 0 0 16px; color: var(--accent-ink); }
|
|
5599
|
+
.ds-247420 .ds-wts-item-text { display: flex; flex-direction: column; min-width: 0; gap: 1px; }
|
|
5600
|
+
.ds-247420 .ds-wts-item-branch {
|
|
5601
|
+
font-family: var(--ff-mono); font-size: var(--fs-sm);
|
|
5602
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
5603
|
+
}
|
|
5604
|
+
.ds-247420 .ds-wts-item-path {
|
|
5605
|
+
font-size: var(--fs-micro); color: var(--fg-3);
|
|
5606
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
5607
|
+
}
|
|
5608
|
+
.ds-247420 .ds-dropdown-item[aria-disabled="true"] .ds-wts-item-branch { color: var(--fg); font-weight: 600; }
|
|
5478
5609
|
|
|
5479
5610
|
/* community.css */
|
|
5480
5611
|
/* ============================================================
|