@blackbox_ai/blackbox-cli 0.9.2 → 1.0.2

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 (153) hide show
  1. package/dist/assets/notification.mp3 +0 -0
  2. package/dist/package.json +2 -2
  3. package/dist/src/commands/voice.js +39 -34
  4. package/dist/src/commands/voice.js.map +1 -1
  5. package/dist/src/config/config.js +1 -4
  6. package/dist/src/config/config.js.map +1 -1
  7. package/dist/src/config/settings.d.ts +2 -0
  8. package/dist/src/config/settings.js +22 -1
  9. package/dist/src/config/settings.js.map +1 -1
  10. package/dist/src/config/settingsSchema.d.ts +36 -7
  11. package/dist/src/config/settingsSchema.js +35 -8
  12. package/dist/src/config/settingsSchema.js.map +1 -1
  13. package/dist/src/gemini.js +25 -20
  14. package/dist/src/gemini.js.map +1 -1
  15. package/dist/src/generated/git-commit.d.ts +2 -2
  16. package/dist/src/generated/git-commit.js +2 -2
  17. package/dist/src/services/BuiltinCommandLoader.js +2 -2
  18. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  19. package/dist/src/services/agentExecutor.d.ts +5 -0
  20. package/dist/src/services/agentExecutor.js +6 -2
  21. package/dist/src/services/agentExecutor.js.map +1 -1
  22. package/dist/src/services/voiceRecordingService.d.ts +13 -1
  23. package/dist/src/services/voiceRecordingService.js +38 -5
  24. package/dist/src/services/voiceRecordingService.js.map +1 -1
  25. package/dist/src/ui/App.js +255 -20
  26. package/dist/src/ui/App.js.map +1 -1
  27. package/dist/src/ui/commands/agentCommand.js +134 -43
  28. package/dist/src/ui/commands/agentCommand.js.map +1 -1
  29. package/dist/src/ui/commands/modelCommand.js +15 -2
  30. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  31. package/dist/src/ui/commands/quitCommand.js +5 -0
  32. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  33. package/dist/src/ui/commands/subAgentsCommand.d.ts +7 -0
  34. package/dist/src/ui/commands/subAgentsCommand.js +32 -0
  35. package/dist/src/ui/commands/subAgentsCommand.js.map +1 -0
  36. package/dist/src/ui/commands/types.d.ts +14 -3
  37. package/dist/src/ui/commands/types.js.map +1 -1
  38. package/dist/src/ui/commands/voiceCommand.js +70 -34
  39. package/dist/src/ui/commands/voiceCommand.js.map +1 -1
  40. package/dist/src/ui/commands/voiceCommand.test.d.ts +6 -0
  41. package/dist/src/ui/commands/voiceCommand.test.js +131 -0
  42. package/dist/src/ui/commands/voiceCommand.test.js.map +1 -0
  43. package/dist/src/ui/components/AgentModelSelector.js +1 -1
  44. package/dist/src/ui/components/AgentModelSelector.js.map +1 -1
  45. package/dist/src/ui/components/AgentSetDialog.d.ts +15 -0
  46. package/dist/src/ui/components/AgentSetDialog.js +52 -0
  47. package/dist/src/ui/components/AgentSetDialog.js.map +1 -0
  48. package/dist/src/ui/components/ApiKeyInputDialog.d.ts +17 -0
  49. package/dist/src/ui/components/ApiKeyInputDialog.js +44 -0
  50. package/dist/src/ui/components/ApiKeyInputDialog.js.map +1 -0
  51. package/dist/src/ui/components/AuthDialog.js +32 -46
  52. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  53. package/dist/src/ui/components/Footer.d.ts +6 -0
  54. package/dist/src/ui/components/Footer.js +17 -2
  55. package/dist/src/ui/components/Footer.js.map +1 -1
  56. package/dist/src/ui/components/GenericProviderKeyPrompt.js +1 -1
  57. package/dist/src/ui/components/GenericProviderKeyPrompt.js.map +1 -1
  58. package/dist/src/ui/components/Header.js +2 -9
  59. package/dist/src/ui/components/Header.js.map +1 -1
  60. package/dist/src/ui/components/HistoryBrowserDialog.js +2 -1
  61. package/dist/src/ui/components/HistoryBrowserDialog.js.map +1 -1
  62. package/dist/src/ui/components/InputPrompt.js +3 -1
  63. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  64. package/dist/src/ui/components/MemoryUsageDisplay.js +41 -8
  65. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  66. package/dist/src/ui/components/SettingsDialog.js +4 -3
  67. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  68. package/dist/src/ui/components/SuggestionsDisplay.js +3 -2
  69. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  70. package/dist/src/ui/components/Tips.js +1 -1
  71. package/dist/src/ui/components/Tips.js.map +1 -1
  72. package/dist/src/ui/components/agents/SingleAgentDialog.d.ts +7 -4
  73. package/dist/src/ui/components/agents/SingleAgentDialog.js +135 -63
  74. package/dist/src/ui/components/agents/SingleAgentDialog.js.map +1 -1
  75. package/dist/src/ui/components/messages/DiffRenderer.js +1 -9
  76. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  77. package/dist/src/ui/components/messages/ErrorMessage.js +2 -1
  78. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
  79. package/dist/src/ui/components/messages/InfoMessage.js +2 -1
  80. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  81. package/dist/src/ui/components/messages/ToolGroupMessage.js +4 -1
  82. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  83. package/dist/src/ui/components/messages/UserMessage.js +1 -2
  84. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  85. package/dist/src/ui/components/shared/RadioButtonSelect.js +14 -4
  86. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  87. package/dist/src/ui/contexts/SessionContext.d.ts +18 -0
  88. package/dist/src/ui/contexts/SessionContext.js +25 -1
  89. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  90. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -2
  91. package/dist/src/ui/hooks/slashCommandProcessor.js +54 -2
  92. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  93. package/dist/src/ui/hooks/useAgentCommandProcessor.d.ts +12 -2
  94. package/dist/src/ui/hooks/useAgentCommandProcessor.js +169 -4
  95. package/dist/src/ui/hooks/useAgentCommandProcessor.js.map +1 -1
  96. package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -1
  97. package/dist/src/ui/hooks/useAuthCommand.js +22 -2
  98. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  99. package/dist/src/ui/hooks/useDialogClose.d.ts +2 -0
  100. package/dist/src/ui/hooks/useDialogClose.js +5 -0
  101. package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
  102. package/dist/src/ui/hooks/useEncryptedStream.d.ts +2 -1
  103. package/dist/src/ui/hooks/useEncryptedStream.js +17 -4
  104. package/dist/src/ui/hooks/useEncryptedStream.js.map +1 -1
  105. package/dist/src/ui/hooks/useGeminiStream.js +216 -21
  106. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  107. package/dist/src/ui/hooks/useInputBoxColor.d.ts +13 -0
  108. package/dist/src/ui/hooks/useInputBoxColor.js +62 -0
  109. package/dist/src/ui/hooks/useInputBoxColor.js.map +1 -0
  110. package/dist/src/ui/hooks/useMessageQueue.d.ts +7 -1
  111. package/dist/src/ui/hooks/useMessageQueue.js +9 -3
  112. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  113. package/dist/src/ui/utils/agentConversationUtils.d.ts +28 -0
  114. package/dist/src/ui/utils/agentConversationUtils.js +71 -0
  115. package/dist/src/ui/utils/agentConversationUtils.js.map +1 -0
  116. package/dist/src/ui/utils/colorBlend.d.ts +33 -0
  117. package/dist/src/ui/utils/colorBlend.js +61 -0
  118. package/dist/src/ui/utils/colorBlend.js.map +1 -0
  119. package/dist/src/ui/utils/commandUtils.d.ts +2 -1
  120. package/dist/src/ui/utils/commandUtils.js +14 -1
  121. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  122. package/dist/src/ui/utils/commandUtils.test.js +25 -0
  123. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  124. package/dist/src/ui/utils/terminalBackgroundDetector.d.ts +16 -0
  125. package/dist/src/ui/utils/terminalBackgroundDetector.js +124 -23
  126. package/dist/src/ui/utils/terminalBackgroundDetector.js.map +1 -1
  127. package/dist/src/utils/agentCommandBuilder.d.ts +16 -4
  128. package/dist/src/utils/agentCommandBuilder.js +66 -26
  129. package/dist/src/utils/agentCommandBuilder.js.map +1 -1
  130. package/dist/src/utils/apiKeyUtils.d.ts +47 -0
  131. package/dist/src/utils/apiKeyUtils.js +177 -0
  132. package/dist/src/utils/apiKeyUtils.js.map +1 -0
  133. package/dist/src/utils/backgroundUpdateCheck.js +104 -7
  134. package/dist/src/utils/backgroundUpdateCheck.js.map +1 -1
  135. package/dist/src/utils/memoryManager.d.ts +85 -0
  136. package/dist/src/utils/memoryManager.js +258 -0
  137. package/dist/src/utils/memoryManager.js.map +1 -0
  138. package/dist/src/utils/memoryMonitor.d.ts +89 -0
  139. package/dist/src/utils/memoryMonitor.js +238 -0
  140. package/dist/src/utils/memoryMonitor.js.map +1 -0
  141. package/dist/src/utils/memoryWrapper.d.ts +18 -0
  142. package/dist/src/utils/memoryWrapper.js +62 -0
  143. package/dist/src/utils/memoryWrapper.js.map +1 -0
  144. package/dist/src/utils/preLaunchUpdateCheck.js +17 -7
  145. package/dist/src/utils/preLaunchUpdateCheck.js.map +1 -1
  146. package/dist/src/utils/soundNotification.d.ts +15 -0
  147. package/dist/src/utils/soundNotification.js +138 -0
  148. package/dist/src/utils/soundNotification.js.map +1 -0
  149. package/dist/src/utils/versionStorage.d.ts +20 -0
  150. package/dist/src/utils/versionStorage.js +62 -0
  151. package/dist/src/utils/versionStorage.js.map +1 -1
  152. package/dist/tsconfig.tsbuildinfo +1 -1
  153. package/package.json +2 -2
@@ -0,0 +1,258 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import os from 'node:os';
7
+ import v8 from 'node:v8';
8
+ /**
9
+ * Default heap size in MB - set to 8GB as requested
10
+ */
11
+ const DEFAULT_HEAP_SIZE_MB = 8192;
12
+ /**
13
+ * Minimum heap size in MB to prevent issues on low-memory systems
14
+ */
15
+ const MIN_HEAP_SIZE_MB = 2048;
16
+ /**
17
+ * Memory pressure thresholds
18
+ */
19
+ const MEMORY_PRESSURE_THRESHOLDS = {
20
+ WARNING: 0.7, // 70% of heap used
21
+ CRITICAL: 0.85, // 85% of heap used
22
+ EMERGENCY: 0.95 // 95% of heap used
23
+ };
24
+ /**
25
+ * Memory manager class for handling memory optimization and monitoring
26
+ */
27
+ export class MemoryManager {
28
+ cleanupCallbacks = new Set();
29
+ monitoringInterval;
30
+ lastGcTime = 0;
31
+ gcThrottleMs = 5000; // Minimum 5 seconds between forced GCs
32
+ config;
33
+ constructor(config) {
34
+ this.config = config;
35
+ }
36
+ /**
37
+ * Get optimal heap size arguments for Node.js
38
+ */
39
+ static getOptimalHeapArgs(config) {
40
+ const totalMemoryMB = os.totalmem() / (1024 * 1024);
41
+ const heapStats = v8.getHeapStatistics();
42
+ const currentMaxOldSpaceSizeMb = Math.floor(heapStats.heap_size_limit / 1024 / 1024);
43
+ // Calculate target heap size
44
+ let targetHeapSizeMB = DEFAULT_HEAP_SIZE_MB;
45
+ // Ensure we don't exceed 80% of total system memory
46
+ const maxSafeHeapSize = Math.floor(totalMemoryMB * 0.8);
47
+ if (targetHeapSizeMB > maxSafeHeapSize) {
48
+ targetHeapSizeMB = maxSafeHeapSize;
49
+ }
50
+ // Ensure minimum heap size
51
+ if (targetHeapSizeMB < MIN_HEAP_SIZE_MB) {
52
+ targetHeapSizeMB = MIN_HEAP_SIZE_MB;
53
+ }
54
+ if (config?.getDebugMode()) {
55
+ console.debug(`Memory configuration: Current=${currentMaxOldSpaceSizeMb}MB, Target=${targetHeapSizeMB}MB, System=${Math.floor(totalMemoryMB)}MB`);
56
+ }
57
+ // Skip relaunch if already configured or explicitly disabled
58
+ if (process.env['BLACKBOX_CLI_NO_RELAUNCH'] || process.env['GEMINI_CLI_NO_RELAUNCH']) {
59
+ return [];
60
+ }
61
+ // Only relaunch if we need significantly more memory
62
+ if (targetHeapSizeMB > currentMaxOldSpaceSizeMb + 512) {
63
+ return [
64
+ `--max-old-space-size=${targetHeapSizeMB}`,
65
+ '--max-semi-space-size=128', // Optimize young generation
66
+ '--optimize-for-size', // Reduce memory overhead
67
+ ];
68
+ }
69
+ return [];
70
+ }
71
+ /**
72
+ * Get current memory statistics
73
+ */
74
+ getMemoryStats() {
75
+ const heapStats = v8.getHeapStatistics();
76
+ const memUsage = process.memoryUsage();
77
+ const heapUsed = memUsage.heapUsed;
78
+ const heapTotal = memUsage.heapTotal;
79
+ const heapLimit = heapStats.heap_size_limit;
80
+ const usagePercentage = heapUsed / heapLimit;
81
+ let pressureLevel = 'normal';
82
+ if (usagePercentage >= MEMORY_PRESSURE_THRESHOLDS.EMERGENCY) {
83
+ pressureLevel = 'emergency';
84
+ }
85
+ else if (usagePercentage >= MEMORY_PRESSURE_THRESHOLDS.CRITICAL) {
86
+ pressureLevel = 'critical';
87
+ }
88
+ else if (usagePercentage >= MEMORY_PRESSURE_THRESHOLDS.WARNING) {
89
+ pressureLevel = 'warning';
90
+ }
91
+ return {
92
+ heapUsed,
93
+ heapTotal,
94
+ heapLimit,
95
+ external: memUsage.external,
96
+ rss: memUsage.rss,
97
+ usagePercentage,
98
+ pressureLevel,
99
+ };
100
+ }
101
+ /**
102
+ * Register a cleanup callback to be called during memory pressure
103
+ */
104
+ registerCleanupCallback(callback) {
105
+ this.cleanupCallbacks.add(callback);
106
+ return () => this.cleanupCallbacks.delete(callback);
107
+ }
108
+ /**
109
+ * Force garbage collection if enough time has passed
110
+ */
111
+ forceGarbageCollection() {
112
+ const now = Date.now();
113
+ if (now - this.lastGcTime < this.gcThrottleMs) {
114
+ return false;
115
+ }
116
+ try {
117
+ if (global.gc) {
118
+ global.gc();
119
+ this.lastGcTime = now;
120
+ return true;
121
+ }
122
+ }
123
+ catch (error) {
124
+ if (this.config?.getDebugMode()) {
125
+ console.debug('Failed to force garbage collection:', error);
126
+ }
127
+ }
128
+ return false;
129
+ }
130
+ /**
131
+ * Run cleanup callbacks
132
+ */
133
+ async runCleanupCallbacks() {
134
+ const promises = [];
135
+ for (const callback of this.cleanupCallbacks) {
136
+ try {
137
+ const result = callback();
138
+ if (result instanceof Promise) {
139
+ promises.push(result);
140
+ }
141
+ }
142
+ catch (error) {
143
+ if (this.config?.getDebugMode()) {
144
+ console.debug('Cleanup callback failed:', error);
145
+ }
146
+ }
147
+ }
148
+ if (promises.length > 0) {
149
+ await Promise.allSettled(promises);
150
+ }
151
+ }
152
+ /**
153
+ * Handle memory pressure by running cleanup and forcing GC
154
+ */
155
+ async handleMemoryPressure() {
156
+ if (this.config?.getDebugMode()) {
157
+ const stats = this.getMemoryStats();
158
+ console.debug(`Memory pressure detected: ${(stats.usagePercentage * 100).toFixed(1)}% used`);
159
+ }
160
+ // Run cleanup callbacks first
161
+ await this.runCleanupCallbacks();
162
+ // Force garbage collection
163
+ this.forceGarbageCollection();
164
+ }
165
+ /**
166
+ * Start memory monitoring
167
+ */
168
+ startMonitoring(intervalMs = 10000) {
169
+ if (this.monitoringInterval) {
170
+ return;
171
+ }
172
+ this.monitoringInterval = setInterval(() => {
173
+ const stats = this.getMemoryStats();
174
+ if (stats.pressureLevel === 'emergency' || stats.pressureLevel === 'critical') {
175
+ this.handleMemoryPressure().catch((error) => {
176
+ if (this.config?.getDebugMode()) {
177
+ console.debug('Memory pressure handling failed:', error);
178
+ }
179
+ });
180
+ }
181
+ if (this.config?.getDebugMode() && stats.pressureLevel !== 'normal') {
182
+ console.debug(`Memory usage: ${(stats.usagePercentage * 100).toFixed(1)}% (${stats.pressureLevel})`);
183
+ }
184
+ }, intervalMs);
185
+ }
186
+ /**
187
+ * Stop memory monitoring
188
+ */
189
+ stopMonitoring() {
190
+ if (this.monitoringInterval) {
191
+ clearInterval(this.monitoringInterval);
192
+ this.monitoringInterval = undefined;
193
+ }
194
+ }
195
+ /**
196
+ * Get formatted memory usage string
197
+ */
198
+ getFormattedMemoryUsage() {
199
+ const stats = this.getMemoryStats();
200
+ const heapUsedMB = Math.round(stats.heapUsed / 1024 / 1024);
201
+ const heapLimitMB = Math.round(stats.heapLimit / 1024 / 1024);
202
+ const percentage = (stats.usagePercentage * 100).toFixed(1);
203
+ return `${heapUsedMB}MB / ${heapLimitMB}MB (${percentage}%)`;
204
+ }
205
+ /**
206
+ * Cleanup and destroy the memory manager
207
+ */
208
+ destroy() {
209
+ this.stopMonitoring();
210
+ this.cleanupCallbacks.clear();
211
+ }
212
+ }
213
+ /**
214
+ * Global memory manager instance
215
+ */
216
+ let globalMemoryManager;
217
+ /**
218
+ * Get or create the global memory manager
219
+ */
220
+ export function getMemoryManager(config) {
221
+ if (!globalMemoryManager) {
222
+ globalMemoryManager = new MemoryManager(config);
223
+ }
224
+ return globalMemoryManager;
225
+ }
226
+ /**
227
+ * Initialize memory management with optimal settings
228
+ */
229
+ export function initializeMemoryManagement(config) {
230
+ const memoryManager = getMemoryManager(config);
231
+ // Start monitoring
232
+ memoryManager.startMonitoring();
233
+ // Register process cleanup
234
+ const cleanup = () => {
235
+ memoryManager.destroy();
236
+ };
237
+ process.on('exit', cleanup);
238
+ process.on('SIGINT', cleanup);
239
+ process.on('SIGTERM', cleanup);
240
+ return memoryManager;
241
+ }
242
+ /**
243
+ * Utility function to create a memory-aware cleanup callback
244
+ */
245
+ export function createMemoryCleanupCallback(cleanupFn, description) {
246
+ return async () => {
247
+ try {
248
+ const result = cleanupFn();
249
+ if (result instanceof Promise) {
250
+ await result;
251
+ }
252
+ }
253
+ catch (error) {
254
+ console.warn(`Memory cleanup failed${description ? ` (${description})` : ''}:`, error);
255
+ }
256
+ };
257
+ }
258
+ //# sourceMappingURL=memoryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryManager.js","sourceRoot":"","sources":["../../../src/utils/memoryManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB;;GAEG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B;;GAEG;AACH,MAAM,0BAA0B,GAAG;IACjC,OAAO,EAAE,GAAG,EAAG,mBAAmB;IAClC,QAAQ,EAAE,IAAI,EAAE,mBAAmB;IACnC,SAAS,EAAE,IAAI,CAAC,mBAAmB;CACpC,CAAC;AAoBF;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,gBAAgB,GAA+B,IAAI,GAAG,EAAE,CAAC;IACzD,kBAAkB,CAAkB;IACpC,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,IAAI,CAAC,CAAC,uCAAuC;IAC5D,MAAM,CAAU;IAExB,YAAY,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAe;QACvC,MAAM,aAAa,GAAG,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CACzC,SAAS,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CACxC,CAAC;QAEF,6BAA6B;QAC7B,IAAI,gBAAgB,GAAG,oBAAoB,CAAC;QAE5C,oDAAoD;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;QACxD,IAAI,gBAAgB,GAAG,eAAe,EAAE,CAAC;YACvC,gBAAgB,GAAG,eAAe,CAAC;QACrC,CAAC;QAED,2BAA2B;QAC3B,IAAI,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;YACxC,gBAAgB,GAAG,gBAAgB,CAAC;QACtC,CAAC;QAED,IAAI,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,iCAAiC,wBAAwB,cAAc,gBAAgB,cAAc,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CACnI,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACrF,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,qDAAqD;QACrD,IAAI,gBAAgB,GAAG,wBAAwB,GAAG,GAAG,EAAE,CAAC;YACtD,OAAO;gBACL,wBAAwB,gBAAgB,EAAE;gBAC1C,2BAA2B,EAAE,4BAA4B;gBACzD,qBAAqB,EAAE,yBAAyB;aACjD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;QAC5C,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;QAE7C,IAAI,aAAa,GAAiC,QAAQ,CAAC;QAC3D,IAAI,eAAe,IAAI,0BAA0B,CAAC,SAAS,EAAE,CAAC;YAC5D,aAAa,GAAG,WAAW,CAAC;QAC9B,CAAC;aAAM,IAAI,eAAe,IAAI,0BAA0B,CAAC,QAAQ,EAAE,CAAC;YAClE,aAAa,GAAG,UAAU,CAAC;QAC7B,CAAC;aAAM,IAAI,eAAe,IAAI,0BAA0B,CAAC,OAAO,EAAE,CAAC;YACjE,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,OAAO;YACL,QAAQ;YACR,SAAS;YACT,SAAS;YACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,eAAe;YACf,aAAa;SACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,QAA+B;QACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,MAAM,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAC1B,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;oBAC9B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/F,CAAC;QAED,8BAA8B;QAC9B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAU,GAAG,KAAK;QAChC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAEpC,IAAI,KAAK,CAAC,aAAa,KAAK,WAAW,IAAI,KAAK,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBAC9E,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;wBAChC,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACpE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;YACvG,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE5D,OAAO,GAAG,UAAU,QAAQ,WAAW,OAAO,UAAU,IAAI,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,IAAI,mBAA8C,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,mBAAmB,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAe;IACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE/C,mBAAmB;IACnB,aAAa,CAAC,eAAe,EAAE,CAAC;IAEhC,2BAA2B;IAC3B,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,aAAa,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE/B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAqC,EACrC,WAAoB;IAEpB,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,MAAM,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface MemoryStats {
7
+ heapUsed: number;
8
+ heapTotal: number;
9
+ heapLimit: number;
10
+ heapUsagePercent: number;
11
+ external: number;
12
+ rss: number;
13
+ arrayBuffers: number;
14
+ timestamp: number;
15
+ }
16
+ export interface MemoryAlert {
17
+ level: 'info' | 'warning' | 'critical';
18
+ message: string;
19
+ stats: MemoryStats;
20
+ timestamp: number;
21
+ }
22
+ export declare class MemoryMonitor {
23
+ private static instance;
24
+ private alerts;
25
+ private intervalId;
26
+ private onAlert?;
27
+ private isMonitoring;
28
+ private readonly WARNING_THRESHOLD;
29
+ private readonly CRITICAL_THRESHOLD;
30
+ private readonly MONITORING_INTERVAL;
31
+ private constructor();
32
+ static getInstance(): MemoryMonitor;
33
+ /**
34
+ * Get current memory statistics
35
+ */
36
+ getCurrentStats(): MemoryStats;
37
+ /**
38
+ * Format memory stats for display
39
+ */
40
+ formatStats(stats: MemoryStats): string;
41
+ /**
42
+ * Get a simple memory status string
43
+ */
44
+ getMemoryStatus(): string;
45
+ /**
46
+ * Start continuous memory monitoring
47
+ */
48
+ startMonitoring(onAlert?: (alert: MemoryAlert) => void): void;
49
+ /**
50
+ * Stop memory monitoring
51
+ */
52
+ stopMonitoring(): void;
53
+ /**
54
+ * Check current memory usage and generate alerts
55
+ */
56
+ private checkMemoryUsage;
57
+ /**
58
+ * Get memory level based on usage percentage
59
+ */
60
+ private getMemoryLevel;
61
+ /**
62
+ * Generate alert message
63
+ */
64
+ private getAlertMessage;
65
+ /**
66
+ * Get recent alerts
67
+ */
68
+ getRecentAlerts(count?: number): MemoryAlert[];
69
+ /**
70
+ * Clear all alerts
71
+ */
72
+ clearAlerts(): void;
73
+ /**
74
+ * Get system memory information
75
+ */
76
+ getSystemInfo(): {
77
+ totalMemory: number;
78
+ freeMemory: number;
79
+ usedMemory: number;
80
+ memoryUsagePercent: number;
81
+ nodeVersion: string;
82
+ platform: string;
83
+ };
84
+ /**
85
+ * Generate a comprehensive memory report
86
+ */
87
+ generateReport(): string;
88
+ }
89
+ export declare const memoryMonitor: MemoryMonitor;
@@ -0,0 +1,238 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import v8 from 'node:v8';
7
+ import os from 'node:os';
8
+ export class MemoryMonitor {
9
+ static instance;
10
+ alerts = [];
11
+ intervalId = null;
12
+ onAlert;
13
+ isMonitoring = false;
14
+ // Thresholds for memory alerts
15
+ WARNING_THRESHOLD = 70; // 70% of heap limit
16
+ CRITICAL_THRESHOLD = 85; // 85% of heap limit
17
+ MONITORING_INTERVAL = 5000; // 5 seconds
18
+ constructor() { }
19
+ static getInstance() {
20
+ if (!MemoryMonitor.instance) {
21
+ MemoryMonitor.instance = new MemoryMonitor();
22
+ }
23
+ return MemoryMonitor.instance;
24
+ }
25
+ /**
26
+ * Get current memory statistics
27
+ */
28
+ getCurrentStats() {
29
+ const heapStats = v8.getHeapStatistics();
30
+ const memUsage = process.memoryUsage();
31
+ const heapUsed = heapStats.used_heap_size;
32
+ const heapTotal = heapStats.total_heap_size;
33
+ const heapLimit = heapStats.heap_size_limit;
34
+ const heapUsagePercent = (heapUsed / heapLimit) * 100;
35
+ return {
36
+ heapUsed: Math.round(heapUsed / 1024 / 1024), // MB
37
+ heapTotal: Math.round(heapTotal / 1024 / 1024), // MB
38
+ heapLimit: Math.round(heapLimit / 1024 / 1024), // MB
39
+ heapUsagePercent: Math.round(heapUsagePercent * 100) / 100,
40
+ external: Math.round(memUsage.external / 1024 / 1024), // MB
41
+ rss: Math.round(memUsage.rss / 1024 / 1024), // MB
42
+ arrayBuffers: Math.round(memUsage.arrayBuffers / 1024 / 1024), // MB
43
+ timestamp: Date.now(),
44
+ };
45
+ }
46
+ /**
47
+ * Format memory stats for display
48
+ */
49
+ formatStats(stats) {
50
+ return [
51
+ `Heap: ${stats.heapUsed}MB/${stats.heapLimit}MB (${stats.heapUsagePercent}%)`,
52
+ `RSS: ${stats.rss}MB`,
53
+ `External: ${stats.external}MB`,
54
+ `ArrayBuffers: ${stats.arrayBuffers}MB`,
55
+ ].join(' | ');
56
+ }
57
+ /**
58
+ * Get a simple memory status string
59
+ */
60
+ getMemoryStatus() {
61
+ const stats = this.getCurrentStats();
62
+ const status = this.getMemoryLevel(stats.heapUsagePercent);
63
+ const statusIcon = status === 'critical' ? '🔴' : status === 'warning' ? '🟡' : '🟢';
64
+ return `${statusIcon} Memory: ${stats.heapUsed}MB/${stats.heapLimit}MB (${stats.heapUsagePercent}%)`;
65
+ }
66
+ /**
67
+ * Start continuous memory monitoring
68
+ */
69
+ startMonitoring(onAlert) {
70
+ if (this.isMonitoring) {
71
+ return;
72
+ }
73
+ this.onAlert = onAlert;
74
+ this.isMonitoring = true;
75
+ // Initial stats
76
+ const initialStats = this.getCurrentStats();
77
+ console.log(`🔍 Memory Monitor Started - ${this.formatStats(initialStats)}`);
78
+ this.intervalId = setInterval(() => {
79
+ this.checkMemoryUsage();
80
+ }, this.MONITORING_INTERVAL);
81
+ }
82
+ /**
83
+ * Stop memory monitoring
84
+ */
85
+ stopMonitoring() {
86
+ if (this.intervalId) {
87
+ clearInterval(this.intervalId);
88
+ this.intervalId = null;
89
+ }
90
+ this.isMonitoring = false;
91
+ console.log('🔍 Memory Monitor Stopped');
92
+ }
93
+ /**
94
+ * Check current memory usage and generate alerts
95
+ */
96
+ checkMemoryUsage() {
97
+ const stats = this.getCurrentStats();
98
+ const level = this.getMemoryLevel(stats.heapUsagePercent);
99
+ if (level !== 'info') {
100
+ const alert = {
101
+ level,
102
+ message: this.getAlertMessage(level, stats),
103
+ stats,
104
+ timestamp: Date.now(),
105
+ };
106
+ this.alerts.push(alert);
107
+ // Keep only last 50 alerts
108
+ if (this.alerts.length > 50) {
109
+ this.alerts = this.alerts.slice(-50);
110
+ }
111
+ if (this.onAlert) {
112
+ this.onAlert(alert);
113
+ }
114
+ // Log critical alerts immediately
115
+ if (level === 'critical') {
116
+ console.error(`🔴 CRITICAL MEMORY ALERT: ${alert.message}`);
117
+ console.error(` ${this.formatStats(stats)}`);
118
+ // Trigger garbage collection if available
119
+ if (global.gc) {
120
+ console.log('🗑️ Triggering garbage collection...');
121
+ global.gc();
122
+ }
123
+ }
124
+ else if (level === 'warning') {
125
+ console.warn(`🟡 Memory Warning: ${alert.message}`);
126
+ }
127
+ }
128
+ }
129
+ /**
130
+ * Get memory level based on usage percentage
131
+ */
132
+ getMemoryLevel(usagePercent) {
133
+ if (usagePercent >= this.CRITICAL_THRESHOLD) {
134
+ return 'critical';
135
+ }
136
+ else if (usagePercent >= this.WARNING_THRESHOLD) {
137
+ return 'warning';
138
+ }
139
+ return 'info';
140
+ }
141
+ /**
142
+ * Generate alert message
143
+ */
144
+ getAlertMessage(level, stats) {
145
+ if (level === 'critical') {
146
+ return `Memory usage critical at ${stats.heapUsagePercent}% (${stats.heapUsed}MB/${stats.heapLimit}MB). Consider reducing workload or increasing heap size.`;
147
+ }
148
+ else {
149
+ return `Memory usage high at ${stats.heapUsagePercent}% (${stats.heapUsed}MB/${stats.heapLimit}MB). Monitor for potential issues.`;
150
+ }
151
+ }
152
+ /**
153
+ * Get recent alerts
154
+ */
155
+ getRecentAlerts(count = 10) {
156
+ return this.alerts.slice(-count);
157
+ }
158
+ /**
159
+ * Clear all alerts
160
+ */
161
+ clearAlerts() {
162
+ this.alerts = [];
163
+ }
164
+ /**
165
+ * Get system memory information
166
+ */
167
+ getSystemInfo() {
168
+ const totalMemory = Math.round(os.totalmem() / 1024 / 1024); // MB
169
+ const freeMemory = Math.round(os.freemem() / 1024 / 1024); // MB
170
+ const usedMemory = totalMemory - freeMemory;
171
+ const memoryUsagePercent = (usedMemory / totalMemory) * 100;
172
+ return {
173
+ totalMemory,
174
+ freeMemory,
175
+ usedMemory,
176
+ memoryUsagePercent: Math.round(memoryUsagePercent * 100) / 100,
177
+ nodeVersion: process.version,
178
+ platform: os.platform(),
179
+ };
180
+ }
181
+ /**
182
+ * Generate a comprehensive memory report
183
+ */
184
+ generateReport() {
185
+ const stats = this.getCurrentStats();
186
+ const systemInfo = this.getSystemInfo();
187
+ const recentAlerts = this.getRecentAlerts(5);
188
+ const report = [
189
+ '📊 MEMORY MONITORING REPORT',
190
+ '='.repeat(50),
191
+ '',
192
+ '🔧 System Information:',
193
+ ` Platform: ${systemInfo.platform}`,
194
+ ` Node.js: ${systemInfo.nodeVersion}`,
195
+ ` Total System Memory: ${systemInfo.totalMemory}MB`,
196
+ ` Free System Memory: ${systemInfo.freeMemory}MB`,
197
+ ` System Memory Usage: ${systemInfo.memoryUsagePercent}%`,
198
+ '',
199
+ '💾 Current Heap Statistics:',
200
+ ` Heap Used: ${stats.heapUsed}MB`,
201
+ ` Heap Total: ${stats.heapTotal}MB`,
202
+ ` Heap Limit: ${stats.heapLimit}MB`,
203
+ ` Heap Usage: ${stats.heapUsagePercent}%`,
204
+ ` RSS: ${stats.rss}MB`,
205
+ ` External: ${stats.external}MB`,
206
+ ` Array Buffers: ${stats.arrayBuffers}MB`,
207
+ '',
208
+ '🚨 Recent Alerts:',
209
+ ];
210
+ if (recentAlerts.length === 0) {
211
+ report.push(' No recent alerts - memory usage is normal');
212
+ }
213
+ else {
214
+ recentAlerts.forEach((alert) => {
215
+ const time = new Date(alert.timestamp).toLocaleTimeString();
216
+ const icon = alert.level === 'critical' ? '🔴' : '🟡';
217
+ report.push(` ${icon} [${time}] ${alert.level.toUpperCase()}: ${alert.message}`);
218
+ });
219
+ }
220
+ report.push('');
221
+ report.push('💡 Recommendations:');
222
+ if (stats.heapUsagePercent > 85) {
223
+ report.push(' - CRITICAL: Consider increasing heap size or reducing workload');
224
+ report.push(' - Run with: node --max-old-space-size=16384 (16GB)');
225
+ }
226
+ else if (stats.heapUsagePercent > 70) {
227
+ report.push(' - WARNING: Monitor memory usage closely');
228
+ report.push(' - Consider optimizing data structures or implementing cleanup');
229
+ }
230
+ else {
231
+ report.push(' - Memory usage is within normal limits');
232
+ }
233
+ return report.join('\n');
234
+ }
235
+ }
236
+ // Export singleton instance
237
+ export const memoryMonitor = MemoryMonitor.getInstance();
238
+ //# sourceMappingURL=memoryMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryMonitor.js","sourceRoot":"","sources":["../../../src/utils/memoryMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Check if we need to relaunch with better memory settings
8
+ */
9
+ export declare function shouldRelaunchWithMemory(): boolean;
10
+ /**
11
+ * Relaunch the process with optimal memory settings
12
+ */
13
+ export declare function relaunchWithOptimalMemory(): Promise<never>;
14
+ /**
15
+ * Ensure the process is running with optimal memory settings
16
+ * This should be called early in the application startup
17
+ */
18
+ export declare function ensureOptimalMemory(): Promise<void>;