vibe-open-auth 1.0.2 → 1.0.5

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 (46) hide show
  1. package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -1
  2. package/dist/src/hooks/auto-update-checker/cache.js +10 -6
  3. package/dist/src/hooks/auto-update-checker/cache.js.map +1 -1
  4. package/dist/src/hooks/auto-update-checker/index.js +3 -3
  5. package/dist/src/hooks/auto-update-checker/index.js.map +1 -1
  6. package/dist/src/kiro/handler.d.ts.map +1 -1
  7. package/dist/src/kiro/handler.js +85 -18
  8. package/dist/src/kiro/handler.js.map +1 -1
  9. package/dist/src/kiro/request.d.ts.map +1 -1
  10. package/dist/src/kiro/request.js +5 -2
  11. package/dist/src/kiro/request.js.map +1 -1
  12. package/dist/src/plugin/accounts.d.ts +8 -0
  13. package/dist/src/plugin/accounts.d.ts.map +1 -1
  14. package/dist/src/plugin/accounts.js +53 -0
  15. package/dist/src/plugin/accounts.js.map +1 -1
  16. package/dist/src/plugin/config/schema.d.ts +18 -0
  17. package/dist/src/plugin/config/schema.d.ts.map +1 -1
  18. package/dist/src/plugin/config/schema.js +11 -0
  19. package/dist/src/plugin/config/schema.js.map +1 -1
  20. package/dist/src/plugin/recovery.d.ts.map +1 -1
  21. package/dist/src/plugin/recovery.js +25 -3
  22. package/dist/src/plugin/recovery.js.map +1 -1
  23. package/dist/src/plugin/request-helpers.d.ts.map +1 -1
  24. package/dist/src/plugin/request-helpers.js +192 -3
  25. package/dist/src/plugin/request-helpers.js.map +1 -1
  26. package/dist/src/plugin/rotation.d.ts +168 -0
  27. package/dist/src/plugin/rotation.d.ts.map +1 -0
  28. package/dist/src/plugin/rotation.js +302 -0
  29. package/dist/src/plugin/rotation.js.map +1 -0
  30. package/dist/src/plugin/server.d.ts.map +1 -1
  31. package/dist/src/plugin/server.js +103 -1
  32. package/dist/src/plugin/server.js.map +1 -1
  33. package/dist/src/plugin/transform/gemini.d.ts +16 -32
  34. package/dist/src/plugin/transform/gemini.d.ts.map +1 -1
  35. package/dist/src/plugin/transform/gemini.js +188 -43
  36. package/dist/src/plugin/transform/gemini.js.map +1 -1
  37. package/dist/src/plugin/transform/model-resolver.d.ts +2 -1
  38. package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -1
  39. package/dist/src/plugin/transform/model-resolver.js +21 -3
  40. package/dist/src/plugin/transform/model-resolver.js.map +1 -1
  41. package/dist/src/plugin/transform/types.d.ts +12 -1
  42. package/dist/src/plugin/transform/types.d.ts.map +1 -1
  43. package/dist/src/plugin.d.ts.map +1 -1
  44. package/dist/src/plugin.js +17 -0
  45. package/dist/src/plugin.js.map +1 -1
  46. package/package.json +1 -1
@@ -4,50 +4,125 @@
4
4
  * Handles Gemini model-specific request transformations including:
5
5
  * - Thinking config (camelCase keys, thinkingLevel for Gemini 3)
6
6
  * - Tool normalization (function/custom format)
7
+ * - Schema transformation (JSON Schema -> Gemini Schema format)
7
8
  */
8
- /**
9
- * Check if a model is a Gemini model (not Claude).
10
- */
9
+ const UNSUPPORTED_SCHEMA_FIELDS = new Set([
10
+ "additionalProperties",
11
+ "$schema",
12
+ "$id",
13
+ "$comment",
14
+ "$ref",
15
+ "$defs",
16
+ "definitions",
17
+ "const",
18
+ "contentMediaType",
19
+ "contentEncoding",
20
+ "if",
21
+ "then",
22
+ "else",
23
+ "not",
24
+ "patternProperties",
25
+ "unevaluatedProperties",
26
+ "unevaluatedItems",
27
+ "dependentRequired",
28
+ "dependentSchemas",
29
+ "propertyNames",
30
+ "minContains",
31
+ "maxContains",
32
+ ]);
33
+ export function toGeminiSchema(schema) {
34
+ if (!schema || typeof schema !== "object" || Array.isArray(schema)) {
35
+ return schema;
36
+ }
37
+ const inputSchema = schema;
38
+ const result = {};
39
+ const propertyNames = new Set();
40
+ if (inputSchema.properties && typeof inputSchema.properties === "object") {
41
+ for (const propName of Object.keys(inputSchema.properties)) {
42
+ propertyNames.add(propName);
43
+ }
44
+ }
45
+ for (const [key, value] of Object.entries(inputSchema)) {
46
+ if (UNSUPPORTED_SCHEMA_FIELDS.has(key)) {
47
+ continue;
48
+ }
49
+ if (key === "type" && typeof value === "string") {
50
+ result[key] = value.toUpperCase();
51
+ }
52
+ else if (key === "properties" && typeof value === "object" && value !== null) {
53
+ const props = {};
54
+ for (const [propName, propSchema] of Object.entries(value)) {
55
+ props[propName] = toGeminiSchema(propSchema);
56
+ }
57
+ result[key] = props;
58
+ }
59
+ else if (key === "items" && typeof value === "object") {
60
+ result[key] = toGeminiSchema(value);
61
+ }
62
+ else if ((key === "anyOf" || key === "oneOf" || key === "allOf") && Array.isArray(value)) {
63
+ result[key] = value.map((item) => toGeminiSchema(item));
64
+ }
65
+ else if (key === "enum" && Array.isArray(value)) {
66
+ result[key] = value;
67
+ }
68
+ else if (key === "default" || key === "examples") {
69
+ result[key] = value;
70
+ }
71
+ else if (key === "required" && Array.isArray(value)) {
72
+ if (propertyNames.size > 0) {
73
+ const validRequired = value.filter((prop) => typeof prop === "string" && propertyNames.has(prop));
74
+ if (validRequired.length > 0) {
75
+ result[key] = validRequired;
76
+ }
77
+ }
78
+ else {
79
+ result[key] = value;
80
+ }
81
+ }
82
+ else {
83
+ result[key] = value;
84
+ }
85
+ }
86
+ if (result.type === "ARRAY" && !result.items) {
87
+ result.items = { type: "STRING" };
88
+ }
89
+ return result;
90
+ }
11
91
  export function isGeminiModel(model) {
12
92
  const lower = model.toLowerCase();
13
93
  return lower.includes("gemini") && !lower.includes("claude");
14
94
  }
15
- /**
16
- * Check if a model is Gemini 3 (uses thinkingLevel string).
17
- */
18
95
  export function isGemini3Model(model) {
19
96
  return model.toLowerCase().includes("gemini-3");
20
97
  }
21
- /**
22
- * Check if a model is Gemini 2.5 (uses numeric thinkingBudget).
23
- */
24
98
  export function isGemini25Model(model) {
25
99
  return model.toLowerCase().includes("gemini-2.5");
26
100
  }
27
- /**
28
- * Build Gemini 3 thinking config with thinkingLevel string.
29
- */
101
+ export function isImageGenerationModel(model) {
102
+ const lower = model.toLowerCase();
103
+ return lower.includes("image") || lower.includes("imagen");
104
+ }
30
105
  export function buildGemini3ThinkingConfig(includeThoughts, thinkingLevel) {
31
106
  return {
32
107
  includeThoughts,
33
108
  thinkingLevel,
34
109
  };
35
110
  }
36
- /**
37
- * Build Gemini 2.5 thinking config with numeric thinkingBudget.
38
- */
39
111
  export function buildGemini25ThinkingConfig(includeThoughts, thinkingBudget) {
40
112
  return {
41
113
  includeThoughts,
42
114
  ...(typeof thinkingBudget === "number" && thinkingBudget > 0 ? { thinkingBudget } : {}),
43
115
  };
44
116
  }
45
- /**
46
- * Normalize tools for Gemini models.
47
- * Ensures tools have proper function-style format.
48
- *
49
- * @returns Debug info about tool normalization
50
- */
117
+ const VALID_ASPECT_RATIOS = ["1:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "21:9"];
118
+ export function buildImageGenerationConfig() {
119
+ const aspectRatio = process.env.OPENCODE_IMAGE_ASPECT_RATIO || "1:1";
120
+ if (VALID_ASPECT_RATIOS.includes(aspectRatio)) {
121
+ return { aspectRatio };
122
+ }
123
+ console.warn(`[gemini] Invalid aspect ratio "${aspectRatio}". Using default "1:1". Valid values: ${VALID_ASPECT_RATIOS.join(", ")}`);
124
+ return { aspectRatio: "1:1" };
125
+ }
51
126
  export function normalizeGeminiTools(payload) {
52
127
  let toolDebugMissing = 0;
53
128
  const toolDebugSummaries = [];
@@ -56,6 +131,9 @@ export function normalizeGeminiTools(payload) {
56
131
  }
57
132
  payload.tools = payload.tools.map((tool, toolIndex) => {
58
133
  const t = tool;
134
+ if (t.googleSearchRetrieval) {
135
+ return t;
136
+ }
59
137
  const newTool = { ...t };
60
138
  const schemaCandidates = [
61
139
  newTool.function?.input_schema,
@@ -68,15 +146,14 @@ export function normalizeGeminiTools(payload) {
68
146
  newTool.inputSchema,
69
147
  ].filter(Boolean);
70
148
  const placeholderSchema = {
71
- type: "object",
149
+ type: "OBJECT",
72
150
  properties: {
73
151
  _placeholder: {
74
- type: "boolean",
152
+ type: "BOOLEAN",
75
153
  description: "Placeholder. Always pass true.",
76
154
  },
77
155
  },
78
156
  required: ["_placeholder"],
79
- additionalProperties: false,
80
157
  };
81
158
  let schema = schemaCandidates[0];
82
159
  const schemaObjectOk = schema && typeof schema === "object" && !Array.isArray(schema);
@@ -84,19 +161,19 @@ export function normalizeGeminiTools(payload) {
84
161
  schema = placeholderSchema;
85
162
  toolDebugMissing += 1;
86
163
  }
164
+ else {
165
+ schema = toGeminiSchema(schema);
166
+ }
87
167
  const nameCandidate = newTool.name ||
88
168
  newTool.function?.name ||
89
169
  newTool.custom?.name ||
90
170
  `tool-${toolIndex}`;
91
- // Ensure function has input_schema
92
- if (newTool.function && !newTool.function.input_schema && schema) {
171
+ if (newTool.function && schema) {
93
172
  newTool.function.input_schema = schema;
94
173
  }
95
- // Ensure custom has input_schema
96
- if (newTool.custom && !newTool.custom.input_schema && schema) {
174
+ if (newTool.custom && schema) {
97
175
  newTool.custom.input_schema = schema;
98
176
  }
99
- // Create custom from function if missing
100
177
  if (!newTool.custom && newTool.function) {
101
178
  const fn = newTool.function;
102
179
  newTool.custom = {
@@ -105,7 +182,6 @@ export function normalizeGeminiTools(payload) {
105
182
  input_schema: schema,
106
183
  };
107
184
  }
108
- // Create custom if both missing
109
185
  if (!newTool.custom && !newTool.function) {
110
186
  newTool.custom = {
111
187
  name: nameCandidate,
@@ -116,17 +192,14 @@ export function normalizeGeminiTools(payload) {
116
192
  newTool.parameters = schema;
117
193
  }
118
194
  }
119
- // Ensure custom has input_schema
120
195
  if (newTool.custom && !newTool.custom.input_schema) {
121
196
  newTool.custom.input_schema = {
122
- type: "object",
197
+ type: "OBJECT",
123
198
  properties: {},
124
- additionalProperties: false
125
199
  };
126
200
  toolDebugMissing += 1;
127
201
  }
128
202
  toolDebugSummaries.push(`idx=${toolIndex}, hasCustom=${!!newTool.custom}, customSchema=${!!newTool.custom?.input_schema}, hasFunction=${!!newTool.function}, functionSchema=${!!newTool.function?.input_schema}`);
129
- // Strip custom wrappers for Gemini; only function-style is accepted.
130
203
  if (newTool.custom) {
131
204
  delete newTool.custom;
132
205
  }
@@ -134,20 +207,14 @@ export function normalizeGeminiTools(payload) {
134
207
  });
135
208
  return { toolDebugMissing, toolDebugSummaries };
136
209
  }
137
- /**
138
- * Apply all Gemini-specific transformations.
139
- */
140
210
  export function applyGeminiTransforms(payload, options) {
141
- const { model, tierThinkingBudget, tierThinkingLevel, normalizedThinking } = options;
142
- // 1. Apply thinking config if needed
211
+ const { model, tierThinkingBudget, tierThinkingLevel, normalizedThinking, googleSearch } = options;
143
212
  if (normalizedThinking) {
144
213
  let thinkingConfig;
145
214
  if (tierThinkingLevel && isGemini3Model(model)) {
146
- // Gemini 3 uses thinkingLevel string
147
215
  thinkingConfig = buildGemini3ThinkingConfig(normalizedThinking.includeThoughts ?? true, tierThinkingLevel);
148
216
  }
149
217
  else {
150
- // Gemini 2.5 and others use numeric budget
151
218
  const thinkingBudget = tierThinkingBudget ?? normalizedThinking.thinkingBudget;
152
219
  thinkingConfig = buildGemini25ThinkingConfig(normalizedThinking.includeThoughts ?? true, thinkingBudget);
153
220
  }
@@ -155,7 +222,85 @@ export function applyGeminiTransforms(payload, options) {
155
222
  generationConfig.thinkingConfig = thinkingConfig;
156
223
  payload.generationConfig = generationConfig;
157
224
  }
158
- // 2. Normalize tools
159
- return normalizeGeminiTools(payload);
225
+ if (googleSearch && googleSearch.mode === 'auto') {
226
+ const tools = payload.tools || [];
227
+ if (!payload.tools) {
228
+ payload.tools = tools;
229
+ }
230
+ payload.tools.push({
231
+ googleSearchRetrieval: {
232
+ dynamicRetrievalConfig: {
233
+ mode: "MODE_DYNAMIC",
234
+ dynamicThreshold: googleSearch.threshold ?? 0.3,
235
+ },
236
+ },
237
+ });
238
+ }
239
+ const result = normalizeGeminiTools(payload);
240
+ const wrapResult = wrapToolsAsFunctionDeclarations(payload);
241
+ return {
242
+ ...result,
243
+ wrappedFunctionCount: wrapResult.wrappedFunctionCount,
244
+ passthroughToolCount: wrapResult.passthroughToolCount,
245
+ };
246
+ }
247
+ export function wrapToolsAsFunctionDeclarations(payload) {
248
+ if (!Array.isArray(payload.tools) || payload.tools.length === 0) {
249
+ return { wrappedFunctionCount: 0, passthroughToolCount: 0 };
250
+ }
251
+ const functionDeclarations = [];
252
+ const passthroughTools = [];
253
+ for (const tool of payload.tools) {
254
+ if (tool.googleSearchRetrieval || tool.codeExecution) {
255
+ passthroughTools.push(tool);
256
+ continue;
257
+ }
258
+ if (tool.functionDeclarations) {
259
+ if (Array.isArray(tool.functionDeclarations)) {
260
+ for (const decl of tool.functionDeclarations) {
261
+ functionDeclarations.push({
262
+ name: String(decl.name || `tool-${functionDeclarations.length}`),
263
+ description: String(decl.description || ""),
264
+ parameters: decl.parameters || { type: "OBJECT", properties: {} },
265
+ });
266
+ }
267
+ }
268
+ continue;
269
+ }
270
+ const fn = tool.function;
271
+ const custom = tool.custom;
272
+ const name = String(tool.name ||
273
+ fn?.name ||
274
+ custom?.name ||
275
+ `tool-${functionDeclarations.length}`);
276
+ const description = String(tool.description ||
277
+ fn?.description ||
278
+ custom?.description ||
279
+ "");
280
+ const schema = (fn?.input_schema ||
281
+ fn?.parameters ||
282
+ fn?.inputSchema ||
283
+ custom?.input_schema ||
284
+ custom?.parameters ||
285
+ tool.parameters ||
286
+ tool.input_schema ||
287
+ tool.inputSchema ||
288
+ { type: "OBJECT", properties: {} });
289
+ functionDeclarations.push({
290
+ name,
291
+ description,
292
+ parameters: schema,
293
+ });
294
+ }
295
+ const finalTools = [];
296
+ if (functionDeclarations.length > 0) {
297
+ finalTools.push({ functionDeclarations });
298
+ }
299
+ finalTools.push(...passthroughTools);
300
+ payload.tools = finalTools;
301
+ return {
302
+ wrappedFunctionCount: functionDeclarations.length,
303
+ passthroughToolCount: passthroughTools.length,
304
+ };
160
305
  }
161
306
  //# sourceMappingURL=gemini.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/plugin/transform/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/plugin/transform/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,sBAAsB;IACtB,SAAS;IACT,KAAK;IACL,UAAU;IACV,MAAM;IACN,OAAO;IACP,aAAa;IACb,OAAO;IACP,kBAAkB;IAClB,iBAAiB;IACjB,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,MAAiC,CAAC;IACtD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,IAAI,WAAW,CAAC,UAAU,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACzE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAqC,CAAC,EAAE,CAAC;YACtF,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC/E,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;gBACtF,KAAK,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3F,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1C,OAAO,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CACpD,CAAC;gBACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;gBAC9B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,eAAwB,EACxB,aAA2B;IAE3B,OAAO;QACL,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,eAAwB,EACxB,cAAuB;IAEvB,OAAO;QACL,eAAe;QACf,GAAG,CAAC,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxF,CAAC;AACJ,CAAC;AAMD,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtG,MAAM,UAAU,0BAA0B;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,KAAK,CAAC;IAErE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,kCAAkC,WAAW,yCAAyC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAErI,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAuB;IAEvB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,MAAM,kBAAkB,GAAa,EAAE,CAAC;IAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,KAAK,GAAI,OAAO,CAAC,KAAmB,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,SAAiB,EAAE,EAAE;QACpF,MAAM,CAAC,GAAG,IAA+B,CAAC;QAE1C,IAAI,CAAC,CAAC,qBAAqB,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAEzB,MAAM,gBAAgB,GAAG;YACtB,OAAO,CAAC,QAAgD,EAAE,YAAY;YACtE,OAAO,CAAC,QAAgD,EAAE,UAAU;YACpE,OAAO,CAAC,QAAgD,EAAE,WAAW;YACrE,OAAO,CAAC,MAA8C,EAAE,YAAY;YACpE,OAAO,CAAC,MAA8C,EAAE,UAAU;YACnE,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,YAAY;YACpB,OAAO,CAAC,WAAW;SACpB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElB,MAAM,iBAAiB,GAA4B;YACjD,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,YAAY,EAAE;oBACZ,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,gCAAgC;iBAC9C;aACF;YACD,QAAQ,EAAE,CAAC,cAAc,CAAC;SAC3B,CAAC;QAEF,IAAI,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAwC,CAAC;QACxE,MAAM,cAAc,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,GAAG,iBAAiB,CAAC;YAC3B,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,cAAc,CAAC,MAAM,CAA4B,CAAC;QAC7D,CAAC;QAED,MAAM,aAAa,GACjB,OAAO,CAAC,IAAI;YACX,OAAO,CAAC,QAAgD,EAAE,IAAI;YAC9D,OAAO,CAAC,MAA8C,EAAE,IAAI;YAC7D,QAAQ,SAAS,EAAE,CAAC;QAEtB,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,QAAoC,CAAC,YAAY,GAAG,MAAM,CAAC;QACtE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAkC,CAAC,YAAY,GAAG,MAAM,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAmC,CAAC;YACvD,OAAO,CAAC,MAAM,GAAG;gBACf,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,aAAa;gBAC9B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,YAAY,EAAE,MAAM;aACrB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,CAAC,MAAM,GAAG;gBACf,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,MAAM;aACrB,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACzE,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAE,OAAO,CAAC,MAAkC,CAAC,YAAY,EAAE,CAAC;YAC/E,OAAO,CAAC,MAAkC,CAAC,YAAY,GAAG;gBACzD,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;aACf,CAAC;YACF,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,kBAAkB,CAAC,IAAI,CACrB,OAAO,SAAS,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,kBAAkB,CAAC,CAAE,OAAO,CAAC,MAA8C,EAAE,YAAY,iBAAiB,CAAC,CAAC,OAAO,CAAC,QAAQ,oBAAoB,CAAC,CAAE,OAAO,CAAC,QAAgD,EAAE,YAAY,EAAE,CAC3Q,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAClD,CAAC;AAiBD,MAAM,UAAU,qBAAqB,CACnC,OAAuB,EACvB,OAA+B;IAE/B,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAEnG,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAI,cAA8B,CAAC;QAEnC,IAAI,iBAAiB,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,cAAc,GAAG,0BAA0B,CACzC,kBAAkB,CAAC,eAAe,IAAI,IAAI,EAC1C,iBAAiB,CAClB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,kBAAkB,IAAI,kBAAkB,CAAC,cAAc,CAAC;YAC/E,cAAc,GAAG,2BAA2B,CAC1C,kBAAkB,CAAC,eAAe,IAAI,IAAI,EAC1C,cAAc,CACf,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAA4B,CAAC;QACrF,gBAAgB,CAAC,cAAc,GAAG,cAAc,CAAC;QACjD,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC9C,CAAC;IAED,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjD,MAAM,KAAK,GAAI,OAAO,CAAC,KAAmB,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC;QAEA,OAAO,CAAC,KAAmB,CAAC,IAAI,CAAC;YAChC,qBAAqB,EAAE;gBACrB,sBAAsB,EAAE;oBACtB,IAAI,EAAE,cAAc;oBACpB,gBAAgB,EAAE,YAAY,CAAC,SAAS,IAAI,GAAG;iBAChD;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAE5D,OAAO;QACL,GAAG,MAAM;QACT,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;QACrD,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;KACtD,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,+BAA+B,CAAC,OAAuB;IACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,oBAAoB,GAIrB,EAAE,CAAC;IAER,MAAM,gBAAgB,GAAc,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAuC,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,oBAAsD,EAAE,CAAC;oBAC/E,oBAAoB,CAAC,IAAI,CAAC;wBACxB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,oBAAoB,CAAC,MAAM,EAAE,CAAC;wBAChE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;wBAC3C,UAAU,EAAG,IAAI,CAAC,UAAsC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;qBAC/F,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,QAA+C,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,MAA6C,CAAC;QAElE,MAAM,IAAI,GAAG,MAAM,CACjB,IAAI,CAAC,IAAI;YACT,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,IAAI;YACZ,QAAQ,oBAAoB,CAAC,MAAM,EAAE,CACtC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,CACxB,IAAI,CAAC,WAAW;YAChB,EAAE,EAAE,WAAW;YACf,MAAM,EAAE,WAAW;YACnB,EAAE,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,CACb,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,WAAW;YACf,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,UAAU;YAClB,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,WAAW;YAChB,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CACR,CAAC;QAE7B,oBAAoB,CAAC,IAAI,CAAC;YACxB,IAAI;YACJ,WAAW;YACX,UAAU,EAAE,MAAM;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAc,EAAE,CAAC;IAEjC,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAErC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC;IAE3B,OAAO;QACL,oBAAoB,EAAE,oBAAoB,CAAC,MAAM;QACjD,oBAAoB,EAAE,gBAAgB,CAAC,MAAM;KAC9C,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Resolves model names with tier suffixes (e.g., gemini-3-pro-high, claude-sonnet-4-5-thinking-low)
5
5
  * to their actual API model names and corresponding thinking configurations.
6
6
  */
7
- import type { ResolvedModel } from "./types";
7
+ import type { ResolvedModel, GoogleSearchConfig } from "./types";
8
8
  /**
9
9
  * Thinking tier budgets by model family.
10
10
  * Claude and Gemini 2.5 Pro use numeric budgets.
@@ -80,6 +80,7 @@ export declare function getModelFamily(model: string): "claude" | "gemini-flash"
80
80
  */
81
81
  export interface VariantConfig {
82
82
  thinkingBudget?: number;
83
+ googleSearch?: GoogleSearchConfig;
83
84
  }
84
85
  /**
85
86
  * Resolves model with variant config from providerOptions.
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../../../src/plugin/transform/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAKxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,+CAAgD,CAAC;AAEtF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAElD,CAAC;AAsFF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CA2F1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAStF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,aAAa,GAC5B,aAAa,CAmCf"}
1
+ {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../../../src/plugin/transform/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAgB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAKxB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,+CAAgD,CAAC;AAEtF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBhD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAElD,CAAC;AAwFF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAuG1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAStF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAYD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,aAAa,GAC5B,aAAa,CA4Cf"}
@@ -79,6 +79,7 @@ const ANTIGRAVITY_ONLY_MODELS = /^(claude|gpt)/i;
79
79
  * WARNING: This may break if Google/Opencode removes the -preview suffix.
80
80
  */
81
81
  const LEGACY_ANTIGRAVITY_GEMINI3 = /^gemini-3-(pro-(low|high)|flash(-low|-medium|-high)?)$/i;
82
+ const IMAGE_GENERATION_MODELS = /image|imagen/i;
82
83
  /**
83
84
  * Models that support thinking tier suffixes.
84
85
  * Only these models should have -low/-medium/-high stripped as thinking tiers.
@@ -153,7 +154,8 @@ export function resolveModelWithTier(requestedModel) {
153
154
  const baseName = tier ? modelWithoutQuota.replace(TIER_REGEX, "") : modelWithoutQuota;
154
155
  const isAntigravityOnly = ANTIGRAVITY_ONLY_MODELS.test(modelWithoutQuota);
155
156
  const isLegacyAntigravity = LEGACY_ANTIGRAVITY_GEMINI3.test(modelWithoutQuota);
156
- const quotaPreference = isAntigravity || isAntigravityOnly || isLegacyAntigravity ? "antigravity" : "gemini-cli";
157
+ const isImageModel = IMAGE_GENERATION_MODELS.test(modelWithoutQuota);
158
+ const quotaPreference = isAntigravity || isAntigravityOnly || isLegacyAntigravity || isImageModel ? "antigravity" : "gemini-cli";
157
159
  const explicitQuota = isAntigravity;
158
160
  const isGemini3 = modelWithoutQuota.toLowerCase().startsWith("gemini-3");
159
161
  const skipAlias = isAntigravity && isGemini3;
@@ -164,7 +166,7 @@ export function resolveModelWithTier(requestedModel) {
164
166
  const isGemini3Flash = modelWithoutQuota.toLowerCase().startsWith("gemini-3-flash");
165
167
  let antigravityModel = modelWithoutQuota;
166
168
  if (skipAlias) {
167
- if (isGemini3Pro && !tier) {
169
+ if (isGemini3Pro && !tier && !isImageModel) {
168
170
  antigravityModel = `${modelWithoutQuota}-low`;
169
171
  }
170
172
  else if (isGemini3Flash && tier) {
@@ -176,6 +178,15 @@ export function resolveModelWithTier(requestedModel) {
176
178
  : MODEL_ALIASES[modelWithoutQuota] || MODEL_ALIASES[baseName] || baseName;
177
179
  const resolvedModel = MODEL_FALLBACKS[actualModel] || actualModel;
178
180
  const isThinking = isThinkingCapableModel(resolvedModel);
181
+ if (isImageModel) {
182
+ return {
183
+ actualModel: resolvedModel,
184
+ isThinkingModel: false,
185
+ isImageModel: true,
186
+ quotaPreference,
187
+ explicitQuota,
188
+ };
189
+ }
179
190
  // Check if this is a Gemini 3 model (works for both aliased and skipAlias paths)
180
191
  const isEffectiveGemini3 = resolvedModel.toLowerCase().includes("gemini-3");
181
192
  const isClaudeThinking = resolvedModel.toLowerCase().includes("claude") && resolvedModel.toLowerCase().includes("thinking");
@@ -257,7 +268,14 @@ function budgetToGemini3Level(budget) {
257
268
  */
258
269
  export function resolveModelWithVariant(requestedModel, variantConfig) {
259
270
  const base = resolveModelWithTier(requestedModel);
260
- if (!variantConfig?.thinkingBudget) {
271
+ if (!variantConfig) {
272
+ return base;
273
+ }
274
+ if (variantConfig.googleSearch) {
275
+ base.googleSearch = variantConfig.googleSearch;
276
+ base.configSource = "variant";
277
+ }
278
+ if (!variantConfig.thinkingBudget) {
261
279
  return base;
262
280
  }
263
281
  const budget = variantConfig.thinkingBudget;
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../../../src/plugin/transform/model-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../../../src/plugin/transform/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACjD,gBAAgB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAC3D,kBAAkB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAC7D,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;CACzC,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAEtF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,8EAA8E;IAC9E,kEAAkE;IAClE,kBAAkB,EAAE,cAAc;IAClC,mBAAmB,EAAE,cAAc;IACnC,oBAAoB,EAAE,gBAAgB;IACtC,uBAAuB,EAAE,gBAAgB;IACzC,qBAAqB,EAAE,gBAAgB;IAEvC,wDAAwD;IACxD,0BAA0B,EAAE,mBAAmB;IAC/C,uCAAuC,EAAE,4BAA4B;IACrE,0CAA0C,EAAE,4BAA4B;IACxE,wCAAwC,EAAE,4BAA4B;IACtE,qCAAqC,EAAE,0BAA0B;IACjE,wCAAwC,EAAE,0BAA0B;IACpE,sCAAsC,EAAE,0BAA0B;IAElE,iBAAiB;IACjB,4BAA4B,EAAE,oBAAoB;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,wBAAwB,EAAE,kBAAkB;CAC7C,CAAC;AAEF,MAAM,UAAU,GAAG,6BAA6B,CAAC;AACjD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,0BAA0B,GAAG,yDAAyD,CAAC;AAE7F,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEhD;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CAAC,KAAa;IACjD,2DAA2D;IAC3D,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,SAAS,EAAE,CAAC,CAAC,CAA6B,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oBAAoB,CAAC,cAAsB;IACzD,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAEzE,MAAM,IAAI,GAAG,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAEtF,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAErE,MAAM,eAAe,GAAG,aAAa,IAAI,iBAAiB,IAAI,mBAAmB,IAAI,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IACjI,MAAM,aAAa,GAAG,aAAa,CAAC;IAEpC,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,aAAa,IAAI,SAAS,CAAC;IAE7C,wFAAwF;IACxF,6EAA6E;IAC7E,uEAAuE;IACvE,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAEpF,IAAI,gBAAgB,GAAG,iBAAiB,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,gBAAgB,GAAG,GAAG,iBAAiB,MAAM,CAAC;QAChD,CAAC;aAAM,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;YAClC,gBAAgB,GAAG,QAAQ,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IAE5E,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;IAClE,MAAM,UAAU,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAEzD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,WAAW,EAAE,aAAa;YAC1B,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,IAAI;YAClB,eAAe;YACf,aAAa;SACd,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE5H,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,oEAAoE;QACpE,IAAI,kBAAkB,EAAE,CAAC;YACvB,4DAA4D;YAC5D,OAAO;gBACL,WAAW,EAAE,aAAa;gBAC1B,aAAa,EAAE,KAAK;gBACpB,eAAe,EAAE,IAAI;gBACrB,eAAe;gBACf,aAAa;aACd,CAAC;QACJ,CAAC;QACD,sEAAsE;QACtE,gFAAgF;QAChF,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO;gBACL,WAAW,EAAE,aAAa;gBAC1B,cAAc,EAAE,qBAAqB,CAAC,MAAM,CAAC,IAAI;gBACjD,eAAe,EAAE,IAAI;gBACrB,eAAe;gBACf,aAAa;aACd,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;IACrG,CAAC;IAED,yDAAyD;IACzD,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO;YACL,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,IAAI;YACnB,IAAI;YACJ,eAAe,EAAE,IAAI;YACrB,eAAe;YACf,aAAa;SACd,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO;QACL,WAAW,EAAE,aAAa;QAC1B,cAAc;QACd,IAAI;QACJ,eAAe,EAAE,UAAU;QAC3B,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAUD;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAAc;IAC1C,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,MAAM,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAAsB,EACtB,aAA6B;IAE7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAElD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEtE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,KAAK,aAAa;YACpE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;YACtE,WAAW,GAAG,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC;QACxC,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,WAAW;YACX,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,SAAS;YACzB,YAAY,EAAE,SAAS;SACxB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,SAAS;KACxB,CAAC;AACJ,CAAC"}
@@ -71,6 +71,13 @@ export interface ThinkingConfig {
71
71
  /** Snake_case variant for Antigravity backend */
72
72
  include_thoughts?: boolean;
73
73
  }
74
+ /**
75
+ * Google Search Grounding configuration.
76
+ */
77
+ export interface GoogleSearchConfig {
78
+ mode?: 'auto' | 'off';
79
+ threshold?: number;
80
+ }
74
81
  /**
75
82
  * Model resolution result with tier information.
76
83
  */
@@ -85,11 +92,15 @@ export interface ResolvedModel {
85
92
  tier?: ThinkingTier;
86
93
  /** Whether this is a thinking-capable model */
87
94
  isThinkingModel?: boolean;
95
+ /** Whether this is an image generation model */
96
+ isImageModel?: boolean;
88
97
  /** Quota preference based on :antigravity or :gemini-cli suffix */
89
98
  quotaPreference?: HeaderStyle;
90
99
  /** Whether user explicitly specified quota via suffix (vs default selection) */
91
100
  explicitQuota?: boolean;
92
- /** Source of thinking config: "variant" (providerOptions) or "tier" (model suffix) */
101
+ /** Source of thinking config: \"variant\" (providerOptions) or \"tier\" (model suffix) */
93
102
  configSource?: "variant" | "tier";
103
+ /** Google Search configuration from variant or global config */
104
+ googleSearch?: GoogleSearchConfig;
94
105
  }
95
106
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugin/transform/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sFAAsF;IACtF,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugin/transform/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,gEAAgE;IAChE,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAGV,aAAa,EACb,YAAY,EAGb,MAAM,gBAAgB,CAAC;AAylBxB;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,MACxD,uBAAuB,aAAa,KACnC,OAAO,CAAC,YAAY,CA4xCtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,0BA/xCb,aAAa,KACnC,OAAO,CAAC,YAAY,CA8xCkE,CAAC;AAC1F,eAAO,MAAM,iBAAiB,0BAhyCL,aAAa,KACnC,OAAO,CAAC,YAAY,CA+xCmC,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAGV,aAAa,EACb,YAAY,EAGb,MAAM,gBAAgB,CAAC;AAylBxB;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,MACxD,uBAAuB,aAAa,KACnC,OAAO,CAAC,YAAY,CAgzCtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,0BAnzCb,aAAa,KACnC,OAAO,CAAC,YAAY,CAkzCkE,CAAC;AAC1F,eAAO,MAAM,iBAAiB,0BApzCL,aAAa,KACnC,OAAO,CAAC,YAAY,CAmzCmC,CAAC"}
@@ -19,6 +19,7 @@ import { createSessionRecoveryHook, getRecoverySuccessToast } from "./plugin/rec
19
19
  import { initDiskSignatureCache } from "./plugin/cache";
20
20
  import { createProactiveRefreshQueue } from "./plugin/refresh-queue";
21
21
  import { initLogger, createLogger } from "./plugin/logger";
22
+ import { getHealthTracker, getTokenTracker } from "./plugin/rotation";
22
23
  const MAX_OAUTH_ACCOUNTS = 10;
23
24
  const MAX_WARMUP_SESSIONS = 1000;
24
25
  const MAX_WARMUP_RETRIES = 2;
@@ -781,6 +782,7 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
781
782
  const refreshed = await refreshAccessToken(authRecord, client, providerId);
782
783
  if (!refreshed) {
783
784
  const { failures, shouldCooldown, cooldownMs } = trackAccountFailure(account.index);
785
+ getHealthTracker().recordFailure(account.index);
784
786
  lastError = new Error("Antigravity token refresh failed");
785
787
  if (shouldCooldown) {
786
788
  accountManager.markAccountCoolingDown(account, cooldownMs, "auth-failure");
@@ -851,6 +853,7 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
851
853
  }
852
854
  catch (error) {
853
855
  const { failures, shouldCooldown, cooldownMs } = trackAccountFailure(account.index);
856
+ getHealthTracker().recordFailure(account.index);
854
857
  lastError = error instanceof Error ? error : new Error(String(error));
855
858
  if (shouldCooldown) {
856
859
  accountManager.markAccountCoolingDown(account, cooldownMs, "project-error");
@@ -945,6 +948,7 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
945
948
  while (!shouldSwitchAccount) {
946
949
  // Flag to force thinking recovery on retry after API error
947
950
  let forceThinkingRecovery = false;
951
+ let tokenConsumed = false;
948
952
  for (let i = 0; i < ANTIGRAVITY_ENDPOINT_FALLBACKS.length; i++) {
949
953
  const currentEndpoint = ANTIGRAVITY_ENDPOINT_FALLBACKS[i];
950
954
  try {
@@ -969,10 +973,17 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
969
973
  projectId: projectContext.effectiveProjectId,
970
974
  });
971
975
  await runThinkingWarmup(prepared, projectContext.effectiveProjectId);
976
+ if (config.account_selection_strategy === 'hybrid') {
977
+ tokenConsumed = getTokenTracker().consume(account.index);
978
+ }
972
979
  const response = await fetch(prepared.request, prepared.init);
973
980
  pushDebug(`status=${response.status} ${response.statusText}`);
974
981
  // Handle 429 rate limit with improved logic
975
982
  if (response.status === 429) {
983
+ if (tokenConsumed) {
984
+ getTokenTracker().refund(account.index);
985
+ tokenConsumed = false;
986
+ }
976
987
  const headerRetryMs = retryAfterMsFromResponse(response);
977
988
  const bodyInfo = await extractRetryInfoFromBody(response);
978
989
  const serverRetryMs = bodyInfo.retryDelayMs ?? headerRetryMs;
@@ -993,6 +1004,7 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
993
1004
  }
994
1005
  logRateLimitEvent(account.index, account.email, family, response.status, delayMs, bodyInfo);
995
1006
  await logResponseBody(debugContext, response, 429);
1007
+ getHealthTracker().recordRateLimit(account.index);
996
1008
  if (isCapacityExhausted) {
997
1009
  const failures = account.consecutiveFailures ?? 0;
998
1010
  const capacityBackoffMs = getCapacityBackoffDelay(failures);
@@ -1123,6 +1135,7 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
1123
1135
  // Success or non-retryable error - return the response
1124
1136
  if (response.ok) {
1125
1137
  account.consecutiveFailures = 0;
1138
+ getHealthTracker().recordSuccess(account.index);
1126
1139
  }
1127
1140
  logAntigravityDebugResponse(debugContext, response, {
1128
1141
  note: response.ok ? "Success" : `Error ${response.status}`,
@@ -1184,6 +1197,10 @@ export const createAntigravityPlugin = (providerId) => async ({ client, director
1184
1197
  return transformedResponse;
1185
1198
  }
1186
1199
  catch (error) {
1200
+ if (tokenConsumed) {
1201
+ getTokenTracker().refund(account.index);
1202
+ tokenConsumed = false;
1203
+ }
1187
1204
  // Handle recoverable thinking errors - retry with forced recovery
1188
1205
  if (error instanceof Error && error.message === "THINKING_RECOVERY_NEEDED") {
1189
1206
  // Only retry once with forced recovery to avoid infinite loops