agentgui 1.0.272 → 1.0.273

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.272",
3
+ "version": "1.0.273",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "server.js",
package/server.js CHANGED
@@ -2903,8 +2903,11 @@ async function processMessageWithStreaming(conversationId, messageId, sessionId,
2903
2903
  }
2904
2904
 
2905
2905
  if (activeExecutions.has(conversationId)) {
2906
- debugLog(`[stream] Conversation ${conversationId} already has active execution, aborting duplicate`);
2907
- return;
2906
+ const existing = activeExecutions.get(conversationId);
2907
+ if (existing.sessionId !== sessionId) {
2908
+ debugLog(`[stream] Conversation ${conversationId} already has active execution (different session), aborting duplicate`);
2909
+ return;
2910
+ }
2908
2911
  }
2909
2912
 
2910
2913
  if (rateLimitState.has(conversationId)) {
@@ -3249,6 +3252,9 @@ function scheduleRetry(conversationId, messageId, content, agentId, model) {
3249
3252
  timestamp: Date.now()
3250
3253
  });
3251
3254
 
3255
+ const startTime = Date.now();
3256
+ activeExecutions.set(conversationId, { pid: null, startTime, sessionId: newSession.id, lastActivity: startTime });
3257
+
3252
3258
  debugLog(`[rate-limit] Calling processMessageWithStreaming for retry`);
3253
3259
  processMessageWithStreaming(conversationId, messageId, newSession.id, content, agentId, model)
3254
3260
  .catch(err => {
@@ -3285,6 +3291,9 @@ function drainMessageQueue(conversationId) {
3285
3291
  timestamp: Date.now()
3286
3292
  });
3287
3293
 
3294
+ const startTime = Date.now();
3295
+ activeExecutions.set(conversationId, { pid: null, startTime, sessionId: session.id, lastActivity: startTime });
3296
+
3288
3297
  processMessageWithStreaming(conversationId, next.messageId, session.id, next.content, next.agentId, next.model)
3289
3298
  .catch(err => debugLog(`[queue] Error processing queued message: ${err.message}`));
3290
3299
  }
package/static/index.html CHANGED
@@ -23,8 +23,8 @@
23
23
  *, *::before, *::after { box-sizing: border-box; }
24
24
 
25
25
  :root {
26
- --color-primary: #3b82f6;
27
- --color-primary-dark: #1e40af;
26
+ --color-primary: #6b7280;
27
+ --color-primary-dark: #4b5563;
28
28
  --color-bg-primary: #ffffff;
29
29
  --color-bg-secondary: #f9fafb;
30
30
  --color-bg-code: #1f2937;
@@ -34,18 +34,20 @@
34
34
  --color-success: #10b981;
35
35
  --color-error: #ef4444;
36
36
  --color-warning: #f59e0b;
37
- --color-info: #0891b2;
37
+ --color-info: #6b7280;
38
38
  --sidebar-width: 300px;
39
39
  --header-height: 52px;
40
40
  --msg-max-width: 100%;
41
41
  }
42
42
 
43
43
  html.dark {
44
- --color-bg-primary: #111827;
45
- --color-bg-secondary: #1f2937;
46
- --color-text-primary: #f9fafb;
47
- --color-text-secondary: #d1d5db;
48
- --color-border: #374151;
44
+ --color-primary: #9ca3af;
45
+ --color-primary-dark: #6b7280;
46
+ --color-bg-primary: #0f0f0f;
47
+ --color-bg-secondary: #1a1a1a;
48
+ --color-text-primary: #e5e5e5;
49
+ --color-text-secondary: #a3a3a3;
50
+ --color-border: #2a2a2a;
49
51
  }
50
52
 
51
53
  html, body {
@@ -740,8 +740,7 @@ class StreamingRenderer {
740
740
  const input = block.input || {};
741
741
 
742
742
  const details = document.createElement('details');
743
- details.className = 'block-tool-use folded-tool permanently-expanded';
744
- details.setAttribute('open', '');
743
+ details.className = 'block-tool-use folded-tool';
745
744
  if (block.id) details.dataset.toolUseId = block.id;
746
745
  details.classList.add(this._getBlockTypeClass('tool_use'));
747
746
  details.classList.add(this._getToolColorClass(toolName));
@@ -1297,8 +1296,7 @@ class StreamingRenderer {
1297
1296
  */
1298
1297
  renderBlockSystem(block, context) {
1299
1298
  const details = document.createElement('details');
1300
- details.className = 'folded-tool folded-tool-info permanently-expanded';
1301
- details.setAttribute('open', '');
1299
+ details.className = 'folded-tool folded-tool-info';
1302
1300
  details.dataset.eventType = 'system';
1303
1301
  details.classList.add(this._getBlockTypeClass('system'));
1304
1302
  const desc = block.model ? this.escapeHtml(block.model) : 'Session';
@@ -1335,8 +1333,7 @@ class StreamingRenderer {
1335
1333
  const statsDesc = [duration, cost, turns ? turns + ' turns' : ''].filter(Boolean).join(' / ');
1336
1334
 
1337
1335
  const details = document.createElement('details');
1338
- details.className = isError ? 'folded-tool folded-tool-error permanently-expanded' : 'folded-tool permanently-expanded';
1339
- details.setAttribute('open', '');
1336
+ details.className = isError ? 'folded-tool folded-tool-error' : 'folded-tool';
1340
1337
  details.dataset.eventType = 'result';
1341
1338
  details.classList.add(this._getBlockTypeClass(isError ? 'error' : 'result'));
1342
1339