agentgui 1.0.1113 → 1.0.1115

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.
Files changed (132) hide show
  1. package/package.json +1 -1
  2. package/.gm/browser-config.json +0 -1
  3. package/.gm/claim-audit-fired +0 -1
  4. package/.gm/disciplines/agentgui/mem-1779277005143-0-1352.json +0 -1
  5. package/.gm/disciplines/agentgui/memories/.flat-export-done +0 -0
  6. package/.gm/disciplines/agentgui/memories/mem-c07fa3b0836edbe2-1352.md +0 -8
  7. package/.gm/gm.db +0 -0
  8. package/.gm/memories/.flat-export-done +0 -1
  9. package/.gm/memories/mem-0131ff4869d86085-370.md +0 -10
  10. package/.gm/memories/mem-04049d11cb8c1661-2135.md +0 -8
  11. package/.gm/memories/mem-069ff10372ed1770-1375.md +0 -8
  12. package/.gm/memories/mem-08a4a9e050a4deff-3048.md +0 -8
  13. package/.gm/memories/mem-09597ee0df9c9224-965.md +0 -8
  14. package/.gm/memories/mem-0993d156f571b619-1059.md +0 -8
  15. package/.gm/memories/mem-0b681bf2340c8df1-3170.md +0 -8
  16. package/.gm/memories/mem-0c444abde86202f6-1681.md +0 -8
  17. package/.gm/memories/mem-0d1408fa048b9923-1159.md +0 -8
  18. package/.gm/memories/mem-0dad5d82fec829ba-887.md +0 -8
  19. package/.gm/memories/mem-10a776effb7ce3a6-935.md +0 -8
  20. package/.gm/memories/mem-10d264b4f8e66fb4-1492.md +0 -8
  21. package/.gm/memories/mem-118c35ac67541d98-2909.md +0 -8
  22. package/.gm/memories/mem-119cf70dd19aa0a5-2225.md +0 -8
  23. package/.gm/memories/mem-15a07cd761b337c4-4320.md +0 -8
  24. package/.gm/memories/mem-15c73aca528535cb-2183.md +0 -8
  25. package/.gm/memories/mem-166f52796185e0e7-1487.md +0 -8
  26. package/.gm/memories/mem-1a148cf9c3126df5-3963.md +0 -8
  27. package/.gm/memories/mem-1a459001058f618e-567.md +0 -8
  28. package/.gm/memories/mem-1af3e13f7618e668-2146.md +0 -8
  29. package/.gm/memories/mem-1fd31d6873e9c164-794.md +0 -8
  30. package/.gm/memories/mem-21f551be092fd77d-2340.md +0 -8
  31. package/.gm/memories/mem-231ff5de003f20f0-586.md +0 -8
  32. package/.gm/memories/mem-2567393d3adb03ab-347.md +0 -8
  33. package/.gm/memories/mem-27faf41cdd050c80-1261.md +0 -8
  34. package/.gm/memories/mem-28889e43e8ce64cc-3663.md +0 -8
  35. package/.gm/memories/mem-2f4fd06515abf439-2562.md +0 -8
  36. package/.gm/memories/mem-34a749430303c5f7-544.md +0 -8
  37. package/.gm/memories/mem-3602d11d7bce9446-1057.md +0 -8
  38. package/.gm/memories/mem-38b7e24dbcba2f3e-639.md +0 -8
  39. package/.gm/memories/mem-39a7cc2f887a90b1-1079.md +0 -8
  40. package/.gm/memories/mem-40d6169c8759061d-806.md +0 -8
  41. package/.gm/memories/mem-4420e6d00e5c8632-2318.md +0 -8
  42. package/.gm/memories/mem-447e5a54ddc9357a-654.md +0 -8
  43. package/.gm/memories/mem-455b3beb4afabe14-591.md +0 -8
  44. package/.gm/memories/mem-4845ee594759151c-560.md +0 -8
  45. package/.gm/memories/mem-4a1254c60b868b88-374.md +0 -8
  46. package/.gm/memories/mem-4bafafa47a0e4b6c-3237.md +0 -8
  47. package/.gm/memories/mem-4c06c45b4d31bc60-1202.md +0 -8
  48. package/.gm/memories/mem-4dfac801d0378448-3676.md +0 -8
  49. package/.gm/memories/mem-4ecd3b713e384170-122.md +0 -10
  50. package/.gm/memories/mem-51d8992a3c6f6c9c-1073.md +0 -8
  51. package/.gm/memories/mem-539eee7e8c6c10ee-2557.md +0 -8
  52. package/.gm/memories/mem-559b8b2abc4b1091-1665.md +0 -8
  53. package/.gm/memories/mem-59dd73a463e54948-871.md +0 -8
  54. package/.gm/memories/mem-5b99b882ffe1a3c2-2262.md +0 -8
  55. package/.gm/memories/mem-5feb252a5244149c-1791.md +0 -8
  56. package/.gm/memories/mem-6224f8d185797f2b-1047.md +0 -8
  57. package/.gm/memories/mem-6434ee8261a6a6a2-3126.md +0 -8
  58. package/.gm/memories/mem-66b0947b946f3437-1155.md +0 -8
  59. package/.gm/memories/mem-6bdf783a1f6be7c2-1062.md +0 -8
  60. package/.gm/memories/mem-6d49f08bebac54c9-744.md +0 -8
  61. package/.gm/memories/mem-70d96acb736af2d7-685.md +0 -8
  62. package/.gm/memories/mem-70de7d5e71fcd439-2680.md +0 -8
  63. package/.gm/memories/mem-713614f12d7029da-1577.md +0 -8
  64. package/.gm/memories/mem-720d76c88e64f6ee-1967.md +0 -8
  65. package/.gm/memories/mem-7535f34f430fc196-1340.md +0 -8
  66. package/.gm/memories/mem-861a588d2773681a-1311.md +0 -8
  67. package/.gm/memories/mem-8af7980a92e09959-891.md +0 -8
  68. package/.gm/memories/mem-8b438ef4c609b7af-401.md +0 -8
  69. package/.gm/memories/mem-8f59884039787ef3-743.md +0 -8
  70. package/.gm/memories/mem-92b199c2024ee1aa-2513.md +0 -8
  71. package/.gm/memories/mem-9329105b05b9c0f6-324.md +0 -10
  72. package/.gm/memories/mem-94f30cec3c283f97-782.md +0 -10
  73. package/.gm/memories/mem-956d4813319f65a3-1710.md +0 -8
  74. package/.gm/memories/mem-96fffbb6615e031b-1263.md +0 -8
  75. package/.gm/memories/mem-993ab31f7a10aefa-718.md +0 -8
  76. package/.gm/memories/mem-a3e440db285f655a-995.md +0 -8
  77. package/.gm/memories/mem-a52933cd6495e6f5-2624.md +0 -8
  78. package/.gm/memories/mem-a86426ac44138c96-1606.md +0 -8
  79. package/.gm/memories/mem-a95b1d49d71133ce-1007.md +0 -8
  80. package/.gm/memories/mem-a9968a186368b022-1150.md +0 -8
  81. package/.gm/memories/mem-aaeae38d8eb01809-1076.md +0 -8
  82. package/.gm/memories/mem-ade01d9c02677c55-1557.md +0 -8
  83. package/.gm/memories/mem-b06b8c85b81663e6-1250.md +0 -8
  84. package/.gm/memories/mem-b451e5e17e555202-1490.md +0 -8
  85. package/.gm/memories/mem-b64ad00dcb6f909e-937.md +0 -8
  86. package/.gm/memories/mem-b7d6018ceca55b6f-2220.md +0 -8
  87. package/.gm/memories/mem-bdf466854032cac9-1509.md +0 -8
  88. package/.gm/memories/mem-c0482039e6ab4c50-2047.md +0 -8
  89. package/.gm/memories/mem-c4aaec5c4e6f80c2-920.md +0 -8
  90. package/.gm/memories/mem-c66976ddacb4fbe8-1454.md +0 -8
  91. package/.gm/memories/mem-c7c5bc263850c332-1844.md +0 -8
  92. package/.gm/memories/mem-cda639547932c796-713.md +0 -8
  93. package/.gm/memories/mem-cdf04ff6a6a0aa6f-671.md +0 -8
  94. package/.gm/memories/mem-cf8472c84d9e04c4-1883.md +0 -8
  95. package/.gm/memories/mem-cfd4d894370c63c3-1288.md +0 -8
  96. package/.gm/memories/mem-d060480435f92eec-1146.md +0 -8
  97. package/.gm/memories/mem-d347c921b79e6d44-1099.md +0 -8
  98. package/.gm/memories/mem-d3c8ea6c861bfbb8-1457.md +0 -8
  99. package/.gm/memories/mem-d5e928c552cd87f9-214.md +0 -10
  100. package/.gm/memories/mem-d63bc3b8a0269844-406.md +0 -10
  101. package/.gm/memories/mem-d9c19257abc2fa5e-1061.md +0 -8
  102. package/.gm/memories/mem-d9f26358a7cd3bb8-866.md +0 -8
  103. package/.gm/memories/mem-da1c91acf63d81d3-863.md +0 -8
  104. package/.gm/memories/mem-dc1ac3b04d22317e-664.md +0 -8
  105. package/.gm/memories/mem-dceeae20bc56d407-711.md +0 -8
  106. package/.gm/memories/mem-dd98b21c0896dc04-1557.md +0 -8
  107. package/.gm/memories/mem-df74674eec7745ac-178.md +0 -10
  108. package/.gm/memories/mem-dfe3b466fd5d1199-802.md +0 -8
  109. package/.gm/memories/mem-e0f9286aed2d5a06-1116.md +0 -8
  110. package/.gm/memories/mem-e1950b064099b7be-1895.md +0 -8
  111. package/.gm/memories/mem-e1d5431ae2542872-961.md +0 -8
  112. package/.gm/memories/mem-e490a181de6469fc-487.md +0 -8
  113. package/.gm/memories/mem-e72c6efbb27326fb-392.md +0 -8
  114. package/.gm/memories/mem-e943b58115a02b4c-593.md +0 -8
  115. package/.gm/memories/mem-e9bc5f9ed6edbcf7-1580.md +0 -8
  116. package/.gm/memories/mem-eae1e383927854fb-2649.md +0 -8
  117. package/.gm/memories/mem-ebbe6c0694c526f0-1392.md +0 -8
  118. package/.gm/memories/mem-ebf85becc23410b0-1633.md +0 -8
  119. package/.gm/memories/mem-ee0596fa17c7102e-362.md +0 -10
  120. package/.gm/memories/mem-ee4450fbc311b583-1361.md +0 -8
  121. package/.gm/memories/mem-ee8858162518f144-1252.md +0 -8
  122. package/.gm/memories/mem-f3297e82df622649-1166.md +0 -8
  123. package/.gm/memories/mem-f3f317c083d979ee-1210.md +0 -8
  124. package/.gm/memories/mem-f714a86465fba158-2041.md +0 -8
  125. package/.gm/memories/mem-f786bc1626d92845-204.md +0 -10
  126. package/.gm/memories/mem-f9f0dc8895b21e18-1217.md +0 -8
  127. package/.gm/memories/mem-fb3b2a7395800041-525.md +0 -8
  128. package/.gm/memories/mem-fc5753f92ee7d654-966.md +0 -8
  129. package/.gm/memories/mem-fe3faa1652f07239-480.md +0 -8
  130. package/.gm/memories/mem-ff8669e527e5c427-2788.md +0 -8
  131. package/.gm/mutables.yml +0 -45
  132. package/.gm/prd.yml +0 -3219
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-d63bc3b8a0269844-406
3
- ns: default
4
- created: 1781783460280
5
- updated: 1781783460280
6
- ---
7
-
8
- ## Resolved mutable: residue-extent
9
-
10
- grep: site/theme.mjs:143 is the single remaining inline <style>html,body{...background:var(--app-bg,#FBF6EB);color:var(--ink,#1F1B16);font-family:var(--ff-ui,...)}</style> with hardcoded hex; grep -c '<style' site/app/index.html = 0; grep -rn 'style=' site/app/js/ = empty (app.js agentgui- hits are kit utility CLASS names, not CSS). Only real residue = theme.mjs:143.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-d9c19257abc2fa5e-1061
3
- ns: default
4
- created: 1784316128399
5
- updated: 1784316128399
6
- ---
7
-
8
- {"key":"agentgui-no-tool-approval-gate-2026-07-17","value":"agentgui has NO tool-call approval/permission gate anywhere in its runner stack (confirmed 47th run, 2026-07-17): claude-runner-agents.js passes --dangerously-skip-permissions on every invocation; acp-sdk-manager.js/acp-protocol.js/claude-runner-acp.js/acp-server-machine.js have zero permission/approval/canUseTool references; backend.js's WS event switch has no pending-approval state; app.js has no pendingApproval field. The new kit ApprovalPrompt component (added this run, modeled on docstudio's approve/deny-with-note UI) has no backend concept to bind to today - wiring a real approval flow would need a new WS message type (permission_request/permission_response), runner-side blocking/resume logic differing per runner protocol (direct vs ACP vs agents), and removing --dangerously-skip-permissions. This is a distinct, much larger initiative than porting a UI idea into the kit - not in scope for a docstudio-design-cue pass, would need its own dedicated planning session if ever pursued."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-d9f26358a7cd3bb8-866
3
- ns: default
4
- created: 1780598014254
5
- updated: 1780598014254
6
- ---
7
-
8
- agentgui GUI (2026-06-04 audit): chat now renders STRUCTURED tool cards - app.js sendChat emits toolPart()/applyToolResult() -> {kind:'tool',name,label,args,result,status,_id}; kit AgentChat (agent-chat.js) passes structured {kind,...} m.parts through to ChatMessage.renderPart (only bare strings wrapped as text) so kit ToolCallNode renders. AgentChat gained: empty state (.agentchat-empty, suggestions/onSuggestionClick), composer stop (busy+onCancel), working tail (.agentchat-working). Multi-turn resume: server ws-handlers-util onEvent broadcasts streaming_session{claudeSessionId:parsed.session_id}; backend.js yields {type:'session'}; app.js sets state.chat.resumeSid (claude-code only). index.html now loads kit from LOCAL ./vendor/anentrypoint-design (re-vendored for predictability+offline, NOT unpkg). GUI audit workflow at .claude/workflows/gui-audit.js.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-da1c91acf63d81d3-863
3
- ns: default
4
- created: 1782996680472
5
- updated: 1782996680472
6
- ---
7
-
8
- agentgui 23rd run (2026-07-02): GUI perceived-performance sweep, small targeted run landing the 22nd run's deferred findings. index.html modulepreloads marked/dompurify ESM CDN modules (was preconnect-only) so the fetch starts in parallel instead of waiting for markdown.js's dynamic import on first chat response. Settings server panel shows 'checking...' instead of 'unknown' during the first health probe (state.healthChecking flag around recheckHealth's await). Settings agents panel shows 'agents · loading...' instead of literal 'agents · 0/0 installed' during initial fetch. Still deferred as its own PRD row: first-render network-gating (shell paints nothing between boot-splash and health-probe completion) - needs a render-architecture change bigger than a targeted fix. No kit changes this run. Pushed agentgui 6a045ba, 28/28 tests, 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-dc1ac3b04d22317e-664
3
- ns: default
4
- created: 1783680441733
5
- updated: 1783680441733
6
- ---
7
-
8
- {"key":"gm-fs-write-verb-payload-key-is-content-not-body","value":"The gm-plugkit fs_write verb's payload key is 'content' (a JSON-string), NOT 'body' - passing {path,body:{...}} silently no-ops and reports bytes:0 with no error, which stalls the CONSOLIDATE->COMPLETE CI-validation gate since .ci-validated never actually lands on disk. Always dispatch fs_write as {\"path\":...,\"content\":\"<string>\"} (JSON.stringify any object payload first). Discovered independently in agentgui's 32nd run and design/dashboard-kit's own CONSOLIDATE passes on the same day - a recurring plugkit gotcha worth checking for on every fs_write dispatch, not just .ci-validated."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-dceeae20bc56d407-711
3
- ns: default
4
- created: 1781191154143
5
- updated: 1781191154143
6
- ---
7
-
8
- Browser-witnessing agentgui on this linux container: plugkit chromium needs --no-sandbox (written to /etc/chromium.d/no-sandbox, the Debian launcher sources it). The browser verb body is 'timeout=NNNNN\n<raw playwright JS>' (max 50000ms; globals page/state); the body passes through a shell so NEVER use $(...) or backticks - use page.locator(). page.goto with domcontentloaded/networkidle HANGS (CDN subresources never resolve here) - use waitUntil:'commit' + waitForSelector. A goto to the same URL with only a hash change does NOT reload the bundle; use page.reload() after re-vendoring. Server: bun server.js, PASSWORD in .env is '123,slam,123,slam', app at localhost:3000/gm/?token=... (token URL-encoded).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-dd98b21c0896dc04-1557
3
- ns: default
4
- created: 1783699262524
5
- updated: 1783699262524
6
- ---
7
-
8
- {"key":"agentgui-26th-run-file-move-lint-fix","value":"agentgui 26th run (2026-07-02): per-row file move + lint tooling fix. Landed gui-completion #0: single-file move previously required checkbox-select + BulkBar. Kit FileRow gains a move action (between rename/delete, arrow-right icon); app onAction(move,file) seeds state.files.marked with just that one path and opens the existing bulk-move dialog, reusing runBulkMove/api/move as-is - no new dialog kind, no new server surface. Also fixed a real bug in ../design scripts/lint-null-children.mjs: its bracket-matcher did not understand // line comments, so an apostrophe inside ANY comment anywhere in a scanned file (e.g. the kit's own) was read as opening a string literal, silently corrupting bracket-depth tracking for the rest of that file - a false positive here, but potentially a false NEGATIVE elsewhere (hiding a real missing .filter(Boolean) behind an unrelated apostrophe earlier in the file). Added stripLineComments() (string-literal-aware) run before the scan; verified by reintroducing the apostrophe and confirming it now lints clean. CI note: Deploy GH Pages repeatedly failed with Deployment cancelled / Timeout reached, aborting! across this run and the 25th - GitHub Pages deployment API appears to self-cancel when a rerun is triggered while a prior attempt for the same commit SHA is still settling (rapid successive gh run rerun calls made this worse, not better). Fix: dont rerun repeatedly in quick succession - trigger once and wait it out with zero concurrent interference."}
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-df74674eec7745ac-178
3
- ns: default
4
- created: 1781788748592
5
- updated: 1781788748592
6
- ---
7
-
8
- ## Resolved mutable: live-page-baseline
9
-
10
- browser-2: /gm/?token render ready=complete, hasShell=true, bodyBg=rgb(19,19,24) kit-painted, resizers=3, hScroll=false, consoleErrors=[]
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-dfe3b466fd5d1199-802
3
- ns: default
4
- created: 1780041529708
5
- updated: 1780041529708
6
- ---
7
-
8
- agentgui SECURITY: the direct agent runner (lib/claude-runner-direct.js) must spawn with shell:false against a resolved binary path (resolveBinaryPath in lib/claude-runner.js), NEVER shell:true. shell:true on Windows concatenates argv without escaping, so a user prompt containing & | > or backticks executes as shell commands (proven: prompt "hi & echo X > f.txt" created f.txt). getSpawnOptions now only defaults shell:true when the caller does not pass an explicit shell option; the direct runner passes shell:false. resolveBinaryPath returns the command unchanged for .cmd/.bat shims (which need a shell) so npx-style launchers still work, but claude-code and agy resolve to real .exe and spawn shell-free. Verified: claude-code still outputs normally, metachar prompts create no side-effect files.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e0f9286aed2d5a06-1116
3
- ns: default
4
- created: 1780558587460
5
- updated: 1780558587460
6
- ---
7
-
8
- agentgui+anentrypoint-design kit Row (src/components/content.js): renders a leading status RAIL from a `rail` prop (green|purple|flame, via .row.rail-<tone>::before driving the existing ::before bar) and accepts `rank` as an alias for the leading `code` index. state:'disabled' Row is INERT (no onClick/role=button/tabstop, aria-disabled=true). BEFORE 2026-06-04 Row dropped both rail+rank silently so agentgui's color rails and leading numbers were invisible. agentgui passes rail+rank at history sessions/search-results/agents-panel; rail semantics are consistent: green=selected/ok, purple=subagent, flame=error/unavailable. Kit changes reach the live GUI only after publish.yml -> npm -> unpkg @latest (agentgui index.html imports the kit from unpkg, not vendored). Build kit dist with `node scripts/build.mjs` (lint-glyphs+lint-tokens gates run); commit SOURCE only (dist/ is gitignored, CI rebuilds). To witness kit changes locally, serve dist over http (file:// import is origin-blocked) and import 247420.js. Witnessed 2026-06-04: green rail rgb(58,154,52), flame rgb(255,90,31), rank->.code, disabled inert.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e1950b064099b7be-1895
3
- ns: default
4
- created: 1780667383196
5
- updated: 1780667383196
6
- ---
7
-
8
- agentgui Claude-Desktop redesign (2026-06-05, 4th max-effort run): app moved from Topbar-tabs to a three-column WorkspaceShell (new kit shell.js: WorkspaceShell{rail,sessions,main,pane,crumb,status,narrow}+WorkspaceRail, .ws-* CSS in app-shell.css, collapse persisted localStorage ds.ws.{rail,pane}, mobile<900px fixed rail+overlay drawers). New surfaces: kit ConversationList (sessions.js .ds-session*) conversation rail shared by chat+history (select->resumeInChat on chat, loadSession on history; sessions load on chat-entry+boot); Files view = server /api/list + /api/file (lib/http-handler.js, allowlist-confined STARTUP_CWD/CLAUDE_PROJECTS_DIR/FS_ROOTS via normalize+resolved-prefix like /api/image, 403 outside) + backend.js listDir/readFile + app.js filesMain (kit BreadcrumbPath+FileGrid+FileViewer preview, 'use as chat cwd'); kit SessionDashboard/SessionCard (.ds-dash*) Live dashboard from state.active (3s chat.active poll) per-session Stop/Open/Resume/events; kit ContextPane (context-pane.js .ds-context*) right pane on chat. WEBJSX KEYING CLASS-BUG (load-bearing): mixing keyed VElements with null/strings in any children array crashes applyDiff 'reading key' - fixed ConversationList (stable keyed body wrapper + .filter(Boolean) rows) + app.js runningPanel (all children keyed); refreshHistory render() moved OUT of try (render exception no longer masquerades as history fetch error). Workflow deliverable .claude/workflows/gui-overhaul.js (8 designers->feasibility/policy review->build plan, distinct from gui-audit.js). Witnessed live /gm/: shell+rail[Chat,History,Files,Live,Settings]+4 session rows+agentchat+contextpane, files 60 rows+breadcrumb+preview, live dashboard, settings theme toggle, decorativeGlyphs=[], 0 console errors, /api/file win.ini->403. Kit lint-glyphs+lint-tokens pass; dist vendored to site/app/vendor. Push pending (github DNS unreachable this env).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e1d5431ae2542872-961
3
- ns: default
4
- created: 1781864613149
5
- updated: 1781864613149
6
- ---
7
-
8
- agentgui 15th run (2026-06-18): design-maturity + dead-code + server-hardening. gui-design-15 (wf_7ba315a1-9a9, 8 lenses, 59->33 applied) + gui-design-15b (wf_5b2861b2-717, 3 lenses, 25->18). ~95 agents ~4M tokens. Kit: chat.css(10 rules), app-shell.css(10), colors_and_type.css(4), app-surfaces.css, editor-primitives.css focus-visible, chat.js ToolCallNode copy, files.js skeleton+roving-radiogroup+emptyAction, sessions.js cost emphasis, shell.js WS_RESIZE_CLAMP. NEW: ShortcutList export, Row.detail prop. Dead-code: static/ (webjsx+xstate), scripts/build-rippleui.mjs, scripts/copy-vendor.js removed. Server: terminal fail-closed (PASSWORD+ENABLE_TERMINAL=1), fsAllowRoots cwd-gated, CSRF JSON-only+Origin==Host, constant-time SHA-256 token compare, confineToRoots for chat cwd, cookie Secure+Max-Age, TRUST_PROXY rate-limit, CSP nonce (no unsafe-inline), agents.models via getModelsForAgent. validate-mutations 26/26; kit all lints pass; 0 console errors.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e490a181de6469fc-487
3
- ns: default
4
- created: 1783843022402
5
- updated: 1783843022402
6
- ---
7
-
8
- CORRECTION (37th run, 2026-07-12): agentgui's live index.html loads the design kit from LOCAL ./vendor/anentrypoint-design/247420.{css,js}, NOT unpkg. Witnessed directly on https://buildesk.acc.l-inc.co.za/gm/ via browser dom= query. An older memory record (mem-1780593485911-5-718) claiming unpkg @latest is STALE - it described a transient state that was reverted; AGENTS.md's 'DS load = LOCAL vendor' section is correct and current. Trust this record over the unpkg one going forward.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e72c6efbb27326fb-392
3
- ns: default
4
- created: 1783690636206
5
- updated: 1783690636206
6
- ---
7
-
8
- agentgui-33rd-run-drained-detail: (already fully covered by the existing 'agentgui 33rd run ux-craft sweep' rs-learn entry; this is a pointer confirming AGENTS.md was compressed to a one-liner on 2026-07-10 during the 34th run's doc-drain pass, full substance unchanged in rs-learn - kit pushed 4105bd1, agentgui pushed 3bac0fe, standing lesson about barrel re-export for new kit components).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e943b58115a02b4c-593
3
- ns: default
4
- created: 1780598017287
5
- updated: 1780598017287
6
- ---
7
-
8
- agentgui SECURITY (2026-06-04, lib/http-handler.js): /api/image is confined to an allowlist root (CLAUDE_PROJECTS_DIR, os.homedir(), IMAGE_ROOTS env) via normalized prefix match - previously an arbitrary-file-read because the includes('..') guard is a no-op after path.normalize resolves segments. CORS: Access-Control-Allow-Origin '*' is now ONLY emitted when PASSWORD is unset; when PASSWORD set, ACAO is omitted (same-origin only) unless CORS_ORIGIN reflects an explicit origin (with Vary:Origin). Witnessed live: C:/Windows/win.ini.png->403, C:/Users/user/...png->404 (passed confinement).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-e9bc5f9ed6edbcf7-1580
3
- ns: default
4
- created: 1784300703197
5
- updated: 1784300703197
6
- ---
7
-
8
- agentgui-45th-run-docstudio-full-detail: third docstudio design-cue pass, same directive repeated. Fresh Explore-agent survey (told what 43rd/44th runs already shipped) found 5 new gaps, all implemented in the design kit: ChatComposer/AgentChat streamingSince prop -> role=status tabular-nums elapsed counter next to stop control while streaming (docstudio chat-input.js:71-96), self-ticking via interval keyed off passed timestamp; Enter-to-send gated behind module-cached matchMedia('(pointer:coarse)') check (chat-input.js:116-125) - coarse-pointer devices get a newline+"Tap Send to send" hint instead; CountdownDialog({title,message,seconds,onExpire,actions}) primitive in files-modals.js (docstudio google-reconnect.js:41-75's live sign-out countdown), composing over the existing Modal()/Backdrop() shell rather than editor-primitives.js's standalone Dialog; PermissionMenu({categories,approved,onToggle,onToggleAll}) in overlay-primitives.js (docstudio tool-approval-panel.js's roving-tabindex menuitemcheckbox list); ChatComposer detectAttachment(text)=>{type,label,id}|null prop rendering a dismissible .chat-composer-detected-badge (chat-input.js:49-62's pasted-URL sniff). Implementation delegated to a background worktree agent; bun test.js 38/38 pass, 0 lint errors across 7 lints. Concurrent upstream v0.0.344/v0.0.345 (RTL support) landed mid-pass, rebased cleanly, dist rebuilt fresh. Kit pushed 5c0571e->1d46202. agentgui re-vendored, browser-witnessed (bodyLen:19739, hasAgentgui:true, 0 pageErrors), grep-confirmed all 5 feature strings present before pushing.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-eae1e383927854fb-2649
3
- ns: default
4
- created: 1783884912840
5
- updated: 1783884912840
6
- ---
7
-
8
- {"key":"agentgui-40th-run-gui-logic-predictability-sweep","value":"agentgui 40th run (2026-07-12): gui-logic-predictability workflow wf_c0a8d954-547 (20 agents, 196 tool calls, 0 errors) - 11 confirmed findings, all implemented. App (site/app/js/app.js, backend.js): global Escape ladder gained confirmingClearData disarm (settings clear-local-data confirm was the one armed state missing from the ladder); History detail header title/lede now use pathBasename(cwd) fallback instead of raw path, matching every other headline surface; wsCall gained a 15s timeout+cleanup (previously a hung WS RPC left promises pending forever with zero indicator); agy (Antigravity) resumeSid now forwards true once past first turn so its already-implemented --continue path actually fires (was hardcoded to only forward for claude-code), and the 'does not resume' banner now excludes agy since it has real continuity; pastedFilesToChat now calls the newly-exported kit flashComposerNote for visible upload-progress/failure/success feedback plus an undo-history-loss note. Kit (design/src/components/{chat,content}.js, app-shell.css, chat.css, components.js barrel): Row's primary .title span gained a title= tooltip fallback (39th run only fixed .sub); .ds-file-actions resting opacity raised 0->0.35 for desktop-pointer discoverability without hover; chat-composer-hint now visible at rest (was focus/draft-gated) and no longer aria-hidden; insertEmoji gained a one-time sessionStorage-gated undo-loss note matching draft-restore's existing pattern; flashComposerNote exported through the components.js barrel. Kit built+tested clean, rebuilt, re-vendored. Kit pushed 541df4d (npm-publish auto-bump landed as 92422d8), agentgui pushed 53610a4 then 4a5d6e5 (PRD-resolve residual), all 4 CI checks green both repos. Browser-witnessed every finding live on buildesk using a NEW reliable pattern: combine setHTTPCredentials+goto+wait+evaluate into ONE dispatch (splitting across dispatches hits session-id rotation and reads a genuinely-blank document.body despite window.__agentgui resolving), and read results via console.log('WITNESS:'+JSON.stringify(...)) + grep stdout/debug.console rather than the capture prefix's result field (confirmed still returns undefined even though the evaluated code's side effects and console output are real). All witnesses: confirmingClearData Escape before:true/after:false; composer-hint display:block no aria-hidden; .ds-file-actions opacity 0.35; 16/16 Row .title elements carry title= in settings agents panel; deployed backend.js/app.js/247420.js curl-confirmed to contain every shipped fix string; 0 pageErrors throughout."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-ebbe6c0694c526f0-1392
3
- ns: default
4
- created: 1783002710480
5
- updated: 1783002710480
6
- ---
7
-
8
- agentgui 25th run (2026-07-02): mid-thread retry, highest-severity finding deferred from run 24 (gui-completion #7). Kit AgentChat retry action now offered on every settled assistant turn (was i===lastIdx-gated only), onRetryMessage(m) passes the specific message. App retryTurn(m) truncates+resends from m's preceding user turn, falls back to trailing assistant turn when called with no arg. Retrying anything before the trailing turn discards later turns too - now arms the same confirm banner edit-and-resend already used (generalized with kind:'retry' tag) instead of firing immediately; retrying the actual last turn (no data loss) still executes immediately. Caught a real bug while generalizing: old retryLastTurn() never cleared resumeSid/resumeNote on truncation unlike confirmEditAndResend() - both paths now share executeTruncateAndResend(). Kit pushed 834c81d, agentgui pushed 18cd971. Browser-witnessed end-to-end. Also noted: design repo's Deploy GH Pages CI step flaked twice (Timeout/Deployment cancelled) before succeeding on 3rd gh run rerun - infra flake in docs-site deploy env, not code; npm publish (actual consumer artifact) was green from the first attempt. GM-METHOD LESSON: toolchain-skew CI flakes converge via retry (gh run rerun), never block/stop the chain - distinguish deploy-infra flake from actual test/build failure before treating red as a real regression.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-ebf85becc23410b0-1633
3
- ns: default
4
- created: 1781191186453
5
- updated: 1781191186453
6
- ---
7
-
8
- agentgui GUI cohesion sweep (2026-06-10, 7th run, 61 agents -> 40 gaps, PUNCHLIST-COHESION.md, workflow .claude/workflows/gui-cohesion.js). Chat-as-chat-agent: kit chat.js injectCodeCopy() wraps rendered-markdown <pre> in .chat-code-block with reveal-on-hover .chat-code-copy (idempotent data-copy-wired, copy->copied label flip); CodeNode head + FilePreviewCode share the control; mid-stream prose with a code fence renders as a monospaced pre shell (agent-chat.js preShell) to avoid settle reflow; ChatComposer context line (agent/model/cwd); AgentChat per-agent avatar + followups chips. Files-as-fsbrowse: FILE_GRID_CAP=200 + show-more row; role=group NOT listbox (rows host real buttons); FileRow permissions/locked ASCII tag + disabled open on EACCES; RootsPicker segmented control; files-modals.js FilePreviewPane (non-modal split view, modal FileViewer kept <900px) with ASCII prev/next stepper. Sessions: SessionCard stale status (non-pulsing dot), selectable checkbox, active accent; SessionDashboard sort Select + filter + errors-only + stop-selected + streamState line; app liveMain derives stale (>45s no activity, no running tool), error-then-stale floats first, per-sid tally off SSE. Shell: WorkspaceShell stableFrame keeps pane track at width 0; ONE canonical .status-dot-disc (-live pulses, -error/-connecting/-stale static); rail tones match row tones; rail footer ThemeToggle; 44px coarse targets. Server: /api/list per-entry permissions via fs.accessSync; confined /api/download (realpath, 50MB, attachment). The app.js C destructure MUST list every kit component it calls (witness caught 'Icon is not defined').
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-ee0596fa17c7102e-362
3
- ns: default
4
- created: 1780558076417
5
- updated: 1780558076417
6
- ---
7
-
8
- ## Resolved mutable: mut-1780557123208
9
-
10
- Policy: keep typographic product chars (middot separator, ellipsis, em/en-dash in prose) as established design; convert decorative tells. Converted arrow glyph (app.js href<->) + box-drawing dividers (//--- x ---). Witnessed: kit build lint-glyphs OK; live DOM forbiddenGlyphs=[] (browser-2). AGENTS.md itself uses middot.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-ee4450fbc311b583-1361
3
- ns: default
4
- created: 1783454063772
5
- updated: 1783454063772
6
- ---
7
-
8
- {"key":"agentgui-fifth-run-polish-detail","value":"agentgui fifth-run GUI predictability+polish sweep (2026-06-05, wf_980345e1-201, 65 agents -> 44 gaps, PUNCHLIST-POLISH.md; workflow .claude/workflows/gui-predictability-polish.js). Landed: FileGrid sort/filter/skeleton/keyboard; SessionCard words+disc status + last-activity/current-tool + onStopAll; ChatMessage streaming caret + .chat-msg-actions; AgentChat jump-to-latest; ContextPane last-turn usage; <900px drawer fix (.ws-scrim + toggleWsDrawer); confineToRoots() fs.realpathSync re-confinement on /api/list,file,image in lib/http-handler.js (symlink inside an allowed root pointing outside passed the lexical prefix check, resolved target now fails closed). Witness: localhost:3000/gm/ 0 console/page errors; shell+5 rail items; session groups [Today,Earlier]; files sort/filter/keyboard; grid role=listbox; pane reflow chat=4cols files/live/settings=2cols(ws-no-pane) history=3cols no h-scroll; 420px drawer+scrim; whole-DOM glyph sweep 0 (kept middot/ellipsis/dash); kit lint-tokens+lint-glyphs pass. Scoped out deliberately: inline split-pane file preview (modal retained), persistent mid-conversation suggestions. Kit update flow: edit kit -> node scripts/build.mjs -> copy dist/247420.{js,css} into site/app/vendor/anentrypoint-design/ -> witness -> push kit. Superseded/extended by the 7th run."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-ee8858162518f144-1252
3
- ns: default
4
- created: 1781197653677
5
- updated: 1781197653677
6
- ---
7
-
8
- agentgui 12th run (2026-06-11): UX-craft sweep, all 58 findings landed (18 empirical witness + 40 from gui-ux-craft.js workflow). THREE load-bearing bug classes found via the live-page-as-debugger: (1) webjsx applyDiff crash class EXTENDED - swapping an UNKEYED state body (empty-state div) for KEYED children crashes mid-diff leaving contradictory half-applied DOM (live tab said '1 running' over 'No live sessions'); the rule is ONE stable keyed body wrapper across empty/grouped/flat states, and kit Btn must pass `key` through (it silently dropped it). (2) CSS-order class: base `display:none` rules placed AFTER their media-query reveals win at equal specificity regardless of media - the mobile drawer toggles + scrim were DEAD in production; base-hidden rules must precede media blocks. (3) prop-name contracts: app passed {label}, kit read .text - the composer cwd bit rendered as an invisible empty button; kit now normalizes text||label and filters empty bits before separators. WorkspaceShell now stage-yields: pane->drawer <=1480, sessions->drawer <=1100, rail->60px icon strip <900 (labels hidden unconditionally). New build lints: lint-null-children.mjs (caught 14 latent crash sites in freddie.js) + lint-classes.mjs; build runs 4 gates.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-f3297e82df622649-1166
3
- ns: default
4
- created: 1780046143869
5
- updated: 1780046143869
6
- ---
7
-
8
- agentgui GUI ARCHITECTURE (2026-05-29): the chat GUI lives in the anentrypoint-design design kit, NOT in agentgui. The reusable surface is the AgentChat component (c:/dev/anentrypoint-design/src/components/agent-chat.js, exported from src/components.js, styles in chat.css .agentchat-*) — a pure props-in/vnode-out component with ALL server interaction as host callbacks (no fetch/WS/ccsniff in it). agentgui consumes it from https://unpkg.com/anentrypoint-design@latest at runtime (import map + css link in site/app/index.html) — always-latest, network-required, the prior offline guarantee was intentionally dropped. agentgui keeps only transport glue: site/app/js/backend.js (WS /sync client), ccsniff history wiring, and app.js chatMain which renders AgentChat({state, callbacks}). To change chat UI: edit the kit, commit+push to AnEntrypoint/design main -> publish.yml CI rebuilds dist + bumps version + npm publish -> unpkg @latest serves it (no manual npm auth needed). The DS repo auto-commit hook may sweep untracked WIP into your commit; stage only your files but expect the hook to add others. dist/ is gitignored (CI rebuilds it, do not commit dist).
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-f3f317c083d979ee-1210
3
- ns: default
4
- created: 1781859417237
5
- updated: 1781859417237
6
- ---
7
-
8
- agentgui 16th run (2026-06-18): design-maturity sweep + dead-code + secret-hardening. Workflow gui-design-16 (wf_6479308b-24f, 12 lenses, 54 agents -> 40 confirmed). Kit fixes: chat.js ToolCallNode gates args on hasArgs, composer textarea disabled prop, EventList forwards detail/actions/highlight/meta, TextField error state, ShortcutList splits combos into discrete .ds-kbd-caps, sessions ConversationList rail migrated to shared SearchInput, shell WsResizer aria-valuetext, voice/community glyph removal. chat.css cwd .is-checking, breakdown disc shape-ring, .ds-dash-clear hover/focus-visible. app-shell.css reduced-motion guards, .ds-file-perm-tag chip, .ws-drawer-toggle coarse floor, density/filter-pill AA contrast, ShortcutList legend. editor-primitives.css focus->focus-visible ring. app-surfaces.css print paper-tuned tokens. community.css focus-visible. marketing.css .site-footer family. Server hardening: SECRET_RE applied to upload/mkdir/rename/list; Content-Disposition RFC-5987 encoded. Dead-code: site/app/vendor/cdn/ 36 files, scripts/harvest-fixtures.mjs, CI copy-vendor lines, kit scripts/bundle-markdown.mjs. validate-mutations 26/26 PASS; 0 console errors; kit c71659b; agentgui 96260e5.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-f714a86465fba158-2041
3
- ns: default
4
- created: 1781961168458
5
- updated: 1781961168458
6
- ---
7
-
8
- agentgui 20th run iter10 (2026-06-20): MAJOR finding - the entire lib/plugins/ system is DEAD SCAFFOLDING. Confirmed all plugin contribution surfaces dead: (1) routes mounted at BASE_URL+path but http-handler.js:330 only forwards /api/upload//files//v1/history to the plugin expressApp, so all other plugin routes (/api/agents /api/workflows /api/sessions/* /api/folders) are 404 - witnessed; (2) plugin wsHandlers NEVER wired - server-startup2.js:70 loadPluginExtensions only reads state.routes, never state.wsHandlers/state.api; real WS handlers come from registerWsHandlers (ws-handlers-util.js) on wsRouter in server.js:156; (3) plugin api never consumed outside plugins; (4) database-plugin init is a no-op (calls dbModule.initializeSchema which is undefined - database.js exports initSchema and runs it at import time, line 87); (5) agents-plugin served a FAKE hardcoded agent list (gm-cc/gm-oc/gm-gc/gm-kilo) unrelated to the real registry; (6) workflow-plugin + websocket-plugin wsHandlers are empty no-op stubs ()=>{}; websocket-plugin imports WebSocketServer + gets db/stream/agents but uses NONE. The real app (server.js + ws-handlers-util + http-handler + database.js + process-message + claude-runner + acp-sdk-manager) is fully independent of the plugin system. Removed so far: acp-plugin (iter1), files-plugin (iter9), agents-plugin (iter10, pushed - also dropped 'agents' from websocket-plugin deps + unused db/stream/agents locals). REMAINING dead plugins: database, stream, workflow, websocket + plugin-loader.js + server-startup2 loadPluginExtensions wiring + the workflow-plugin test in test.js. Full teardown is a large boot-path change for a DELIBERATE iteration (verify boot+tests+WS+validate-mutations at each step; check package.json busboy/ws still needed by routes-upload/server.js - they ARE). Pattern across the whole run: this codebase has MULTIPLE parallel/redundant implementations (acp-plugin vs acp-sdk-manager, cli-wrapper vs registry, files-plugin vs routes-upload, whole plugin system vs server.js core).
@@ -1,10 +0,0 @@
1
- ---
2
- key: mem-f786bc1626d92845-204
3
- ns: default
4
- created: 1781783463123
5
- updated: 1781783463123
6
- ---
7
-
8
- ## Resolved mutable: server-3009-state
9
-
10
- ss/netstat | grep 3009 = no listener; ps aux | grep -E 'bun server|node server' = no process. Must start PORT=3009 bun server.js (run_in_background) before witness.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-f9f0dc8895b21e18-1217
3
- ns: default
4
- created: 1783699265581
5
- updated: 1783699265581
6
- ---
7
-
8
- {"key":"agentgui-25th-run-mid-thread-retry","value":"agentgui 25th run (2026-07-02): mid-thread retry. Landed the highest-severity finding deferred from the 24th run (gui-completion #7): retry was hard-gated to the LAST message only. Kit AgentChat now offers retry on every settled assistant turn, not just i===lastIdx; onRetryMessage(m) passes the specific message. App retryTurn(m) truncates+resends from ms preceding user turn. Retrying anything before the trailing turn discards every later turn too - arms the same confirm banner edit-and-resend already uses (kind:retry tag) instead of firing immediately; retrying the actual last turn (no data loss) still executes immediately. Caught and fixed a real bug while generalizing: the old retryLastTurn() never cleared state.chat.resumeSid/resumeNote on truncation, unlike confirmEditAndResend() which already did per the never --resume a diverged tail rule - both paths now share executeTruncateAndResend() so this cant drift apart again. Kit pushed 834c81d, agentgui pushed 18cd971. Browser-witnessed end-to-end, 0 console errors, 28/28 tests. This runs Deploy GH Pages CI step flaked twice before succeeding on a 3rd rerun - infra flake, not a code regression."}
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-fb3b2a7395800041-525
3
- ns: default
4
- created: 1779974536242
5
- updated: 1779974536242
6
- ---
7
-
8
- anentrypoint-design (the 247420 DS) build+vendor flow: edit src/components/*.js + *.css (app-shell.css, colors_and_type.css) at repo root c:/dev/anentrypoint-design, then `node scripts/build.mjs` regenerates dist/247420.{js,css}; copy those two files into agentgui's committed vendor dir site/app/vendor/anentrypoint-design/247420.{js,css} (NOT via copy-vendor.js which only handles xstate/webjsx). dist/ is tracked-but-gitignored so commit with `git add -f`. A repo auto-commit hook may commit DS source edits between turns.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-fc5753f92ee7d654-966
3
- ns: default
4
- created: 1780558613701
5
- updated: 1780558613701
6
- ---
7
-
8
- agentgui startup runtime detail: Node v24 has no prebuilt better-sqlite3 binary (module version 137); npm rebuild silently fails and the server crashes on require. FIX: postinstall compiles from source: `node scripts/patch-fsbrowse.js && node scripts/copy-vendor.js && (cd node_modules/better-sqlite3 && node-gyp rebuild 2>/dev/null) || true`. Paired: package.json start script `bun server.js || node server.js`; bin/gmgui.cjs detects bun via spawnSync('bun',['--version'],{shell:true}) and falls back to node; better-sqlite3 bumped ^12.6.2->^12.9.0. bun start already worked (bun:sqlite native); only the node path was broken. database.js tries bun:sqlite first then better-sqlite3. ALSO: CI capture-screenshots must run under bun not node (npm install --ignore-scripts leaves better-sqlite3 unbuilt; under node both bun:sqlite and better-sqlite3 fail in the 20s health window). Any CI step spawning the agentgui server (process.execPath inherited) must invoke bun.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-fe3faa1652f07239-480
3
- ns: default
4
- created: 1780592683616
5
- updated: 1780592683616
6
- ---
7
-
8
- agentgui DS (anentrypoint-design 247420.js) SearchInput component (internal De) sets aria-label = (label || placeholder) and IGNORES any aria-label prop you pass. To give the history search box a real accessible name, pass label: AND placeholder: (same string). A post-render setAttribute race-loses against the DS re-render. Signature: De({value,placeholder='search…',onInput,onSubmit,name='q',key,label}). This is the SearchInput export. Witnessed live on buildesk 2026-06-04.
@@ -1,8 +0,0 @@
1
- ---
2
- key: mem-ff8669e527e5c427-2788
3
- ns: default
4
- created: 1781786013354
5
- updated: 1781786013354
6
- ---
7
-
8
- agentgui 14th run (2026-06-18): design-maturity sweep + LAST residue (site/theme.mjs, the flatspace marketing renderer - NOT the SPA). theme.mjs had inline <style>+hex(#FBF6EB/#1F1B16), ~12 inline style=, deprecated C.Btn({primary}), 2x ↗ glyphs - ALL migrated to a NEW kit marketing.css .site-* family (.site-panel/.site-hero/.site-hero-h/.site-hero-body/.site-chip-row/.site-cta-row/.site-cli+.cli/.prompt/.cmd/.site-embed, pre-scoped .ds-247420, wired into build.mjs cssParts + lint-glyphs SCAN_ROOT_FILES). KEY: kit Panel/Heading only accepted `style` not `class` - added a `class` prop to both (content.js Panel, shell.js Heading) so consumers attach classes. Btn already had `variant` (primary->variant:'primary'). theme.mjs head now render-blocking-<link>s 247420.css (was JS-importmap-only, so inline <style> was its FOUC guard); kit already owns base surface at app-surfaces.css:27 '.ds-247420 body{background:var(--bg);color:var(--fg);font-family:var(--ff-display)}'. flatspace is NOT a dep on this env; theme.mjs is a pure render fn. Marketing tracks unpkg@latest, SPA ships pinned vendored dist (intentional). Workflow gui-design-14 (Workflow tool, NOT a .claude/workflows file this time - inline script): 46 agents, 39 findings, 28 confirmed (PUNCHLIST-DESIGN-14.md). Landed in kit: chat ThinkingNode base CSS (.chat-thinking* had zero base rules outside .agentchat-working), markdown table/th/td/hr (unstyled), dead .chat-tick rule, composer toolbar 32px/--r-1 (was 40px-round vs 36px-square), flat .chat-md rhythm, .chat-stream-pre chrome, tool/code :has() measure-breakout; files FileSkeleton container-bar->inner .ds-skel only, filter folded into one .ds-file-controls row, per-type cell tints, dead data-columns removed, .ds-file-check dead decls; sessions stale!=connecting disc tones+shapes, dead dup .ds-dash-status.is-running removed (running unified --accent), .seg.is-idle weight 600, reduced-motion live-disc static ring, mixed-tick 2px, cost as .ds-dash-stat-cost, conv-list unread hollow ring; shell resizers hidden past staging breakpoints (@media 1480/1100/900 - were dead handles), coarse 16px target, WS_RESIZE_CLAMP reconciled to CSS clamp, localStorage on pointerup not per-move, separator aria-valuemin/max/now; a11y voice vx-* reduced-motion guard, status discs non-colour SHAPE channels (live solid+pulse/error solid+halo/connecting hollow/stale muted), .ds-input-bare :focus->:focus-visible. Server PORT=3009 PASSWORD=123,slam,123,slam; run_in_background:true keeps it alive (setsid/nohup detached got exit 144 sandbox-killed). Witnessed via plugkit browser verb ?token=: 0 errors, body painted by kit (rgb 19,19,24 dark), 3 resizers, no h-scroll. Kit pushed 3704876 (rebased onto concurrent CI v0.0.211 bump); agentgui re-vendored dist + theme.mjs.
package/.gm/mutables.yml DELETED
@@ -1,45 +0,0 @@
1
- - id: design-kits-surface
2
- claim: anentrypoint-design exports the kits site/app needs (AppShell, Topbar, Crumb, Side, Chat, Panel, Row, ChatComposer, Status) and FREDDIE_PAGES stubs that consumers fill
3
- witness_method: Read src/components.js exports + src/components/freddie.js
4
- witness_evidence: c:/dev/anentrypoint-design/src/components.js:6-53 exports Brand,Chip,Btn,Glyph,Topbar,Crumb,Side,Status,AppShell,Heading,Lede,Dot,Rail,Panel,Row,RowLink,Hero,Install,Receipt,Changelog,WorksList,WritingList,Manifesto,Section,Kpi,Table,HomeView,ProjectView,Form,fmtBytes,renderInline,ChatMessage,ChatComposer,Chat,AICAT_FACE,AICatPortrait,AICat,fileGlyph,fmtFileSize,FileIcon,FileRow,FileGrid,FileToolbar,DropZone,UploadProgress,EmptyState,BreadcrumbPath,ConfirmDialog,PromptDialog,FilePreviewMedia,FilePreviewCode,FilePreviewText,FileViewer,ServerIcon,ServerRail,ChannelItem,ChannelCategory,VoiceUser,UserPanel,ChannelSidebar,MemberItem,MemberList,ChatHeader,VoiceStrip,CommunityShell,ThemeToggle,FREDDIE_PAGES,home,chat,voice,sessions,projects,agents,analytics,models,cron,skills,config,env,tools,batch,gateway,chains,skillLabel,getRecentPaths,saveRecentPath,renderChatMessages. freddie.js:11-31 stubs page renderers.
5
- status: witnessed
6
- - id: siteapp-uses-kits
7
- claim: site/app/js/app.js already imports anentrypoint-design kits and uses them for rendering
8
- witness_method: Read first import lines
9
- witness_evidence: c:/dev/agentgui/site/app/js/app.js:1 `import { h, mount, installStyles, components as C } from 'anentrypoint-design';` line 6 destructures AppShell,Topbar,Crumb,Side,Status,Chat,ChatComposer,Row,Panel from C. view() builds with kits — but historyMain() still uses raw h('div',{class:'ds-section'},...) for the section wrapper which Section kit may already cover.
10
- status: witnessed
11
- - id: legacy-static-extent
12
- claim: Legacy static surface includes static/, lib/ plugins, server.js — full extent must be enumerated before deletion
13
- witness_method: ls + Grep for server.js static-serving
14
- witness_evidence: 'c:/dev/agentgui/static/ contains: app.js, css/, index.html, js/, lib/, theme.js, vendor/. package.json line 9 main=''electron/main.js'', start=''bun server.js || node server.js''. Need server.js + lib/ enumeration before listing files to delete.'
15
- status: witnessed
16
- - id: ccsniff-vs-history-diff
17
- claim: c:\dev\ccsniff and c:\dev\acptoapi/lib/history have diverged; specific drift unknown
18
- witness_method: Read both src trees side-by-side
19
- witness_evidence: acptoapi/lib/history has bm25.js, index.js, watcher.js. ccsniff/src has bm25.js, cli.js, filters.js, gui-server.js, index.cjs, index.js, unsloth.js. ccsniff package.json v1.0.32. acptoapi version not yet read. Specific function-level diff pending.
20
- status: witnessed
21
- - id: acptoapi-status
22
- claim: acptoapi is not running on :4800 currently
23
- witness_method: curl /health
24
- witness_evidence: curl -m 3 http://localhost:4800/health returned empty after 3s timeout. Connection refused (no listener). User has committed to starting it manually before browser-witness phase.
25
- status: witnessed
26
- - id: dist-build-pipeline
27
- claim: anentrypoint-design dist/247420.{js,css} is what unpkg serves; whether edits to src/ auto-rebuild dist/ on commit, or require manual build, is unknown
28
- witness_method: Inspect flatspace.config.mjs + package.json scripts
29
- witness_evidence: unknown — need to read c:/dev/anentrypoint-design/package.json and flatspace.config.mjs
30
- status: witnessed
31
- - id: dist-build-pipeline
32
- claim: anentrypoint-design dist/247420.{js,css} is what unpkg serves; whether edits to src/ auto-rebuild dist/ on commit, or require manual build, is unknown
33
- witness_method: Inspect flatspace.config.mjs + package.json scripts
34
- witness_evidence: unknown — need to read c:/dev/anentrypoint-design/package.json and flatspace.config.mjs
35
- status: witnessed
36
- - key: glyph-policy
37
- status: witnessed
38
- note: Decide which non-ASCII chars in GUI source are decorative tells (convert) vs typographic/product (keep)
39
- id: mut-1780557123208
40
- witness_evidence: 'Policy: keep typographic product chars (middot separator, ellipsis, em/en-dash in prose) as established design; convert decorative tells. Converted arrow glyph (app.js href<->) + box-drawing dividers (//--- x ---). Witnessed: kit build lint-glyphs OK; live DOM forbiddenGlyphs=[] (browser-2). AGENTS.md itself uses middot.'
41
- - id: memorize-fire-embedding-broken
42
- claim: memorize-fire in this environment fails with 'embed_text failed... refusing silent-NULL-embedding insert' -- the wasm-slim build has no embedded fallback and the host_vec_embed probe fails
43
- witness_method: direct memorize-fire dispatch this session, .gm/exec-spool/.watcher.log entries
44
- witness_evidence: 'Earlier this session: memorize-fire dispatch returned {"error":"memorize: embed_text failed for key=mem-...; refusing silent-NULL-embedding insert"}. watcher.log: ''embed.slim-build-no-fallback...embedding is genuinely unavailable this session, not a bug'' and ''rssearch_vectors search_with_recency: invalid query embedding'' recurring on every recall dispatch.'
45
- status: witnessed