agentgui 1.0.1115 → 1.0.1116

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 (139) hide show
  1. package/.gm/browser-config.json +1 -0
  2. package/.gm/claim-audit-fired +1 -0
  3. package/.gm/disciplines/agentgui/mem-1779277005143-0-1352.json +1 -0
  4. package/.gm/disciplines/agentgui/memories/.flat-export-done +0 -0
  5. package/.gm/disciplines/agentgui/memories/mem-c07fa3b0836edbe2-1352.md +8 -0
  6. package/.gm/gm.db +0 -0
  7. package/.gm/memories/.flat-export-done +1 -0
  8. package/.gm/memories/mem-0131ff4869d86085-370.md +10 -0
  9. package/.gm/memories/mem-04049d11cb8c1661-2135.md +8 -0
  10. package/.gm/memories/mem-069ff10372ed1770-1375.md +8 -0
  11. package/.gm/memories/mem-08a4a9e050a4deff-3048.md +8 -0
  12. package/.gm/memories/mem-09597ee0df9c9224-965.md +8 -0
  13. package/.gm/memories/mem-0993d156f571b619-1059.md +8 -0
  14. package/.gm/memories/mem-0b681bf2340c8df1-3170.md +8 -0
  15. package/.gm/memories/mem-0c444abde86202f6-1681.md +8 -0
  16. package/.gm/memories/mem-0d1408fa048b9923-1159.md +8 -0
  17. package/.gm/memories/mem-0dad5d82fec829ba-887.md +8 -0
  18. package/.gm/memories/mem-10a776effb7ce3a6-935.md +8 -0
  19. package/.gm/memories/mem-10d264b4f8e66fb4-1492.md +8 -0
  20. package/.gm/memories/mem-118c35ac67541d98-2909.md +8 -0
  21. package/.gm/memories/mem-119cf70dd19aa0a5-2225.md +8 -0
  22. package/.gm/memories/mem-15a07cd761b337c4-4320.md +8 -0
  23. package/.gm/memories/mem-15c73aca528535cb-2183.md +8 -0
  24. package/.gm/memories/mem-166f52796185e0e7-1487.md +8 -0
  25. package/.gm/memories/mem-1a148cf9c3126df5-3963.md +8 -0
  26. package/.gm/memories/mem-1a459001058f618e-567.md +8 -0
  27. package/.gm/memories/mem-1af3e13f7618e668-2146.md +8 -0
  28. package/.gm/memories/mem-1fd31d6873e9c164-794.md +8 -0
  29. package/.gm/memories/mem-21f551be092fd77d-2340.md +8 -0
  30. package/.gm/memories/mem-231ff5de003f20f0-586.md +8 -0
  31. package/.gm/memories/mem-2567393d3adb03ab-347.md +8 -0
  32. package/.gm/memories/mem-27faf41cdd050c80-1261.md +8 -0
  33. package/.gm/memories/mem-28889e43e8ce64cc-3663.md +8 -0
  34. package/.gm/memories/mem-2f4fd06515abf439-2562.md +8 -0
  35. package/.gm/memories/mem-34a749430303c5f7-544.md +8 -0
  36. package/.gm/memories/mem-3602d11d7bce9446-1057.md +8 -0
  37. package/.gm/memories/mem-38b7e24dbcba2f3e-639.md +8 -0
  38. package/.gm/memories/mem-39a7cc2f887a90b1-1079.md +8 -0
  39. package/.gm/memories/mem-40d6169c8759061d-806.md +8 -0
  40. package/.gm/memories/mem-4420e6d00e5c8632-2318.md +8 -0
  41. package/.gm/memories/mem-447e5a54ddc9357a-654.md +8 -0
  42. package/.gm/memories/mem-455b3beb4afabe14-591.md +8 -0
  43. package/.gm/memories/mem-4845ee594759151c-560.md +8 -0
  44. package/.gm/memories/mem-4a1254c60b868b88-374.md +8 -0
  45. package/.gm/memories/mem-4bafafa47a0e4b6c-3237.md +8 -0
  46. package/.gm/memories/mem-4c06c45b4d31bc60-1202.md +8 -0
  47. package/.gm/memories/mem-4dfac801d0378448-3676.md +8 -0
  48. package/.gm/memories/mem-4ecd3b713e384170-122.md +10 -0
  49. package/.gm/memories/mem-51d8992a3c6f6c9c-1073.md +8 -0
  50. package/.gm/memories/mem-539eee7e8c6c10ee-2557.md +8 -0
  51. package/.gm/memories/mem-559b8b2abc4b1091-1665.md +8 -0
  52. package/.gm/memories/mem-59dd73a463e54948-871.md +8 -0
  53. package/.gm/memories/mem-5b99b882ffe1a3c2-2262.md +8 -0
  54. package/.gm/memories/mem-5feb252a5244149c-1791.md +8 -0
  55. package/.gm/memories/mem-6224f8d185797f2b-1047.md +8 -0
  56. package/.gm/memories/mem-6434ee8261a6a6a2-3126.md +8 -0
  57. package/.gm/memories/mem-66b0947b946f3437-1155.md +8 -0
  58. package/.gm/memories/mem-6bdf783a1f6be7c2-1062.md +8 -0
  59. package/.gm/memories/mem-6d49f08bebac54c9-744.md +8 -0
  60. package/.gm/memories/mem-70d96acb736af2d7-685.md +8 -0
  61. package/.gm/memories/mem-70de7d5e71fcd439-2680.md +8 -0
  62. package/.gm/memories/mem-713614f12d7029da-1577.md +8 -0
  63. package/.gm/memories/mem-720d76c88e64f6ee-1967.md +8 -0
  64. package/.gm/memories/mem-7535f34f430fc196-1340.md +8 -0
  65. package/.gm/memories/mem-861a588d2773681a-1311.md +8 -0
  66. package/.gm/memories/mem-8af7980a92e09959-891.md +8 -0
  67. package/.gm/memories/mem-8b438ef4c609b7af-401.md +8 -0
  68. package/.gm/memories/mem-8f59884039787ef3-743.md +8 -0
  69. package/.gm/memories/mem-92b199c2024ee1aa-2513.md +8 -0
  70. package/.gm/memories/mem-9329105b05b9c0f6-324.md +10 -0
  71. package/.gm/memories/mem-94f30cec3c283f97-782.md +10 -0
  72. package/.gm/memories/mem-956d4813319f65a3-1710.md +8 -0
  73. package/.gm/memories/mem-96fffbb6615e031b-1263.md +8 -0
  74. package/.gm/memories/mem-993ab31f7a10aefa-718.md +8 -0
  75. package/.gm/memories/mem-a3e440db285f655a-995.md +8 -0
  76. package/.gm/memories/mem-a52933cd6495e6f5-2624.md +8 -0
  77. package/.gm/memories/mem-a86426ac44138c96-1606.md +8 -0
  78. package/.gm/memories/mem-a95b1d49d71133ce-1007.md +8 -0
  79. package/.gm/memories/mem-a9968a186368b022-1150.md +8 -0
  80. package/.gm/memories/mem-aaeae38d8eb01809-1076.md +8 -0
  81. package/.gm/memories/mem-ade01d9c02677c55-1557.md +8 -0
  82. package/.gm/memories/mem-b06b8c85b81663e6-1250.md +8 -0
  83. package/.gm/memories/mem-b451e5e17e555202-1490.md +8 -0
  84. package/.gm/memories/mem-b64ad00dcb6f909e-937.md +8 -0
  85. package/.gm/memories/mem-b7d6018ceca55b6f-2220.md +8 -0
  86. package/.gm/memories/mem-bdf466854032cac9-1509.md +8 -0
  87. package/.gm/memories/mem-c0482039e6ab4c50-2047.md +8 -0
  88. package/.gm/memories/mem-c4aaec5c4e6f80c2-920.md +8 -0
  89. package/.gm/memories/mem-c66976ddacb4fbe8-1454.md +8 -0
  90. package/.gm/memories/mem-c7c5bc263850c332-1844.md +8 -0
  91. package/.gm/memories/mem-cda639547932c796-713.md +8 -0
  92. package/.gm/memories/mem-cdf04ff6a6a0aa6f-671.md +8 -0
  93. package/.gm/memories/mem-cf8472c84d9e04c4-1883.md +8 -0
  94. package/.gm/memories/mem-cfd4d894370c63c3-1288.md +8 -0
  95. package/.gm/memories/mem-d060480435f92eec-1146.md +8 -0
  96. package/.gm/memories/mem-d347c921b79e6d44-1099.md +8 -0
  97. package/.gm/memories/mem-d3c8ea6c861bfbb8-1457.md +8 -0
  98. package/.gm/memories/mem-d5e928c552cd87f9-214.md +10 -0
  99. package/.gm/memories/mem-d63bc3b8a0269844-406.md +10 -0
  100. package/.gm/memories/mem-d9c19257abc2fa5e-1061.md +8 -0
  101. package/.gm/memories/mem-d9f26358a7cd3bb8-866.md +8 -0
  102. package/.gm/memories/mem-da1c91acf63d81d3-863.md +8 -0
  103. package/.gm/memories/mem-dc1ac3b04d22317e-664.md +8 -0
  104. package/.gm/memories/mem-dceeae20bc56d407-711.md +8 -0
  105. package/.gm/memories/mem-dd98b21c0896dc04-1557.md +8 -0
  106. package/.gm/memories/mem-df74674eec7745ac-178.md +10 -0
  107. package/.gm/memories/mem-dfe3b466fd5d1199-802.md +8 -0
  108. package/.gm/memories/mem-e0f9286aed2d5a06-1116.md +8 -0
  109. package/.gm/memories/mem-e1950b064099b7be-1895.md +8 -0
  110. package/.gm/memories/mem-e1d5431ae2542872-961.md +8 -0
  111. package/.gm/memories/mem-e490a181de6469fc-487.md +8 -0
  112. package/.gm/memories/mem-e72c6efbb27326fb-392.md +8 -0
  113. package/.gm/memories/mem-e943b58115a02b4c-593.md +8 -0
  114. package/.gm/memories/mem-e9bc5f9ed6edbcf7-1580.md +8 -0
  115. package/.gm/memories/mem-eae1e383927854fb-2649.md +8 -0
  116. package/.gm/memories/mem-ebbe6c0694c526f0-1392.md +8 -0
  117. package/.gm/memories/mem-ebf85becc23410b0-1633.md +8 -0
  118. package/.gm/memories/mem-ee0596fa17c7102e-362.md +10 -0
  119. package/.gm/memories/mem-ee4450fbc311b583-1361.md +8 -0
  120. package/.gm/memories/mem-ee8858162518f144-1252.md +8 -0
  121. package/.gm/memories/mem-f3297e82df622649-1166.md +8 -0
  122. package/.gm/memories/mem-f3f317c083d979ee-1210.md +8 -0
  123. package/.gm/memories/mem-f714a86465fba158-2041.md +8 -0
  124. package/.gm/memories/mem-f786bc1626d92845-204.md +10 -0
  125. package/.gm/memories/mem-f9f0dc8895b21e18-1217.md +8 -0
  126. package/.gm/memories/mem-fb3b2a7395800041-525.md +8 -0
  127. package/.gm/memories/mem-fc5753f92ee7d654-966.md +8 -0
  128. package/.gm/memories/mem-fe3faa1652f07239-480.md +8 -0
  129. package/.gm/memories/mem-ff8669e527e5c427-2788.md +8 -0
  130. package/.gm/mutables.yml +53 -0
  131. package/.gm/prd.yml +3342 -0
  132. package/AGENTS.md +5 -1
  133. package/lib/ws-handlers-util.js +8 -64
  134. package/package.json +2 -4
  135. package/site/app/js/app.js +144 -146
  136. package/site/app/js/backend.js +7 -19
  137. package/site/app/vendor/anentrypoint-design/247420.css +2910 -805
  138. package/site/app/vendor/anentrypoint-design/247420.js +142 -69
  139. package/scripts/capture-screenshots.mjs +0 -206
package/AGENTS.md CHANGED
@@ -8,6 +8,10 @@ ACP lifecycle lives in `lib/acp-sdk-manager.js` alone; no other module spawns or
8
8
 
9
9
  Same-origin app auth must never use the `Authorization` header when an upstream proxy may own Basic auth — a `Bearer` header overwrites the browser's cached `Authorization: Basic` credentials, and nginx `auth_basic` only accepts `Basic`, so the request is rejected at the proxy before it ever reaches agentgui. Use the **`?token=` query param** (`withToken()`, exactly like the WS / EventSource / image / download URLs) instead — it coexists with upstream Basic auth, and agentgui accepts `?token=` on every HTTP route, plus the `agentgui_token` cookie.
10
10
 
11
+ ## CRITICAL — no Chrome/Puppeteer/Playwright dependency anywhere in this repo
12
+
13
+ Never add `puppeteer`/`puppeteer-core`/`playwright`/`playwright-core` as a dependency, and never hand-roll a raw headless-Chrome launch in a script. Live browser verification for this project is done via the gm skill's `browser` verb (direct CDP, no relay), not by this repo owning its own browser-automation dependency. `scripts/capture-screenshots.mjs` (puppeteer-core-driven, dead code — not wired into any CI workflow) was removed for this reason.
14
+
11
15
  ## Standing engineering rules
12
16
 
13
17
  - **All GUI/design decisions live in the kit (`../design`), none in agentgui.** New surface styling is a kit CSS rule, never an inline `<style>` or `style=` prop in agentgui. A new kit component must be re-exported through `src/components.js`'s barrel to be consumable — adding it to a component file alone leaves it invisible to the built bundle even with 0 lint errors; grep the built dist for the export name before wiring the app against it. New CSS class tokens in the kit must carry a registered family prefix (`ds-`, `app-`, `ws-`, `chat-`, etc. — see `scripts/lint-classes.mjs`'s `PREFIXES`/`FROZEN` lists) or the build's lint-classes check fails; a legacy bare name like `chip` being grandfathered on the FROZEN list does not cover new sub-tokens off it (e.g. a new `chip-remove` class still needs a `ds-` prefix).
@@ -79,7 +83,7 @@ Two runner protocols exist. **Direct** (`lib/claude-runner-direct.js`): claude-c
79
83
 
80
84
  ## CI / GitHub Actions
81
85
 
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`.
86
+ Any CI step that spawns the agentgui server must invoke it with `bun`, not `node` (`--ignore-scripts` npm installs leave `better-sqlite3` uncompiled, so `bun:sqlite`'s fallback also fails under Node).
83
87
 
84
88
  ## GM Plugin Autonomy Blocker
85
89
 
@@ -87,6 +87,9 @@ export function register(router, deps) {
87
87
  features: a.supportedFeatures || [],
88
88
  available: registry.isAvailable(a.id),
89
89
  npxInstallable: !!a.npxPackage,
90
+ // The CLI binary name a manual (non-npx) install would need - lets the
91
+ // settings panel say what to install instead of just "not installed".
92
+ cmd: a.command || null,
90
93
  }));
91
94
  return { agents };
92
95
  });
@@ -355,7 +358,11 @@ export function register(router, deps) {
355
358
  if (p?.file) args.push('--', assertSafeRelPath(p.file, 'file'));
356
359
  try {
357
360
  const { stdout } = await execFileP('git', args, { cwd });
358
- return { diff: stdout, file: p?.file || null, staged: !!p?.staged };
361
+ // git prints "Binary files a/x and b/x differ" for binary paths instead
362
+ // of a unified diff - an empty `diff` string then reads to the client as
363
+ // "no diff to show" with no explanation. Detect it so the UI can say why.
364
+ const binary = /^Binary files .* differ$/m.test(stdout);
365
+ return { diff: stdout, binary, file: p?.file || null, staged: !!p?.staged };
359
366
  } catch (e) { err(500, (e.stderr || e.message || 'git diff failed').trim()); }
360
367
  });
361
368
 
@@ -456,67 +463,4 @@ export function register(router, deps) {
456
463
  }
457
464
  return { subAgents: SUB_AGENT_MAP[p.id] || [] };
458
465
  });
459
-
460
- // --- models.availability: composes agentgui's REAL model surface into the
461
- // ModelsConfig component's shape (design SDK's ModelsConfig.js). agentgui
462
- // has no freddie-style probed-availability matrix (no /v1/models round-trip
463
- // per mode) - what it actually has is: discovered agent CLIs (registry,
464
- // same data agents.list already exposes), each agent's model choices
465
- // (agents.models' getModelsForAgent), and per-provider API-key presence
466
- // (auth.configs' getProviderConfigs). This handler is a read-only
467
- // composition of those three real sources, not a new probe and not fake
468
- // data - "usable_in_any_mode" is derived from registry.isAvailable(agentId)
469
- // (the CLI binary was actually found on this server), and "key_present"
470
- // comes straight from getProviderConfigs' filesystem check.
471
- router.handle('models.availability', async () => {
472
- const agents = registry.list();
473
- const providerConfigs = typeof getProviderConfigs === 'function' ? getProviderConfigs() : {};
474
- const providers = [];
475
- for (const a of agents) {
476
- const available = registry.isAvailable(a.id);
477
- let models = [];
478
- if (a.id === 'claude-code') {
479
- models = [
480
- { id: 'sonnet', name: 'Claude Sonnet (latest)' },
481
- { id: 'opus', name: 'Claude Opus (latest)' },
482
- { id: 'haiku', name: 'Claude Haiku (latest)' },
483
- ];
484
- } else if (typeof getModelsForAgent === 'function') {
485
- try {
486
- const raw = await getModelsForAgent(a.id);
487
- const list = Array.isArray(raw) ? raw : (raw?.models || []);
488
- models = list.map((m) => ({ id: m.id, name: m.name || m.label || m.id }));
489
- } catch { models = []; }
490
- }
491
- // Map onto agentgui's one real signal per model: is the agent CLI itself
492
- // available on this server (registry.isAvailable). agentgui does not
493
- // probe individual (model, mode) cells the way freddie's matrix does,
494
- // so every model under an available agent reports the same single
495
- // 'cli' mode rather than fabricating per-mode probe results.
496
- providers.push({
497
- id: a.id,
498
- key_present: !!(providerConfigs[a.id] && providerConfigs[a.id].hasKey) || available,
499
- discovery_error: available ? null : ((a.name || a.id) + ' CLI not found on this server'),
500
- models: models.map((m) => ({
501
- id: m.id,
502
- name: m.name,
503
- discovered_via: a.protocol || 'cli',
504
- modes: { cli: { ok: !!available, skipped: !available, reason: available ? undefined : 'agent_not_installed' } },
505
- usable_in_any_mode: !!available,
506
- })),
507
- });
508
- }
509
- const totalModels = providers.reduce((n, p) => n + p.models.length, 0);
510
- const usableModels = providers.reduce((n, p) => n + p.models.filter((m) => m.usable_in_any_mode).length, 0);
511
- return {
512
- timestamp: new Date().toISOString(),
513
- providers,
514
- sampler: [],
515
- summary: {
516
- total_providers: providers.length,
517
- total_models: totalModels,
518
- usable_in_any_mode: usableModels,
519
- },
520
- };
521
- });
522
466
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.1115",
3
+ "version": "1.0.1116",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",
@@ -34,13 +34,11 @@
34
34
  "fsbrowse": "latest",
35
35
  "lru-cache": "^11.2.7",
36
36
  "opencode-ai": "^1.2.15",
37
- "puppeteer-core": "^24.37.5",
38
37
  "webjsx": "^0.0.73",
39
38
  "ws": "^8.14.2",
40
39
  "xstate": "^5.32.0"
41
40
  },
42
41
  "devDependencies": {
43
- "electron": "^35.0.0",
44
- "playwright": "^1.59.1"
42
+ "electron": "^35.0.0"
45
43
  }
46
44
  }