agentgui 1.0.877 → 1.0.879

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/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [Unreleased] - surface stream chunk persistence errors
2
+
3
+ - lib/stream-event-handler.js: `queries.createChunk` failures were swallowed silently in the ACP streaming path. User would see live broadcast events but reload would lose all chunks. Now logs error with conv id, seq, block type for observability.
4
+
5
+ ## [Unreleased] - add Hermes Agent (Nous Research) as ACP-compatible agent
6
+
7
+ - lib/agent-discovery.js BINARIES: detect `hermes` CLI in PATH (icon 'h', protocol 'acp')
8
+ - lib/claude-runner-agents.js: register hermes with `hermes acp` entry and shared acpProtocolHandler. Uses stdio JSON-RPC transport (matches hermes-agent's `acp_adapter.entry` which routes stdout to ACP and stderr to logs).
9
+ - test.js: regression case asserting hermes registration shape (buildArgs/protocol/features).
10
+ - Install with: `curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash` then `pip install 'hermes-agent[acp]'` (or included in `[all]` / `[termux]` extras).
11
+
1
12
  ## [Unreleased] - GUI a11y pass
2
13
 
3
14
  - index.html: remove `maximum-scale=1.0` and `user-scalable=no` from viewport (WCAG 1.4.4 — low-vision users need pinch-zoom)
@@ -19,6 +19,7 @@ const BINARIES = [
19
19
  { cmd: 'mistral-vibe', id: 'mistral', name: 'Mistral Vibe', icon: 'M', protocol: 'acp' },
20
20
  { cmd: 'kiro', id: 'kiro', name: 'Kiro CLI', icon: 'k', protocol: 'acp' },
21
21
  { cmd: 'fast-agent', id: 'fast-agent', name: 'fast-agent', icon: 'F', protocol: 'acp' },
22
+ { cmd: 'hermes', id: 'hermes', name: 'Hermes Agent', icon: 'h', protocol: 'acp' },
22
23
  ];
23
24
 
24
25
  const CLI_WRAPPERS = [
@@ -102,3 +102,4 @@ registry.register({ id: 'mistral', name: 'Mistral Vibe', command: 'mistral-vibe'
102
102
  registry.register({ id: 'kiro', name: 'Kiro CLI', command: 'kiro', protocol: 'acp', supportsStdin: false, supportedFeatures: ['streaming', 'resume', 'acp-protocol'], buildArgs: () => ['acp'], protocolHandler: acpProtocolHandler });
103
103
  registry.register({ id: 'fast-agent', name: 'fast-agent', command: 'fast-agent', protocol: 'acp', supportsStdin: false, supportedFeatures: ['streaming', 'resume', 'acp-protocol'], buildArgs: () => ['acp'], protocolHandler: acpProtocolHandler });
104
104
  registry.register({ id: 'kilo', name: 'Kilo CLI', command: 'kilo', protocol: 'acp', supportsStdin: false, npxPackage: '@kilocode/cli', supportedFeatures: ['streaming', 'resume', 'acp-protocol', 'models'], buildArgs: () => ['acp'], protocolHandler: acpProtocolHandler });
105
+ registry.register({ id: 'hermes', name: 'Hermes Agent', command: 'hermes', protocol: 'acp', supportsStdin: false, supportedFeatures: ['streaming', 'resume', 'acp-protocol'], buildArgs: () => ['acp'], protocolHandler: acpProtocolHandler });
@@ -41,7 +41,8 @@ export function createEventHandler({ queries, activeExecutions, broadcastSync, r
41
41
  const emitBlock = (block, role, extra) => {
42
42
  if (!block || !block.type) return;
43
43
  batcherRef.currentSeq = (batcherRef.currentSeq || 0) + 1;
44
- try { queries.createChunk(sessionId, conversationId, batcherRef.currentSeq, block.type, block); } catch (_) {}
44
+ try { queries.createChunk(sessionId, conversationId, batcherRef.currentSeq, block.type, block); }
45
+ catch (err) { console.error(`[stream] createChunk failed conv=${conversationId} seq=${batcherRef.currentSeq} type=${block.type}:`, err.message); }
45
46
  broadcastSync({ type: 'streaming_progress', sessionId, conversationId, block, blockRole: role, seq: batcherRef.currentSeq, timestamp: Date.now(), ...extra });
46
47
  };
47
48
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.877",
3
+ "version": "1.0.879",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "electron/main.js",
package/test.js CHANGED
@@ -167,5 +167,16 @@ section('workflow-plugin: deps only list active plugins', async () => {
167
167
  assert.equal(typeof wp.default.init, 'function');
168
168
  });
169
169
 
170
+ section('agent-registry: hermes registered as stdio ACP', async () => {
171
+ const { registry } = await import('./lib/claude-runner-agents.js');
172
+ assert.ok(registry.has('hermes'));
173
+ const h = registry.get('hermes');
174
+ assert.equal(h.name, 'Hermes Agent');
175
+ assert.equal(h.command, 'hermes');
176
+ assert.equal(h.protocol, 'acp');
177
+ assert.deepEqual(h.buildArgs(), ['acp']);
178
+ assert.ok(h.supportedFeatures.includes('acp-protocol'));
179
+ });
180
+
170
181
  console.log(`\n${passed} passed, ${failed} failed`);
171
182
  process.exit(failed === 0 ? 0 : 1);