@google/gemini-cli-core 0.10.0-preview.3 → 0.11.0-nightly.20251021.e72c00cf

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 (209) hide show
  1. package/README.md +9 -0
  2. package/dist/google-gemini-cli-core-0.11.0-nightly.20251020.a96f0659.tgz +0 -0
  3. package/dist/src/agents/codebase-investigator.js +2 -5
  4. package/dist/src/agents/codebase-investigator.js.map +1 -1
  5. package/dist/src/agents/executor.js +6 -13
  6. package/dist/src/agents/executor.js.map +1 -1
  7. package/dist/src/agents/executor.test.js +36 -31
  8. package/dist/src/agents/executor.test.js.map +1 -1
  9. package/dist/src/code_assist/converter.d.ts +1 -0
  10. package/dist/src/code_assist/converter.js +1 -0
  11. package/dist/src/code_assist/converter.js.map +1 -1
  12. package/dist/src/code_assist/converter.test.js +19 -0
  13. package/dist/src/code_assist/converter.test.js.map +1 -1
  14. package/dist/src/config/config.d.ts +6 -8
  15. package/dist/src/config/config.js +14 -17
  16. package/dist/src/config/config.js.map +1 -1
  17. package/dist/src/config/config.test.js +0 -4
  18. package/dist/src/config/config.test.js.map +1 -1
  19. package/dist/src/confirmation-bus/message-bus.d.ts +2 -1
  20. package/dist/src/confirmation-bus/message-bus.js +7 -1
  21. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  22. package/dist/src/confirmation-bus/types.d.ts +12 -2
  23. package/dist/src/confirmation-bus/types.js +1 -0
  24. package/dist/src/confirmation-bus/types.js.map +1 -1
  25. package/dist/src/core/client.test.js +0 -1
  26. package/dist/src/core/client.test.js.map +1 -1
  27. package/dist/src/core/coreToolScheduler.d.ts +7 -0
  28. package/dist/src/core/coreToolScheduler.js +46 -10
  29. package/dist/src/core/coreToolScheduler.js.map +1 -1
  30. package/dist/src/core/coreToolScheduler.test.js +124 -3
  31. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  32. package/dist/src/core/geminiChat.js +1 -0
  33. package/dist/src/core/geminiChat.js.map +1 -1
  34. package/dist/src/core/nonInteractiveToolExecutor.test.js +3 -0
  35. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  36. package/dist/src/core/prompts.js +13 -20
  37. package/dist/src/core/prompts.js.map +1 -1
  38. package/dist/src/core/turn.d.ts +2 -0
  39. package/dist/src/core/turn.js +3 -1
  40. package/dist/src/core/turn.js.map +1 -1
  41. package/dist/src/core/turn.test.js +48 -0
  42. package/dist/src/core/turn.test.js.map +1 -1
  43. package/dist/src/generated/git-commit.d.ts +2 -2
  44. package/dist/src/generated/git-commit.js +2 -2
  45. package/dist/src/generated/git-commit.js.map +1 -1
  46. package/dist/src/index.d.ts +4 -0
  47. package/dist/src/index.js +4 -0
  48. package/dist/src/index.js.map +1 -1
  49. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  50. package/dist/src/output/stream-json-formatter.js +52 -0
  51. package/dist/src/output/stream-json-formatter.js.map +1 -0
  52. package/dist/src/output/stream-json-formatter.test.js +479 -0
  53. package/dist/src/output/stream-json-formatter.test.js.map +1 -0
  54. package/dist/src/output/types.d.ts +63 -1
  55. package/dist/src/output/types.js +11 -0
  56. package/dist/src/output/types.js.map +1 -1
  57. package/dist/src/services/shellExecutionService.js +30 -21
  58. package/dist/src/services/shellExecutionService.js.map +1 -1
  59. package/dist/src/services/shellExecutionService.test.js +16 -11
  60. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  61. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  62. package/dist/src/telemetry/activity-monitor.js +208 -0
  63. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  64. package/dist/src/telemetry/activity-monitor.test.d.ts +6 -0
  65. package/dist/src/telemetry/activity-monitor.test.js +248 -0
  66. package/dist/src/telemetry/activity-monitor.test.js.map +1 -0
  67. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -0
  68. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +7 -7
  69. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  70. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +3 -10
  71. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  72. package/dist/src/telemetry/index.d.ts +2 -1
  73. package/dist/src/telemetry/index.js +2 -1
  74. package/dist/src/telemetry/index.js.map +1 -1
  75. package/dist/src/telemetry/loggers.test.js +0 -1
  76. package/dist/src/telemetry/loggers.test.js.map +1 -1
  77. package/dist/src/tools/edit.js +5 -5
  78. package/dist/src/tools/edit.js.map +1 -1
  79. package/dist/src/tools/edit.test.js +0 -1
  80. package/dist/src/tools/edit.test.js.map +1 -1
  81. package/dist/src/tools/glob.d.ts +3 -2
  82. package/dist/src/tools/glob.js +6 -6
  83. package/dist/src/tools/glob.js.map +1 -1
  84. package/dist/src/tools/grep.d.ts +3 -2
  85. package/dist/src/tools/grep.js +16 -10
  86. package/dist/src/tools/grep.js.map +1 -1
  87. package/dist/src/tools/ls.d.ts +3 -2
  88. package/dist/src/tools/ls.js +8 -7
  89. package/dist/src/tools/ls.js.map +1 -1
  90. package/dist/src/tools/mcp-client-manager.d.ts +2 -9
  91. package/dist/src/tools/mcp-client-manager.js +6 -14
  92. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  93. package/dist/src/tools/mcp-client-manager.test.js +16 -6
  94. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  95. package/dist/src/tools/memoryTool.d.ts +1 -1
  96. package/dist/src/tools/memoryTool.js +3 -2
  97. package/dist/src/tools/memoryTool.js.map +1 -1
  98. package/dist/src/tools/message-bus-integration.test.js +14 -1
  99. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  100. package/dist/src/tools/read-file.d.ts +4 -3
  101. package/dist/src/tools/read-file.js +9 -8
  102. package/dist/src/tools/read-file.js.map +1 -1
  103. package/dist/src/tools/read-many-files.d.ts +4 -3
  104. package/dist/src/tools/read-many-files.js +11 -8
  105. package/dist/src/tools/read-many-files.js.map +1 -1
  106. package/dist/src/tools/ripGrep.d.ts +3 -2
  107. package/dist/src/tools/ripGrep.js +45 -16
  108. package/dist/src/tools/ripGrep.js.map +1 -1
  109. package/dist/src/tools/ripGrep.test.js +106 -60
  110. package/dist/src/tools/ripGrep.test.js.map +1 -1
  111. package/dist/src/tools/shell.d.ts +1 -1
  112. package/dist/src/tools/shell.js +21 -57
  113. package/dist/src/tools/shell.js.map +1 -1
  114. package/dist/src/tools/shell.test.js +61 -8
  115. package/dist/src/tools/shell.test.js.map +1 -1
  116. package/dist/src/tools/smart-edit.js +4 -4
  117. package/dist/src/tools/smart-edit.js.map +1 -1
  118. package/dist/src/tools/smart-edit.test.js +0 -1
  119. package/dist/src/tools/smart-edit.test.js.map +1 -1
  120. package/dist/src/tools/tool-names.d.ts +8 -0
  121. package/dist/src/tools/tool-names.js +8 -5
  122. package/dist/src/tools/tool-names.js.map +1 -1
  123. package/dist/src/tools/tool-registry.js +1 -1
  124. package/dist/src/tools/tool-registry.js.map +1 -1
  125. package/dist/src/tools/tools.d.ts +15 -9
  126. package/dist/src/tools/tools.js +51 -38
  127. package/dist/src/tools/tools.js.map +1 -1
  128. package/dist/src/tools/web-fetch.d.ts +4 -3
  129. package/dist/src/tools/web-fetch.js +45 -20
  130. package/dist/src/tools/web-fetch.js.map +1 -1
  131. package/dist/src/tools/web-fetch.test.js +261 -0
  132. package/dist/src/tools/web-fetch.test.js.map +1 -1
  133. package/dist/src/tools/web-search.d.ts +4 -3
  134. package/dist/src/tools/web-search.js +8 -6
  135. package/dist/src/tools/web-search.js.map +1 -1
  136. package/dist/src/tools/write-file.d.ts +1 -1
  137. package/dist/src/tools/write-file.js +1 -1
  138. package/dist/src/tools/write-file.js.map +1 -1
  139. package/dist/src/tools/write-file.test.js +0 -1
  140. package/dist/src/tools/write-file.test.js.map +1 -1
  141. package/dist/src/tools/write-todos.d.ts +2 -7
  142. package/dist/src/tools/write-todos.js +1 -1
  143. package/dist/src/tools/write-todos.js.map +1 -1
  144. package/dist/src/tools/write-todos.test.js +2 -2
  145. package/dist/src/tools/write-todos.test.js.map +1 -1
  146. package/dist/src/utils/debugLogger.d.ts +25 -0
  147. package/dist/src/utils/debugLogger.js +33 -0
  148. package/dist/src/utils/debugLogger.js.map +1 -0
  149. package/dist/src/utils/debugLogger.test.d.ts +6 -0
  150. package/dist/src/utils/debugLogger.test.js +67 -0
  151. package/dist/src/utils/debugLogger.test.js.map +1 -0
  152. package/dist/src/utils/delay.d.ts +16 -0
  153. package/dist/src/utils/delay.js +43 -0
  154. package/dist/src/utils/delay.js.map +1 -0
  155. package/dist/src/utils/delay.test.d.ts +6 -0
  156. package/dist/src/utils/delay.test.js +88 -0
  157. package/dist/src/utils/delay.test.js.map +1 -0
  158. package/dist/src/utils/editCorrector.js +5 -9
  159. package/dist/src/utils/editCorrector.js.map +1 -1
  160. package/dist/src/utils/editCorrector.test.js +3 -5
  161. package/dist/src/utils/editCorrector.test.js.map +1 -1
  162. package/dist/src/utils/editor.js +33 -38
  163. package/dist/src/utils/editor.js.map +1 -1
  164. package/dist/src/utils/environmentContext.js +0 -33
  165. package/dist/src/utils/environmentContext.js.map +1 -1
  166. package/dist/src/utils/environmentContext.test.js +0 -34
  167. package/dist/src/utils/environmentContext.test.js.map +1 -1
  168. package/dist/src/utils/fetch.d.ts +1 -0
  169. package/dist/src/utils/fetch.js +9 -0
  170. package/dist/src/utils/fetch.js.map +1 -1
  171. package/dist/src/utils/fileUtils.d.ts +4 -0
  172. package/dist/src/utils/fileUtils.js +31 -0
  173. package/dist/src/utils/fileUtils.js.map +1 -1
  174. package/dist/src/utils/fileUtils.test.js +12 -1
  175. package/dist/src/utils/fileUtils.test.js.map +1 -1
  176. package/dist/src/utils/gitIgnoreParser.js +7 -6
  177. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  178. package/dist/src/utils/gitIgnoreParser.test.js +30 -0
  179. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  180. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  181. package/dist/src/utils/memoryDiscovery.js +9 -9
  182. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  183. package/dist/src/utils/memoryDiscovery.test.js +39 -17
  184. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  185. package/dist/src/utils/retry.d.ts +1 -0
  186. package/dist/src/utils/retry.js +14 -12
  187. package/dist/src/utils/retry.js.map +1 -1
  188. package/dist/src/utils/retry.test.js +17 -0
  189. package/dist/src/utils/retry.test.js.map +1 -1
  190. package/dist/src/utils/safeJsonStringify.d.ts +4 -4
  191. package/dist/src/utils/safeJsonStringify.js +31 -7
  192. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  193. package/dist/src/utils/shell-utils.d.ts +14 -2
  194. package/dist/src/utils/shell-utils.js +353 -136
  195. package/dist/src/utils/shell-utils.js.map +1 -1
  196. package/dist/src/utils/shell-utils.test.js +154 -60
  197. package/dist/src/utils/shell-utils.test.js.map +1 -1
  198. package/dist/src/utils/tool-utils.d.ts +2 -2
  199. package/dist/src/utils/tool-utils.js +14 -5
  200. package/dist/src/utils/tool-utils.js.map +1 -1
  201. package/dist/tsconfig.tsbuildinfo +1 -1
  202. package/package.json +5 -3
  203. package/dist/google-gemini-cli-core-0.10.0-preview.2.tgz +0 -0
  204. package/dist/src/core/subagent.d.ts +0 -236
  205. package/dist/src/core/subagent.js +0 -482
  206. package/dist/src/core/subagent.js.map +0 -1
  207. package/dist/src/core/subagent.test.js +0 -556
  208. package/dist/src/core/subagent.test.js.map +0 -1
  209. /package/dist/src/{core/subagent.test.d.ts → output/stream-json-formatter.test.d.ts} +0 -0
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { isPerformanceMonitoringActive } from './metrics.js';
7
+ import { getMemoryMonitor } from './memory-monitor.js';
8
+ import { ActivityType } from './activity-types.js';
9
+ /**
10
+ * Default configuration for activity monitoring
11
+ */
12
+ export const DEFAULT_ACTIVITY_CONFIG = {
13
+ enabled: true,
14
+ snapshotThrottleMs: 1000, // 1 second minimum between snapshots
15
+ maxEventBuffer: 100,
16
+ triggerActivities: [
17
+ ActivityType.USER_INPUT_START,
18
+ ActivityType.MESSAGE_ADDED,
19
+ ActivityType.TOOL_CALL_SCHEDULED,
20
+ ActivityType.STREAM_START,
21
+ ],
22
+ };
23
+ /**
24
+ * Activity monitor class that tracks user activity and triggers memory monitoring
25
+ */
26
+ export class ActivityMonitor {
27
+ listeners = new Set();
28
+ eventBuffer = [];
29
+ lastSnapshotTime = 0;
30
+ config;
31
+ isActive = false;
32
+ memoryMonitoringListener = null;
33
+ constructor(config = DEFAULT_ACTIVITY_CONFIG) {
34
+ this.config = { ...config };
35
+ }
36
+ /**
37
+ * Start activity monitoring
38
+ */
39
+ start(coreConfig) {
40
+ if (!isPerformanceMonitoringActive() || this.isActive) {
41
+ return;
42
+ }
43
+ this.isActive = true;
44
+ // Register default memory monitoring listener
45
+ this.memoryMonitoringListener = (event) => {
46
+ this.handleMemoryMonitoringActivity(event, coreConfig);
47
+ };
48
+ this.addListener(this.memoryMonitoringListener);
49
+ // Record activity monitoring start
50
+ this.recordActivity(ActivityType.MANUAL_TRIGGER, 'activity_monitoring_start');
51
+ }
52
+ /**
53
+ * Stop activity monitoring
54
+ */
55
+ stop() {
56
+ if (!this.isActive) {
57
+ return;
58
+ }
59
+ this.isActive = false;
60
+ if (this.memoryMonitoringListener) {
61
+ this.removeListener(this.memoryMonitoringListener);
62
+ this.memoryMonitoringListener = null;
63
+ }
64
+ this.eventBuffer = [];
65
+ }
66
+ /**
67
+ * Add an activity listener
68
+ */
69
+ addListener(listener) {
70
+ this.listeners.add(listener);
71
+ }
72
+ /**
73
+ * Remove an activity listener
74
+ */
75
+ removeListener(listener) {
76
+ this.listeners.delete(listener);
77
+ }
78
+ /**
79
+ * Record a user activity event
80
+ */
81
+ recordActivity(type, context, metadata) {
82
+ if (!this.isActive || !this.config.enabled) {
83
+ return;
84
+ }
85
+ const event = {
86
+ type,
87
+ timestamp: Date.now(),
88
+ context,
89
+ metadata,
90
+ };
91
+ // Add to buffer
92
+ this.eventBuffer.push(event);
93
+ if (this.eventBuffer.length > this.config.maxEventBuffer) {
94
+ this.eventBuffer.shift(); // Remove oldest event
95
+ }
96
+ // Notify listeners
97
+ this.listeners.forEach((listener) => {
98
+ try {
99
+ listener(event);
100
+ }
101
+ catch (error) {
102
+ // Silently catch listener errors to avoid disrupting the application
103
+ console.debug('ActivityMonitor listener error:', error);
104
+ }
105
+ });
106
+ }
107
+ /**
108
+ * Get recent activity events
109
+ */
110
+ getRecentActivity(limit) {
111
+ const events = [...this.eventBuffer];
112
+ return limit ? events.slice(-limit) : events;
113
+ }
114
+ /**
115
+ * Get activity statistics
116
+ */
117
+ getActivityStats() {
118
+ const eventTypes = {};
119
+ let start = Number.MAX_SAFE_INTEGER;
120
+ let end = 0;
121
+ for (const event of this.eventBuffer) {
122
+ eventTypes[event.type] = (eventTypes[event.type] || 0) + 1;
123
+ start = Math.min(start, event.timestamp);
124
+ end = Math.max(end, event.timestamp);
125
+ }
126
+ return {
127
+ totalEvents: this.eventBuffer.length,
128
+ eventTypes,
129
+ timeRange: this.eventBuffer.length > 0 ? { start, end } : null,
130
+ };
131
+ }
132
+ /**
133
+ * Update configuration
134
+ */
135
+ updateConfig(newConfig) {
136
+ this.config = { ...this.config, ...newConfig };
137
+ }
138
+ /**
139
+ * Handle memory monitoring for activity events
140
+ */
141
+ handleMemoryMonitoringActivity(event, config) {
142
+ // Check if this activity type should trigger memory monitoring
143
+ if (!this.config.triggerActivities.includes(event.type)) {
144
+ return;
145
+ }
146
+ // Throttle memory snapshots
147
+ const now = Date.now();
148
+ if (now - this.lastSnapshotTime < this.config.snapshotThrottleMs) {
149
+ return;
150
+ }
151
+ this.lastSnapshotTime = now;
152
+ // Take memory snapshot
153
+ const memoryMonitor = getMemoryMonitor();
154
+ if (memoryMonitor) {
155
+ const context = event.context
156
+ ? `activity_${event.type}_${event.context}`
157
+ : `activity_${event.type}`;
158
+ memoryMonitor.takeSnapshot(context, config);
159
+ }
160
+ }
161
+ /**
162
+ * Check if monitoring is active
163
+ */
164
+ isMonitoringActive() {
165
+ return this.isActive && this.config.enabled;
166
+ }
167
+ }
168
+ // Singleton instance for global activity monitoring
169
+ let globalActivityMonitor = null;
170
+ /**
171
+ * Initialize global activity monitor
172
+ */
173
+ export function initializeActivityMonitor(config) {
174
+ if (!globalActivityMonitor) {
175
+ globalActivityMonitor = new ActivityMonitor(config);
176
+ }
177
+ return globalActivityMonitor;
178
+ }
179
+ /**
180
+ * Get global activity monitor instance
181
+ */
182
+ export function getActivityMonitor() {
183
+ return globalActivityMonitor;
184
+ }
185
+ /**
186
+ * Record a user activity on the global monitor (convenience function)
187
+ */
188
+ export function recordGlobalActivity(type, context, metadata) {
189
+ if (globalActivityMonitor) {
190
+ globalActivityMonitor.recordActivity(type, context, metadata);
191
+ }
192
+ }
193
+ /**
194
+ * Start global activity monitoring
195
+ */
196
+ export function startGlobalActivityMonitoring(coreConfig, activityConfig) {
197
+ const monitor = initializeActivityMonitor(activityConfig);
198
+ monitor.start(coreConfig);
199
+ }
200
+ /**
201
+ * Stop global activity monitoring
202
+ */
203
+ export function stopGlobalActivityMonitoring() {
204
+ if (globalActivityMonitor) {
205
+ globalActivityMonitor.stop();
206
+ }
207
+ }
208
+ //# sourceMappingURL=activity-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-monitor.js","sourceRoot":"","sources":["../../../src/telemetry/activity-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 {};
@@ -0,0 +1,248 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import { ActivityMonitor, DEFAULT_ACTIVITY_CONFIG, initializeActivityMonitor, getActivityMonitor, recordGlobalActivity, startGlobalActivityMonitoring, stopGlobalActivityMonitoring, } from './activity-monitor.js';
8
+ import { ActivityType } from './activity-types.js';
9
+ // Mock the dependencies
10
+ vi.mock('./metrics.js', () => ({
11
+ isPerformanceMonitoringActive: vi.fn(() => true),
12
+ }));
13
+ vi.mock('./memory-monitor.js', () => ({
14
+ getMemoryMonitor: vi.fn(() => ({
15
+ takeSnapshot: vi.fn(() => ({
16
+ timestamp: Date.now(),
17
+ heapUsed: 1000000,
18
+ heapTotal: 2000000,
19
+ external: 500000,
20
+ rss: 3000000,
21
+ arrayBuffers: 100000,
22
+ heapSizeLimit: 4000000,
23
+ })),
24
+ })),
25
+ }));
26
+ describe('ActivityMonitor', () => {
27
+ let activityMonitor;
28
+ let mockConfig;
29
+ beforeEach(() => {
30
+ vi.clearAllMocks();
31
+ mockConfig = {
32
+ getSessionId: () => 'test-session-123',
33
+ };
34
+ activityMonitor = new ActivityMonitor();
35
+ });
36
+ afterEach(() => {
37
+ activityMonitor.stop();
38
+ });
39
+ describe('constructor', () => {
40
+ it('should initialize with default config', () => {
41
+ const monitor = new ActivityMonitor();
42
+ expect(monitor).toBeDefined();
43
+ expect(monitor.isMonitoringActive()).toBe(false);
44
+ });
45
+ it('should initialize with custom config', () => {
46
+ const customConfig = {
47
+ ...DEFAULT_ACTIVITY_CONFIG,
48
+ snapshotThrottleMs: 2000,
49
+ };
50
+ const monitor = new ActivityMonitor(customConfig);
51
+ expect(monitor).toBeDefined();
52
+ });
53
+ });
54
+ describe('start and stop', () => {
55
+ it('should start and stop monitoring', () => {
56
+ expect(activityMonitor.isMonitoringActive()).toBe(false);
57
+ activityMonitor.start(mockConfig);
58
+ expect(activityMonitor.isMonitoringActive()).toBe(true);
59
+ activityMonitor.stop();
60
+ expect(activityMonitor.isMonitoringActive()).toBe(false);
61
+ });
62
+ it('should not start monitoring when already active', () => {
63
+ activityMonitor.start(mockConfig);
64
+ expect(activityMonitor.isMonitoringActive()).toBe(true);
65
+ // Should not affect already active monitor
66
+ activityMonitor.start(mockConfig);
67
+ expect(activityMonitor.isMonitoringActive()).toBe(true);
68
+ });
69
+ });
70
+ describe('recordActivity', () => {
71
+ beforeEach(() => {
72
+ activityMonitor.start(mockConfig);
73
+ });
74
+ it('should record activity events', () => {
75
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START, 'test-context');
76
+ const stats = activityMonitor.getActivityStats();
77
+ expect(stats.totalEvents).toBe(2); // includes the start event
78
+ expect(stats.eventTypes[ActivityType.USER_INPUT_START]).toBe(1);
79
+ });
80
+ it('should include metadata in activity events', () => {
81
+ const metadata = { key: 'value', count: 42 };
82
+ activityMonitor.recordActivity(ActivityType.MESSAGE_ADDED, 'test-context', metadata);
83
+ const recentActivity = activityMonitor.getRecentActivity(1);
84
+ expect(recentActivity[0].metadata).toEqual(metadata);
85
+ });
86
+ it('should not record activity when monitoring is disabled', () => {
87
+ activityMonitor.updateConfig({ enabled: false });
88
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START);
89
+ const stats = activityMonitor.getActivityStats();
90
+ expect(stats.totalEvents).toBe(1); // only the start event
91
+ });
92
+ it('should limit event buffer size', () => {
93
+ activityMonitor.updateConfig({ maxEventBuffer: 3 });
94
+ // Record more events than buffer size
95
+ for (let i = 0; i < 5; i++) {
96
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START, `event-${i}`);
97
+ }
98
+ const stats = activityMonitor.getActivityStats();
99
+ expect(stats.totalEvents).toBe(3); // buffer limit
100
+ });
101
+ });
102
+ describe('listeners', () => {
103
+ let listenerCallCount;
104
+ let lastEvent;
105
+ beforeEach(() => {
106
+ listenerCallCount = 0;
107
+ lastEvent = null;
108
+ activityMonitor.start(mockConfig);
109
+ });
110
+ it('should notify listeners of activity events', () => {
111
+ const listener = (event) => {
112
+ listenerCallCount++;
113
+ lastEvent = event;
114
+ };
115
+ activityMonitor.addListener(listener);
116
+ activityMonitor.recordActivity(ActivityType.MESSAGE_ADDED, 'test');
117
+ expect(listenerCallCount).toBe(1);
118
+ expect(lastEvent?.type).toBe(ActivityType.MESSAGE_ADDED);
119
+ expect(lastEvent?.context).toBe('test');
120
+ });
121
+ it('should remove listeners correctly', () => {
122
+ const listener = () => {
123
+ listenerCallCount++;
124
+ };
125
+ activityMonitor.addListener(listener);
126
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START);
127
+ expect(listenerCallCount).toBe(1);
128
+ activityMonitor.removeListener(listener);
129
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START);
130
+ expect(listenerCallCount).toBe(1); // Should not increase
131
+ });
132
+ it('should handle listener errors gracefully', () => {
133
+ const faultyListener = () => {
134
+ throw new Error('Listener error');
135
+ };
136
+ const goodListener = () => {
137
+ listenerCallCount++;
138
+ };
139
+ // Spy on console.debug to check error handling
140
+ const debugSpy = vi.spyOn(console, 'debug').mockImplementation(() => { });
141
+ activityMonitor.addListener(faultyListener);
142
+ activityMonitor.addListener(goodListener);
143
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START);
144
+ expect(listenerCallCount).toBe(1); // Good listener should still work
145
+ expect(debugSpy).toHaveBeenCalled();
146
+ debugSpy.mockRestore();
147
+ });
148
+ });
149
+ describe('getActivityStats', () => {
150
+ beforeEach(() => {
151
+ activityMonitor.start(mockConfig);
152
+ });
153
+ it('should return correct activity statistics', () => {
154
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START);
155
+ activityMonitor.recordActivity(ActivityType.MESSAGE_ADDED);
156
+ activityMonitor.recordActivity(ActivityType.USER_INPUT_START);
157
+ const stats = activityMonitor.getActivityStats();
158
+ expect(stats.totalEvents).toBe(4); // includes start event
159
+ expect(stats.eventTypes[ActivityType.USER_INPUT_START]).toBe(2);
160
+ expect(stats.eventTypes[ActivityType.MESSAGE_ADDED]).toBe(1);
161
+ expect(stats.timeRange).toBeDefined();
162
+ });
163
+ it('should return null time range for empty buffer', () => {
164
+ const emptyMonitor = new ActivityMonitor();
165
+ const stats = emptyMonitor.getActivityStats();
166
+ expect(stats.totalEvents).toBe(0);
167
+ expect(stats.timeRange).toBeNull();
168
+ });
169
+ });
170
+ describe('updateConfig', () => {
171
+ it('should update configuration correctly', () => {
172
+ const newConfig = { snapshotThrottleMs: 2000 };
173
+ activityMonitor.updateConfig(newConfig);
174
+ // Config should be updated (tested indirectly through behavior)
175
+ expect(activityMonitor).toBeDefined();
176
+ });
177
+ });
178
+ });
179
+ describe('Global activity monitoring functions', () => {
180
+ let mockConfig;
181
+ beforeEach(() => {
182
+ mockConfig = {
183
+ getSessionId: () => 'test-session-456',
184
+ };
185
+ vi.clearAllMocks();
186
+ });
187
+ afterEach(() => {
188
+ stopGlobalActivityMonitoring();
189
+ });
190
+ describe('initializeActivityMonitor', () => {
191
+ it('should create global monitor instance', () => {
192
+ const monitor = initializeActivityMonitor();
193
+ expect(monitor).toBeDefined();
194
+ expect(getActivityMonitor()).toBe(monitor);
195
+ });
196
+ it('should return same instance on subsequent calls', () => {
197
+ const monitor1 = initializeActivityMonitor();
198
+ const monitor2 = initializeActivityMonitor();
199
+ expect(monitor1).toBe(monitor2);
200
+ });
201
+ });
202
+ describe('recordGlobalActivity', () => {
203
+ it('should record activity through global monitor', () => {
204
+ startGlobalActivityMonitoring(mockConfig);
205
+ recordGlobalActivity(ActivityType.TOOL_CALL_SCHEDULED, 'global-test');
206
+ const monitor = getActivityMonitor();
207
+ const stats = monitor?.getActivityStats();
208
+ expect(stats?.totalEvents).toBeGreaterThan(0);
209
+ });
210
+ it('should handle missing global monitor gracefully', () => {
211
+ stopGlobalActivityMonitoring();
212
+ // Should not throw error
213
+ expect(() => {
214
+ recordGlobalActivity(ActivityType.USER_INPUT_START);
215
+ }).not.toThrow();
216
+ });
217
+ });
218
+ describe('startGlobalActivityMonitoring', () => {
219
+ it('should start global monitoring with default config', () => {
220
+ startGlobalActivityMonitoring(mockConfig);
221
+ const monitor = getActivityMonitor();
222
+ expect(monitor?.isMonitoringActive()).toBe(true);
223
+ });
224
+ it('should start global monitoring with custom config', () => {
225
+ const customConfig = {
226
+ ...DEFAULT_ACTIVITY_CONFIG,
227
+ snapshotThrottleMs: 3000,
228
+ };
229
+ startGlobalActivityMonitoring(mockConfig, customConfig);
230
+ const monitor = getActivityMonitor();
231
+ expect(monitor?.isMonitoringActive()).toBe(true);
232
+ });
233
+ });
234
+ describe('stopGlobalActivityMonitoring', () => {
235
+ it('should stop global monitoring', () => {
236
+ startGlobalActivityMonitoring(mockConfig);
237
+ expect(getActivityMonitor()?.isMonitoringActive()).toBe(true);
238
+ stopGlobalActivityMonitoring();
239
+ expect(getActivityMonitor()?.isMonitoringActive()).toBe(false);
240
+ });
241
+ it('should handle missing global monitor gracefully', () => {
242
+ expect(() => {
243
+ stopGlobalActivityMonitoring();
244
+ }).not.toThrow();
245
+ });
246
+ });
247
+ });
248
+ //# sourceMappingURL=activity-monitor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-monitor.test.js","sourceRoot":"","sources":["../../../src/telemetry/activity-monitor.test.ts"],"names":[],"mappings":"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"}
@@ -142,6 +142,7 @@ export declare class ClearcutLogger {
142
142
  */
143
143
  addDefaultFields(data: EventValue[], totalAccounts: number): EventValue[];
144
144
  getProxyAgent(): HttpsProxyAgent<string> | undefined;
145
+ getConfigJson(): string;
145
146
  shutdown(): void;
146
147
  private requeueFailedEvents;
147
148
  }
@@ -7,7 +7,7 @@ import { HttpsProxyAgent } from 'https-proxy-agent';
7
7
  import { EventMetadataKey } from './event-metadata-key.js';
8
8
  import { InstallationManager } from '../../utils/installationManager.js';
9
9
  import { UserAccountManager } from '../../utils/userAccountManager.js';
10
- import { safeJsonStringify } from '../../utils/safeJsonStringify.js';
10
+ import { safeJsonStringify, safeJsonStringifyBooleanValuesOnly, } from '../../utils/safeJsonStringify.js';
11
11
  import { FixedDeque } from 'mnemonist';
12
12
  import { GIT_COMMIT_INFO, CLI_VERSION } from '../../generated/git-commit.js';
13
13
  import { IDE_DEFINITIONS, detectIdeFromEnv, isCloudShell, } from '../../ide/detect-ide.js';
@@ -976,12 +976,7 @@ export class ClearcutLogger {
976
976
  },
977
977
  {
978
978
  gemini_cli_key: EventMetadataKey.GEMINI_CLI_USER_SETTINGS,
979
- value: safeJsonStringify([
980
- {
981
- smart_edit_enabled: this.config?.getUseSmartEdit() ?? false,
982
- model_router_enabled: this.config?.getUseModelRouter() ?? false,
983
- },
984
- ]),
979
+ value: this.getConfigJson(),
985
980
  },
986
981
  ];
987
982
  return [...data, ...defaultLogMetadata];
@@ -999,6 +994,11 @@ export class ClearcutLogger {
999
994
  throw new Error('Unsupported proxy type');
1000
995
  }
1001
996
  }
997
+ getConfigJson() {
998
+ const configJson = safeJsonStringifyBooleanValuesOnly(this.config);
999
+ console.debug(configJson);
1000
+ return safeJsonStringifyBooleanValuesOnly(this.config);
1001
+ }
1002
1002
  shutdown() {
1003
1003
  this.logEndSessionEvent();
1004
1004
  }