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.
- package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -1
- package/dist/src/hooks/auto-update-checker/cache.js +10 -6
- package/dist/src/hooks/auto-update-checker/cache.js.map +1 -1
- package/dist/src/hooks/auto-update-checker/index.js +3 -3
- package/dist/src/hooks/auto-update-checker/index.js.map +1 -1
- package/dist/src/kiro/handler.d.ts.map +1 -1
- package/dist/src/kiro/handler.js +85 -18
- package/dist/src/kiro/handler.js.map +1 -1
- package/dist/src/kiro/request.d.ts.map +1 -1
- package/dist/src/kiro/request.js +5 -2
- package/dist/src/kiro/request.js.map +1 -1
- package/dist/src/plugin/accounts.d.ts +8 -0
- package/dist/src/plugin/accounts.d.ts.map +1 -1
- package/dist/src/plugin/accounts.js +53 -0
- package/dist/src/plugin/accounts.js.map +1 -1
- package/dist/src/plugin/config/schema.d.ts +18 -0
- package/dist/src/plugin/config/schema.d.ts.map +1 -1
- package/dist/src/plugin/config/schema.js +11 -0
- package/dist/src/plugin/config/schema.js.map +1 -1
- package/dist/src/plugin/recovery.d.ts.map +1 -1
- package/dist/src/plugin/recovery.js +25 -3
- package/dist/src/plugin/recovery.js.map +1 -1
- package/dist/src/plugin/request-helpers.d.ts.map +1 -1
- package/dist/src/plugin/request-helpers.js +192 -3
- package/dist/src/plugin/request-helpers.js.map +1 -1
- package/dist/src/plugin/rotation.d.ts +168 -0
- package/dist/src/plugin/rotation.d.ts.map +1 -0
- package/dist/src/plugin/rotation.js +302 -0
- package/dist/src/plugin/rotation.js.map +1 -0
- package/dist/src/plugin/server.d.ts.map +1 -1
- package/dist/src/plugin/server.js +103 -1
- package/dist/src/plugin/server.js.map +1 -1
- package/dist/src/plugin/transform/gemini.d.ts +16 -32
- package/dist/src/plugin/transform/gemini.d.ts.map +1 -1
- package/dist/src/plugin/transform/gemini.js +188 -43
- package/dist/src/plugin/transform/gemini.js.map +1 -1
- package/dist/src/plugin/transform/model-resolver.d.ts +2 -1
- package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -1
- package/dist/src/plugin/transform/model-resolver.js +21 -3
- package/dist/src/plugin/transform/model-resolver.js.map +1 -1
- package/dist/src/plugin/transform/types.d.ts +12 -1
- package/dist/src/plugin/transform/types.d.ts.map +1 -1
- package/dist/src/plugin.d.ts.map +1 -1
- package/dist/src/plugin.js +17 -0
- package/dist/src/plugin.js.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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: "
|
|
149
|
+
type: "OBJECT",
|
|
72
150
|
properties: {
|
|
73
151
|
_placeholder: {
|
|
74
|
-
type: "
|
|
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
|
-
|
|
92
|
-
if (newTool.function && !newTool.function.input_schema && schema) {
|
|
171
|
+
if (newTool.function && schema) {
|
|
93
172
|
newTool.function.input_schema = schema;
|
|
94
173
|
}
|
|
95
|
-
|
|
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: "
|
|
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
|
-
|
|
159
|
-
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/plugin/transform/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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
|
|
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
|
|
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,
|
|
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"}
|
package/dist/src/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/src/plugin.js
CHANGED
|
@@ -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
|