agentgui 1.0.599 → 1.0.601

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 (2) hide show
  1. package/package.json +1 -1
  2. package/static/js/client.js +2 -120
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentgui",
3
- "version": "1.0.599",
3
+ "version": "1.0.601",
4
4
  "description": "Multi-agent ACP client with real-time communication",
5
5
  "type": "module",
6
6
  "main": "server.js",
@@ -1355,7 +1355,8 @@ class AgentGUIClient {
1355
1355
  this.state.currentConversation = null;
1356
1356
  await window.conversationManager.loadConversations();
1357
1357
  }
1358
- this.clearOutput();
1358
+ const outputEl = document.getElementById('output');
1359
+ if (outputEl) outputEl.innerHTML = '';
1359
1360
  }
1360
1361
 
1361
1362
  isHtmlContent(text) {
@@ -3300,122 +3301,3 @@ document.addEventListener('DOMContentLoaded', async () => {
3300
3301
  if (typeof module !== 'undefined' && module.exports) {
3301
3302
  module.exports = AgentGUIClient;
3302
3303
  }
3303
- // PHASE 2: Generate unique request ID
3304
- _generateRequestId() {
3305
- return ++this._currentRequestId;
3306
- }
3307
-
3308
- // PHASE 2: Make a load request with tracking
3309
- _makeLoadRequest(conversationId) {
3310
- const requestId = this._generateRequestId();
3311
- const abortController = new AbortController();
3312
-
3313
- // Cancel previous request for this conversation if exists
3314
- const prev = this._loadInProgress[conversationId];
3315
- if (prev?.abortController) {
3316
- prev.abortController.abort();
3317
- }
3318
-
3319
- this._loadInProgress[conversationId] = {
3320
- requestId,
3321
- abortController,
3322
- timestamp: Date.now(),
3323
- conversationId
3324
- };
3325
-
3326
- return { requestId, abortController };
3327
- }
3328
-
3329
- // PHASE 2: Verify request is current before rendering
3330
- _isCurrentRequest(conversationId, requestId) {
3331
- const current = this._loadInProgress[conversationId];
3332
- return current?.requestId === requestId;
3333
- }
3334
-
3335
- // PHASE 3: Queue WebSocket message based on priority
3336
- _queueWebSocketMessage(data) {
3337
- const highPriorityTypes = ['conversation_deleted', 'all_conversations_deleted'];
3338
-
3339
- if (highPriorityTypes.includes(data.type)) {
3340
- this._highPriorityQueue.push(data);
3341
- } else {
3342
- this._lowPriorityQueue.push(data);
3343
- }
3344
- }
3345
-
3346
- // PHASE 3: Process queued WebSocket messages
3347
- _drainMessageQueues() {
3348
- // Process high-priority first (deletions)
3349
- while (this._highPriorityQueue.length > 0) {
3350
- const msg = this._highPriorityQueue.shift();
3351
- this._processWebSocketMessageDirect(msg);
3352
- }
3353
-
3354
- // Then process low-priority (metadata)
3355
- while (this._lowPriorityQueue.length > 0) {
3356
- const msg = this._lowPriorityQueue.shift();
3357
- this._processWebSocketMessageDirect(msg);
3358
- }
3359
- }
3360
-
3361
- // PHASE 3: Direct WebSocket message processing (extracted from switch)
3362
- _processWebSocketMessageDirect(data) {
3363
- switch (data.type) {
3364
- case 'streaming_start':
3365
- this.handleStreamingStart(data).catch(e => console.error('handleStreamingStart error:', e));
3366
- break;
3367
- case 'streaming_progress':
3368
- this.handleStreamingProgress(data);
3369
- break;
3370
- case 'streaming_complete':
3371
- this.handleStreamingComplete(data);
3372
- break;
3373
- case 'streaming_error':
3374
- this.handleStreamingError(data);
3375
- break;
3376
- case 'conversation_created':
3377
- this.handleConversationCreated(data);
3378
- break;
3379
- case 'conversation_deleted':
3380
- this.handleConversationDeleted(data);
3381
- break;
3382
- case 'all_conversations_deleted':
3383
- this.handleAllConversationsDeleted(data);
3384
- break;
3385
- case 'message_created':
3386
- this.handleMessageCreated(data);
3387
- break;
3388
- case 'conversation_updated':
3389
- this.handleConversationUpdated(data);
3390
- break;
3391
- case 'message_updated':
3392
- this.handleMessageUpdated(data);
3393
- break;
3394
- default:
3395
- // Other types handled elsewhere
3396
- break;
3397
- }
3398
- }
3399
-
3400
- // PHASE 4: Track streaming event sequence
3401
- _recordStreamingSequence(sessionId, sequence) {
3402
- this._lastProcessedSequence[sessionId] = sequence;
3403
- }
3404
-
3405
- // PHASE 4: Verify streaming event is current and in-order
3406
- _isValidStreamingEvent(event) {
3407
- // Must be for current session
3408
- if (event.sessionId !== this.state.currentSession?.id) {
3409
- return false;
3410
- }
3411
-
3412
- // Check sequence number
3413
- const lastSeq = this._lastProcessedSequence[event.sessionId] || -1;
3414
- if (event.sequence !== undefined && event.sequence <= lastSeq) {
3415
- return false; // Duplicate or out-of-order
3416
- }
3417
-
3418
- return true;
3419
- }
3420
-
3421
-