@google/gemini-cli-core 0.13.0 → 0.15.0-nightly.20251107.cd27cae8

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 (137) hide show
  1. package/dist/google-gemini-cli-core-0.15.0-nightly.20251107.b8eeb553.tgz +0 -0
  2. package/dist/src/agents/executor.d.ts +3 -0
  3. package/dist/src/agents/executor.js +21 -0
  4. package/dist/src/agents/executor.js.map +1 -1
  5. package/dist/src/agents/executor.test.js +177 -2
  6. package/dist/src/agents/executor.test.js.map +1 -1
  7. package/dist/src/config/config.d.ts +4 -0
  8. package/dist/src/config/config.js +20 -4
  9. package/dist/src/config/config.js.map +1 -1
  10. package/dist/src/config/config.test.js +93 -4
  11. package/dist/src/config/config.test.js.map +1 -1
  12. package/dist/src/config/defaultModelConfigs.d.ts +7 -0
  13. package/dist/src/config/defaultModelConfigs.js +127 -0
  14. package/dist/src/config/defaultModelConfigs.js.map +1 -0
  15. package/dist/src/confirmation-bus/message-bus.js +1 -1
  16. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  17. package/dist/src/confirmation-bus/types.d.ts +1 -0
  18. package/dist/src/core/prompts.js +0 -2
  19. package/dist/src/core/prompts.js.map +1 -1
  20. package/dist/src/fallback/handler.js +1 -3
  21. package/dist/src/fallback/handler.js.map +1 -1
  22. package/dist/src/fallback/handler.test.js +4 -12
  23. package/dist/src/fallback/handler.test.js.map +1 -1
  24. package/dist/src/fallback/types.d.ts +1 -1
  25. package/dist/src/generated/git-commit.d.ts +2 -2
  26. package/dist/src/generated/git-commit.js +2 -2
  27. package/dist/src/generated/git-commit.js.map +1 -1
  28. package/dist/src/ide/detect-ide.js +2 -1
  29. package/dist/src/ide/detect-ide.js.map +1 -1
  30. package/dist/src/index.d.ts +1 -0
  31. package/dist/src/index.js +1 -0
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/policy/config.test.js +17 -0
  34. package/dist/src/policy/config.test.js.map +1 -1
  35. package/dist/src/policy/policies/discovered.toml +8 -0
  36. package/dist/src/policy/policy-engine.d.ts +1 -1
  37. package/dist/src/policy/policy-engine.js +11 -3
  38. package/dist/src/policy/policy-engine.js.map +1 -1
  39. package/dist/src/policy/policy-engine.test.js +98 -50
  40. package/dist/src/policy/policy-engine.test.js.map +1 -1
  41. package/dist/src/policy/toml-loader.test.js +220 -336
  42. package/dist/src/policy/toml-loader.test.js.map +1 -1
  43. package/dist/src/services/modelConfig.golden.test.d.ts +6 -0
  44. package/dist/src/services/modelConfig.golden.test.js +42 -0
  45. package/dist/src/services/modelConfig.golden.test.js.map +1 -0
  46. package/dist/src/services/modelConfig.integration.test.d.ts +6 -0
  47. package/dist/src/services/modelConfig.integration.test.js +213 -0
  48. package/dist/src/services/modelConfig.integration.test.js.map +1 -0
  49. package/dist/src/services/modelConfigService.d.ts +46 -0
  50. package/dist/src/services/modelConfigService.js +146 -0
  51. package/dist/src/services/modelConfigService.js.map +1 -0
  52. package/dist/src/services/modelConfigService.test.d.ts +6 -0
  53. package/dist/src/services/modelConfigService.test.js +509 -0
  54. package/dist/src/services/modelConfigService.test.js.map +1 -0
  55. package/dist/src/services/test-data/resolved-aliases.golden.json +123 -0
  56. package/dist/src/tools/base-tool-invocation.test.d.ts +6 -0
  57. package/dist/src/tools/base-tool-invocation.test.js +85 -0
  58. package/dist/src/tools/base-tool-invocation.test.js.map +1 -0
  59. package/dist/src/tools/edit.d.ts +1 -1
  60. package/dist/src/tools/edit.js +31 -33
  61. package/dist/src/tools/edit.js.map +1 -1
  62. package/dist/src/tools/edit.test.js +30 -20
  63. package/dist/src/tools/edit.test.js.map +1 -1
  64. package/dist/src/tools/glob.d.ts +1 -1
  65. package/dist/src/tools/glob.js +7 -7
  66. package/dist/src/tools/glob.js.map +1 -1
  67. package/dist/src/tools/glob.test.js +20 -17
  68. package/dist/src/tools/glob.test.js.map +1 -1
  69. package/dist/src/tools/grep.d.ts +1 -1
  70. package/dist/src/tools/grep.js +9 -9
  71. package/dist/src/tools/grep.js.map +1 -1
  72. package/dist/src/tools/grep.test.js +15 -12
  73. package/dist/src/tools/grep.test.js.map +1 -1
  74. package/dist/src/tools/ls.d.ts +1 -1
  75. package/dist/src/tools/ls.js +14 -15
  76. package/dist/src/tools/ls.js.map +1 -1
  77. package/dist/src/tools/ls.test.js +32 -33
  78. package/dist/src/tools/ls.test.js.map +1 -1
  79. package/dist/src/tools/mcp-client.js +2 -0
  80. package/dist/src/tools/mcp-client.js.map +1 -1
  81. package/dist/src/tools/mcp-client.test.js +5 -0
  82. package/dist/src/tools/mcp-client.test.js.map +1 -1
  83. package/dist/src/tools/mcp-tool.js +1 -1
  84. package/dist/src/tools/mcp-tool.js.map +1 -1
  85. package/dist/src/tools/read-file.d.ts +2 -2
  86. package/dist/src/tools/read-file.js +20 -24
  87. package/dist/src/tools/read-file.js.map +1 -1
  88. package/dist/src/tools/read-file.test.js +62 -51
  89. package/dist/src/tools/read-file.test.js.map +1 -1
  90. package/dist/src/tools/read-many-files.d.ts +2 -9
  91. package/dist/src/tools/read-many-files.js +10 -21
  92. package/dist/src/tools/read-many-files.js.map +1 -1
  93. package/dist/src/tools/read-many-files.test.js +35 -35
  94. package/dist/src/tools/read-many-files.test.js.map +1 -1
  95. package/dist/src/tools/ripGrep.d.ts +1 -1
  96. package/dist/src/tools/ripGrep.js +8 -8
  97. package/dist/src/tools/ripGrep.js.map +1 -1
  98. package/dist/src/tools/ripGrep.test.js +23 -14
  99. package/dist/src/tools/ripGrep.test.js.map +1 -1
  100. package/dist/src/tools/shell.d.ts +1 -1
  101. package/dist/src/tools/shell.js +16 -14
  102. package/dist/src/tools/shell.js.map +1 -1
  103. package/dist/src/tools/shell.test.js +64 -34
  104. package/dist/src/tools/shell.test.js.map +1 -1
  105. package/dist/src/tools/smart-edit.d.ts +1 -1
  106. package/dist/src/tools/smart-edit.js +8 -11
  107. package/dist/src/tools/smart-edit.js.map +1 -1
  108. package/dist/src/tools/tool-registry.d.ts +12 -2
  109. package/dist/src/tools/tool-registry.js +49 -14
  110. package/dist/src/tools/tool-registry.js.map +1 -1
  111. package/dist/src/tools/tool-registry.test.js +70 -4
  112. package/dist/src/tools/tool-registry.test.js.map +1 -1
  113. package/dist/src/tools/tools.d.ts +2 -1
  114. package/dist/src/tools/tools.js +4 -1
  115. package/dist/src/tools/tools.js.map +1 -1
  116. package/dist/src/tools/write-file.js +31 -31
  117. package/dist/src/tools/write-file.js.map +1 -1
  118. package/dist/src/tools/write-file.test.js +23 -5
  119. package/dist/src/tools/write-file.test.js.map +1 -1
  120. package/dist/src/utils/extensionLoader.js +7 -3
  121. package/dist/src/utils/extensionLoader.js.map +1 -1
  122. package/dist/src/utils/fileUtils.test.js +75 -60
  123. package/dist/src/utils/fileUtils.test.js.map +1 -1
  124. package/dist/src/utils/pathReader.js +4 -4
  125. package/dist/src/utils/pathReader.js.map +1 -1
  126. package/dist/src/utils/pathReader.test.js +44 -1
  127. package/dist/src/utils/pathReader.test.js.map +1 -1
  128. package/dist/src/utils/paths.d.ts +1 -1
  129. package/dist/src/utils/paths.js +5 -3
  130. package/dist/src/utils/paths.js.map +1 -1
  131. package/dist/src/utils/workspaceContext.d.ts +4 -3
  132. package/dist/src/utils/workspaceContext.js +10 -11
  133. package/dist/src/utils/workspaceContext.js.map +1 -1
  134. package/dist/src/utils/workspaceContext.test.js +1 -1
  135. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  136. package/dist/tsconfig.tsbuildinfo +1 -1
  137. package/package.json +1 -1
@@ -0,0 +1,509 @@
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 { ModelConfigService } from './modelConfigService.js';
8
+ describe('ModelConfigService', () => {
9
+ it('should resolve a basic alias to its model and settings', () => {
10
+ const config = {
11
+ aliases: {
12
+ classifier: {
13
+ modelConfig: {
14
+ model: 'gemini-1.5-flash-latest',
15
+ generateContentConfig: {
16
+ temperature: 0,
17
+ topP: 0.9,
18
+ },
19
+ },
20
+ },
21
+ },
22
+ overrides: [],
23
+ };
24
+ const service = new ModelConfigService(config);
25
+ const resolved = service.getResolvedConfig({ model: 'classifier' });
26
+ expect(resolved.model).toBe('gemini-1.5-flash-latest');
27
+ expect(resolved.generateContentConfig).toEqual({
28
+ temperature: 0,
29
+ topP: 0.9,
30
+ });
31
+ });
32
+ it('should apply a simple override on top of an alias', () => {
33
+ const config = {
34
+ aliases: {
35
+ classifier: {
36
+ modelConfig: {
37
+ model: 'gemini-1.5-flash-latest',
38
+ generateContentConfig: {
39
+ temperature: 0,
40
+ topP: 0.9,
41
+ },
42
+ },
43
+ },
44
+ },
45
+ overrides: [
46
+ {
47
+ match: { model: 'classifier' },
48
+ modelConfig: {
49
+ generateContentConfig: {
50
+ temperature: 0.5,
51
+ maxOutputTokens: 1000,
52
+ },
53
+ },
54
+ },
55
+ ],
56
+ };
57
+ const service = new ModelConfigService(config);
58
+ const resolved = service.getResolvedConfig({ model: 'classifier' });
59
+ expect(resolved.model).toBe('gemini-1.5-flash-latest');
60
+ expect(resolved.generateContentConfig).toEqual({
61
+ temperature: 0.5,
62
+ topP: 0.9,
63
+ maxOutputTokens: 1000,
64
+ });
65
+ });
66
+ it('should apply the most specific override rule', () => {
67
+ const config = {
68
+ aliases: {},
69
+ overrides: [
70
+ {
71
+ match: { model: 'gemini-pro' },
72
+ modelConfig: { generateContentConfig: { temperature: 0.5 } },
73
+ },
74
+ {
75
+ match: { model: 'gemini-pro', overrideScope: 'my-agent' },
76
+ modelConfig: { generateContentConfig: { temperature: 0.1 } },
77
+ },
78
+ ],
79
+ };
80
+ const service = new ModelConfigService(config);
81
+ const resolved = service.getResolvedConfig({
82
+ model: 'gemini-pro',
83
+ overrideScope: 'my-agent',
84
+ });
85
+ expect(resolved.model).toBe('gemini-pro');
86
+ expect(resolved.generateContentConfig).toEqual({ temperature: 0.1 });
87
+ });
88
+ it('should use the last override in case of a tie in specificity', () => {
89
+ const config = {
90
+ aliases: {},
91
+ overrides: [
92
+ {
93
+ match: { model: 'gemini-pro' },
94
+ modelConfig: {
95
+ generateContentConfig: { temperature: 0.5, topP: 0.8 },
96
+ },
97
+ },
98
+ {
99
+ match: { model: 'gemini-pro' },
100
+ modelConfig: { generateContentConfig: { temperature: 0.1 } },
101
+ },
102
+ ],
103
+ };
104
+ const service = new ModelConfigService(config);
105
+ const resolved = service.getResolvedConfig({ model: 'gemini-pro' });
106
+ expect(resolved.model).toBe('gemini-pro');
107
+ expect(resolved.generateContentConfig).toEqual({
108
+ temperature: 0.1,
109
+ topP: 0.8,
110
+ });
111
+ });
112
+ it('should correctly pass through generation config from an alias', () => {
113
+ const config = {
114
+ aliases: {
115
+ 'thinking-alias': {
116
+ modelConfig: {
117
+ model: 'gemini-pro',
118
+ generateContentConfig: {
119
+ candidateCount: 500,
120
+ },
121
+ },
122
+ },
123
+ },
124
+ overrides: [],
125
+ };
126
+ const service = new ModelConfigService(config);
127
+ const resolved = service.getResolvedConfig({ model: 'thinking-alias' });
128
+ expect(resolved.generateContentConfig).toEqual({ candidateCount: 500 });
129
+ });
130
+ it('should let an override generation config win over an alias config', () => {
131
+ const config = {
132
+ aliases: {
133
+ 'thinking-alias': {
134
+ modelConfig: {
135
+ model: 'gemini-pro',
136
+ generateContentConfig: {
137
+ candidateCount: 500,
138
+ },
139
+ },
140
+ },
141
+ },
142
+ overrides: [
143
+ {
144
+ match: { model: 'thinking-alias' },
145
+ modelConfig: {
146
+ generateContentConfig: {
147
+ candidateCount: 1000,
148
+ },
149
+ },
150
+ },
151
+ ],
152
+ };
153
+ const service = new ModelConfigService(config);
154
+ const resolved = service.getResolvedConfig({ model: 'thinking-alias' });
155
+ expect(resolved.generateContentConfig).toEqual({
156
+ candidateCount: 1000,
157
+ });
158
+ });
159
+ it('should merge settings from global, alias, and multiple matching overrides', () => {
160
+ const config = {
161
+ aliases: {
162
+ 'test-alias': {
163
+ modelConfig: {
164
+ model: 'gemini-test-model',
165
+ generateContentConfig: {
166
+ topP: 0.9,
167
+ topK: 50,
168
+ },
169
+ },
170
+ },
171
+ },
172
+ overrides: [
173
+ {
174
+ match: { model: 'gemini-test-model' },
175
+ modelConfig: {
176
+ generateContentConfig: {
177
+ topK: 40,
178
+ maxOutputTokens: 2048,
179
+ },
180
+ },
181
+ },
182
+ {
183
+ match: { overrideScope: 'test-agent' },
184
+ modelConfig: {
185
+ generateContentConfig: {
186
+ maxOutputTokens: 4096,
187
+ },
188
+ },
189
+ },
190
+ {
191
+ match: { model: 'gemini-test-model', overrideScope: 'test-agent' },
192
+ modelConfig: {
193
+ generateContentConfig: {
194
+ temperature: 0.2,
195
+ },
196
+ },
197
+ },
198
+ ],
199
+ };
200
+ const service = new ModelConfigService(config);
201
+ const resolved = service.getResolvedConfig({
202
+ model: 'test-alias',
203
+ overrideScope: 'test-agent',
204
+ });
205
+ expect(resolved.model).toBe('gemini-test-model');
206
+ expect(resolved.generateContentConfig).toEqual({
207
+ // From global, overridden by most specific override
208
+ temperature: 0.2,
209
+ // From alias, not overridden
210
+ topP: 0.9,
211
+ // From alias, overridden by less specific override
212
+ topK: 40,
213
+ // From first matching override, overridden by second matching override
214
+ maxOutputTokens: 4096,
215
+ });
216
+ });
217
+ it('should match an agent:core override when agent is undefined', () => {
218
+ const config = {
219
+ aliases: {},
220
+ overrides: [
221
+ {
222
+ match: { overrideScope: 'core' },
223
+ modelConfig: {
224
+ generateContentConfig: {
225
+ temperature: 0.1,
226
+ },
227
+ },
228
+ },
229
+ ],
230
+ };
231
+ const service = new ModelConfigService(config);
232
+ const resolved = service.getResolvedConfig({
233
+ model: 'gemini-pro',
234
+ overrideScope: undefined, // Explicitly undefined
235
+ });
236
+ expect(resolved.model).toBe('gemini-pro');
237
+ expect(resolved.generateContentConfig).toEqual({
238
+ temperature: 0.1,
239
+ });
240
+ });
241
+ describe('alias inheritance', () => {
242
+ it('should resolve a simple "extends" chain', () => {
243
+ const config = {
244
+ aliases: {
245
+ base: {
246
+ modelConfig: {
247
+ model: 'gemini-1.5-pro-latest',
248
+ generateContentConfig: {
249
+ temperature: 0.7,
250
+ topP: 0.9,
251
+ },
252
+ },
253
+ },
254
+ 'flash-variant': {
255
+ extends: 'base',
256
+ modelConfig: {
257
+ model: 'gemini-1.5-flash-latest',
258
+ },
259
+ },
260
+ },
261
+ };
262
+ const service = new ModelConfigService(config);
263
+ const resolved = service.getResolvedConfig({ model: 'flash-variant' });
264
+ expect(resolved.model).toBe('gemini-1.5-flash-latest');
265
+ expect(resolved.generateContentConfig).toEqual({
266
+ temperature: 0.7,
267
+ topP: 0.9,
268
+ });
269
+ });
270
+ it('should override parent properties from child alias', () => {
271
+ const config = {
272
+ aliases: {
273
+ base: {
274
+ modelConfig: {
275
+ model: 'gemini-1.5-pro-latest',
276
+ generateContentConfig: {
277
+ temperature: 0.7,
278
+ topP: 0.9,
279
+ },
280
+ },
281
+ },
282
+ 'flash-variant': {
283
+ extends: 'base',
284
+ modelConfig: {
285
+ model: 'gemini-1.5-flash-latest',
286
+ generateContentConfig: {
287
+ temperature: 0.2,
288
+ },
289
+ },
290
+ },
291
+ },
292
+ };
293
+ const service = new ModelConfigService(config);
294
+ const resolved = service.getResolvedConfig({ model: 'flash-variant' });
295
+ expect(resolved.model).toBe('gemini-1.5-flash-latest');
296
+ expect(resolved.generateContentConfig).toEqual({
297
+ temperature: 0.2,
298
+ topP: 0.9,
299
+ });
300
+ });
301
+ it('should resolve a multi-level "extends" chain', () => {
302
+ const config = {
303
+ aliases: {
304
+ base: {
305
+ modelConfig: {
306
+ model: 'gemini-1.5-pro-latest',
307
+ generateContentConfig: {
308
+ temperature: 0.7,
309
+ topP: 0.9,
310
+ },
311
+ },
312
+ },
313
+ 'base-flash': {
314
+ extends: 'base',
315
+ modelConfig: {
316
+ model: 'gemini-1.5-flash-latest',
317
+ },
318
+ },
319
+ 'classifier-flash': {
320
+ extends: 'base-flash',
321
+ modelConfig: {
322
+ generateContentConfig: {
323
+ temperature: 0,
324
+ },
325
+ },
326
+ },
327
+ },
328
+ };
329
+ const service = new ModelConfigService(config);
330
+ const resolved = service.getResolvedConfig({
331
+ model: 'classifier-flash',
332
+ });
333
+ expect(resolved.model).toBe('gemini-1.5-flash-latest');
334
+ expect(resolved.generateContentConfig).toEqual({
335
+ temperature: 0,
336
+ topP: 0.9,
337
+ });
338
+ });
339
+ it('should throw an error for circular dependencies', () => {
340
+ const config = {
341
+ aliases: {
342
+ a: { extends: 'b', modelConfig: {} },
343
+ b: { extends: 'a', modelConfig: {} },
344
+ },
345
+ };
346
+ const service = new ModelConfigService(config);
347
+ expect(() => service.getResolvedConfig({ model: 'a' })).toThrow('Circular alias dependency: a -> b -> a');
348
+ });
349
+ describe('abstract aliases', () => {
350
+ it('should allow an alias to extend an abstract alias without a model', () => {
351
+ const config = {
352
+ aliases: {
353
+ 'abstract-base': {
354
+ modelConfig: {
355
+ generateContentConfig: {
356
+ temperature: 0.1,
357
+ },
358
+ },
359
+ },
360
+ 'concrete-child': {
361
+ extends: 'abstract-base',
362
+ modelConfig: {
363
+ model: 'gemini-1.5-pro-latest',
364
+ generateContentConfig: {
365
+ topP: 0.9,
366
+ },
367
+ },
368
+ },
369
+ },
370
+ };
371
+ const service = new ModelConfigService(config);
372
+ const resolved = service.getResolvedConfig({ model: 'concrete-child' });
373
+ expect(resolved.model).toBe('gemini-1.5-pro-latest');
374
+ expect(resolved.generateContentConfig).toEqual({
375
+ temperature: 0.1,
376
+ topP: 0.9,
377
+ });
378
+ });
379
+ it('should throw an error if a resolved alias chain has no model', () => {
380
+ const config = {
381
+ aliases: {
382
+ 'abstract-base': {
383
+ modelConfig: {
384
+ generateContentConfig: { temperature: 0.7 },
385
+ },
386
+ },
387
+ },
388
+ };
389
+ const service = new ModelConfigService(config);
390
+ expect(() => service.getResolvedConfig({ model: 'abstract-base' })).toThrow('Could not resolve a model name for alias "abstract-base". Please ensure the alias chain or a matching override specifies a model.');
391
+ });
392
+ it('should resolve an abstract alias if an override provides the model', () => {
393
+ const config = {
394
+ aliases: {
395
+ 'abstract-base': {
396
+ modelConfig: {
397
+ generateContentConfig: {
398
+ temperature: 0.1,
399
+ },
400
+ },
401
+ },
402
+ },
403
+ overrides: [
404
+ {
405
+ match: { model: 'abstract-base' },
406
+ modelConfig: {
407
+ model: 'gemini-1.5-flash-latest',
408
+ },
409
+ },
410
+ ],
411
+ };
412
+ const service = new ModelConfigService(config);
413
+ const resolved = service.getResolvedConfig({ model: 'abstract-base' });
414
+ expect(resolved.model).toBe('gemini-1.5-flash-latest');
415
+ expect(resolved.generateContentConfig).toEqual({
416
+ temperature: 0.1,
417
+ });
418
+ });
419
+ });
420
+ it('should throw an error if an extended alias does not exist', () => {
421
+ const config = {
422
+ aliases: {
423
+ 'bad-alias': {
424
+ extends: 'non-existent',
425
+ modelConfig: {},
426
+ },
427
+ },
428
+ };
429
+ const service = new ModelConfigService(config);
430
+ expect(() => service.getResolvedConfig({ model: 'bad-alias' })).toThrow('Alias "non-existent" not found.');
431
+ });
432
+ });
433
+ describe('deep merging', () => {
434
+ it('should deep merge nested config objects from aliases and overrides', () => {
435
+ const config = {
436
+ aliases: {
437
+ 'base-safe': {
438
+ modelConfig: {
439
+ model: 'gemini-pro',
440
+ generateContentConfig: {
441
+ safetySettings: {
442
+ HARM_CATEGORY_HARASSMENT: 'BLOCK_ONLY_HIGH',
443
+ HARM_CATEGORY_HATE_SPEECH: 'BLOCK_ONLY_HIGH',
444
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
445
+ },
446
+ },
447
+ },
448
+ },
449
+ },
450
+ overrides: [
451
+ {
452
+ match: { model: 'base-safe' },
453
+ modelConfig: {
454
+ generateContentConfig: {
455
+ safetySettings: {
456
+ HARM_CATEGORY_HATE_SPEECH: 'BLOCK_NONE',
457
+ HARM_CATEGORY_SEXUALLY_EXPLICIT: 'BLOCK_MEDIUM_AND_ABOVE',
458
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
459
+ },
460
+ },
461
+ },
462
+ },
463
+ ],
464
+ };
465
+ const service = new ModelConfigService(config);
466
+ const resolved = service.getResolvedConfig({ model: 'base-safe' });
467
+ expect(resolved.model).toBe('gemini-pro');
468
+ expect(resolved.generateContentConfig.safetySettings).toEqual({
469
+ // From alias
470
+ HARM_CATEGORY_HARASSMENT: 'BLOCK_ONLY_HIGH',
471
+ // From alias, overridden by override
472
+ HARM_CATEGORY_HATE_SPEECH: 'BLOCK_NONE',
473
+ // From override
474
+ HARM_CATEGORY_SEXUALLY_EXPLICIT: 'BLOCK_MEDIUM_AND_ABOVE',
475
+ });
476
+ });
477
+ it('should not deeply merge merge arrays from aliases and overrides', () => {
478
+ const config = {
479
+ aliases: {
480
+ base: {
481
+ modelConfig: {
482
+ model: 'gemini-pro',
483
+ generateContentConfig: {
484
+ stopSequences: ['foo'],
485
+ },
486
+ },
487
+ },
488
+ },
489
+ overrides: [
490
+ {
491
+ match: { model: 'base' },
492
+ modelConfig: {
493
+ generateContentConfig: {
494
+ stopSequences: ['overrideFoo'],
495
+ },
496
+ },
497
+ },
498
+ ],
499
+ };
500
+ const service = new ModelConfigService(config);
501
+ const resolved = service.getResolvedConfig({ model: 'base' });
502
+ expect(resolved.model).toBe('gemini-pro');
503
+ expect(resolved.generateContentConfig.stopSequences).toEqual([
504
+ 'overrideFoo',
505
+ ]);
506
+ });
507
+ });
508
+ });
509
+ //# sourceMappingURL=modelConfigService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelConfigService.test.js","sourceRoot":"","sources":["../../../src/services/modelConfigService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ {
2
+ "base": {
3
+ "generateContentConfig": {
4
+ "temperature": 0,
5
+ "topP": 1
6
+ }
7
+ },
8
+ "chat-base": {
9
+ "generateContentConfig": {
10
+ "temperature": 0,
11
+ "topP": 1,
12
+ "thinkingConfig": {
13
+ "includeThoughts": true,
14
+ "thinkingBudget": -1
15
+ }
16
+ }
17
+ },
18
+ "gemini-2.5-pro": {
19
+ "model": "gemini-2.5-pro",
20
+ "generateContentConfig": {
21
+ "temperature": 0,
22
+ "topP": 1,
23
+ "thinkingConfig": {
24
+ "includeThoughts": true,
25
+ "thinkingBudget": -1
26
+ }
27
+ }
28
+ },
29
+ "gemini-2.5-flash": {
30
+ "model": "gemini-2.5-flash",
31
+ "generateContentConfig": {
32
+ "temperature": 0,
33
+ "topP": 1,
34
+ "thinkingConfig": {
35
+ "includeThoughts": true,
36
+ "thinkingBudget": -1
37
+ }
38
+ }
39
+ },
40
+ "gemini-2.5-flash-lite": {
41
+ "model": "gemini-2.5-flash-lite",
42
+ "generateContentConfig": {
43
+ "temperature": 0,
44
+ "topP": 1,
45
+ "thinkingConfig": {
46
+ "includeThoughts": true,
47
+ "thinkingBudget": -1
48
+ }
49
+ }
50
+ },
51
+ "classifier": {
52
+ "model": "gemini-2.5-flash-lite",
53
+ "generateContentConfig": {
54
+ "temperature": 0,
55
+ "topP": 1,
56
+ "maxOutputTokens": 1024,
57
+ "thinkingConfig": {
58
+ "thinkingBudget": 512
59
+ }
60
+ }
61
+ },
62
+ "prompt-completion": {
63
+ "model": "gemini-2.5-flash-lite",
64
+ "generateContentConfig": {
65
+ "temperature": 0.3,
66
+ "topP": 1,
67
+ "maxOutputTokens": 16000,
68
+ "thinkingConfig": {
69
+ "thinkingBudget": 0
70
+ }
71
+ }
72
+ },
73
+ "edit-corrector": {
74
+ "model": "gemini-2.5-flash-lite",
75
+ "generateContentConfig": {
76
+ "temperature": 0,
77
+ "topP": 1,
78
+ "thinkingConfig": {
79
+ "thinkingBudget": 0
80
+ }
81
+ }
82
+ },
83
+ "summarizer-default": {
84
+ "model": "gemini-2.5-flash-lite",
85
+ "generateContentConfig": {
86
+ "temperature": 0,
87
+ "topP": 1,
88
+ "maxOutputTokens": 2000
89
+ }
90
+ },
91
+ "summarizer-shell": {
92
+ "model": "gemini-2.5-flash-lite",
93
+ "generateContentConfig": {
94
+ "temperature": 0,
95
+ "topP": 1,
96
+ "maxOutputTokens": 2000
97
+ }
98
+ },
99
+ "web-search-tool": {
100
+ "model": "gemini-2.5-flash",
101
+ "generateContentConfig": {
102
+ "temperature": 0,
103
+ "topP": 1,
104
+ "tools": [
105
+ {
106
+ "googleSearch": {}
107
+ }
108
+ ]
109
+ }
110
+ },
111
+ "web-fetch-tool": {
112
+ "model": "gemini-2.5-flash",
113
+ "generateContentConfig": {
114
+ "temperature": 0,
115
+ "topP": 1,
116
+ "tools": [
117
+ {
118
+ "urlContext": {}
119
+ }
120
+ ]
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};