@google/gemini-cli-core 0.10.0-nightly.20250926.1487841d → 0.10.0-nightly.20251009.cd354aeb

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 (246) hide show
  1. package/README.md +108 -71
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/agents/codebase-investigator.d.ts +46 -0
  6. package/dist/src/agents/codebase-investigator.js +136 -0
  7. package/dist/src/agents/codebase-investigator.js.map +1 -0
  8. package/dist/src/agents/executor.d.ts +92 -0
  9. package/dist/src/agents/executor.js +580 -0
  10. package/dist/src/agents/executor.js.map +1 -0
  11. package/dist/src/agents/executor.test.d.ts +6 -0
  12. package/dist/src/agents/executor.test.js +595 -0
  13. package/dist/src/agents/executor.test.js.map +1 -0
  14. package/dist/src/agents/invocation.d.ts +46 -0
  15. package/dist/src/agents/invocation.js +102 -0
  16. package/dist/src/agents/invocation.js.map +1 -0
  17. package/dist/src/agents/invocation.test.d.ts +6 -0
  18. package/dist/src/agents/invocation.test.js +215 -0
  19. package/dist/src/agents/invocation.test.js.map +1 -0
  20. package/dist/src/agents/registry.d.ts +36 -0
  21. package/dist/src/agents/registry.js +60 -0
  22. package/dist/src/agents/registry.js.map +1 -0
  23. package/dist/src/agents/registry.test.d.ts +6 -0
  24. package/dist/src/agents/registry.test.js +146 -0
  25. package/dist/src/agents/registry.test.js.map +1 -0
  26. package/dist/src/agents/schema-utils.d.ts +39 -0
  27. package/dist/src/agents/schema-utils.js +57 -0
  28. package/dist/src/agents/schema-utils.js.map +1 -0
  29. package/dist/src/agents/schema-utils.test.d.ts +6 -0
  30. package/dist/src/agents/schema-utils.test.js +144 -0
  31. package/dist/src/agents/schema-utils.test.js.map +1 -0
  32. package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
  33. package/dist/src/agents/subagent-tool-wrapper.js +48 -0
  34. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  35. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
  36. package/dist/src/agents/subagent-tool-wrapper.test.js +112 -0
  37. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
  38. package/dist/src/agents/types.d.ts +145 -0
  39. package/dist/src/agents/types.js +18 -0
  40. package/dist/src/agents/types.js.map +1 -0
  41. package/dist/src/agents/utils.d.ts +15 -0
  42. package/dist/src/agents/utils.js +29 -0
  43. package/dist/src/agents/utils.js.map +1 -0
  44. package/dist/src/agents/utils.test.d.ts +6 -0
  45. package/dist/src/agents/utils.test.js +87 -0
  46. package/dist/src/agents/utils.test.js.map +1 -0
  47. package/dist/src/code_assist/setup.js +4 -2
  48. package/dist/src/code_assist/setup.js.map +1 -1
  49. package/dist/src/config/config.d.ts +28 -5
  50. package/dist/src/config/config.js +61 -7
  51. package/dist/src/config/config.js.map +1 -1
  52. package/dist/src/config/config.test.js +63 -0
  53. package/dist/src/config/config.test.js.map +1 -1
  54. package/dist/src/core/baseLlmClient.js +19 -21
  55. package/dist/src/core/baseLlmClient.js.map +1 -1
  56. package/dist/src/core/baseLlmClient.test.js +57 -17
  57. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  58. package/dist/src/core/client.d.ts +2 -0
  59. package/dist/src/core/client.js +52 -43
  60. package/dist/src/core/client.js.map +1 -1
  61. package/dist/src/core/client.test.js +300 -95
  62. package/dist/src/core/client.test.js.map +1 -1
  63. package/dist/src/core/contentGenerator.js +3 -1
  64. package/dist/src/core/contentGenerator.js.map +1 -1
  65. package/dist/src/core/coreToolScheduler.test.js +33 -23
  66. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  67. package/dist/src/core/geminiChat.d.ts +6 -0
  68. package/dist/src/core/geminiChat.js +21 -18
  69. package/dist/src/core/geminiChat.js.map +1 -1
  70. package/dist/src/core/geminiChat.test.js +20 -19
  71. package/dist/src/core/geminiChat.test.js.map +1 -1
  72. package/dist/src/core/nonInteractiveToolExecutor.test.js +11 -11
  73. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  74. package/dist/src/core/prompts.d.ts +2 -1
  75. package/dist/src/core/prompts.js +88 -15
  76. package/dist/src/core/prompts.js.map +1 -1
  77. package/dist/src/core/prompts.test.js +73 -24
  78. package/dist/src/core/prompts.test.js.map +1 -1
  79. package/dist/src/core/turn.d.ts +10 -2
  80. package/dist/src/core/turn.js +6 -1
  81. package/dist/src/core/turn.js.map +1 -1
  82. package/dist/src/core/turn.test.js +1 -1
  83. package/dist/src/core/turn.test.js.map +1 -1
  84. package/dist/src/generated/git-commit.d.ts +2 -2
  85. package/dist/src/generated/git-commit.js +2 -2
  86. package/dist/src/ide/detect-ide.d.ts +1 -0
  87. package/dist/src/ide/detect-ide.js +4 -1
  88. package/dist/src/ide/detect-ide.js.map +1 -1
  89. package/dist/src/ide/detect-ide.test.js +11 -0
  90. package/dist/src/ide/detect-ide.test.js.map +1 -1
  91. package/dist/src/ide/ide-client.js +3 -3
  92. package/dist/src/ide/ide-client.test.js +4 -4
  93. package/dist/src/ide/ide-installer.js +1 -1
  94. package/dist/src/ide/ide-installer.js.map +1 -1
  95. package/dist/src/ide/ide-installer.test.js +13 -1
  96. package/dist/src/ide/ide-installer.test.js.map +1 -1
  97. package/dist/src/index.d.ts +1 -0
  98. package/dist/src/index.js +1 -0
  99. package/dist/src/index.js.map +1 -1
  100. package/dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
  101. package/dist/src/mcp/sa-impersonation-provider.js +130 -0
  102. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  103. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
  104. package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
  105. package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
  106. package/dist/src/services/chatRecordingService.d.ts +2 -1
  107. package/dist/src/services/chatRecordingService.js +2 -1
  108. package/dist/src/services/chatRecordingService.js.map +1 -1
  109. package/dist/src/services/fileSystemService.d.ts +9 -0
  110. package/dist/src/services/fileSystemService.js +11 -0
  111. package/dist/src/services/fileSystemService.js.map +1 -1
  112. package/dist/src/services/shellExecutionService.d.ts +2 -0
  113. package/dist/src/services/shellExecutionService.js +48 -7
  114. package/dist/src/services/shellExecutionService.js.map +1 -1
  115. package/dist/src/services/shellExecutionService.test.js +13 -4
  116. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  117. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +12 -2
  118. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +79 -9
  119. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  120. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +99 -1
  121. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  122. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +11 -3
  123. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +27 -4
  124. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  125. package/dist/src/telemetry/constants.d.ts +6 -24
  126. package/dist/src/telemetry/constants.js +7 -25
  127. package/dist/src/telemetry/constants.js.map +1 -1
  128. package/dist/src/telemetry/index.d.ts +5 -3
  129. package/dist/src/telemetry/index.js +10 -3
  130. package/dist/src/telemetry/index.js.map +1 -1
  131. package/dist/src/telemetry/loggers.d.ts +6 -1
  132. package/dist/src/telemetry/loggers.js +132 -12
  133. package/dist/src/telemetry/loggers.js.map +1 -1
  134. package/dist/src/telemetry/loggers.test.circular.js +3 -3
  135. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  136. package/dist/src/telemetry/loggers.test.js +160 -13
  137. package/dist/src/telemetry/loggers.test.js.map +1 -1
  138. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  139. package/dist/src/telemetry/memory-monitor.js +335 -0
  140. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  141. package/dist/src/telemetry/memory-monitor.test.d.ts +6 -0
  142. package/dist/src/telemetry/memory-monitor.test.js +472 -0
  143. package/dist/src/telemetry/memory-monitor.test.js.map +1 -0
  144. package/dist/src/telemetry/metrics.d.ts +392 -20
  145. package/dist/src/telemetry/metrics.js +463 -235
  146. package/dist/src/telemetry/metrics.js.map +1 -1
  147. package/dist/src/telemetry/metrics.test.js +391 -55
  148. package/dist/src/telemetry/metrics.test.js.map +1 -1
  149. package/dist/src/telemetry/types.d.ts +37 -1
  150. package/dist/src/telemetry/types.js +60 -0
  151. package/dist/src/telemetry/types.js.map +1 -1
  152. package/dist/src/telemetry/uiTelemetry.test.js +2 -2
  153. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  154. package/dist/src/test-utils/mock-tool.d.ts +28 -3
  155. package/dist/src/test-utils/mock-tool.js +71 -1
  156. package/dist/src/test-utils/mock-tool.js.map +1 -1
  157. package/dist/src/tools/glob.js +2 -1
  158. package/dist/src/tools/glob.js.map +1 -1
  159. package/dist/src/tools/mcp-client.d.ts +3 -2
  160. package/dist/src/tools/mcp-client.js +44 -30
  161. package/dist/src/tools/mcp-client.js.map +1 -1
  162. package/dist/src/tools/mcp-client.test.js +168 -5
  163. package/dist/src/tools/mcp-client.test.js.map +1 -1
  164. package/dist/src/tools/shell.js +2 -2
  165. package/dist/src/tools/shell.js.map +1 -1
  166. package/dist/src/tools/shell.test.js +1 -1
  167. package/dist/src/tools/shell.test.js.map +1 -1
  168. package/dist/src/tools/smart-edit.d.ts +20 -1
  169. package/dist/src/tools/smart-edit.js +149 -9
  170. package/dist/src/tools/smart-edit.js.map +1 -1
  171. package/dist/src/tools/smart-edit.test.js +150 -29
  172. package/dist/src/tools/smart-edit.test.js.map +1 -1
  173. package/dist/src/tools/tool-names.d.ts +8 -0
  174. package/dist/src/tools/tool-names.js +17 -0
  175. package/dist/src/tools/tool-names.js.map +1 -0
  176. package/dist/src/tools/tool-registry.test.js +10 -10
  177. package/dist/src/tools/tool-registry.test.js.map +1 -1
  178. package/dist/src/tools/web-fetch.js +3 -0
  179. package/dist/src/tools/web-fetch.js.map +1 -1
  180. package/dist/src/tools/web-fetch.test.js +44 -0
  181. package/dist/src/tools/web-fetch.test.js.map +1 -1
  182. package/dist/src/tools/write-file.js +2 -1
  183. package/dist/src/tools/write-file.js.map +1 -1
  184. package/dist/src/tools/write-todos.d.ts +1 -1
  185. package/dist/src/tools/write-todos.js +4 -3
  186. package/dist/src/tools/write-todos.js.map +1 -1
  187. package/dist/src/utils/editCorrector.js +2 -2
  188. package/dist/src/utils/editCorrector.js.map +1 -1
  189. package/dist/src/utils/editor.js +1 -0
  190. package/dist/src/utils/editor.js.map +1 -1
  191. package/dist/src/utils/editor.test.js +1 -0
  192. package/dist/src/utils/editor.test.js.map +1 -1
  193. package/dist/src/utils/errorParsing.d.ts +1 -1
  194. package/dist/src/utils/errorParsing.js +5 -33
  195. package/dist/src/utils/errorParsing.js.map +1 -1
  196. package/dist/src/utils/errorParsing.test.js +0 -88
  197. package/dist/src/utils/errorParsing.test.js.map +1 -1
  198. package/dist/src/utils/flashFallback.test.js +26 -45
  199. package/dist/src/utils/flashFallback.test.js.map +1 -1
  200. package/dist/src/utils/formatters.d.ts +1 -0
  201. package/dist/src/utils/formatters.js +2 -1
  202. package/dist/src/utils/formatters.js.map +1 -1
  203. package/dist/src/utils/formatters.test.d.ts +6 -0
  204. package/dist/src/utils/formatters.test.js +26 -0
  205. package/dist/src/utils/formatters.test.js.map +1 -0
  206. package/dist/src/utils/googleErrors.d.ts +104 -0
  207. package/dist/src/utils/googleErrors.js +108 -0
  208. package/dist/src/utils/googleErrors.js.map +1 -0
  209. package/dist/src/utils/googleErrors.test.d.ts +6 -0
  210. package/dist/src/utils/googleErrors.test.js +212 -0
  211. package/dist/src/utils/googleErrors.test.js.map +1 -0
  212. package/dist/src/utils/googleQuotaErrors.d.ts +35 -0
  213. package/dist/src/utils/googleQuotaErrors.js +108 -0
  214. package/dist/src/utils/googleQuotaErrors.js.map +1 -0
  215. package/dist/src/utils/googleQuotaErrors.test.d.ts +6 -0
  216. package/dist/src/utils/googleQuotaErrors.test.js +189 -0
  217. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -0
  218. package/dist/src/utils/llm-edit-fixer.js +13 -4
  219. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  220. package/dist/src/utils/llm-edit-fixer.test.js +81 -0
  221. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  222. package/dist/src/utils/memoryDiscovery.d.ts +1 -0
  223. package/dist/src/utils/memoryDiscovery.js +2 -1
  224. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  225. package/dist/src/utils/memoryDiscovery.test.js +99 -21
  226. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  227. package/dist/src/utils/memoryImportProcessor.js +13 -20
  228. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  229. package/dist/src/utils/memoryImportProcessor.test.js +14 -0
  230. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  231. package/dist/src/utils/quotaErrorDetection.d.ts +0 -2
  232. package/dist/src/utils/quotaErrorDetection.js +0 -46
  233. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  234. package/dist/src/utils/retry.d.ts +3 -1
  235. package/dist/src/utils/retry.js +53 -161
  236. package/dist/src/utils/retry.js.map +1 -1
  237. package/dist/src/utils/retry.test.js +87 -146
  238. package/dist/src/utils/retry.test.js.map +1 -1
  239. package/dist/src/utils/terminalSerializer.d.ts +1 -4
  240. package/dist/src/utils/terminalSerializer.js +3 -3
  241. package/dist/src/utils/terminalSerializer.js.map +1 -1
  242. package/dist/tsconfig.tsbuildinfo +1 -1
  243. package/package.json +1 -1
  244. package/dist/src/test-utils/tools.d.ts +0 -45
  245. package/dist/src/test-utils/tools.js +0 -105
  246. package/dist/src/test-utils/tools.js.map +0 -1
@@ -0,0 +1,335 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import v8 from 'node:v8';
7
+ import process from 'node:process';
8
+ import { bytesToMB } from '../utils/formatters.js';
9
+ import { isUserActive } from './activity-detector.js';
10
+ import { HighWaterMarkTracker } from './high-water-mark-tracker.js';
11
+ import { recordMemoryUsage, MemoryMetricType, isPerformanceMonitoringActive, } from './metrics.js';
12
+ import { RateLimiter } from './rate-limiter.js';
13
+ export class MemoryMonitor {
14
+ intervalId = null;
15
+ isRunning = false;
16
+ lastSnapshot = null;
17
+ monitoringInterval = 10000;
18
+ highWaterMarkTracker;
19
+ rateLimiter;
20
+ useEnhancedMonitoring = true;
21
+ lastCleanupTimestamp = Date.now();
22
+ static STATE_CLEANUP_INTERVAL_MS = 15 * 60 * 1000; // 15 minutes
23
+ static STATE_CLEANUP_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
24
+ constructor() {
25
+ // No config stored to avoid multi-session attribution issues
26
+ this.highWaterMarkTracker = new HighWaterMarkTracker(5); // 5% threshold
27
+ this.rateLimiter = new RateLimiter(60000); // 1 minute minimum between recordings
28
+ }
29
+ /**
30
+ * Start continuous memory monitoring
31
+ */
32
+ start(config, intervalMs = 10000) {
33
+ if (!isPerformanceMonitoringActive() || this.isRunning) {
34
+ return;
35
+ }
36
+ this.monitoringInterval = intervalMs;
37
+ this.isRunning = true;
38
+ // Take initial snapshot
39
+ this.takeSnapshot('monitoring_start', config);
40
+ // Set up periodic monitoring with enhanced logic
41
+ this.intervalId = setInterval(() => {
42
+ this.checkAndRecordIfNeeded(config);
43
+ }, this.monitoringInterval).unref();
44
+ }
45
+ /**
46
+ * Check if we should record memory metrics and do so if conditions are met
47
+ */
48
+ checkAndRecordIfNeeded(config) {
49
+ this.performPeriodicCleanup();
50
+ if (!this.useEnhancedMonitoring) {
51
+ // Fall back to original behavior
52
+ this.takeSnapshot('periodic', config);
53
+ return;
54
+ }
55
+ // Only proceed if user is active
56
+ if (!isUserActive()) {
57
+ return;
58
+ }
59
+ // Get current memory usage
60
+ const currentMemory = this.getCurrentMemoryUsage();
61
+ // Check if RSS has grown significantly (5% threshold)
62
+ const shouldRecordRss = this.highWaterMarkTracker.shouldRecordMetric('rss', currentMemory.rss);
63
+ const shouldRecordHeap = this.highWaterMarkTracker.shouldRecordMetric('heap_used', currentMemory.heapUsed);
64
+ // Also check rate limiting
65
+ const canRecordPeriodic = this.rateLimiter.shouldRecord('periodic_memory');
66
+ const canRecordHighWater = this.rateLimiter.shouldRecord('high_water_memory', true); // High priority
67
+ // Record if we have significant growth and aren't rate limited
68
+ if ((shouldRecordRss || shouldRecordHeap) && canRecordHighWater) {
69
+ const context = shouldRecordRss ? 'rss_growth' : 'heap_growth';
70
+ this.takeSnapshot(context, config);
71
+ }
72
+ else if (canRecordPeriodic) {
73
+ // Occasionally record even without growth for baseline tracking
74
+ this.takeSnapshotWithoutRecording('periodic_check', config);
75
+ }
76
+ }
77
+ /**
78
+ * Periodically prune tracker state to avoid unbounded growth when keys change.
79
+ */
80
+ performPeriodicCleanup() {
81
+ const now = Date.now();
82
+ if (now - this.lastCleanupTimestamp <
83
+ MemoryMonitor.STATE_CLEANUP_INTERVAL_MS) {
84
+ return;
85
+ }
86
+ this.lastCleanupTimestamp = now;
87
+ this.highWaterMarkTracker.cleanup(MemoryMonitor.STATE_CLEANUP_MAX_AGE_MS);
88
+ this.rateLimiter.cleanup(MemoryMonitor.STATE_CLEANUP_MAX_AGE_MS);
89
+ }
90
+ /**
91
+ * Stop continuous memory monitoring
92
+ */
93
+ stop(config) {
94
+ if (!this.isRunning) {
95
+ return;
96
+ }
97
+ if (this.intervalId) {
98
+ clearInterval(this.intervalId);
99
+ this.intervalId = null;
100
+ }
101
+ // Take final snapshot if config is provided
102
+ if (config) {
103
+ this.takeSnapshot('monitoring_stop', config);
104
+ }
105
+ this.isRunning = false;
106
+ }
107
+ /**
108
+ * Take a memory snapshot and record metrics
109
+ */
110
+ takeSnapshot(context, config) {
111
+ const memUsage = process.memoryUsage();
112
+ const heapStats = v8.getHeapStatistics();
113
+ const snapshot = {
114
+ timestamp: Date.now(),
115
+ heapUsed: memUsage.heapUsed,
116
+ heapTotal: memUsage.heapTotal,
117
+ external: memUsage.external,
118
+ rss: memUsage.rss,
119
+ arrayBuffers: memUsage.arrayBuffers,
120
+ heapSizeLimit: heapStats.heap_size_limit,
121
+ };
122
+ // Record memory metrics if monitoring is active
123
+ if (isPerformanceMonitoringActive()) {
124
+ recordMemoryUsage(config, snapshot.heapUsed, {
125
+ memory_type: MemoryMetricType.HEAP_USED,
126
+ component: context,
127
+ });
128
+ recordMemoryUsage(config, snapshot.heapTotal, {
129
+ memory_type: MemoryMetricType.HEAP_TOTAL,
130
+ component: context,
131
+ });
132
+ recordMemoryUsage(config, snapshot.external, {
133
+ memory_type: MemoryMetricType.EXTERNAL,
134
+ component: context,
135
+ });
136
+ recordMemoryUsage(config, snapshot.rss, {
137
+ memory_type: MemoryMetricType.RSS,
138
+ component: context,
139
+ });
140
+ }
141
+ this.lastSnapshot = snapshot;
142
+ return snapshot;
143
+ }
144
+ /**
145
+ * Take a memory snapshot without recording metrics (for internal tracking)
146
+ */
147
+ takeSnapshotWithoutRecording(_context, _config) {
148
+ const memUsage = process.memoryUsage();
149
+ const heapStats = v8.getHeapStatistics();
150
+ const snapshot = {
151
+ timestamp: Date.now(),
152
+ heapUsed: memUsage.heapUsed,
153
+ heapTotal: memUsage.heapTotal,
154
+ external: memUsage.external,
155
+ rss: memUsage.rss,
156
+ arrayBuffers: memUsage.arrayBuffers,
157
+ heapSizeLimit: heapStats.heap_size_limit,
158
+ };
159
+ // Update internal tracking but don't record metrics
160
+ this.highWaterMarkTracker.shouldRecordMetric('rss', snapshot.rss);
161
+ this.highWaterMarkTracker.shouldRecordMetric('heap_used', snapshot.heapUsed);
162
+ this.lastSnapshot = snapshot;
163
+ return snapshot;
164
+ }
165
+ /**
166
+ * Get current memory usage without recording metrics
167
+ */
168
+ getCurrentMemoryUsage() {
169
+ const memUsage = process.memoryUsage();
170
+ const heapStats = v8.getHeapStatistics();
171
+ return {
172
+ timestamp: Date.now(),
173
+ heapUsed: memUsage.heapUsed,
174
+ heapTotal: memUsage.heapTotal,
175
+ external: memUsage.external,
176
+ rss: memUsage.rss,
177
+ arrayBuffers: memUsage.arrayBuffers,
178
+ heapSizeLimit: heapStats.heap_size_limit,
179
+ };
180
+ }
181
+ /**
182
+ * Get memory growth since last snapshot
183
+ */
184
+ getMemoryGrowth() {
185
+ if (!this.lastSnapshot) {
186
+ return null;
187
+ }
188
+ const current = this.getCurrentMemoryUsage();
189
+ return {
190
+ heapUsed: current.heapUsed - this.lastSnapshot.heapUsed,
191
+ heapTotal: current.heapTotal - this.lastSnapshot.heapTotal,
192
+ external: current.external - this.lastSnapshot.external,
193
+ rss: current.rss - this.lastSnapshot.rss,
194
+ arrayBuffers: current.arrayBuffers - this.lastSnapshot.arrayBuffers,
195
+ };
196
+ }
197
+ /**
198
+ * Get detailed heap statistics
199
+ */
200
+ getHeapStatistics() {
201
+ return v8.getHeapStatistics();
202
+ }
203
+ /**
204
+ * Get heap space statistics
205
+ */
206
+ getHeapSpaceStatistics() {
207
+ return v8.getHeapSpaceStatistics();
208
+ }
209
+ /**
210
+ * Get process CPU and memory metrics
211
+ */
212
+ getProcessMetrics() {
213
+ return {
214
+ cpuUsage: process.cpuUsage(),
215
+ memoryUsage: process.memoryUsage(),
216
+ uptime: process.uptime(),
217
+ };
218
+ }
219
+ /**
220
+ * Record memory usage for a specific component or operation
221
+ */
222
+ recordComponentMemoryUsage(config, component, operation) {
223
+ const snapshot = this.takeSnapshot(operation ? `${component}_${operation}` : component, config);
224
+ return snapshot;
225
+ }
226
+ /**
227
+ * Check if memory usage exceeds threshold
228
+ */
229
+ checkMemoryThreshold(thresholdMB) {
230
+ const current = this.getCurrentMemoryUsage();
231
+ const currentMB = bytesToMB(current.heapUsed);
232
+ return currentMB > thresholdMB;
233
+ }
234
+ /**
235
+ * Get memory usage summary in MB
236
+ */
237
+ getMemoryUsageSummary() {
238
+ const current = this.getCurrentMemoryUsage();
239
+ return {
240
+ heapUsedMB: Math.round(bytesToMB(current.heapUsed) * 100) / 100,
241
+ heapTotalMB: Math.round(bytesToMB(current.heapTotal) * 100) / 100,
242
+ externalMB: Math.round(bytesToMB(current.external) * 100) / 100,
243
+ rssMB: Math.round(bytesToMB(current.rss) * 100) / 100,
244
+ heapSizeLimitMB: Math.round(bytesToMB(current.heapSizeLimit) * 100) / 100,
245
+ };
246
+ }
247
+ /**
248
+ * Enable or disable enhanced monitoring features
249
+ */
250
+ setEnhancedMonitoring(enabled) {
251
+ this.useEnhancedMonitoring = enabled;
252
+ }
253
+ /**
254
+ * Get high-water mark statistics
255
+ */
256
+ getHighWaterMarkStats() {
257
+ return this.highWaterMarkTracker.getAllHighWaterMarks();
258
+ }
259
+ /**
260
+ * Get rate limiting statistics
261
+ */
262
+ getRateLimitingStats() {
263
+ return this.rateLimiter.getStats();
264
+ }
265
+ /**
266
+ * Force record memory metrics (bypasses rate limiting for critical events)
267
+ */
268
+ forceRecordMemory(config, context = 'forced') {
269
+ this.rateLimiter.forceRecord('forced_memory');
270
+ return this.takeSnapshot(context, config);
271
+ }
272
+ /**
273
+ * Reset high-water marks (useful after memory optimizations)
274
+ */
275
+ resetHighWaterMarks() {
276
+ this.highWaterMarkTracker.resetAllHighWaterMarks();
277
+ }
278
+ /**
279
+ * Cleanup resources
280
+ */
281
+ destroy() {
282
+ this.stop();
283
+ this.rateLimiter.reset();
284
+ this.highWaterMarkTracker.resetAllHighWaterMarks();
285
+ }
286
+ }
287
+ // Singleton instance for global memory monitoring
288
+ let globalMemoryMonitor = null;
289
+ /**
290
+ * Initialize global memory monitor
291
+ */
292
+ export function initializeMemoryMonitor() {
293
+ if (!globalMemoryMonitor) {
294
+ globalMemoryMonitor = new MemoryMonitor();
295
+ }
296
+ return globalMemoryMonitor;
297
+ }
298
+ /**
299
+ * Get global memory monitor instance
300
+ */
301
+ export function getMemoryMonitor() {
302
+ return globalMemoryMonitor;
303
+ }
304
+ /**
305
+ * Record memory usage for current operation
306
+ */
307
+ export function recordCurrentMemoryUsage(config, context) {
308
+ const monitor = initializeMemoryMonitor();
309
+ return monitor.takeSnapshot(context, config);
310
+ }
311
+ /**
312
+ * Start global memory monitoring
313
+ */
314
+ export function startGlobalMemoryMonitoring(config, intervalMs = 10000) {
315
+ const monitor = initializeMemoryMonitor();
316
+ monitor.start(config, intervalMs);
317
+ }
318
+ /**
319
+ * Stop global memory monitoring
320
+ */
321
+ export function stopGlobalMemoryMonitoring(config) {
322
+ if (globalMemoryMonitor) {
323
+ globalMemoryMonitor.stop(config);
324
+ }
325
+ }
326
+ /**
327
+ * Reset the global memory monitor singleton (test-only helper).
328
+ */
329
+ export function _resetGlobalMemoryMonitorForTests() {
330
+ if (globalMemoryMonitor) {
331
+ globalMemoryMonitor.destroy();
332
+ }
333
+ globalMemoryMonitor = null;
334
+ }
335
+ //# sourceMappingURL=memory-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-monitor.js","sourceRoot":"","sources":["../../../src/telemetry/memory-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};