agentgui 1.0.1103 → 1.0.1104
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/.gm/gm.db
CHANGED
|
Binary file
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-0dad5d82fec829ba-887
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1784892479919
|
|
5
|
+
updated: 1784892479919
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
agentgui docstudio-port run (2026-07-24): added MenuButton (checkmarked select menu, overlay-primitives.js), ChatSuggestions (blank-thread composer-priming chips, chat.js), BatchProgressLabel/formatBatchOutcome (sequential batch progress + aggregate outcome toast, editor-primitives.js), InfoRow/InfoSection/DiagnosticsPanel (static debug readouts, editor-primitives.js) to the anentrypoint-design kit, all barrel-exported. Real webjsx crash found+fixed mid-verify: InfoSection's loading-to-loaded transition mixed key namespaces at the same diff slot -- reusing one key across a text-only render and an element-children render crashes applyDiff('reading key'); fixed by giving the two branches distinct keys (body-loading/body-rows). Standing lesson: a component switching between structurally-different children at the same slot needs each branch keyed distinctly, not just the parent.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-1a459001058f618e-567
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1784892511617
|
|
5
|
+
updated: 1784892511617
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
agentgui docstudio-port run (2026-07-24): added MenuButton, ChatSuggestions, BatchProgressLabel/formatBatchOutcome, InfoRow/InfoSection/DiagnosticsPanel to the anentrypoint-design kit, all barrel-exported. Real webjsx crash found+fixed mid-verify: InfoSection loading-to-loaded transition mixed key namespaces at the same diff slot, crashing applyDiff reading key; fixed by giving the two branches distinct keys body-loading/body-rows. Standing lesson: a component switching between structurally-different children at the same slot needs each branch keyed distinctly.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-34a749430303c5f7-544
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1784892533381
|
|
5
|
+
updated: 1784892533381
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
agentgui CI/GitHub Actions detail: capture-screenshots must run under bun, not node. npm install --ignore-scripts in gh-pages.yml skips native compilation, leaving better-sqlite3 without a compiled .node binding; database.js tries bun:sqlite first, then falls back to better-sqlite3. Under Node both fail and the server crashes silently within the 20s health-check window. Fix: bun run scripts/capture-screenshots.mjs (not node ...) -- process.execPath becomes bun, so the spawned child server also runs under bun and loads bun:sqlite natively.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
key: mem-447e5a54ddc9357a-654
|
|
3
|
+
ns: default
|
|
4
|
+
created: 1784892490926
|
|
5
|
+
updated: 1784892490926
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
agentplug daemon fix (2026-07-24): persistent plugin gm not loaded error on the shared agentplug-runner daemon root-caused in registry.rs dispatch_and_evict_on_error, which permanently clears a plugin pool slot on any dispatch error with no reload path on DispatchHandle. Fixed by threading Engine+Module through DispatchHandle so dispatch self-heals a missing slot via re-instantiation. Also found+fixed a second real bug: browser.rs was missing the CommandExt trait import for its Windows CREATE_NO_WINDOW flag, breaking the Windows release build. Both pushed to AnEntrypoint/agentplug main (b981b67, d388d81), CI-verified green across all 6 platforms.
|
package/AGENTS.md
CHANGED
|
@@ -31,12 +31,14 @@ Same-origin app auth must never use the `Authorization` header when an upstream
|
|
|
31
31
|
- Check a color token's contrast against its actual rendered background, not just the base paper token. A `failures`-array-shaped crash from a lint/audit lens means that scope is unaudited, not a null (clean) result. `prd-resolve` `witness_evidence` must be distinct per row, never a batch-shared string.
|
|
32
32
|
- This env's `PASSWORD` value can itself contain literal commas (e.g. `123,slam,123,slam`) — treat the whole string as one token, never comma-split it when testing auth.
|
|
33
33
|
- The `gm-plugkit` `fs_write` verb's payload key is `content` (a JSON string), not `body` — passing `{path, body:{...}}` silently no-ops with `bytes:0` and no error.
|
|
34
|
-
- Docstudio design-cue mining (`/config/docstudio`) is a recurring source of portable UI conventions to port into `../design`. When re-running this sweep, survey files not yet examined against the kit's actual current component list rather than trusting a prior "exhausted" verdict at face value — a narrow, genuinely new gap can still surface (e.g. `Chip.onRemove`, `RateCell`, `SpreadsheetPreview`, `ApprovalPrompt`, `PermissionMenu`, `CountdownDialog`, `withBusy` double-fire guard). Business logic with no portable visual surface (native OAuth pickers, drive integration, file-upload wiring) and app-specific cloud-provider wiring (observability deep-links) are not portable; the visual/interaction *convention* underneath sometimes still is.
|
|
34
|
+
- Docstudio design-cue mining (`/config/docstudio`) is a recurring source of portable UI conventions to port into `../design`. When re-running this sweep, survey files not yet examined against the kit's actual current component list rather than trusting a prior "exhausted" verdict at face value — a narrow, genuinely new gap can still surface (e.g. `Chip.onRemove`, `RateCell`, `SpreadsheetPreview`, `ApprovalPrompt`, `PermissionMenu`, `CountdownDialog`, `withBusy` double-fire guard, `MenuButton`, `ChatSuggestions`, `BatchProgressLabel`/`formatBatchOutcome`, `InfoRow`/`InfoSection`/`DiagnosticsPanel`). Business logic with no portable visual surface (native OAuth pickers, drive integration, file-upload wiring) and app-specific cloud-provider wiring (observability deep-links) are not portable; the visual/interaction *convention* underneath sometimes still is.
|
|
35
|
+
- A component transitioning between two structurally-different children states at the same webjsx-diffed slot (e.g. a loading placeholder vs. a keyed-list body) needs each state's wrapper to carry a distinct `key`, not just a shared parent key — reusing one key across a text-only render and an element-children render at the same position crashed `applyDiff` with "reading 'key'" (caught live via `browser` dispatch in `InfoSection`'s loading→loaded transition, fixed by keying the two branches `body-loading`/`body-rows`).
|
|
35
36
|
|
|
36
37
|
## Browser-verb operating notes
|
|
37
38
|
|
|
38
39
|
- The `browser` spool verb's actual accepted JSON body shape is `{"code": "<script>"}`, evaluated directly in the currently-loaded page's `window`/`document` context — it is not a Puppeteer/Playwright `page`-scoped API (no `page.goto`/`page.title()`). Navigating via `window.location.href = '...'` inside one `{code}` dispatch throws `"Inspected target navigated or closed"` (expected — kills the CDP eval mid-navigation), but the session persists across dispatches, so a second `{code}` dispatch on the same session lands in the newly-navigated page. If the plain-text `url=`/`dom=`/`screenshot=`-prefixed body forms ever return empty/no-op in this environment, fall back to the two-dispatch `{code}` navigate-then-eval pattern rather than re-litigating the prefix forms.
|
|
39
40
|
- Zombie Chromium process trees left by earlier timed-out `browser` dispatches (under the project's own `.gm/browser-chrome-profile-` directory) can wedge every subsequent Chrome launch/reuse to full-timeout empty responses or intermittent `"plugin gm not loaded"` errors. Kill every chromium PID under that profile dir (never the daemon process itself) to unblock; this is a distinct failure mode from a genuinely stale/crash-looping supervisor process (also possible — check `.gm/exec-spool/.watcher.log` for a repeating respawn-crash-loop signature before assuming it's the Chrome-zombie case).
|
|
41
|
+
- A persistent (not merely zombie-Chrome-related) `"plugin gm not loaded"` error on the shared `agentplug-runner` daemon was root-caused and fixed upstream (`AnEntrypoint/agentplug` commits `b981b67`/`d388d81`, released through the `agentplug-bin` pipeline): `dispatch_and_evict_on_error` in `registry.rs` permanently cleared a plugin's pool slot on any dispatch error with no reload path on `DispatchHandle` (the browser/exec_js spawn-thread path), so one transient failure (e.g. a Chrome-launch timeout) made every later dispatch on that daemon fail until an unrelated code path happened to reload the plugin. Fixed by threading `Engine`+`Module` through `DispatchHandle` so it self-heals a missing/evicted slot. If this symptom recurs, a fresh `agentplug-runner` binary pull should already carry the fix; only re-root-cause if it persists on a confirmed-current binary.
|
|
40
42
|
- Embedding Basic-Auth creds directly in a `page.goto`/navigation URL (`https://user:pass@host/...`) breaks the app's own same-origin `fetch()` calls with "Request cannot be constructed from a URL that includes credentials." Do one embedded-creds navigation to seed the browser's per-origin Basic-Auth cache, then navigate again WITHOUT embedded creds (plain URL or `?token=`) for any witness that needs real fetches to succeed.
|
|
41
43
|
- Combine creds + goto + wait + evaluate into ONE dispatch when the tool version's session ids rotate across separate dispatches; read results via `console.log('WITNESS:'+...)` and grep stdout rather than trusting a `capture`-prefix `result` field that can come back `null` on an otherwise successful dispatch.
|
|
42
44
|
- 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 can silently return the STALE cached output instead of running the fresh dispatch. Pick a task number confirmed absent from `out/` (e.g. jump to a clearly-unused block) rather than trusting sequential same-session numbering, especially after a long session with many prior dispatches.
|
|
@@ -77,7 +79,7 @@ Two runner protocols exist. **Direct** (`lib/claude-runner-direct.js`): claude-c
|
|
|
77
79
|
|
|
78
80
|
## CI / GitHub Actions
|
|
79
81
|
|
|
80
|
-
**capture-screenshots must run under bun, not node
|
|
82
|
+
**capture-screenshots must run under bun, not node** (gh-pages.yml `--ignore-scripts` leaves `better-sqlite3` uncompiled, so `bun:sqlite`'s fallback also fails under Node — detail in rs-learn). Rule: any CI step that spawns the agentgui server must invoke it with `bun`.
|
|
81
83
|
|
|
82
84
|
## GM Plugin Autonomy Blocker
|
|
83
85
|
|