agentgui 1.0.1088 → 1.0.1090
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,13 @@
|
|
|
1
1
|
# AgentGUI — Agent Notes
|
|
2
2
|
|
|
3
|
+
## Docstudio design-cue follow-up (2026-07-23) — fiftieth run
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
## Docstudio design-cue follow-up (2026-07-23) — forty-ninth run
|
|
8
|
+
|
|
9
|
+
Seventh docstudio-cue pass, same directive repeated once more ("consider everything we haven't covered yet"). A fresh Explore-agent survey read every file in `/config/docstudio/public/js` (33 files not previously examined, including admin-observability, marketplace, drive-picker, file-upload, tts-player, thread-list-realtime, capture-page) against both the kit and the "already ported" list built up over 48 prior runs. Verdict: genuinely exhausted — the only survivor was the long-deferred `documents/xls-preview.js` tabbed spreadsheet/CSV inline preview, twice previously deferred across runs 48/47 as "a future initiative" without ever being detailed. Per the standing rule against documenting instead of implementing reachable work, specced and shipped it this run: new `design/src/components/spreadsheet-preview.js` `SpreadsheetPreview({workbook, activeSheet, onSheetChange, maxRows, maxCols, truncated, loading, error, errorActionLabel, onErrorAction})` — the kit does no parsing (no SheetJS dependency; host hands over an already-parsed `{sheetNames, sheets}` shape), renders a `role=tablist` sheet-switcher, a sticky-header `table.ds-sheet-preview-table` with `.num`-aligned numeric cells, and a persistent (non-hiding) truncation banner; loading/error states reuse the existing `Skeleton`/`Alert` primitives rather than inventing new visual language. Barrel-exported through `src/components.js` per the standing barrel rule. CSS landed in `src/css/app-shell/kits-appended.css` (tab underline uses the same neutral-at-rest/accent-only-on-active-state pattern as `Table`'s sortable headers). Kit built+tested (`bun test.js` all pass), docs regenerated (`docs/component-props.md`, 206 symbols, 0 drift). Kit pushed `3535f0a`, 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/` (this sandboxed env has no display, so `.gm/browser-config.json` gained `{"headless":true}` — a real, durable per-project config need, not a one-off workaround): imported the live-served vendored bundle directly (`mod.components.SpreadsheetPreview`, not a top-level export — components live under a `components` namespace on the built ESM bundle), rendered all 5 states (loading/error/loaded/truncated/empty) without throwing, and mounted the truncated state into real DOM via `applyDiff` — confirmed a real `table.ds-sheet-preview-table` with 499 correctly-clamped body rows (`maxRows` default 500) plus a visible banner reading the accurate row count. agentgui pushed `35c5b77`→`4f0789a` (a PRD-state-only follow-up commit), all 4 CI checks green both pushes (Test/Auto-Declaudeify/Publish-and-Release/Deploy-GH-Pages). **Session-start tooling note: this run's `gm` spool watcher was stale (status.json `ts` ~4 days old, `busy_until` long past) — a plain `bun x gm-plugkit@latest spool` reboot recovered it cleanly, distinct from the 48th run's actual npm-packaging outage (which the watcher now reports as resolved: it boots via the native `agentplug-runner` daemon path, not the retired JS wasm-host wrapper the 48th run's blocker was about — that stale PRD row was resolved this run). A separate transient `"plugin gm not loaded"` error recurred a handful of times mid-session on both `browser` and `prd-add`/`prd-resolve` dispatches with no discernible trigger; a bare identical re-dispatch cleared it every time observed (not yet root-caused, but not a hard blocker either — recorded here rather than as a `blockedBy:external` PRD row since it never actually blocked forward progress, only cost a retry).** **Also confirmed: this repo's checked-out branch (`fix/ws-baseurl-on-main`) is not literally named `main` but IS main's true linear continuation — `git fetch origin main` showed `origin/main` HEAD exactly matched this branch's parent commit before any push, so `git_push {branch:"main"}` (explicit override of the git_finalize verb's default same-name-branch push, which the verb correctly refused since branch name != "main") was the correct, safe action, not a deviation.**
|
|
10
|
+
|
|
3
11
|
## Docstudio design-cue follow-up (2026-07-19) — forty-eighth run
|
|
4
12
|
|
|
5
13
|
Sixth docstudio-cue pass, user asked to "consider everything we haven't covered yet." A fresh full-tree Explore-agent survey of `/config/docstudio/public/js` (told everything runs 42-47 shipped) found the low-hanging component/prop/a11y gaps genuinely exhausted, but surfaced a real, previously-unexplored subsystem-level gap: agentgui has **zero double-fire protection anywhere** — no `button.disabled` guard on any async click handler in the whole app, unlike docstudio's `utils/dom-busy.js` `withButtonBusy` (disables the button, sets `aria-busy`, swaps the label to a busy string, and guarantees restore via try/finally; a repeat click while already in flight is silently dropped). Ported it as `withBusy()` in `overlay-primitives.js` — a raw-DOM utility (operates on a real `HTMLButtonElement`, not a VElement) living alongside the existing `trapTab`/`useLongPress` DOM utilities. Wired onto the three unguarded async-click sites found in `app.js`: the ACP agent restart button, the "not installed" re-check button, and both agent-list-load retry buttons (the file-mutation dialogs and stop-chat button already had their own state-driven busy guards, so those were correctly left alone). A second candidate — docstudio's `xls-preview.js` tabbed spreadsheet/CSV inline preview — was surveyed and deliberately deferred as a genuinely distinct, larger subsystem (needs a new kit component: tabbed table + truncation banner + error-fallback card) rather than folded in as a rushed partial port; recorded to memory as its own future initiative. **Tooling note: this run's `gm` spool watcher could not boot at all — `npm pack gm-plugkit@2.0.1990` confirmed the published npm tarball is genuinely missing the `wrapper/` subdirectory (`wasi-shim.js`/`fs-atomic.js`/`kv-store.js`/`task-manager.js`) that `plugkit-wasm-wrapper.js` imports from, reproduced identically across `@latest` and 5 pinned versions back to 2.0.1975 — a real upstream packaging defect, not a local/cache issue (verified with fully cleared bun/npm caches). Fell back to direct implementation with the `agent-browser` CLI (an independent tool, unaffected) for live witnessing instead of the gm browser verb.** Kit built+tested (`bun test.js` all pass, all lints pass, docs regenerated 0 drift), rebased cleanly onto a concurrent `v0.0.354`/`v0.0.355` release (`flatspace-theme` kit addition, no conflict). Kit pushed `c7da8c0`→`bee6ab7`. Browser-witnessed live via `agent-browser`: `withBusy` correctly drops a concurrent second call (`calls:1` across two simultaneous invocations), shows `disabled:true`/`aria-busy:true`/swapped label mid-flight, and fully restores after — plus confirmed all four call-site wirings present in the live-served `app.js` bundle by regex against the actual fetched source. agentgui re-vendored, 0 console errors on live reload.
|
package/package.json
CHANGED
|
@@ -4967,6 +4967,16 @@
|
|
|
4967
4967
|
.ds-247420 .ds-stat-val.err-rate { font-size: clamp(24px, 7cqi, 32px); color: var(--warn); }
|
|
4968
4968
|
.ds-247420 .ds-stat-lbl { font-size: var(--fs-micro); color: var(--fg-3); margin-top: 2px; }
|
|
4969
4969
|
|
|
4970
|
+
/* RateCell — tone-colored numeric table cell (success-rate / percentile-latency
|
|
4971
|
+
columns), ported from docstudio's endpointsView() success-rate coloring.
|
|
4972
|
+
Neutral at rest; color carries meaning only, matching Table's sortable-header
|
|
4973
|
+
restraint pattern. */
|
|
4974
|
+
.ds-247420 .ds-rate-cell { font-variant-numeric: tabular-nums; font-weight: 600; }
|
|
4975
|
+
.ds-247420 .ds-rate-cell-neutral { color: var(--fg-2); font-weight: 400; }
|
|
4976
|
+
.ds-247420 .ds-rate-cell-good { color: var(--success); }
|
|
4977
|
+
.ds-247420 .ds-rate-cell-warn { color: var(--warn); }
|
|
4978
|
+
.ds-247420 .ds-rate-cell-bad { color: var(--danger); }
|
|
4979
|
+
|
|
4970
4980
|
/* Inline row — flex row with centered items and a small gap, for demo/kit
|
|
4971
4981
|
markup that needs to lay siblings out horizontally without an inline style. */
|
|
4972
4982
|
.ds-247420 .ds-inline-row { display: flex; align-items: center; gap: var(--space-2, 8px); }
|