@google/gemini-cli-core 0.1.16 → 0.1.17-nightly.250806.805114ae

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 (131) hide show
  1. package/README.md +1 -1
  2. package/dist/google-gemini-cli-core-0.1.17.tgz +0 -0
  3. package/dist/src/config/config.d.ts +5 -4
  4. package/dist/src/config/config.js +43 -12
  5. package/dist/src/config/config.js.map +1 -1
  6. package/dist/src/config/config.test.js +60 -2
  7. package/dist/src/config/config.test.js.map +1 -1
  8. package/dist/src/config/flashFallback.test.js +0 -4
  9. package/dist/src/config/flashFallback.test.js.map +1 -1
  10. package/dist/src/core/coreToolScheduler.d.ts +2 -0
  11. package/dist/src/core/coreToolScheduler.js +3 -1
  12. package/dist/src/core/coreToolScheduler.js.map +1 -1
  13. package/dist/src/core/coreToolScheduler.test.js +4 -0
  14. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  15. package/dist/src/ide/detect-ide.js +6 -3
  16. package/dist/src/ide/detect-ide.js.map +1 -1
  17. package/dist/src/ide/ide-client.d.ts +8 -11
  18. package/dist/src/ide/ide-client.js +55 -58
  19. package/dist/src/ide/ide-client.js.map +1 -1
  20. package/dist/src/ide/ide-installer.d.ts +0 -1
  21. package/dist/src/ide/ide-installer.js +5 -7
  22. package/dist/src/ide/ide-installer.js.map +1 -1
  23. package/dist/src/ide/ide-installer.test.js +1 -24
  24. package/dist/src/ide/ide-installer.test.js.map +1 -1
  25. package/dist/src/index.d.ts +1 -0
  26. package/dist/src/index.js +1 -0
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/mcp/oauth-provider.d.ts +1 -0
  29. package/dist/src/mcp/oauth-provider.js +14 -1
  30. package/dist/src/mcp/oauth-provider.js.map +1 -1
  31. package/dist/src/mcp/oauth-provider.test.js +87 -6
  32. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  33. package/dist/src/prompts/prompt-registry.d.ts +8 -0
  34. package/dist/src/prompts/prompt-registry.js +16 -0
  35. package/dist/src/prompts/prompt-registry.js.map +1 -1
  36. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
  37. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +14 -1
  38. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  39. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
  40. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +5 -0
  41. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  42. package/dist/src/telemetry/constants.d.ts +1 -0
  43. package/dist/src/telemetry/constants.js +1 -0
  44. package/dist/src/telemetry/constants.js.map +1 -1
  45. package/dist/src/telemetry/loggers.d.ts +2 -1
  46. package/dist/src/telemetry/loggers.js +17 -1
  47. package/dist/src/telemetry/loggers.js.map +1 -1
  48. package/dist/src/telemetry/telemetry.test.js +0 -2
  49. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  50. package/dist/src/telemetry/types.d.ts +11 -1
  51. package/dist/src/telemetry/types.js +15 -0
  52. package/dist/src/telemetry/types.js.map +1 -1
  53. package/dist/src/tools/mcp-client.d.ts +1 -1
  54. package/dist/src/tools/mcp-client.js +32 -17
  55. package/dist/src/tools/mcp-client.js.map +1 -1
  56. package/dist/src/tools/mcp-client.test.js +35 -9
  57. package/dist/src/tools/mcp-client.test.js.map +1 -1
  58. package/dist/src/tools/mcp-tool.js +104 -45
  59. package/dist/src/tools/mcp-tool.js.map +1 -1
  60. package/dist/src/tools/mcp-tool.test.js +280 -2
  61. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  62. package/dist/src/tools/modifiable-tool.d.ts +1 -1
  63. package/dist/src/tools/modifiable-tool.js +2 -2
  64. package/dist/src/tools/modifiable-tool.js.map +1 -1
  65. package/dist/src/tools/modifiable-tool.test.js +9 -9
  66. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  67. package/dist/src/tools/read-many-files.js +78 -34
  68. package/dist/src/tools/read-many-files.js.map +1 -1
  69. package/dist/src/tools/read-many-files.test.js +96 -0
  70. package/dist/src/tools/read-many-files.test.js.map +1 -1
  71. package/dist/src/tools/tool-registry.d.ts +1 -0
  72. package/dist/src/tools/tool-registry.js +12 -10
  73. package/dist/src/tools/tool-registry.js.map +1 -1
  74. package/dist/src/tools/tool-registry.test.js +6 -4
  75. package/dist/src/tools/tool-registry.test.js.map +1 -1
  76. package/dist/src/tools/write-file.js +2 -2
  77. package/dist/src/tools/write-file.js.map +1 -1
  78. package/dist/src/tools/write-file.test.js +20 -0
  79. package/dist/src/tools/write-file.test.js.map +1 -1
  80. package/dist/src/utils/editor.d.ts +1 -1
  81. package/dist/src/utils/editor.js +13 -5
  82. package/dist/src/utils/editor.js.map +1 -1
  83. package/dist/src/utils/editor.test.js +38 -6
  84. package/dist/src/utils/editor.test.js.map +1 -1
  85. package/dist/src/utils/fileUtils.js +1 -1
  86. package/dist/src/utils/fileUtils.js.map +1 -1
  87. package/dist/src/utils/fileUtils.test.js +13 -0
  88. package/dist/src/utils/fileUtils.test.js.map +1 -1
  89. package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
  90. package/dist/src/utils/filesearch/crawlCache.js +54 -0
  91. package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
  92. package/dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
  93. package/dist/src/utils/filesearch/crawlCache.test.js +93 -0
  94. package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
  95. package/dist/src/utils/filesearch/fileSearch.d.ts +79 -0
  96. package/dist/src/utils/filesearch/fileSearch.js +216 -0
  97. package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
  98. package/dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
  99. package/dist/src/utils/filesearch/fileSearch.test.js +515 -0
  100. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
  101. package/dist/src/utils/filesearch/ignore.d.ts +35 -0
  102. package/dist/src/utils/filesearch/ignore.js +81 -0
  103. package/dist/src/utils/filesearch/ignore.js.map +1 -0
  104. package/dist/src/utils/filesearch/ignore.test.d.ts +6 -0
  105. package/dist/src/utils/filesearch/ignore.test.js +57 -0
  106. package/dist/src/utils/filesearch/ignore.test.js.map +1 -0
  107. package/dist/src/utils/filesearch/result-cache.d.ts +34 -0
  108. package/dist/src/utils/filesearch/result-cache.js +61 -0
  109. package/dist/src/utils/filesearch/result-cache.js.map +1 -0
  110. package/dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
  111. package/dist/src/utils/filesearch/result-cache.test.js +47 -0
  112. package/dist/src/utils/filesearch/result-cache.test.js.map +1 -0
  113. package/dist/src/utils/flashFallback.integration.test.js +0 -2
  114. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  115. package/dist/src/utils/memoryDiscovery.d.ts +1 -1
  116. package/dist/src/utils/memoryDiscovery.js +18 -6
  117. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  118. package/dist/src/utils/memoryDiscovery.test.js +30 -71
  119. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  120. package/dist/src/utils/paths.d.ts +11 -2
  121. package/dist/src/utils/paths.js +24 -7
  122. package/dist/src/utils/paths.js.map +1 -1
  123. package/dist/src/utils/paths.test.d.ts +6 -0
  124. package/dist/src/utils/paths.test.js +153 -0
  125. package/dist/src/utils/paths.test.js.map +1 -0
  126. package/dist/src/utils/workspaceContext.d.ts +4 -0
  127. package/dist/src/utils/workspaceContext.js +33 -0
  128. package/dist/src/utils/workspaceContext.js.map +1 -1
  129. package/dist/tsconfig.tsbuildinfo +1 -1
  130. package/package.json +5 -1
  131. package/dist/google-gemini-cli-core-0.1.15.tgz +0 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { Ignore } from './ignore.js';
8
+ describe('Ignore', () => {
9
+ describe('getDirectoryFilter', () => {
10
+ it('should ignore directories matching directory patterns', () => {
11
+ const ig = new Ignore().add(['foo/', 'bar/']);
12
+ const dirFilter = ig.getDirectoryFilter();
13
+ expect(dirFilter('foo/')).toBe(true);
14
+ expect(dirFilter('bar/')).toBe(true);
15
+ expect(dirFilter('baz/')).toBe(false);
16
+ });
17
+ it('should not ignore directories with file patterns', () => {
18
+ const ig = new Ignore().add(['foo.js', '*.log']);
19
+ const dirFilter = ig.getDirectoryFilter();
20
+ expect(dirFilter('foo.js')).toBe(false);
21
+ expect(dirFilter('foo.log')).toBe(false);
22
+ });
23
+ });
24
+ describe('getFileFilter', () => {
25
+ it('should not ignore files with directory patterns', () => {
26
+ const ig = new Ignore().add(['foo/', 'bar/']);
27
+ const fileFilter = ig.getFileFilter();
28
+ expect(fileFilter('foo')).toBe(false);
29
+ expect(fileFilter('foo/file.txt')).toBe(false);
30
+ });
31
+ it('should ignore files matching file patterns', () => {
32
+ const ig = new Ignore().add(['*.log', 'foo.js']);
33
+ const fileFilter = ig.getFileFilter();
34
+ expect(fileFilter('foo.log')).toBe(true);
35
+ expect(fileFilter('foo.js')).toBe(true);
36
+ expect(fileFilter('bar.txt')).toBe(false);
37
+ });
38
+ });
39
+ it('should accumulate patterns across multiple add() calls', () => {
40
+ const ig = new Ignore().add('foo.js');
41
+ ig.add('bar.js');
42
+ const fileFilter = ig.getFileFilter();
43
+ expect(fileFilter('foo.js')).toBe(true);
44
+ expect(fileFilter('bar.js')).toBe(true);
45
+ expect(fileFilter('baz.js')).toBe(false);
46
+ });
47
+ it('should return a stable and consistent fingerprint', () => {
48
+ const ig1 = new Ignore().add(['foo', '!bar']);
49
+ const ig2 = new Ignore().add('foo\n!bar');
50
+ // Fingerprints should be identical for the same rules.
51
+ expect(ig1.getFingerprint()).toBe(ig2.getFingerprint());
52
+ // Adding a new rule should change the fingerprint.
53
+ ig2.add('baz');
54
+ expect(ig1.getFingerprint()).not.toBe(ig2.getFingerprint());
55
+ });
56
+ });
57
+ //# sourceMappingURL=ignore.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore.test.js","sourceRoot":"","sources":["../../../../src/utils/filesearch/ignore.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Implements an in-memory cache for file search results.
8
+ * This cache optimizes subsequent searches by leveraging previously computed results.
9
+ */
10
+ export declare class ResultCache {
11
+ private readonly allFiles;
12
+ private readonly absoluteDir;
13
+ private readonly cache;
14
+ private hits;
15
+ private misses;
16
+ constructor(allFiles: string[], absoluteDir: string);
17
+ /**
18
+ * Retrieves cached search results for a given query, or provides a base set
19
+ * of files to search from.
20
+ * @param query The search query pattern.
21
+ * @returns An object containing the files to search and a boolean indicating
22
+ * if the result is an exact cache hit.
23
+ */
24
+ get(query: string): Promise<{
25
+ files: string[];
26
+ isExactMatch: boolean;
27
+ }>;
28
+ /**
29
+ * Stores search results in the cache.
30
+ * @param query The search query pattern.
31
+ * @param results The matching file paths to cache.
32
+ */
33
+ set(query: string, results: string[]): void;
34
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Implements an in-memory cache for file search results.
8
+ * This cache optimizes subsequent searches by leveraging previously computed results.
9
+ */
10
+ export class ResultCache {
11
+ allFiles;
12
+ absoluteDir;
13
+ cache;
14
+ hits = 0;
15
+ misses = 0;
16
+ constructor(allFiles, absoluteDir) {
17
+ this.allFiles = allFiles;
18
+ this.absoluteDir = absoluteDir;
19
+ this.cache = new Map();
20
+ }
21
+ /**
22
+ * Retrieves cached search results for a given query, or provides a base set
23
+ * of files to search from.
24
+ * @param query The search query pattern.
25
+ * @returns An object containing the files to search and a boolean indicating
26
+ * if the result is an exact cache hit.
27
+ */
28
+ async get(query) {
29
+ const isCacheHit = this.cache.has(query);
30
+ if (isCacheHit) {
31
+ this.hits++;
32
+ return { files: this.cache.get(query), isExactMatch: true };
33
+ }
34
+ this.misses++;
35
+ // This is the core optimization of the memory cache.
36
+ // If a user first searches for "foo", and then for "foobar",
37
+ // we don't need to search through all files again. We can start
38
+ // from the results of the "foo" search.
39
+ // This finds the most specific, already-cached query that is a prefix
40
+ // of the current query.
41
+ let bestBaseQuery = '';
42
+ for (const key of this.cache?.keys?.() ?? []) {
43
+ if (query.startsWith(key) && key.length > bestBaseQuery.length) {
44
+ bestBaseQuery = key;
45
+ }
46
+ }
47
+ const filesToSearch = bestBaseQuery
48
+ ? this.cache.get(bestBaseQuery)
49
+ : this.allFiles;
50
+ return { files: filesToSearch, isExactMatch: false };
51
+ }
52
+ /**
53
+ * Stores search results in the cache.
54
+ * @param query The search query pattern.
55
+ * @param results The matching file paths to cache.
56
+ */
57
+ set(query, results) {
58
+ this.cache.set(query, results);
59
+ }
60
+ }
61
+ //# sourceMappingURL=result-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-cache.js","sourceRoot":"","sources":["../../../../src/utils/filesearch/result-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,OAAO,WAAW;IAMH;IACA;IANF,KAAK,CAAwB;IACtC,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,CAAC,CAAC;IAEnB,YACmB,QAAkB,EAClB,WAAmB;QADnB,aAAQ,GAAR,QAAQ,CAAU;QAClB,gBAAW,GAAX,WAAW,CAAQ;QAEpC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CACP,KAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,qDAAqD;QACrD,6DAA6D;QAC7D,gEAAgE;QAChE,wCAAwC;QACxC,sEAAsE;QACtE,wBAAwB;QACxB,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC/D,aAAa,GAAG,GAAG,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,aAAa;YACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAE;YAChC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAElB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAa,EAAE,OAAiB;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -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,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import path from 'node:path';
7
+ import { test, expect } from 'vitest';
8
+ import { ResultCache } from './result-cache.js';
9
+ test('ResultCache basic usage', async () => {
10
+ const files = [
11
+ 'foo.txt',
12
+ 'bar.js',
13
+ 'baz.md',
14
+ 'subdir/file.txt',
15
+ 'subdir/other.js',
16
+ 'subdir/nested/file.md',
17
+ ];
18
+ const cache = new ResultCache(files, path.resolve('.'));
19
+ const { files: resultFiles, isExactMatch } = await cache.get('*.js');
20
+ expect(resultFiles).toEqual(files);
21
+ expect(isExactMatch).toBe(false);
22
+ });
23
+ test('ResultCache cache hit/miss', async () => {
24
+ const files = ['foo.txt', 'bar.js', 'baz.md'];
25
+ const cache = new ResultCache(files, path.resolve('.'));
26
+ // First call: miss
27
+ const { files: result1Files, isExactMatch: isExactMatch1 } = await cache.get('*.js');
28
+ expect(result1Files).toEqual(files);
29
+ expect(isExactMatch1).toBe(false);
30
+ // Simulate FileSearch applying the filter and setting the result
31
+ cache.set('*.js', ['bar.js']);
32
+ // Second call: hit
33
+ const { files: result2Files, isExactMatch: isExactMatch2 } = await cache.get('*.js');
34
+ expect(result2Files).toEqual(['bar.js']);
35
+ expect(isExactMatch2).toBe(true);
36
+ });
37
+ test('ResultCache best base query', async () => {
38
+ const files = ['foo.txt', 'foobar.js', 'baz.md'];
39
+ const cache = new ResultCache(files, path.resolve('.'));
40
+ // Cache a broader query
41
+ cache.set('foo', ['foo.txt', 'foobar.js']);
42
+ // Search for a more specific query that starts with the broader one
43
+ const { files: resultFiles, isExactMatch } = await cache.get('foobar');
44
+ expect(resultFiles).toEqual(['foo.txt', 'foobar.js']);
45
+ expect(isExactMatch).toBe(false);
46
+ });
47
+ //# sourceMappingURL=result-cache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-cache.test.js","sourceRoot":"","sources":["../../../../src/utils/filesearch/result-cache.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;IACzC,MAAM,KAAK,GAAG;QACZ,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,iBAAiB;QACjB,iBAAiB;QACjB,uBAAuB;KACxB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC5C,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,mBAAmB;IACnB,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GACxD,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElC,iEAAiE;IACjE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9B,mBAAmB;IACnB,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GACxD,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAExD,wBAAwB;IACxB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE3C,oEAAoE;IACpE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
@@ -10,7 +10,6 @@ import { setSimulate429, disableSimulationAfterFallback, shouldSimulate429, crea
10
10
  import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
11
11
  import { retryWithBackoff } from './retry.js';
12
12
  import { AuthType } from '../core/contentGenerator.js';
13
- import { IdeClient } from '../ide/ide-client.js';
14
13
  vi.mock('node:fs');
15
14
  describe('Flash Fallback Integration', () => {
16
15
  let config;
@@ -25,7 +24,6 @@ describe('Flash Fallback Integration', () => {
25
24
  debugMode: false,
26
25
  cwd: '/test',
27
26
  model: 'gemini-2.5-pro',
28
- ideClient: IdeClient.getInstance(false),
29
27
  });
30
28
  // Reset simulation state for each test
31
29
  setSimulate429(false);
@@ -1 +1 @@
1
- {"version":3,"file":"flashFallback.integration.test.js","sourceRoot":"","sources":["../../../src/utils/flashFallback.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flashFallback.integration.test.js","sourceRoot":"","sources":["../../../src/utils/flashFallback.integration.test.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { FileFilteringOptions } from '../config/config.js';
9
9
  * Loads hierarchical GEMINI.md files and concatenates their content.
10
10
  * This function is intended for use by the server.
11
11
  */
12
- export declare function loadServerHierarchicalMemory(currentWorkingDirectory: string, debugMode: boolean, fileService: FileDiscoveryService, extensionContextFilePaths?: string[], importFormat?: 'flat' | 'tree', fileFilteringOptions?: FileFilteringOptions, maxDirs?: number): Promise<{
12
+ export declare function loadServerHierarchicalMemory(currentWorkingDirectory: string, includeDirectoriesToReadGemini: readonly string[], debugMode: boolean, fileService: FileDiscoveryService, extensionContextFilePaths?: string[], importFormat?: 'flat' | 'tree', fileFilteringOptions?: FileFilteringOptions, maxDirs?: number): Promise<{
13
13
  memoryContent: string;
14
14
  fileCount: number;
15
15
  }>;
@@ -58,7 +58,19 @@ async function findProjectRoot(startDir) {
58
58
  currentDir = parentDir;
59
59
  }
60
60
  }
61
- async function getGeminiMdFilePathsInternal(currentWorkingDirectory, userHomePath, debugMode, fileService, extensionContextFilePaths = [], fileFilteringOptions, maxDirs) {
61
+ async function getGeminiMdFilePathsInternal(currentWorkingDirectory, includeDirectoriesToReadGemini, userHomePath, debugMode, fileService, extensionContextFilePaths = [], fileFilteringOptions, maxDirs) {
62
+ const dirs = new Set([
63
+ ...includeDirectoriesToReadGemini,
64
+ currentWorkingDirectory,
65
+ ]);
66
+ const paths = [];
67
+ for (const dir of dirs) {
68
+ const pathsByDir = await getGeminiMdFilePathsInternalForEachDir(dir, userHomePath, debugMode, fileService, extensionContextFilePaths, fileFilteringOptions, maxDirs);
69
+ paths.push(...pathsByDir);
70
+ }
71
+ return Array.from(new Set(paths));
72
+ }
73
+ async function getGeminiMdFilePathsInternalForEachDir(dir, userHomePath, debugMode, fileService, extensionContextFilePaths = [], fileFilteringOptions, maxDirs) {
62
74
  const allPaths = new Set();
63
75
  const geminiMdFilenames = getAllGeminiMdFilenames();
64
76
  for (const geminiMdFilename of geminiMdFilenames) {
@@ -76,8 +88,8 @@ async function getGeminiMdFilePathsInternal(currentWorkingDirectory, userHomePat
76
88
  }
77
89
  // FIX: Only perform the workspace search (upward and downward scans)
78
90
  // if a valid currentWorkingDirectory is provided.
79
- if (currentWorkingDirectory) {
80
- const resolvedCwd = path.resolve(currentWorkingDirectory);
91
+ if (dir) {
92
+ const resolvedCwd = path.resolve(dir);
81
93
  if (debugMode)
82
94
  logger.debug(`Searching for ${geminiMdFilename} starting from CWD: ${resolvedCwd}`);
83
95
  const projectRoot = await findProjectRoot(resolvedCwd);
@@ -180,16 +192,16 @@ currentWorkingDirectoryForDisplay) {
180
192
  * Loads hierarchical GEMINI.md files and concatenates their content.
181
193
  * This function is intended for use by the server.
182
194
  */
183
- export async function loadServerHierarchicalMemory(currentWorkingDirectory, debugMode, fileService, extensionContextFilePaths = [], importFormat = 'tree', fileFilteringOptions, maxDirs = 200) {
195
+ export async function loadServerHierarchicalMemory(currentWorkingDirectory, includeDirectoriesToReadGemini, debugMode, fileService, extensionContextFilePaths = [], importFormat = 'tree', fileFilteringOptions, maxDirs = 200) {
184
196
  if (debugMode)
185
197
  logger.debug(`Loading server hierarchical memory for CWD: ${currentWorkingDirectory} (importFormat: ${importFormat})`);
186
198
  // For the server, homedir() refers to the server process's home.
187
199
  // This is consistent with how MemoryTool already finds the global path.
188
200
  const userHomePath = homedir();
189
- const filePaths = await getGeminiMdFilePathsInternal(currentWorkingDirectory, userHomePath, debugMode, fileService, extensionContextFilePaths, fileFilteringOptions || DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, maxDirs);
201
+ const filePaths = await getGeminiMdFilePathsInternal(currentWorkingDirectory, includeDirectoriesToReadGemini, userHomePath, debugMode, fileService, extensionContextFilePaths, fileFilteringOptions || DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, maxDirs);
190
202
  if (filePaths.length === 0) {
191
203
  if (debugMode)
192
- logger.debug('No GEMINI.md files found in hierarchy.');
204
+ logger.debug('No GEMINI.md files found in hierarchy of the workspace.');
193
205
  return { memoryContent: '', fileCount: 0 };
194
206
  }
195
207
  const contentsWithPaths = await readGeminiMdFiles(filePaths, debugMode, importFormat);
@@ -1 +1 @@
1
- {"version":3,"file":"memoryDiscovery.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryDiscovery.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ describe('loadServerHierarchicalMemory', () => {
49
49
  await fsPromises.rm(testRootDir, { recursive: true, force: true });
50
50
  });
51
51
  it('should return empty memory and count if no context files are found', async () => {
52
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
52
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
53
53
  expect(result).toEqual({
54
54
  memoryContent: '',
55
55
  fileCount: 0,
@@ -57,11 +57,9 @@ describe('loadServerHierarchicalMemory', () => {
57
57
  });
58
58
  it('should load only the global context file if present and others are not (default filename)', async () => {
59
59
  const defaultContextFile = await createTestFile(path.join(homedir, GEMINI_CONFIG_DIR, DEFAULT_CONTEXT_FILENAME), 'default context content');
60
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
60
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
61
61
  expect(result).toEqual({
62
- memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---
63
- default context content
64
- --- End of Context from: ${path.relative(cwd, defaultContextFile)} ---`,
62
+ memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---\ndefault context content\n--- End of Context from: ${path.relative(cwd, defaultContextFile)} ---`,
65
63
  fileCount: 1,
66
64
  });
67
65
  });
@@ -69,11 +67,9 @@ default context content
69
67
  const customFilename = 'CUSTOM_AGENTS.md';
70
68
  setGeminiMdFilename(customFilename);
71
69
  const customContextFile = await createTestFile(path.join(homedir, GEMINI_CONFIG_DIR, customFilename), 'custom context content');
72
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
70
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
73
71
  expect(result).toEqual({
74
- memoryContent: `--- Context from: ${path.relative(cwd, customContextFile)} ---
75
- custom context content
76
- --- End of Context from: ${path.relative(cwd, customContextFile)} ---`,
72
+ memoryContent: `--- Context from: ${path.relative(cwd, customContextFile)} ---\ncustom context content\n--- End of Context from: ${path.relative(cwd, customContextFile)} ---`,
77
73
  fileCount: 1,
78
74
  });
79
75
  });
@@ -82,15 +78,9 @@ custom context content
82
78
  setGeminiMdFilename(customFilename);
83
79
  const projectContextFile = await createTestFile(path.join(projectRoot, customFilename), 'project context content');
84
80
  const cwdContextFile = await createTestFile(path.join(cwd, customFilename), 'cwd context content');
85
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
81
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
86
82
  expect(result).toEqual({
87
- memoryContent: `--- Context from: ${path.relative(cwd, projectContextFile)} ---
88
- project context content
89
- --- End of Context from: ${path.relative(cwd, projectContextFile)} ---
90
-
91
- --- Context from: ${path.relative(cwd, cwdContextFile)} ---
92
- cwd context content
93
- --- End of Context from: ${path.relative(cwd, cwdContextFile)} ---`,
83
+ memoryContent: `--- Context from: ${path.relative(cwd, projectContextFile)} ---\nproject context content\n--- End of Context from: ${path.relative(cwd, projectContextFile)} ---\n\n--- Context from: ${path.relative(cwd, cwdContextFile)} ---\ncwd context content\n--- End of Context from: ${path.relative(cwd, cwdContextFile)} ---`,
94
84
  fileCount: 2,
95
85
  });
96
86
  });
@@ -99,45 +89,27 @@ cwd context content
99
89
  setGeminiMdFilename(customFilename);
100
90
  await createTestFile(path.join(cwd, 'subdir', customFilename), 'Subdir custom memory');
101
91
  await createTestFile(path.join(cwd, customFilename), 'CWD custom memory');
102
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
92
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
103
93
  expect(result).toEqual({
104
- memoryContent: `--- Context from: ${customFilename} ---
105
- CWD custom memory
106
- --- End of Context from: ${customFilename} ---
107
-
108
- --- Context from: ${path.join('subdir', customFilename)} ---
109
- Subdir custom memory
110
- --- End of Context from: ${path.join('subdir', customFilename)} ---`,
94
+ memoryContent: `--- Context from: ${customFilename} ---\nCWD custom memory\n--- End of Context from: ${customFilename} ---\n\n--- Context from: ${path.join('subdir', customFilename)} ---\nSubdir custom memory\n--- End of Context from: ${path.join('subdir', customFilename)} ---`,
111
95
  fileCount: 2,
112
96
  });
113
97
  });
114
98
  it('should load ORIGINAL_GEMINI_MD_FILENAME files by upward traversal from CWD to project root', async () => {
115
99
  const projectRootGeminiFile = await createTestFile(path.join(projectRoot, DEFAULT_CONTEXT_FILENAME), 'Project root memory');
116
100
  const srcGeminiFile = await createTestFile(path.join(cwd, DEFAULT_CONTEXT_FILENAME), 'Src directory memory');
117
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
101
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
118
102
  expect(result).toEqual({
119
- memoryContent: `--- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
120
- Project root memory
121
- --- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
122
-
123
- --- Context from: ${path.relative(cwd, srcGeminiFile)} ---
124
- Src directory memory
125
- --- End of Context from: ${path.relative(cwd, srcGeminiFile)} ---`,
103
+ memoryContent: `--- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\nProject root memory\n--- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, srcGeminiFile)} ---\nSrc directory memory\n--- End of Context from: ${path.relative(cwd, srcGeminiFile)} ---`,
126
104
  fileCount: 2,
127
105
  });
128
106
  });
129
107
  it('should load ORIGINAL_GEMINI_MD_FILENAME files by downward traversal from CWD', async () => {
130
108
  await createTestFile(path.join(cwd, 'subdir', DEFAULT_CONTEXT_FILENAME), 'Subdir memory');
131
109
  await createTestFile(path.join(cwd, DEFAULT_CONTEXT_FILENAME), 'CWD memory');
132
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
110
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
133
111
  expect(result).toEqual({
134
- memoryContent: `--- Context from: ${DEFAULT_CONTEXT_FILENAME} ---
135
- CWD memory
136
- --- End of Context from: ${DEFAULT_CONTEXT_FILENAME} ---
137
-
138
- --- Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---
139
- Subdir memory
140
- --- End of Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---`,
112
+ memoryContent: `--- Context from: ${DEFAULT_CONTEXT_FILENAME} ---\nCWD memory\n--- End of Context from: ${DEFAULT_CONTEXT_FILENAME} ---\n\n--- Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---\nSubdir memory\n--- End of Context from: ${path.join('subdir', DEFAULT_CONTEXT_FILENAME)} ---`,
141
113
  fileCount: 2,
142
114
  });
143
115
  });
@@ -147,27 +119,9 @@ Subdir memory
147
119
  const projectRootGeminiFile = await createTestFile(path.join(projectRoot, DEFAULT_CONTEXT_FILENAME), 'Project root memory');
148
120
  const cwdGeminiFile = await createTestFile(path.join(cwd, DEFAULT_CONTEXT_FILENAME), 'CWD memory');
149
121
  const subDirGeminiFile = await createTestFile(path.join(cwd, 'sub', DEFAULT_CONTEXT_FILENAME), 'Subdir memory');
150
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
122
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
151
123
  expect(result).toEqual({
152
- memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---
153
- default context content
154
- --- End of Context from: ${path.relative(cwd, defaultContextFile)} ---
155
-
156
- --- Context from: ${path.relative(cwd, rootGeminiFile)} ---
157
- Project parent memory
158
- --- End of Context from: ${path.relative(cwd, rootGeminiFile)} ---
159
-
160
- --- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
161
- Project root memory
162
- --- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---
163
-
164
- --- Context from: ${path.relative(cwd, cwdGeminiFile)} ---
165
- CWD memory
166
- --- End of Context from: ${path.relative(cwd, cwdGeminiFile)} ---
167
-
168
- --- Context from: ${path.relative(cwd, subDirGeminiFile)} ---
169
- Subdir memory
170
- --- End of Context from: ${path.relative(cwd, subDirGeminiFile)} ---`,
124
+ memoryContent: `--- Context from: ${path.relative(cwd, defaultContextFile)} ---\ndefault context content\n--- End of Context from: ${path.relative(cwd, defaultContextFile)} ---\n\n--- Context from: ${path.relative(cwd, rootGeminiFile)} ---\nProject parent memory\n--- End of Context from: ${path.relative(cwd, rootGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\nProject root memory\n--- End of Context from: ${path.relative(cwd, projectRootGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, cwdGeminiFile)} ---\nCWD memory\n--- End of Context from: ${path.relative(cwd, cwdGeminiFile)} ---\n\n--- Context from: ${path.relative(cwd, subDirGeminiFile)} ---\nSubdir memory\n--- End of Context from: ${path.relative(cwd, subDirGeminiFile)} ---`,
171
125
  fileCount: 5,
172
126
  });
173
127
  });
@@ -176,14 +130,12 @@ Subdir memory
176
130
  await createTestFile(path.join(projectRoot, '.gitignore'), 'node_modules');
177
131
  await createTestFile(path.join(cwd, 'node_modules', DEFAULT_CONTEXT_FILENAME), 'Ignored memory');
178
132
  const regularSubDirGeminiFile = await createTestFile(path.join(cwd, 'my_code', DEFAULT_CONTEXT_FILENAME), 'My code memory');
179
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot), [], 'tree', {
133
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot), [], 'tree', {
180
134
  respectGitIgnore: true,
181
135
  respectGeminiIgnore: true,
182
136
  }, 200);
183
137
  expect(result).toEqual({
184
- memoryContent: `--- Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---
185
- My code memory
186
- --- End of Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---`,
138
+ memoryContent: `--- Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---\nMy code memory\n--- End of Context from: ${path.relative(cwd, regularSubDirGeminiFile)} ---`,
187
139
  fileCount: 1,
188
140
  });
189
141
  });
@@ -195,14 +147,14 @@ My code memory
195
147
  await createEmptyDir(path.join(cwd, `deep_dir_${i}`));
196
148
  }
197
149
  // Pass the custom limit directly to the function
198
- await loadServerHierarchicalMemory(cwd, true, new FileDiscoveryService(projectRoot), [], 'tree', // importFormat
150
+ await loadServerHierarchicalMemory(cwd, [], true, new FileDiscoveryService(projectRoot), [], 'tree', // importFormat
199
151
  {
200
152
  respectGitIgnore: true,
201
153
  respectGeminiIgnore: true,
202
154
  }, 50);
203
155
  expect(consoleDebugSpy).toHaveBeenCalledWith(expect.stringContaining('[DEBUG] [BfsFileSearch]'), expect.stringContaining('Scanning [50/50]:'));
204
156
  vi.mocked(console.debug).mockRestore();
205
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot));
157
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot));
206
158
  expect(result).toEqual({
207
159
  memoryContent: '',
208
160
  fileCount: 0,
@@ -210,11 +162,18 @@ My code memory
210
162
  });
211
163
  it('should load extension context file paths', async () => {
212
164
  const extensionFilePath = await createTestFile(path.join(testRootDir, 'extensions/ext1/GEMINI.md'), 'Extension memory content');
213
- const result = await loadServerHierarchicalMemory(cwd, false, new FileDiscoveryService(projectRoot), [extensionFilePath]);
165
+ const result = await loadServerHierarchicalMemory(cwd, [], false, new FileDiscoveryService(projectRoot), [extensionFilePath]);
214
166
  expect(result).toEqual({
215
- memoryContent: `--- Context from: ${path.relative(cwd, extensionFilePath)} ---
216
- Extension memory content
217
- --- End of Context from: ${path.relative(cwd, extensionFilePath)} ---`,
167
+ memoryContent: `--- Context from: ${path.relative(cwd, extensionFilePath)} ---\nExtension memory content\n--- End of Context from: ${path.relative(cwd, extensionFilePath)} ---`,
168
+ fileCount: 1,
169
+ });
170
+ });
171
+ it('should load memory from included directories', async () => {
172
+ const includedDir = await createEmptyDir(path.join(testRootDir, 'included'));
173
+ const includedFile = await createTestFile(path.join(includedDir, DEFAULT_CONTEXT_FILENAME), 'included directory memory');
174
+ const result = await loadServerHierarchicalMemory(cwd, [includedDir], false, new FileDiscoveryService(projectRoot));
175
+ expect(result).toEqual({
176
+ memoryContent: `--- Context from: ${path.relative(cwd, includedFile)} ---\nincluded directory memory\n--- End of Context from: ${path.relative(cwd, includedFile)} ---`,
218
177
  fileCount: 1,
219
178
  });
220
179
  });
@@ -1 +1 @@
1
- {"version":3,"file":"memoryDiscovery.test.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryDiscovery.test.js","sourceRoot":"","sources":["../../../src/utils/memoryDiscovery.test.ts"],"names":[],"mappings":"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"}