dmux 3.5.4 → 4.1.0

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 (137) hide show
  1. package/dist/DmuxApp.d.ts.map +1 -1
  2. package/dist/DmuxApp.js +69 -4
  3. package/dist/DmuxApp.js.map +1 -1
  4. package/dist/actions/implementations/closeAction.js +81 -31
  5. package/dist/actions/implementations/closeAction.js.map +1 -1
  6. package/dist/actions/merge/conflictResolution.d.ts.map +1 -1
  7. package/dist/actions/merge/conflictResolution.js +6 -4
  8. package/dist/actions/merge/conflictResolution.js.map +1 -1
  9. package/dist/actions/merge/multiMergeOrchestrator.js +6 -4
  10. package/dist/actions/merge/multiMergeOrchestrator.js.map +1 -1
  11. package/dist/components/dialogs/AgentChoiceDialog.d.ts +1 -1
  12. package/dist/components/dialogs/AgentChoiceDialog.d.ts.map +1 -1
  13. package/dist/components/dialogs/AgentChoiceDialog.js +3 -2
  14. package/dist/components/dialogs/AgentChoiceDialog.js.map +1 -1
  15. package/dist/components/dialogs/TmuxHooksPromptDialog.d.ts +13 -0
  16. package/dist/components/dialogs/TmuxHooksPromptDialog.d.ts.map +1 -0
  17. package/dist/components/dialogs/TmuxHooksPromptDialog.js +36 -0
  18. package/dist/components/dialogs/TmuxHooksPromptDialog.js.map +1 -0
  19. package/dist/components/panes/MergePane.js +1 -1
  20. package/dist/components/panes/MergePane.js.map +1 -1
  21. package/dist/components/panes/PaneCard.d.ts.map +1 -1
  22. package/dist/components/panes/PaneCard.js +18 -3
  23. package/dist/components/panes/PaneCard.js.map +1 -1
  24. package/dist/components/panes/PanesGrid.d.ts.map +1 -1
  25. package/dist/components/panes/PanesGrid.js +3 -3
  26. package/dist/components/panes/PanesGrid.js.map +1 -1
  27. package/dist/components/popups/agentChoicePopup.js +7 -1
  28. package/dist/components/popups/agentChoicePopup.js.map +1 -1
  29. package/dist/components/ui/FooterHelp.d.ts.map +1 -1
  30. package/dist/components/ui/FooterHelp.js +3 -3
  31. package/dist/components/ui/FooterHelp.js.map +1 -1
  32. package/dist/hooks/useAgentDetection.d.ts +1 -1
  33. package/dist/hooks/useAgentDetection.d.ts.map +1 -1
  34. package/dist/hooks/useAgentDetection.js +27 -0
  35. package/dist/hooks/useAgentDetection.js.map +1 -1
  36. package/dist/hooks/usePaneCreation.d.ts +2 -2
  37. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  38. package/dist/hooks/usePaneCreation.js.map +1 -1
  39. package/dist/hooks/usePaneLoading.d.ts +4 -0
  40. package/dist/hooks/usePaneLoading.d.ts.map +1 -1
  41. package/dist/hooks/usePaneLoading.js +33 -9
  42. package/dist/hooks/usePaneLoading.js.map +1 -1
  43. package/dist/hooks/usePaneSync.d.ts +4 -0
  44. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  45. package/dist/hooks/usePaneSync.js +13 -3
  46. package/dist/hooks/usePaneSync.js.map +1 -1
  47. package/dist/hooks/usePanes.d.ts +10 -1
  48. package/dist/hooks/usePanes.d.ts.map +1 -1
  49. package/dist/hooks/usePanes.js +65 -13
  50. package/dist/hooks/usePanes.js.map +1 -1
  51. package/dist/hooks/useServices.d.ts +2 -2
  52. package/dist/hooks/useServices.d.ts.map +1 -1
  53. package/dist/index.js +22 -19
  54. package/dist/index.js.map +1 -1
  55. package/dist/layout/SpacerManager.d.ts +3 -0
  56. package/dist/layout/SpacerManager.d.ts.map +1 -1
  57. package/dist/layout/SpacerManager.js +27 -3
  58. package/dist/layout/SpacerManager.js.map +1 -1
  59. package/dist/server/embedded-assets.d.ts.map +1 -1
  60. package/dist/server/embedded-assets.js +93 -25
  61. package/dist/server/embedded-assets.js.map +1 -1
  62. package/dist/server/routes/panesRoutes.d.ts.map +1 -1
  63. package/dist/server/routes/panesRoutes.js +32 -5
  64. package/dist/server/routes/panesRoutes.js.map +1 -1
  65. package/dist/services/LogService.d.ts +7 -2
  66. package/dist/services/LogService.d.ts.map +1 -1
  67. package/dist/services/LogService.js +96 -17
  68. package/dist/services/LogService.js.map +1 -1
  69. package/dist/services/PaneAnalyzer.d.ts +35 -1
  70. package/dist/services/PaneAnalyzer.d.ts.map +1 -1
  71. package/dist/services/PaneAnalyzer.js +167 -65
  72. package/dist/services/PaneAnalyzer.js.map +1 -1
  73. package/dist/services/PaneEventService.d.ts +101 -0
  74. package/dist/services/PaneEventService.d.ts.map +1 -0
  75. package/dist/services/PaneEventService.js +246 -0
  76. package/dist/services/PaneEventService.js.map +1 -0
  77. package/dist/services/PopupManager.d.ts +3 -3
  78. package/dist/services/PopupManager.d.ts.map +1 -1
  79. package/dist/services/PopupManager.js +8 -6
  80. package/dist/services/PopupManager.js.map +1 -1
  81. package/dist/services/TmuxHookManager.d.ts +76 -0
  82. package/dist/services/TmuxHookManager.d.ts.map +1 -0
  83. package/dist/services/TmuxHookManager.js +229 -0
  84. package/dist/services/TmuxHookManager.js.map +1 -0
  85. package/dist/services/TmuxService.d.ts +34 -1
  86. package/dist/services/TmuxService.d.ts.map +1 -1
  87. package/dist/services/TmuxService.js +69 -1
  88. package/dist/services/TmuxService.js.map +1 -1
  89. package/dist/types.d.ts +3 -2
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/utils/agentDetection.d.ts +5 -1
  92. package/dist/utils/agentDetection.d.ts.map +1 -1
  93. package/dist/utils/agentDetection.js +29 -0
  94. package/dist/utils/agentDetection.js.map +1 -1
  95. package/dist/utils/conflictResolutionPane.d.ts +1 -1
  96. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  97. package/dist/utils/conflictResolutionPane.js +12 -2
  98. package/dist/utils/conflictResolutionPane.js.map +1 -1
  99. package/dist/utils/execAsync.d.ts +78 -0
  100. package/dist/utils/execAsync.d.ts.map +1 -0
  101. package/dist/utils/execAsync.js +141 -0
  102. package/dist/utils/execAsync.js.map +1 -0
  103. package/dist/utils/generated-agents-doc.d.ts +1 -1
  104. package/dist/utils/generated-agents-doc.js +1 -1
  105. package/dist/utils/git.d.ts +27 -0
  106. package/dist/utils/git.d.ts.map +1 -1
  107. package/dist/utils/git.js +150 -0
  108. package/dist/utils/git.js.map +1 -1
  109. package/dist/utils/hooksDocs.d.ts +1 -1
  110. package/dist/utils/layoutManager.d.ts.map +1 -1
  111. package/dist/utils/layoutManager.js +51 -3
  112. package/dist/utils/layoutManager.js.map +1 -1
  113. package/dist/utils/paneCapture.d.ts +11 -0
  114. package/dist/utils/paneCapture.d.ts.map +1 -1
  115. package/dist/utils/paneCapture.js +69 -0
  116. package/dist/utils/paneCapture.js.map +1 -1
  117. package/dist/utils/paneCreation.d.ts +2 -2
  118. package/dist/utils/paneCreation.d.ts.map +1 -1
  119. package/dist/utils/paneCreation.js +18 -3
  120. package/dist/utils/paneCreation.js.map +1 -1
  121. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  122. package/dist/utils/reopenWorktree.js +28 -5
  123. package/dist/utils/reopenWorktree.js.map +1 -1
  124. package/dist/utils/settingsManager.d.ts.map +1 -1
  125. package/dist/utils/settingsManager.js +7 -0
  126. package/dist/utils/settingsManager.js.map +1 -1
  127. package/dist/utils/systemCheck.d.ts.map +1 -1
  128. package/dist/utils/systemCheck.js +7 -5
  129. package/dist/utils/systemCheck.js.map +1 -1
  130. package/dist/workers/PaneWorker.js.map +1 -1
  131. package/dist/workers/WorkerMessages.d.ts +1 -1
  132. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  133. package/dist/workers/panePollingWorker.d.ts +13 -0
  134. package/dist/workers/panePollingWorker.d.ts.map +1 -0
  135. package/dist/workers/panePollingWorker.js +129 -0
  136. package/dist/workers/panePollingWorker.js.map +1 -0
  137. package/package.json +1 -1
@@ -5,16 +5,98 @@
5
5
  * that can be viewed in a dedicated UI without messing up pane formatting.
6
6
  */
7
7
  import { EventEmitter } from 'events';
8
+ /**
9
+ * Efficient circular buffer for log entries
10
+ * Provides O(1) insertion and bounded memory usage
11
+ */
12
+ class CircularBuffer {
13
+ capacity;
14
+ buffer;
15
+ head = 0; // Next write position
16
+ size = 0; // Current number of items
17
+ constructor(capacity) {
18
+ this.capacity = capacity;
19
+ this.buffer = new Array(capacity);
20
+ }
21
+ push(item) {
22
+ this.buffer[this.head] = item;
23
+ this.head = (this.head + 1) % this.capacity;
24
+ if (this.size < this.capacity) {
25
+ this.size++;
26
+ }
27
+ }
28
+ /**
29
+ * Get all items in order (oldest to newest)
30
+ */
31
+ toArray() {
32
+ if (this.size === 0)
33
+ return [];
34
+ const result = [];
35
+ const start = this.size < this.capacity ? 0 : this.head;
36
+ for (let i = 0; i < this.size; i++) {
37
+ const idx = (start + i) % this.capacity;
38
+ const item = this.buffer[idx];
39
+ if (item !== undefined) {
40
+ result.push(item);
41
+ }
42
+ }
43
+ return result;
44
+ }
45
+ /**
46
+ * Filter items matching a predicate
47
+ */
48
+ filter(predicate) {
49
+ return this.toArray().filter(predicate);
50
+ }
51
+ /**
52
+ * Find and modify items in place
53
+ */
54
+ forEach(fn) {
55
+ for (let i = 0; i < this.capacity; i++) {
56
+ const item = this.buffer[i];
57
+ if (item !== undefined) {
58
+ fn(item);
59
+ }
60
+ }
61
+ }
62
+ getSize() {
63
+ return this.size;
64
+ }
65
+ clear() {
66
+ this.buffer = new Array(this.capacity);
67
+ this.head = 0;
68
+ this.size = 0;
69
+ }
70
+ /**
71
+ * Remove items matching predicate (creates new buffer - O(n))
72
+ * Used for clearForPane which is rare
73
+ */
74
+ removeMatching(predicate) {
75
+ const kept = this.filter(item => !predicate(item));
76
+ const removed = this.size - kept.length;
77
+ if (removed > 0) {
78
+ this.clear();
79
+ kept.forEach(item => this.push(item));
80
+ }
81
+ return removed;
82
+ }
83
+ }
8
84
  /**
9
85
  * LogService singleton - central logging hub for dmux
86
+ *
87
+ * Performance optimizations:
88
+ * - Uses circular buffer for O(1) log insertion
89
+ * - Bounded memory usage (1000 entries max)
90
+ * - No array shifting on overflow
10
91
  */
11
92
  export class LogService extends EventEmitter {
12
93
  static instance;
13
- logs = [];
94
+ logs;
14
95
  maxLogs = 1000; // Circular buffer size
15
96
  logCounter = 0;
16
97
  constructor() {
17
98
  super();
99
+ this.logs = new CircularBuffer(this.maxLogs);
18
100
  }
19
101
  static getInstance() {
20
102
  if (!LogService.instance) {
@@ -30,7 +112,7 @@ export class LogService extends EventEmitter {
30
112
  this.suppressConsole = suppress;
31
113
  }
32
114
  /**
33
- * Add a log entry
115
+ * Add a log entry (O(1) operation with circular buffer)
34
116
  */
35
117
  addLog(level, message, source, paneId, stack) {
36
118
  const entry = {
@@ -43,11 +125,8 @@ export class LogService extends EventEmitter {
43
125
  read: false,
44
126
  stack,
45
127
  };
128
+ // O(1) insertion - circular buffer handles overflow automatically
46
129
  this.logs.push(entry);
47
- // Maintain circular buffer - remove oldest logs when limit exceeded
48
- if (this.logs.length > this.maxLogs) {
49
- this.logs.shift();
50
- }
51
130
  // Emit event for listeners (StateManager will pick this up)
52
131
  this.emit('log-added', entry);
53
132
  // Also log to console for development (can be disabled in production)
@@ -99,7 +178,7 @@ export class LogService extends EventEmitter {
99
178
  * Get all logs with optional filtering
100
179
  */
101
180
  getLogs(filter) {
102
- let filtered = [...this.logs];
181
+ let filtered = this.logs.toArray();
103
182
  if (filter) {
104
183
  if (filter.level) {
105
184
  const levels = Array.isArray(filter.level) ? filter.level : [filter.level];
@@ -170,28 +249,28 @@ export class LogService extends EventEmitter {
170
249
  * Clear all logs
171
250
  */
172
251
  clearAll() {
173
- this.logs = [];
252
+ this.logs.clear();
174
253
  this.emit('logs-cleared');
175
254
  }
176
255
  /**
177
256
  * Clear logs for a specific pane
178
257
  */
179
258
  clearForPane(paneId) {
180
- const before = this.logs.length;
181
- this.logs = this.logs.filter(log => log.paneId !== paneId);
182
- const after = this.logs.length;
183
- if (before !== after) {
184
- this.emit('logs-cleared', { paneId, count: before - after });
259
+ const before = this.logs.getSize();
260
+ const removed = this.logs.removeMatching(log => log.paneId === paneId);
261
+ if (removed > 0) {
262
+ this.emit('logs-cleared', { paneId, count: removed });
185
263
  }
186
264
  }
187
265
  /**
188
266
  * Get summary stats
189
267
  */
190
268
  getStats() {
269
+ const allLogs = this.logs.toArray();
191
270
  return {
192
- total: this.logs.length,
193
- errors: this.logs.filter(l => l.level === 'error').length,
194
- warnings: this.logs.filter(l => l.level === 'warn').length,
271
+ total: allLogs.length,
272
+ errors: allLogs.filter(l => l.level === 'error').length,
273
+ warnings: allLogs.filter(l => l.level === 'warn').length,
195
274
  unreadErrors: this.getUnreadErrorCount(),
196
275
  unreadWarnings: this.getUnreadWarningCount(),
197
276
  };
@@ -200,7 +279,7 @@ export class LogService extends EventEmitter {
200
279
  * Reset the service (for testing)
201
280
  */
202
281
  reset() {
203
- this.logs = [];
282
+ this.logs.clear();
204
283
  this.logCounter = 0;
205
284
  this.removeAllListeners();
206
285
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LogService.js","sourceRoot":"","sources":["../../src/services/LogService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LogService.js","sourceRoot":"","sources":["../../src/services/LogService.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,37 @@ export interface PaneAnalysis {
16
16
  export declare class PaneAnalyzer {
17
17
  private apiKey;
18
18
  private modelStack;
19
+ private cache;
20
+ private readonly CACHE_TTL;
21
+ private readonly MAX_CACHE_SIZE;
22
+ private pendingRequests;
19
23
  constructor();
20
24
  /**
21
- * Makes a request to OpenRouter API with model fallback
25
+ * Hash content for cache key
26
+ */
27
+ private hashContent;
28
+ /**
29
+ * Get cached result if still valid
30
+ */
31
+ private getCached;
32
+ /**
33
+ * Store result in cache with LRU eviction
34
+ */
35
+ private setCache;
36
+ /**
37
+ * Clear all cache entries (useful for testing)
38
+ */
39
+ clearCache(): void;
40
+ /**
41
+ * Make a single API request to a specific model
42
+ */
43
+ private tryModel;
44
+ /**
45
+ * Makes a request to OpenRouter API with PARALLEL model fallback
46
+ * Uses Promise.any to race all models - first success wins
47
+ *
48
+ * Performance improvement: Previously could take 6+ seconds if models failed sequentially.
49
+ * Now returns as soon as ANY model responds successfully (typically <1s).
22
50
  */
23
51
  private makeRequestWithFallback;
24
52
  /**
@@ -39,8 +67,14 @@ export declare class PaneAnalyzer {
39
67
  * Stage 3: Extract summary when state is open_prompt (idle)
40
68
  */
41
69
  extractSummary(content: string, signal?: AbortSignal): Promise<string | undefined>;
70
+ /**
71
+ * Internal analysis implementation (no caching/deduplication)
72
+ */
73
+ private doAnalyzePane;
42
74
  /**
43
75
  * Main analysis function that captures and analyzes a pane
76
+ * Includes caching and request deduplication for performance.
77
+ *
44
78
  * @param tmuxPaneId - The tmux pane ID (e.g., "%38")
45
79
  * @param signal - Optional abort signal
46
80
  * @param dmuxPaneId - Optional dmux pane ID for friendly logging (e.g., "dmux-123")
@@ -1 +1 @@
1
- {"version":3,"file":"PaneAnalyzer.d.ts","sourceRoot":"","sources":["../../src/services/PaneAnalyzer.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;AAGxE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAIhB;;IAOF;;OAEG;YACW,uBAAuB;IAsDrC;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA0ElG;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IA4FpH;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2CxF;;;;;OAKG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAoExG"}
1
+ {"version":3,"file":"PaneAnalyzer.d.ts","sourceRoot":"","sources":["../../src/services/PaneAnalyzer.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;AAGxE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAIhB;IAGF,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IAGtC,OAAO,CAAC,eAAe,CAA4C;;IAMnE;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;YACW,QAAQ;IAoCtB;;;;;;OAMG;YACW,uBAAuB;IA6CrC;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA0ElG;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IA4FpH;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2CxF;;OAEG;YACW,aAAa;IAyC3B;;;;;;;OAOG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAgExG"}
@@ -1,3 +1,4 @@
1
+ import { createHash } from 'crypto';
1
2
  import { capturePaneContent } from '../utils/paneCapture.js';
2
3
  import { LogService } from './LogService.js';
3
4
  export class PaneAnalyzer {
@@ -7,55 +8,121 @@ export class PaneAnalyzer {
7
8
  'x-ai/grok-4-fast:free',
8
9
  'openai/gpt-4o-mini'
9
10
  ];
11
+ // Content-hash based cache to avoid repeated API calls for identical content
12
+ cache = new Map();
13
+ CACHE_TTL = 5000; // 5 seconds TTL
14
+ MAX_CACHE_SIZE = 100; // Prevent unbounded growth
15
+ // Request deduplication - prevent multiple concurrent requests for same pane
16
+ pendingRequests = new Map();
10
17
  constructor() {
11
18
  this.apiKey = process.env.OPENROUTER_API_KEY || '';
12
19
  }
13
20
  /**
14
- * Makes a request to OpenRouter API with model fallback
21
+ * Hash content for cache key
22
+ */
23
+ hashContent(content) {
24
+ return createHash('md5').update(content).digest('hex');
25
+ }
26
+ /**
27
+ * Get cached result if still valid
28
+ */
29
+ getCached(hash) {
30
+ const entry = this.cache.get(hash);
31
+ if (entry && Date.now() - entry.timestamp < this.CACHE_TTL) {
32
+ return entry.result;
33
+ }
34
+ // Clean up expired entry
35
+ if (entry) {
36
+ this.cache.delete(hash);
37
+ }
38
+ return null;
39
+ }
40
+ /**
41
+ * Store result in cache with LRU eviction
42
+ */
43
+ setCache(hash, result) {
44
+ // Evict oldest entries if cache is full
45
+ if (this.cache.size >= this.MAX_CACHE_SIZE) {
46
+ const oldest = this.cache.keys().next().value;
47
+ if (oldest)
48
+ this.cache.delete(oldest);
49
+ }
50
+ this.cache.set(hash, { result, timestamp: Date.now() });
51
+ }
52
+ /**
53
+ * Clear all cache entries (useful for testing)
54
+ */
55
+ clearCache() {
56
+ this.cache.clear();
57
+ }
58
+ /**
59
+ * Make a single API request to a specific model
60
+ */
61
+ async tryModel(model, systemPrompt, userPrompt, maxTokens, signal) {
62
+ const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
63
+ method: 'POST',
64
+ headers: {
65
+ 'Authorization': `Bearer ${this.apiKey}`,
66
+ 'Content-Type': 'application/json',
67
+ 'HTTP-Referer': 'https://github.com/dmux/dmux',
68
+ 'X-Title': 'dmux',
69
+ },
70
+ body: JSON.stringify({
71
+ model,
72
+ messages: [
73
+ { role: 'system', content: systemPrompt },
74
+ { role: 'user', content: userPrompt }
75
+ ],
76
+ temperature: 0.1,
77
+ max_tokens: maxTokens,
78
+ response_format: { type: 'json_object' },
79
+ }),
80
+ signal
81
+ });
82
+ if (!response.ok) {
83
+ const errorText = await response.text();
84
+ throw new Error(`API error (${model}): ${response.status} ${errorText}`);
85
+ }
86
+ return response.json();
87
+ }
88
+ /**
89
+ * Makes a request to OpenRouter API with PARALLEL model fallback
90
+ * Uses Promise.any to race all models - first success wins
91
+ *
92
+ * Performance improvement: Previously could take 6+ seconds if models failed sequentially.
93
+ * Now returns as soon as ANY model responds successfully (typically <1s).
15
94
  */
16
95
  async makeRequestWithFallback(systemPrompt, userPrompt, maxTokens, signal) {
17
96
  if (!this.apiKey) {
18
97
  throw new Error('API key not available');
19
98
  }
20
- let lastError = null;
21
- // Try each model in the stack
22
- for (const model of this.modelStack) {
23
- try {
24
- const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
25
- method: 'POST',
26
- headers: {
27
- 'Authorization': `Bearer ${this.apiKey}`,
28
- 'Content-Type': 'application/json',
29
- 'HTTP-Referer': 'https://github.com/dmux/dmux',
30
- 'X-Title': 'dmux',
31
- },
32
- body: JSON.stringify({
33
- model,
34
- messages: [
35
- { role: 'system', content: systemPrompt },
36
- { role: 'user', content: userPrompt }
37
- ],
38
- temperature: 0.1,
39
- max_tokens: maxTokens,
40
- response_format: { type: 'json_object' },
41
- }),
42
- signal
43
- });
44
- if (!response.ok) {
45
- const errorText = await response.text();
46
- throw new Error(`API error (${model}): ${response.status} ${errorText}`);
47
- }
48
- const data = await response.json();
99
+ const logService = LogService.getInstance();
100
+ // Create an AbortController with timeout
101
+ const controller = new AbortController();
102
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10s total timeout
103
+ // Combine external signal with our timeout
104
+ const combinedSignal = signal
105
+ ? AbortSignal.any([signal, controller.signal])
106
+ : controller.signal;
107
+ try {
108
+ // Race all models in parallel - first success wins
109
+ const result = await Promise.any(this.modelStack.map(model => this.tryModel(model, systemPrompt, userPrompt, maxTokens, combinedSignal)
110
+ .then(data => {
111
+ logService.debug(`PaneAnalyzer: Model ${model} succeeded`, 'paneAnalyzer');
49
112
  return data;
113
+ })));
114
+ return result;
115
+ }
116
+ catch (error) {
117
+ if (error instanceof AggregateError) {
118
+ // All models failed - throw the first error for context
119
+ throw error.errors[0] || new Error('All models in fallback stack failed');
50
120
  }
51
- catch (error) {
52
- lastError = error;
53
- // Continue to next model in stack
54
- continue;
55
- }
121
+ throw error;
122
+ }
123
+ finally {
124
+ clearTimeout(timeoutId);
56
125
  }
57
- // All models failed
58
- throw lastError || new Error('All models in fallback stack failed');
59
126
  }
60
127
  /**
61
128
  * Stage 1: Determines the state of the pane
@@ -244,8 +311,44 @@ If there's no meaningful content or the output is unclear, return an empty summa
244
311
  return undefined;
245
312
  }
246
313
  }
314
+ /**
315
+ * Internal analysis implementation (no caching/deduplication)
316
+ */
317
+ async doAnalyzePane(tmuxPaneId, content, paneName, dmuxPaneId, signal) {
318
+ const logService = LogService.getInstance();
319
+ try {
320
+ // Stage 1: Determine the state
321
+ const state = await this.determineState(content, signal, paneName);
322
+ // If it's an option dialog, extract option details
323
+ if (state === 'option_dialog') {
324
+ logService.debug(`PaneAnalyzer: Detected option_dialog for "${paneName}", extracting options...`, 'paneAnalyzer', dmuxPaneId);
325
+ const optionDetails = await this.extractOptions(content, signal, paneName);
326
+ return {
327
+ state,
328
+ ...optionDetails
329
+ };
330
+ }
331
+ // If it's open_prompt (idle), extract summary
332
+ if (state === 'open_prompt') {
333
+ logService.debug(`PaneAnalyzer: Detected open_prompt for "${paneName}", extracting summary...`, 'paneAnalyzer', dmuxPaneId);
334
+ const summary = await this.extractSummary(content, signal);
335
+ return {
336
+ state,
337
+ summary
338
+ };
339
+ }
340
+ // Otherwise just return the state (in_progress)
341
+ return { state };
342
+ }
343
+ catch (error) {
344
+ logService.error(`PaneAnalyzer: Analysis failed for "${paneName}": ${error}`, 'paneAnalyzer', dmuxPaneId, error instanceof Error ? error : undefined);
345
+ throw error;
346
+ }
347
+ }
247
348
  /**
248
349
  * Main analysis function that captures and analyzes a pane
350
+ * Includes caching and request deduplication for performance.
351
+ *
249
352
  * @param tmuxPaneId - The tmux pane ID (e.g., "%38")
250
353
  * @param signal - Optional abort signal
251
354
  * @param dmuxPaneId - Optional dmux pane ID for friendly logging (e.g., "dmux-123")
@@ -272,37 +375,36 @@ If there's no meaningful content or the output is unclear, return an empty summa
272
375
  logService.debug(`PaneAnalyzer: No content captured for "${paneName}", defaulting to in_progress`, 'paneAnalyzer', dmuxPaneId);
273
376
  return { state: 'in_progress' };
274
377
  }
378
+ // Check cache first
379
+ const contentHash = this.hashContent(content);
380
+ const cached = this.getCached(contentHash);
381
+ if (cached) {
382
+ logService.debug(`PaneAnalyzer: Cache hit for "${paneName}"`, 'paneAnalyzer', dmuxPaneId);
383
+ return cached;
384
+ }
385
+ // Check for pending request (deduplication)
386
+ const pendingKey = `${tmuxPaneId}:${contentHash}`;
387
+ if (this.pendingRequests.has(pendingKey)) {
388
+ logService.debug(`PaneAnalyzer: Deduplicating request for "${paneName}"`, 'paneAnalyzer', dmuxPaneId);
389
+ return this.pendingRequests.get(pendingKey);
390
+ }
391
+ // Start new analysis
392
+ const analysisPromise = this.doAnalyzePane(tmuxPaneId, content, paneName, dmuxPaneId, signal)
393
+ .then(result => {
394
+ // Cache successful result
395
+ this.setCache(contentHash, result);
396
+ logService.debug(`PaneAnalyzer: Analysis complete for "${paneName}": ${result.state}`, 'paneAnalyzer', dmuxPaneId);
397
+ return result;
398
+ })
399
+ .finally(() => {
400
+ // Clean up pending request
401
+ this.pendingRequests.delete(pendingKey);
402
+ });
403
+ this.pendingRequests.set(pendingKey, analysisPromise);
275
404
  try {
276
- // Stage 1: Determine the state
277
- const state = await this.determineState(content, signal, paneName);
278
- // If it's an option dialog, extract option details
279
- if (state === 'option_dialog') {
280
- logService.debug(`PaneAnalyzer: Detected option_dialog for "${paneName}", extracting options...`, 'paneAnalyzer', dmuxPaneId);
281
- const optionDetails = await this.extractOptions(content, signal, paneName);
282
- const analysis = {
283
- state,
284
- ...optionDetails
285
- };
286
- logService.info(`PaneAnalyzer: Analysis complete for "${paneName}": option_dialog with ${analysis.options?.length || 0} options` +
287
- (analysis.potentialHarm?.hasRisk ? ' (RISK DETECTED)' : ''), 'paneAnalyzer', dmuxPaneId);
288
- return analysis;
289
- }
290
- // If it's open_prompt (idle), extract summary
291
- if (state === 'open_prompt') {
292
- logService.debug(`PaneAnalyzer: Detected open_prompt for "${paneName}", extracting summary...`, 'paneAnalyzer', dmuxPaneId);
293
- const summary = await this.extractSummary(content, signal);
294
- logService.debug(`PaneAnalyzer: Analysis complete for "${paneName}": open_prompt${summary ? ` (summary: ${summary.substring(0, 50)}...)` : ''}`, 'paneAnalyzer', dmuxPaneId);
295
- return {
296
- state,
297
- summary
298
- };
299
- }
300
- // Otherwise just return the state (in_progress)
301
- logService.debug(`PaneAnalyzer: Analysis complete for "${paneName}": in_progress`, 'paneAnalyzer', dmuxPaneId);
302
- return { state };
405
+ return await analysisPromise;
303
406
  }
304
407
  catch (error) {
305
- logService.error(`PaneAnalyzer: Analysis failed for "${paneName}": ${error}`, 'paneAnalyzer', dmuxPaneId, error instanceof Error ? error : undefined);
306
408
  // All models failed or other error occurred
307
409
  // Return open_prompt as fallback (idle state) and let error be handled by caller
308
410
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"PaneAnalyzer.js","sourceRoot":"","sources":["../../src/services/PaneAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PaneAnalyzer.js","sourceRoot":"","sources":["../../src/services/PaneAnalyzer.ts"],"names":[],"mappings":"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"}