@google/gemini-cli-core 0.1.14 → 0.1.15-nightly.250731.0c6f7884

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 (193) hide show
  1. package/README.md +28 -0
  2. package/dist/google-gemini-cli-core-0.1.15.tgz +0 -0
  3. package/dist/src/code_assist/oauth2.test.js +14 -14
  4. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  5. package/dist/src/config/config.d.ts +21 -7
  6. package/dist/src/config/config.js +35 -13
  7. package/dist/src/config/config.js.map +1 -1
  8. package/dist/src/config/config.test.js +33 -0
  9. package/dist/src/config/config.test.js.map +1 -1
  10. package/dist/src/config/flashFallback.test.js +23 -47
  11. package/dist/src/config/flashFallback.test.js.map +1 -1
  12. package/dist/src/config/models.d.ts +1 -0
  13. package/dist/src/config/models.js +1 -0
  14. package/dist/src/config/models.js.map +1 -1
  15. package/dist/src/core/client.js +37 -17
  16. package/dist/src/core/client.js.map +1 -1
  17. package/dist/src/core/client.test.js +162 -16
  18. package/dist/src/core/client.test.js.map +1 -1
  19. package/dist/src/core/coreToolScheduler.d.ts +1 -3
  20. package/dist/src/core/coreToolScheduler.js +1 -3
  21. package/dist/src/core/coreToolScheduler.js.map +1 -1
  22. package/dist/src/core/coreToolScheduler.test.js +76 -1
  23. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  24. package/dist/src/core/geminiChat.js +1 -0
  25. package/dist/src/core/geminiChat.js.map +1 -1
  26. package/dist/src/core/logger.d.ts +1 -0
  27. package/dist/src/core/logger.js +22 -8
  28. package/dist/src/core/logger.js.map +1 -1
  29. package/dist/src/core/logger.test.js +60 -9
  30. package/dist/src/core/logger.test.js.map +1 -1
  31. package/dist/src/core/prompts.js +1 -1
  32. package/dist/src/core/tokenLimits.js +1 -0
  33. package/dist/src/core/tokenLimits.js.map +1 -1
  34. package/dist/src/ide/detect-ide.d.ts +10 -0
  35. package/dist/src/ide/detect-ide.js +24 -0
  36. package/dist/src/ide/detect-ide.js.map +1 -0
  37. package/dist/src/ide/ide-client.d.ts +19 -7
  38. package/dist/src/ide/ide-client.js +110 -37
  39. package/dist/src/ide/ide-client.js.map +1 -1
  40. package/dist/src/ide/ide-installer.d.ts +15 -0
  41. package/dist/src/ide/ide-installer.js +111 -0
  42. package/dist/src/ide/ide-installer.js.map +1 -0
  43. package/dist/src/ide/ide-installer.test.d.ts +6 -0
  44. package/dist/src/ide/ide-installer.test.js +78 -0
  45. package/dist/src/ide/ide-installer.test.js.map +1 -0
  46. package/dist/src/ide/ideContext.d.ts +212 -107
  47. package/dist/src/ide/ideContext.js +45 -44
  48. package/dist/src/ide/ideContext.js.map +1 -1
  49. package/dist/src/ide/ideContext.test.js +254 -100
  50. package/dist/src/ide/ideContext.test.js.map +1 -1
  51. package/dist/src/index.d.ts +8 -0
  52. package/dist/src/index.js +10 -0
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/mcp/oauth-provider.d.ts +5 -1
  55. package/dist/src/mcp/oauth-provider.js +36 -11
  56. package/dist/src/mcp/oauth-provider.js.map +1 -1
  57. package/dist/src/mcp/oauth-provider.test.js +2 -2
  58. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  59. package/dist/src/mcp/oauth-token-storage.d.ts +3 -1
  60. package/dist/src/mcp/oauth-token-storage.js +3 -1
  61. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  62. package/dist/src/mcp/oauth-utils.js +2 -2
  63. package/dist/src/mcp/oauth-utils.js.map +1 -1
  64. package/dist/src/mcp/oauth-utils.test.js +1 -1
  65. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  66. package/dist/src/prompts/mcp-prompts.d.ts +8 -0
  67. package/dist/src/prompts/mcp-prompts.js +13 -0
  68. package/dist/src/prompts/mcp-prompts.js.map +1 -0
  69. package/dist/src/prompts/prompt-registry.d.ts +26 -0
  70. package/dist/src/prompts/prompt-registry.js +47 -0
  71. package/dist/src/prompts/prompt-registry.js.map +1 -0
  72. package/dist/src/services/fileDiscoveryService.test.js +101 -60
  73. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  74. package/dist/src/services/gitService.test.js +67 -86
  75. package/dist/src/services/gitService.test.js.map +1 -1
  76. package/dist/src/services/loopDetectionService.d.ts +3 -0
  77. package/dist/src/services/loopDetectionService.js +18 -0
  78. package/dist/src/services/loopDetectionService.js.map +1 -1
  79. package/dist/src/services/loopDetectionService.test.js +90 -11
  80. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  81. package/dist/src/services/shellExecutionService.d.ts +70 -0
  82. package/dist/src/services/shellExecutionService.js +152 -0
  83. package/dist/src/services/shellExecutionService.js.map +1 -0
  84. package/dist/src/services/shellExecutionService.test.d.ts +6 -0
  85. package/dist/src/services/shellExecutionService.test.js +258 -0
  86. package/dist/src/services/shellExecutionService.test.js.map +1 -0
  87. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
  88. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +58 -31
  89. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  90. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +3 -1
  91. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +7 -0
  92. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  93. package/dist/src/telemetry/constants.d.ts +1 -0
  94. package/dist/src/telemetry/constants.js +1 -0
  95. package/dist/src/telemetry/constants.js.map +1 -1
  96. package/dist/src/telemetry/index.d.ts +2 -2
  97. package/dist/src/telemetry/index.js +2 -2
  98. package/dist/src/telemetry/index.js.map +1 -1
  99. package/dist/src/telemetry/loggers.d.ts +2 -1
  100. package/dist/src/telemetry/loggers.js +17 -1
  101. package/dist/src/telemetry/loggers.js.map +1 -1
  102. package/dist/src/telemetry/telemetry.test.js +2 -0
  103. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  104. package/dist/src/telemetry/types.d.ts +8 -1
  105. package/dist/src/telemetry/types.js +12 -0
  106. package/dist/src/telemetry/types.js.map +1 -1
  107. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  108. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  109. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  110. package/dist/src/tools/edit.js +4 -3
  111. package/dist/src/tools/edit.js.map +1 -1
  112. package/dist/src/tools/edit.test.js +25 -1
  113. package/dist/src/tools/edit.test.js.map +1 -1
  114. package/dist/src/tools/glob.js +53 -17
  115. package/dist/src/tools/glob.js.map +1 -1
  116. package/dist/src/tools/glob.test.js +32 -6
  117. package/dist/src/tools/glob.test.js.map +1 -1
  118. package/dist/src/tools/grep.d.ts +1 -1
  119. package/dist/src/tools/grep.js +81 -29
  120. package/dist/src/tools/grep.js.map +1 -1
  121. package/dist/src/tools/grep.test.js +76 -9
  122. package/dist/src/tools/grep.test.js.map +1 -1
  123. package/dist/src/tools/ls.js +4 -3
  124. package/dist/src/tools/ls.js.map +1 -1
  125. package/dist/src/tools/ls.test.d.ts +6 -0
  126. package/dist/src/tools/ls.test.js +356 -0
  127. package/dist/src/tools/ls.test.js.map +1 -0
  128. package/dist/src/tools/mcp-client.d.ts +26 -2
  129. package/dist/src/tools/mcp-client.js +64 -21
  130. package/dist/src/tools/mcp-client.js.map +1 -1
  131. package/dist/src/tools/mcp-client.test.js +53 -1
  132. package/dist/src/tools/mcp-client.test.js.map +1 -1
  133. package/dist/src/tools/memoryTool.d.ts +17 -2
  134. package/dist/src/tools/memoryTool.js +130 -13
  135. package/dist/src/tools/memoryTool.js.map +1 -1
  136. package/dist/src/tools/memoryTool.test.js +88 -3
  137. package/dist/src/tools/memoryTool.test.js.map +1 -1
  138. package/dist/src/tools/modifiable-tool.test.js +51 -62
  139. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  140. package/dist/src/tools/read-file.js +8 -6
  141. package/dist/src/tools/read-file.js.map +1 -1
  142. package/dist/src/tools/read-file.test.js +29 -1
  143. package/dist/src/tools/read-file.test.js.map +1 -1
  144. package/dist/src/tools/read-many-files.js +22 -12
  145. package/dist/src/tools/read-many-files.js.map +1 -1
  146. package/dist/src/tools/read-many-files.test.js +35 -2
  147. package/dist/src/tools/read-many-files.test.js.map +1 -1
  148. package/dist/src/tools/shell.d.ts +1 -0
  149. package/dist/src/tools/shell.js +145 -185
  150. package/dist/src/tools/shell.js.map +1 -1
  151. package/dist/src/tools/shell.test.js +275 -95
  152. package/dist/src/tools/shell.test.js.map +1 -1
  153. package/dist/src/tools/tool-registry.js +3 -3
  154. package/dist/src/tools/tool-registry.js.map +1 -1
  155. package/dist/src/tools/tool-registry.test.js +10 -2
  156. package/dist/src/tools/tool-registry.test.js.map +1 -1
  157. package/dist/src/tools/write-file.js +5 -3
  158. package/dist/src/tools/write-file.js.map +1 -1
  159. package/dist/src/tools/write-file.test.js +36 -2
  160. package/dist/src/tools/write-file.test.js.map +1 -1
  161. package/dist/src/utils/bfsFileSearch.js +51 -27
  162. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  163. package/dist/src/utils/bfsFileSearch.test.js +57 -0
  164. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  165. package/dist/src/utils/flashFallback.integration.test.js +8 -0
  166. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  167. package/dist/src/utils/formatters.d.ts +6 -0
  168. package/dist/src/utils/formatters.js +16 -0
  169. package/dist/src/utils/formatters.js.map +1 -0
  170. package/dist/src/utils/nextSpeakerChecker.js +2 -2
  171. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  172. package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
  173. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  174. package/dist/src/utils/retry.d.ts +3 -0
  175. package/dist/src/utils/retry.js.map +1 -1
  176. package/dist/src/utils/retry.test.js.map +1 -1
  177. package/dist/src/utils/shell-utils.d.ts +37 -3
  178. package/dist/src/utils/shell-utils.js +110 -47
  179. package/dist/src/utils/shell-utils.js.map +1 -1
  180. package/dist/src/utils/shell-utils.test.js +146 -396
  181. package/dist/src/utils/shell-utils.test.js.map +1 -1
  182. package/dist/src/utils/textUtils.d.ts +13 -0
  183. package/dist/src/utils/textUtils.js +28 -0
  184. package/dist/src/utils/textUtils.js.map +1 -0
  185. package/dist/src/utils/workspaceContext.d.ts +47 -0
  186. package/dist/src/utils/workspaceContext.js +106 -0
  187. package/dist/src/utils/workspaceContext.js.map +1 -0
  188. package/dist/src/utils/workspaceContext.test.d.ts +6 -0
  189. package/dist/src/utils/workspaceContext.test.js +209 -0
  190. package/dist/src/utils/workspaceContext.test.js.map +1 -0
  191. package/dist/tsconfig.tsbuildinfo +1 -1
  192. package/package.json +1 -1
  193. package/dist/google-gemini-cli-core-0.1.13.tgz +0 -0
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import * as child_process from 'child_process';
7
+ import * as process from 'process';
8
+ import { glob } from 'glob';
9
+ import * as path from 'path';
10
+ import * as fs from 'fs';
11
+ import * as os from 'os';
12
+ import { fileURLToPath } from 'url';
13
+ const VSCODE_COMMAND = process.platform === 'win32' ? 'code.cmd' : 'code';
14
+ const VSCODE_COMPANION_EXTENSION_FOLDER = 'vscode-ide-companion';
15
+ async function findVsCodeCommand() {
16
+ // 1. Check PATH first.
17
+ try {
18
+ child_process.execSync(process.platform === 'win32'
19
+ ? `where.exe ${VSCODE_COMMAND}`
20
+ : `command -v ${VSCODE_COMMAND}`, { stdio: 'ignore' });
21
+ return VSCODE_COMMAND;
22
+ }
23
+ catch {
24
+ // Not in PATH, continue to check common locations.
25
+ }
26
+ // 2. Check common installation locations.
27
+ const locations = [];
28
+ const platform = process.platform;
29
+ const homeDir = os.homedir();
30
+ if (platform === 'darwin') {
31
+ // macOS
32
+ locations.push('/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code', path.join(homeDir, 'Library/Application Support/Code/bin/code'));
33
+ }
34
+ else if (platform === 'linux') {
35
+ // Linux
36
+ locations.push('/usr/share/code/bin/code', '/snap/bin/code', path.join(homeDir, '.local/share/code/bin/code'));
37
+ }
38
+ else if (platform === 'win32') {
39
+ // Windows
40
+ locations.push(path.join(process.env.ProgramFiles || 'C:\\Program Files', 'Microsoft VS Code', 'bin', 'code.cmd'), path.join(homeDir, 'AppData', 'Local', 'Programs', 'Microsoft VS Code', 'bin', 'code.cmd'));
41
+ }
42
+ for (const location of locations) {
43
+ if (fs.existsSync(location)) {
44
+ return location;
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ class VsCodeInstaller {
50
+ vsCodeCommand;
51
+ constructor() {
52
+ this.vsCodeCommand = findVsCodeCommand();
53
+ }
54
+ async isInstalled() {
55
+ return (await this.vsCodeCommand) !== null;
56
+ }
57
+ async install() {
58
+ const commandPath = await this.vsCodeCommand;
59
+ if (!commandPath) {
60
+ return {
61
+ success: false,
62
+ message: `VS Code command-line tool not found in your PATH or common installation locations.`,
63
+ };
64
+ }
65
+ const bundleDir = path.dirname(fileURLToPath(import.meta.url));
66
+ // The VSIX file is copied to the bundle directory as part of the build.
67
+ let vsixFiles = glob.sync(path.join(bundleDir, '*.vsix'));
68
+ if (vsixFiles.length === 0) {
69
+ // If the VSIX file is not in the bundle, it might be a dev
70
+ // environment running with `npm start`. Look for it in the original
71
+ // package location, relative to the bundle dir.
72
+ const devPath = path.join(bundleDir, // .../packages/core/dist/src/ide
73
+ '..', // .../packages/core/dist/src
74
+ '..', // .../packages/core/dist
75
+ '..', // .../packages/core
76
+ '..', // .../packages
77
+ VSCODE_COMPANION_EXTENSION_FOLDER, '*.vsix');
78
+ vsixFiles = glob.sync(devPath);
79
+ }
80
+ if (vsixFiles.length === 0) {
81
+ return {
82
+ success: false,
83
+ message: 'Could not find the required VS Code companion extension. Please file a bug via /bug.',
84
+ };
85
+ }
86
+ const vsixPath = vsixFiles[0];
87
+ const command = `"${commandPath}" --install-extension "${vsixPath}" --force`;
88
+ try {
89
+ child_process.execSync(command, { stdio: 'pipe' });
90
+ return {
91
+ success: true,
92
+ message: 'VS Code companion extension installed successfully. Restart gemini-cli in a fresh terminal window.',
93
+ };
94
+ }
95
+ catch (_error) {
96
+ return {
97
+ success: false,
98
+ message: 'Failed to install VS Code companion extension.',
99
+ };
100
+ }
101
+ }
102
+ }
103
+ export function getIdeInstaller(ide) {
104
+ switch (ide) {
105
+ case 'vscode':
106
+ return new VsCodeInstaller();
107
+ default:
108
+ return null;
109
+ }
110
+ }
111
+ //# sourceMappingURL=ide-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-installer.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.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,78 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import { getIdeInstaller } from './ide-installer.js';
8
+ import * as child_process from 'child_process';
9
+ import * as fs from 'fs';
10
+ import * as os from 'os';
11
+ import { DetectedIde } from './detect-ide.js';
12
+ vi.mock('child_process');
13
+ vi.mock('fs');
14
+ vi.mock('os');
15
+ describe('ide-installer', () => {
16
+ describe('getIdeInstaller', () => {
17
+ it('should return a VsCodeInstaller for "vscode"', () => {
18
+ const installer = getIdeInstaller(DetectedIde.VSCode);
19
+ expect(installer).not.toBeNull();
20
+ // A more specific check might be needed if we export the class
21
+ expect(installer).toBeInstanceOf(Object);
22
+ });
23
+ it('should return null for an unknown IDE', () => {
24
+ const installer = getIdeInstaller('unknown');
25
+ expect(installer).toBeNull();
26
+ });
27
+ });
28
+ describe('VsCodeInstaller', () => {
29
+ let installer;
30
+ beforeEach(() => {
31
+ // We get a new installer for each test to reset the find command logic
32
+ installer = getIdeInstaller(DetectedIde.VSCode);
33
+ vi.spyOn(child_process, 'execSync').mockImplementation(() => '');
34
+ vi.spyOn(fs, 'existsSync').mockReturnValue(false);
35
+ vi.spyOn(os, 'homedir').mockReturnValue('/home/user');
36
+ });
37
+ afterEach(() => {
38
+ vi.restoreAllMocks();
39
+ });
40
+ describe('isInstalled', () => {
41
+ it('should return true if command is in PATH', async () => {
42
+ expect(await installer.isInstalled()).toBe(true);
43
+ });
44
+ it('should return true if command is in a known location', async () => {
45
+ vi.spyOn(child_process, 'execSync').mockImplementation(() => {
46
+ throw new Error('Command not found');
47
+ });
48
+ vi.spyOn(fs, 'existsSync').mockReturnValue(true);
49
+ // Re-create the installer so it re-runs findVsCodeCommand
50
+ installer = getIdeInstaller(DetectedIde.VSCode);
51
+ expect(await installer.isInstalled()).toBe(true);
52
+ });
53
+ it('should return false if command is not found', async () => {
54
+ vi.spyOn(child_process, 'execSync').mockImplementation(() => {
55
+ throw new Error('Command not found');
56
+ });
57
+ vi.spyOn(fs, 'existsSync').mockReturnValue(false);
58
+ // Re-create the installer so it re-runs findVsCodeCommand
59
+ installer = getIdeInstaller(DetectedIde.VSCode);
60
+ expect(await installer.isInstalled()).toBe(false);
61
+ });
62
+ });
63
+ describe('install', () => {
64
+ it('should return a failure message if VS Code is not installed', async () => {
65
+ vi.spyOn(child_process, 'execSync').mockImplementation(() => {
66
+ throw new Error('Command not found');
67
+ });
68
+ vi.spyOn(fs, 'existsSync').mockReturnValue(false);
69
+ // Re-create the installer so it re-runs findVsCodeCommand
70
+ installer = getIdeInstaller(DetectedIde.VSCode);
71
+ const result = await installer.install();
72
+ expect(result.success).toBe(false);
73
+ expect(result.message).toContain('not found in your PATH or common installation locations');
74
+ });
75
+ });
76
+ });
77
+ });
78
+ //# sourceMappingURL=ide-installer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-installer.test.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.test.ts"],"names":[],"mappings":"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"}
@@ -5,24 +5,12 @@
5
5
  */
6
6
  import { z } from 'zod';
7
7
  /**
8
- * Zod schema for validating a cursor position.
8
+ * Zod schema for validating a file context from the IDE.
9
9
  */
10
- export declare const CursorSchema: z.ZodObject<{
11
- line: z.ZodNumber;
12
- character: z.ZodNumber;
13
- }, "strip", z.ZodTypeAny, {
14
- line: number;
15
- character: number;
16
- }, {
17
- line: number;
18
- character: number;
19
- }>;
20
- export type Cursor = z.infer<typeof CursorSchema>;
21
- /**
22
- * Zod schema for validating an active file context from the IDE.
23
- */
24
- export declare const OpenFilesSchema: z.ZodObject<{
25
- activeFile: z.ZodString;
10
+ export declare const FileSchema: z.ZodObject<{
11
+ path: z.ZodString;
12
+ timestamp: z.ZodNumber;
13
+ isActive: z.ZodOptional<z.ZodBoolean>;
26
14
  selectedText: z.ZodOptional<z.ZodString>;
27
15
  cursor: z.ZodOptional<z.ZodObject<{
28
16
  line: z.ZodNumber;
@@ -34,141 +22,258 @@ export declare const OpenFilesSchema: z.ZodObject<{
34
22
  line: number;
35
23
  character: number;
36
24
  }>>;
37
- recentOpenFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
38
- filePath: z.ZodString;
39
- timestamp: z.ZodNumber;
40
- }, "strip", z.ZodTypeAny, {
41
- filePath: string;
42
- timestamp: number;
43
- }, {
44
- filePath: string;
45
- timestamp: number;
46
- }>, "many">>;
47
25
  }, "strip", z.ZodTypeAny, {
48
- activeFile: string;
26
+ path: string;
27
+ timestamp: number;
49
28
  cursor?: {
50
29
  line: number;
51
30
  character: number;
52
31
  } | undefined;
32
+ isActive?: boolean | undefined;
53
33
  selectedText?: string | undefined;
54
- recentOpenFiles?: {
55
- filePath: string;
56
- timestamp: number;
57
- }[] | undefined;
58
34
  }, {
59
- activeFile: string;
35
+ path: string;
36
+ timestamp: number;
60
37
  cursor?: {
61
38
  line: number;
62
39
  character: number;
63
40
  } | undefined;
41
+ isActive?: boolean | undefined;
64
42
  selectedText?: string | undefined;
65
- recentOpenFiles?: {
66
- filePath: string;
67
- timestamp: number;
68
- }[] | undefined;
69
43
  }>;
70
- export type OpenFiles = z.infer<typeof OpenFilesSchema>;
71
- /**
72
- * Zod schema for validating the 'ide/openFilesChanged' notification from the IDE.
73
- */
74
- export declare const OpenFilesNotificationSchema: z.ZodObject<{
75
- method: z.ZodLiteral<"ide/openFilesChanged">;
76
- params: z.ZodObject<{
77
- activeFile: z.ZodString;
78
- selectedText: z.ZodOptional<z.ZodString>;
79
- cursor: z.ZodOptional<z.ZodObject<{
80
- line: z.ZodNumber;
81
- character: z.ZodNumber;
82
- }, "strip", z.ZodTypeAny, {
83
- line: number;
84
- character: number;
85
- }, {
86
- line: number;
87
- character: number;
88
- }>>;
89
- recentOpenFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
90
- filePath: z.ZodString;
44
+ export type File = z.infer<typeof FileSchema>;
45
+ export declare const IdeContextSchema: z.ZodObject<{
46
+ workspaceState: z.ZodOptional<z.ZodObject<{
47
+ openFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
48
+ path: z.ZodString;
91
49
  timestamp: z.ZodNumber;
50
+ isActive: z.ZodOptional<z.ZodBoolean>;
51
+ selectedText: z.ZodOptional<z.ZodString>;
52
+ cursor: z.ZodOptional<z.ZodObject<{
53
+ line: z.ZodNumber;
54
+ character: z.ZodNumber;
55
+ }, "strip", z.ZodTypeAny, {
56
+ line: number;
57
+ character: number;
58
+ }, {
59
+ line: number;
60
+ character: number;
61
+ }>>;
92
62
  }, "strip", z.ZodTypeAny, {
93
- filePath: string;
63
+ path: string;
94
64
  timestamp: number;
65
+ cursor?: {
66
+ line: number;
67
+ character: number;
68
+ } | undefined;
69
+ isActive?: boolean | undefined;
70
+ selectedText?: string | undefined;
95
71
  }, {
96
- filePath: string;
72
+ path: string;
97
73
  timestamp: number;
74
+ cursor?: {
75
+ line: number;
76
+ character: number;
77
+ } | undefined;
78
+ isActive?: boolean | undefined;
79
+ selectedText?: string | undefined;
98
80
  }>, "many">>;
99
81
  }, "strip", z.ZodTypeAny, {
100
- activeFile: string;
101
- cursor?: {
102
- line: number;
103
- character: number;
104
- } | undefined;
105
- selectedText?: string | undefined;
106
- recentOpenFiles?: {
107
- filePath: string;
82
+ openFiles?: {
83
+ path: string;
108
84
  timestamp: number;
85
+ cursor?: {
86
+ line: number;
87
+ character: number;
88
+ } | undefined;
89
+ isActive?: boolean | undefined;
90
+ selectedText?: string | undefined;
109
91
  }[] | undefined;
110
92
  }, {
111
- activeFile: string;
112
- cursor?: {
113
- line: number;
114
- character: number;
115
- } | undefined;
116
- selectedText?: string | undefined;
117
- recentOpenFiles?: {
118
- filePath: string;
93
+ openFiles?: {
94
+ path: string;
119
95
  timestamp: number;
96
+ cursor?: {
97
+ line: number;
98
+ character: number;
99
+ } | undefined;
100
+ isActive?: boolean | undefined;
101
+ selectedText?: string | undefined;
120
102
  }[] | undefined;
103
+ }>>;
104
+ }, "strip", z.ZodTypeAny, {
105
+ workspaceState?: {
106
+ openFiles?: {
107
+ path: string;
108
+ timestamp: number;
109
+ cursor?: {
110
+ line: number;
111
+ character: number;
112
+ } | undefined;
113
+ isActive?: boolean | undefined;
114
+ selectedText?: string | undefined;
115
+ }[] | undefined;
116
+ } | undefined;
117
+ }, {
118
+ workspaceState?: {
119
+ openFiles?: {
120
+ path: string;
121
+ timestamp: number;
122
+ cursor?: {
123
+ line: number;
124
+ character: number;
125
+ } | undefined;
126
+ isActive?: boolean | undefined;
127
+ selectedText?: string | undefined;
128
+ }[] | undefined;
129
+ } | undefined;
130
+ }>;
131
+ export type IdeContext = z.infer<typeof IdeContextSchema>;
132
+ /**
133
+ * Zod schema for validating the 'ide/contextUpdate' notification from the IDE.
134
+ */
135
+ export declare const IdeContextNotificationSchema: z.ZodObject<{
136
+ method: z.ZodLiteral<"ide/contextUpdate">;
137
+ params: z.ZodObject<{
138
+ workspaceState: z.ZodOptional<z.ZodObject<{
139
+ openFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
140
+ path: z.ZodString;
141
+ timestamp: z.ZodNumber;
142
+ isActive: z.ZodOptional<z.ZodBoolean>;
143
+ selectedText: z.ZodOptional<z.ZodString>;
144
+ cursor: z.ZodOptional<z.ZodObject<{
145
+ line: z.ZodNumber;
146
+ character: z.ZodNumber;
147
+ }, "strip", z.ZodTypeAny, {
148
+ line: number;
149
+ character: number;
150
+ }, {
151
+ line: number;
152
+ character: number;
153
+ }>>;
154
+ }, "strip", z.ZodTypeAny, {
155
+ path: string;
156
+ timestamp: number;
157
+ cursor?: {
158
+ line: number;
159
+ character: number;
160
+ } | undefined;
161
+ isActive?: boolean | undefined;
162
+ selectedText?: string | undefined;
163
+ }, {
164
+ path: string;
165
+ timestamp: number;
166
+ cursor?: {
167
+ line: number;
168
+ character: number;
169
+ } | undefined;
170
+ isActive?: boolean | undefined;
171
+ selectedText?: string | undefined;
172
+ }>, "many">>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ openFiles?: {
175
+ path: string;
176
+ timestamp: number;
177
+ cursor?: {
178
+ line: number;
179
+ character: number;
180
+ } | undefined;
181
+ isActive?: boolean | undefined;
182
+ selectedText?: string | undefined;
183
+ }[] | undefined;
184
+ }, {
185
+ openFiles?: {
186
+ path: string;
187
+ timestamp: number;
188
+ cursor?: {
189
+ line: number;
190
+ character: number;
191
+ } | undefined;
192
+ isActive?: boolean | undefined;
193
+ selectedText?: string | undefined;
194
+ }[] | undefined;
195
+ }>>;
196
+ }, "strip", z.ZodTypeAny, {
197
+ workspaceState?: {
198
+ openFiles?: {
199
+ path: string;
200
+ timestamp: number;
201
+ cursor?: {
202
+ line: number;
203
+ character: number;
204
+ } | undefined;
205
+ isActive?: boolean | undefined;
206
+ selectedText?: string | undefined;
207
+ }[] | undefined;
208
+ } | undefined;
209
+ }, {
210
+ workspaceState?: {
211
+ openFiles?: {
212
+ path: string;
213
+ timestamp: number;
214
+ cursor?: {
215
+ line: number;
216
+ character: number;
217
+ } | undefined;
218
+ isActive?: boolean | undefined;
219
+ selectedText?: string | undefined;
220
+ }[] | undefined;
221
+ } | undefined;
121
222
  }>;
122
223
  }, "strip", z.ZodTypeAny, {
123
- method: "ide/openFilesChanged";
224
+ method: "ide/contextUpdate";
124
225
  params: {
125
- activeFile: string;
126
- cursor?: {
127
- line: number;
128
- character: number;
226
+ workspaceState?: {
227
+ openFiles?: {
228
+ path: string;
229
+ timestamp: number;
230
+ cursor?: {
231
+ line: number;
232
+ character: number;
233
+ } | undefined;
234
+ isActive?: boolean | undefined;
235
+ selectedText?: string | undefined;
236
+ }[] | undefined;
129
237
  } | undefined;
130
- selectedText?: string | undefined;
131
- recentOpenFiles?: {
132
- filePath: string;
133
- timestamp: number;
134
- }[] | undefined;
135
238
  };
136
239
  }, {
137
- method: "ide/openFilesChanged";
240
+ method: "ide/contextUpdate";
138
241
  params: {
139
- activeFile: string;
140
- cursor?: {
141
- line: number;
142
- character: number;
242
+ workspaceState?: {
243
+ openFiles?: {
244
+ path: string;
245
+ timestamp: number;
246
+ cursor?: {
247
+ line: number;
248
+ character: number;
249
+ } | undefined;
250
+ isActive?: boolean | undefined;
251
+ selectedText?: string | undefined;
252
+ }[] | undefined;
143
253
  } | undefined;
144
- selectedText?: string | undefined;
145
- recentOpenFiles?: {
146
- filePath: string;
147
- timestamp: number;
148
- }[] | undefined;
149
254
  };
150
255
  }>;
151
- type OpenFilesSubscriber = (openFiles: OpenFiles | undefined) => void;
256
+ type IdeContextSubscriber = (ideContext: IdeContext | undefined) => void;
152
257
  /**
153
- * Creates a new store for managing the IDE's active file context.
258
+ * Creates a new store for managing the IDE's context.
154
259
  * This factory function encapsulates the state and logic, allowing for the creation
155
260
  * of isolated instances, which is particularly useful for testing.
156
261
  *
157
- * @returns An object with methods to interact with the active file context.
262
+ * @returns An object with methods to interact with the IDE context.
158
263
  */
159
264
  export declare function createIdeContextStore(): {
160
- setOpenFilesContext: (newOpenFiles: OpenFiles) => void;
161
- getOpenFilesContext: () => OpenFiles | undefined;
162
- subscribeToOpenFiles: (subscriber: OpenFilesSubscriber) => () => void;
163
- clearOpenFilesContext: () => void;
265
+ setIdeContext: (newIdeContext: IdeContext) => void;
266
+ getIdeContext: () => IdeContext | undefined;
267
+ subscribeToIdeContext: (subscriber: IdeContextSubscriber) => () => void;
268
+ clearIdeContext: () => void;
164
269
  };
165
270
  /**
166
271
  * The default, shared instance of the IDE context store for the application.
167
272
  */
168
273
  export declare const ideContext: {
169
- setOpenFilesContext: (newOpenFiles: OpenFiles) => void;
170
- getOpenFilesContext: () => OpenFiles | undefined;
171
- subscribeToOpenFiles: (subscriber: OpenFilesSubscriber) => () => void;
172
- clearOpenFilesContext: () => void;
274
+ setIdeContext: (newIdeContext: IdeContext) => void;
275
+ getIdeContext: () => IdeContext | undefined;
276
+ subscribeToIdeContext: (subscriber: IdeContextSubscriber) => () => void;
277
+ clearIdeContext: () => void;
173
278
  };
174
279
  export {};