@anthonyhaussman/opencode-agy-auth 1.0.10 → 1.0.11-alpha.1
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/README.md +1 -1
- package/dist/index.js +1242 -61
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -212,6 +212,23 @@ async function retrieveUserQuota(accessToken, projectId, userAgentModel) {
|
|
|
212
212
|
return null;
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
+
async function retrieveUserQuotaSummary(accessToken, projectId, userAgentModel) {
|
|
216
|
+
const url2 = `${AGY_CODE_ASSIST_ENDPOINT}/v1internal:retrieveUserQuotaSummary`;
|
|
217
|
+
const headers = buildCodeAssistHeaders(accessToken, userAgentModel);
|
|
218
|
+
try {
|
|
219
|
+
const response = await agyFetch(url2, {
|
|
220
|
+
method: "POST",
|
|
221
|
+
headers,
|
|
222
|
+
body: JSON.stringify({ project: projectId })
|
|
223
|
+
});
|
|
224
|
+
if (!response.ok) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
return await response.json();
|
|
228
|
+
} catch {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
215
232
|
function buildCodeAssistHeaders(accessToken, userAgentModel) {
|
|
216
233
|
const userAgent = buildAgyCliUserAgent(userAgentModel);
|
|
217
234
|
return {
|
|
@@ -14142,6 +14159,62 @@ async function fetchTokenRefresh(refreshToken) {
|
|
|
14142
14159
|
return agyFetch(tokenUrl, init);
|
|
14143
14160
|
}
|
|
14144
14161
|
|
|
14162
|
+
// src/plugin/quota-utils.ts
|
|
14163
|
+
function clamp(value, min, max) {
|
|
14164
|
+
if (value < min) {
|
|
14165
|
+
return min;
|
|
14166
|
+
}
|
|
14167
|
+
if (value > max) {
|
|
14168
|
+
return max;
|
|
14169
|
+
}
|
|
14170
|
+
return value;
|
|
14171
|
+
}
|
|
14172
|
+
function pad(value, width) {
|
|
14173
|
+
if (value.length >= width) {
|
|
14174
|
+
return value;
|
|
14175
|
+
}
|
|
14176
|
+
return value.padEnd(width, " ");
|
|
14177
|
+
}
|
|
14178
|
+
function buildProgressBar(fraction, width = 20) {
|
|
14179
|
+
const clamped = clamp(fraction, 0, 1);
|
|
14180
|
+
const filled = clamped >= 1 ? width : Math.max(0, Math.min(width, Math.max(clamped > 0 ? 1 : 0, Math.floor(clamped * width))));
|
|
14181
|
+
const empty = width - filled;
|
|
14182
|
+
return `${"\u2593".repeat(filled)}${"\u2591".repeat(empty)}`;
|
|
14183
|
+
}
|
|
14184
|
+
function formatRemainingAmount(value) {
|
|
14185
|
+
if (!value) {
|
|
14186
|
+
return void 0;
|
|
14187
|
+
}
|
|
14188
|
+
const parsed = Number.parseInt(value, 10);
|
|
14189
|
+
if (!Number.isFinite(parsed)) {
|
|
14190
|
+
return value;
|
|
14191
|
+
}
|
|
14192
|
+
return parsed.toLocaleString("en-US");
|
|
14193
|
+
}
|
|
14194
|
+
function formatRelativeResetTime(resetTime) {
|
|
14195
|
+
if (!resetTime) {
|
|
14196
|
+
return void 0;
|
|
14197
|
+
}
|
|
14198
|
+
const resetAt = new Date(resetTime).getTime();
|
|
14199
|
+
if (Number.isNaN(resetAt)) {
|
|
14200
|
+
return void 0;
|
|
14201
|
+
}
|
|
14202
|
+
const diffMs = resetAt - Date.now();
|
|
14203
|
+
if (diffMs <= 0) {
|
|
14204
|
+
return "reset pending";
|
|
14205
|
+
}
|
|
14206
|
+
const totalMinutes = Math.ceil(diffMs / (1e3 * 60));
|
|
14207
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
14208
|
+
const minutes = totalMinutes % 60;
|
|
14209
|
+
if (hours > 0 && minutes > 0) {
|
|
14210
|
+
return `resets in ${hours}h ${minutes}m`;
|
|
14211
|
+
}
|
|
14212
|
+
if (hours > 0) {
|
|
14213
|
+
return `resets in ${hours}h`;
|
|
14214
|
+
}
|
|
14215
|
+
return `resets in ${minutes}m`;
|
|
14216
|
+
}
|
|
14217
|
+
|
|
14145
14218
|
// src/plugin/quota.ts
|
|
14146
14219
|
var AGY_QUOTA_TOOL_NAME = "agy_quota";
|
|
14147
14220
|
function createAgyQuotaTool({
|
|
@@ -14269,60 +14342,6 @@ function formatUsageRemaining(bucket) {
|
|
|
14269
14342
|
}
|
|
14270
14343
|
return "unknown";
|
|
14271
14344
|
}
|
|
14272
|
-
function formatRemainingAmount(value) {
|
|
14273
|
-
if (!value) {
|
|
14274
|
-
return void 0;
|
|
14275
|
-
}
|
|
14276
|
-
const parsed = Number.parseInt(value, 10);
|
|
14277
|
-
if (!Number.isFinite(parsed)) {
|
|
14278
|
-
return value;
|
|
14279
|
-
}
|
|
14280
|
-
return parsed.toLocaleString("en-US");
|
|
14281
|
-
}
|
|
14282
|
-
function formatRelativeResetTime(resetTime) {
|
|
14283
|
-
if (!resetTime) {
|
|
14284
|
-
return void 0;
|
|
14285
|
-
}
|
|
14286
|
-
const resetAt = new Date(resetTime).getTime();
|
|
14287
|
-
if (Number.isNaN(resetAt)) {
|
|
14288
|
-
return void 0;
|
|
14289
|
-
}
|
|
14290
|
-
const diffMs = resetAt - Date.now();
|
|
14291
|
-
if (diffMs <= 0) {
|
|
14292
|
-
return "reset pending";
|
|
14293
|
-
}
|
|
14294
|
-
const totalMinutes = Math.ceil(diffMs / (1e3 * 60));
|
|
14295
|
-
const hours = Math.floor(totalMinutes / 60);
|
|
14296
|
-
const minutes = totalMinutes % 60;
|
|
14297
|
-
if (hours > 0 && minutes > 0) {
|
|
14298
|
-
return `resets in ${hours}h ${minutes}m`;
|
|
14299
|
-
}
|
|
14300
|
-
if (hours > 0) {
|
|
14301
|
-
return `resets in ${hours}h`;
|
|
14302
|
-
}
|
|
14303
|
-
return `resets in ${minutes}m`;
|
|
14304
|
-
}
|
|
14305
|
-
function buildProgressBar(fraction, width = 20) {
|
|
14306
|
-
const clamped = clamp(fraction, 0, 1);
|
|
14307
|
-
const filled = clamped >= 1 ? width : Math.max(0, Math.min(width, Math.max(clamped > 0 ? 1 : 0, Math.floor(clamped * width))));
|
|
14308
|
-
const empty = width - filled;
|
|
14309
|
-
return `${"\u2593".repeat(filled)}${"\u2591".repeat(empty)}`;
|
|
14310
|
-
}
|
|
14311
|
-
function pad(value, width) {
|
|
14312
|
-
if (value.length >= width) {
|
|
14313
|
-
return value;
|
|
14314
|
-
}
|
|
14315
|
-
return value.padEnd(width, " ");
|
|
14316
|
-
}
|
|
14317
|
-
function clamp(value, min, max) {
|
|
14318
|
-
if (value < min) {
|
|
14319
|
-
return min;
|
|
14320
|
-
}
|
|
14321
|
-
if (value > max) {
|
|
14322
|
-
return max;
|
|
14323
|
-
}
|
|
14324
|
-
return value;
|
|
14325
|
-
}
|
|
14326
14345
|
function normalizeTokenType(bucket) {
|
|
14327
14346
|
const value = bucket.tokenType?.trim();
|
|
14328
14347
|
return value ? value.toUpperCase() : "REQUESTS";
|
|
@@ -14435,6 +14454,205 @@ function splitModelVariant(modelId) {
|
|
|
14435
14454
|
};
|
|
14436
14455
|
}
|
|
14437
14456
|
|
|
14457
|
+
// src/plugin/quota-summary.ts
|
|
14458
|
+
var AGY_QUOTA_SUMMARY_TOOL_NAME = "agy_quota_summary";
|
|
14459
|
+
function createAgyQuotaSummaryTool({
|
|
14460
|
+
client,
|
|
14461
|
+
getAuthResolver,
|
|
14462
|
+
getConfiguredProjectId,
|
|
14463
|
+
getUserAgentModel
|
|
14464
|
+
}) {
|
|
14465
|
+
return tool({
|
|
14466
|
+
description: "Retrieve Agy Code Assist quota summary with weekly and 5-hour limits grouped by model family.",
|
|
14467
|
+
args: {},
|
|
14468
|
+
async execute() {
|
|
14469
|
+
const getAuth = getAuthResolver();
|
|
14470
|
+
if (!getAuth) {
|
|
14471
|
+
return "Agy quota summary is unavailable before Google auth is initialized. Authenticate with the Google provider and retry.";
|
|
14472
|
+
}
|
|
14473
|
+
const auth = await getAuth();
|
|
14474
|
+
if (!isOAuthAuth(auth)) {
|
|
14475
|
+
return "Agy quota summary requires OAuth with Google. Run `opencode auth login` and choose `Google OAuth (Antigravity CLI)` or `Google OAuth (Gemini CLI)`.";
|
|
14476
|
+
}
|
|
14477
|
+
let authRecord = resolveCachedAuth(auth);
|
|
14478
|
+
if (accessTokenExpired(authRecord)) {
|
|
14479
|
+
const refreshed = await refreshAccessToken(authRecord, client);
|
|
14480
|
+
if (!refreshed?.access) {
|
|
14481
|
+
return "Agy quota summary lookup failed because the access token could not be refreshed. Re-authenticate and retry.";
|
|
14482
|
+
}
|
|
14483
|
+
authRecord = refreshed;
|
|
14484
|
+
}
|
|
14485
|
+
if (!authRecord.access) {
|
|
14486
|
+
return "Agy quota summary lookup failed because no access token is available. Re-authenticate and retry.";
|
|
14487
|
+
}
|
|
14488
|
+
try {
|
|
14489
|
+
const projectContext = await ensureProjectContext(
|
|
14490
|
+
authRecord,
|
|
14491
|
+
client,
|
|
14492
|
+
getConfiguredProjectId(),
|
|
14493
|
+
getUserAgentModel()
|
|
14494
|
+
);
|
|
14495
|
+
if (!projectContext.effectiveProjectId) {
|
|
14496
|
+
return "Agy quota summary lookup failed because no Google Cloud project could be resolved.";
|
|
14497
|
+
}
|
|
14498
|
+
const summary = await retrieveUserQuotaSummary(
|
|
14499
|
+
authRecord.access,
|
|
14500
|
+
projectContext.effectiveProjectId,
|
|
14501
|
+
getUserAgentModel()
|
|
14502
|
+
);
|
|
14503
|
+
if (!summary) {
|
|
14504
|
+
return `No Agy quota summary available for project \`${projectContext.effectiveProjectId}\`.`;
|
|
14505
|
+
}
|
|
14506
|
+
return formatAgyQuotaSummaryOutput(
|
|
14507
|
+
projectContext.effectiveProjectId,
|
|
14508
|
+
summary
|
|
14509
|
+
);
|
|
14510
|
+
} catch (error45) {
|
|
14511
|
+
const message = error45 instanceof Error ? error45.message : "unknown error";
|
|
14512
|
+
return `Agy quota summary lookup failed: ${message}`;
|
|
14513
|
+
}
|
|
14514
|
+
}
|
|
14515
|
+
});
|
|
14516
|
+
}
|
|
14517
|
+
var BAR_WIDTH = 50;
|
|
14518
|
+
function windowLabel(window) {
|
|
14519
|
+
switch (window?.toUpperCase()) {
|
|
14520
|
+
case "WEEKLY":
|
|
14521
|
+
return "Weekly Limit";
|
|
14522
|
+
case "FIVE_HOUR":
|
|
14523
|
+
return "Five Hour Limit";
|
|
14524
|
+
default:
|
|
14525
|
+
return "Other Limit";
|
|
14526
|
+
}
|
|
14527
|
+
}
|
|
14528
|
+
function formatSummaryBucket(bucket, indent) {
|
|
14529
|
+
if (bucket.disabled) {
|
|
14530
|
+
const desc = bucket.description?.trim() || "weekly limit exhausted";
|
|
14531
|
+
return [`${indent}Disabled: ${desc}`];
|
|
14532
|
+
}
|
|
14533
|
+
const lines = [];
|
|
14534
|
+
const fraction = bucket.remainingFraction;
|
|
14535
|
+
const hasFraction = typeof fraction === "number" && Number.isFinite(fraction);
|
|
14536
|
+
if (hasFraction) {
|
|
14537
|
+
const clamped = clamp(fraction, 0, 1);
|
|
14538
|
+
const percent = (clamped * 100).toFixed(2);
|
|
14539
|
+
const bar = buildProgressBar(clamped, BAR_WIDTH);
|
|
14540
|
+
lines.push(`${indent}[${bar}] ${percent}%`);
|
|
14541
|
+
const remaining = formatRemainingAmount(bucket.remainingAmount);
|
|
14542
|
+
if (remaining) {
|
|
14543
|
+
const pctWhole = (clamped * 100).toFixed(0);
|
|
14544
|
+
lines.push(`${indent}${pctWhole}% remaining \xB7 ${remaining} left`);
|
|
14545
|
+
} else {
|
|
14546
|
+
const pctWhole = (clamped * 100).toFixed(0);
|
|
14547
|
+
lines.push(`${indent}${pctWhole}% remaining`);
|
|
14548
|
+
}
|
|
14549
|
+
} else {
|
|
14550
|
+
const remaining = formatRemainingAmount(bucket.remainingAmount);
|
|
14551
|
+
lines.push(remaining ? `${indent}${remaining} remaining` : `${indent}unknown remaining`);
|
|
14552
|
+
}
|
|
14553
|
+
const resetLabel = formatRelativeResetTime(bucket.resetTime);
|
|
14554
|
+
if (resetLabel) {
|
|
14555
|
+
lines.push(`${indent}${resetLabel.replace("resets in ", "Refreshes in ")}`);
|
|
14556
|
+
}
|
|
14557
|
+
return lines;
|
|
14558
|
+
}
|
|
14559
|
+
function groupBucketsByWindow(buckets) {
|
|
14560
|
+
const groups = /* @__PURE__ */ new Map();
|
|
14561
|
+
const order = ["WEEKLY", "FIVE_HOUR"];
|
|
14562
|
+
for (const bucket of buckets) {
|
|
14563
|
+
const key = bucket.window?.toUpperCase() || "UNKNOWN";
|
|
14564
|
+
const existing = groups.get(key);
|
|
14565
|
+
if (existing) {
|
|
14566
|
+
existing.push(bucket);
|
|
14567
|
+
} else {
|
|
14568
|
+
groups.set(key, [bucket]);
|
|
14569
|
+
}
|
|
14570
|
+
}
|
|
14571
|
+
const sorted = /* @__PURE__ */ new Map();
|
|
14572
|
+
for (const key of order) {
|
|
14573
|
+
const group = groups.get(key);
|
|
14574
|
+
if (group) {
|
|
14575
|
+
sorted.set(key, group);
|
|
14576
|
+
}
|
|
14577
|
+
}
|
|
14578
|
+
for (const [key, group] of groups) {
|
|
14579
|
+
if (!sorted.has(key)) {
|
|
14580
|
+
sorted.set(key, group);
|
|
14581
|
+
}
|
|
14582
|
+
}
|
|
14583
|
+
return sorted;
|
|
14584
|
+
}
|
|
14585
|
+
function formatSummaryGroup(group) {
|
|
14586
|
+
const lines = [];
|
|
14587
|
+
const name = group.displayName?.trim();
|
|
14588
|
+
if (name) {
|
|
14589
|
+
lines.push(name);
|
|
14590
|
+
}
|
|
14591
|
+
const desc = group.description?.trim();
|
|
14592
|
+
if (desc) {
|
|
14593
|
+
lines.push(` Models within this group: ${desc}`);
|
|
14594
|
+
}
|
|
14595
|
+
const buckets = group.buckets;
|
|
14596
|
+
if (buckets?.length) {
|
|
14597
|
+
const windowGroups = groupBucketsByWindow(buckets);
|
|
14598
|
+
let firstWindow = true;
|
|
14599
|
+
for (const [, windowBuckets] of windowGroups) {
|
|
14600
|
+
if (!firstWindow) {
|
|
14601
|
+
lines.push("");
|
|
14602
|
+
}
|
|
14603
|
+
for (const bucket of windowBuckets) {
|
|
14604
|
+
const label = windowLabel(bucket.window);
|
|
14605
|
+
lines.push(` ${label}`);
|
|
14606
|
+
lines.push(...formatSummaryBucket(bucket, " "));
|
|
14607
|
+
firstWindow = false;
|
|
14608
|
+
}
|
|
14609
|
+
}
|
|
14610
|
+
}
|
|
14611
|
+
return lines;
|
|
14612
|
+
}
|
|
14613
|
+
function formatTopLevelBuckets(buckets) {
|
|
14614
|
+
const lines = [];
|
|
14615
|
+
const windowGroups = groupBucketsByWindow(buckets);
|
|
14616
|
+
let firstWindow = true;
|
|
14617
|
+
for (const [, windowBuckets] of windowGroups) {
|
|
14618
|
+
if (!firstWindow) {
|
|
14619
|
+
lines.push("");
|
|
14620
|
+
}
|
|
14621
|
+
for (const bucket of windowBuckets) {
|
|
14622
|
+
const label = windowLabel(bucket.window);
|
|
14623
|
+
lines.push(label);
|
|
14624
|
+
lines.push(...formatSummaryBucket(bucket, " "));
|
|
14625
|
+
firstWindow = false;
|
|
14626
|
+
}
|
|
14627
|
+
}
|
|
14628
|
+
return lines;
|
|
14629
|
+
}
|
|
14630
|
+
function formatAgyQuotaSummaryOutput(projectId, summary) {
|
|
14631
|
+
const lines = [
|
|
14632
|
+
`Agy quota summary for project \`${projectId}\``,
|
|
14633
|
+
""
|
|
14634
|
+
];
|
|
14635
|
+
const groups = summary.groups;
|
|
14636
|
+
if (groups?.length) {
|
|
14637
|
+
for (let i = 0; i < groups.length; i++) {
|
|
14638
|
+
const group = groups[i];
|
|
14639
|
+
if (!group) {
|
|
14640
|
+
continue;
|
|
14641
|
+
}
|
|
14642
|
+
if (i > 0) {
|
|
14643
|
+
lines.push("");
|
|
14644
|
+
lines.push("");
|
|
14645
|
+
}
|
|
14646
|
+
lines.push(...formatSummaryGroup(group));
|
|
14647
|
+
}
|
|
14648
|
+
} else if (summary.buckets?.length) {
|
|
14649
|
+
lines.push(...formatTopLevelBuckets(summary.buckets));
|
|
14650
|
+
} else {
|
|
14651
|
+
lines.push("No quota information available.");
|
|
14652
|
+
}
|
|
14653
|
+
return lines.join("\n");
|
|
14654
|
+
}
|
|
14655
|
+
|
|
14438
14656
|
// src/plugin/notify.ts
|
|
14439
14657
|
var MODEL_CAPACITY_TOAST_COOLDOWN_MS = 3e4;
|
|
14440
14658
|
var modelCapacityToastCooldownByKey = /* @__PURE__ */ new Map();
|
|
@@ -14660,6 +14878,904 @@ function buildTrajectoryAnalyticsBody(cascadeId = randomUUID(), platform2 = "DAR
|
|
|
14660
14878
|
// src/sdk/request/prepare.ts
|
|
14661
14879
|
import { randomUUID as randomUUID3 } from "crypto";
|
|
14662
14880
|
|
|
14881
|
+
// models.json
|
|
14882
|
+
var models_default = {
|
|
14883
|
+
models: {
|
|
14884
|
+
tab_jump_flash_lite_preview: {
|
|
14885
|
+
maxTokens: 16384,
|
|
14886
|
+
maxOutputTokens: 4096,
|
|
14887
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
14888
|
+
quotaInfo: {
|
|
14889
|
+
remainingFraction: 1
|
|
14890
|
+
},
|
|
14891
|
+
model: "MODEL_PLACEHOLDER_M28",
|
|
14892
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
14893
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
14894
|
+
supportsCumulativeContext: true,
|
|
14895
|
+
tabJumpPrintLineRange: true,
|
|
14896
|
+
supportsEstimateTokenCounter: true,
|
|
14897
|
+
addCursorToFindReplaceTarget: true,
|
|
14898
|
+
toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
|
|
14899
|
+
requiresLeadInGeneration: true,
|
|
14900
|
+
requiresNoXmlToolExamples: true
|
|
14901
|
+
},
|
|
14902
|
+
"gemini-3.1-pro-high": {
|
|
14903
|
+
displayName: "Gemini 3.1 Pro (High)",
|
|
14904
|
+
supportsImages: true,
|
|
14905
|
+
supportsThinking: true,
|
|
14906
|
+
thinkingBudget: 10001,
|
|
14907
|
+
minThinkingBudget: 128,
|
|
14908
|
+
recommended: true,
|
|
14909
|
+
maxTokens: 1048576,
|
|
14910
|
+
maxOutputTokens: 65535,
|
|
14911
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
14912
|
+
quotaInfo: {
|
|
14913
|
+
remainingFraction: 1,
|
|
14914
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
14915
|
+
},
|
|
14916
|
+
model: "MODEL_PLACEHOLDER_M37",
|
|
14917
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
14918
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
14919
|
+
supportsVideo: true,
|
|
14920
|
+
tagTitle: "New",
|
|
14921
|
+
supportedMimeTypes: {
|
|
14922
|
+
"audio/webm;codecs=opus": true,
|
|
14923
|
+
"application/x-python-code": true,
|
|
14924
|
+
"text/xml": true,
|
|
14925
|
+
"text/x-python": true,
|
|
14926
|
+
"text/html": true,
|
|
14927
|
+
"application/x-ipynb+json": true,
|
|
14928
|
+
"video/text/timestamp": true,
|
|
14929
|
+
"text/markdown": true,
|
|
14930
|
+
"text/x-python-script": true,
|
|
14931
|
+
"video/jpeg2000": true,
|
|
14932
|
+
"image/jpeg": true,
|
|
14933
|
+
"image/png": true,
|
|
14934
|
+
"image/heic": true,
|
|
14935
|
+
"text/plain": true,
|
|
14936
|
+
"application/x-javascript": true,
|
|
14937
|
+
"application/json": true,
|
|
14938
|
+
"application/pdf": true,
|
|
14939
|
+
"text/javascript": true,
|
|
14940
|
+
"image/webp": true,
|
|
14941
|
+
"application/x-typescript": true,
|
|
14942
|
+
"text/x-typescript": true,
|
|
14943
|
+
"text/rtf": true,
|
|
14944
|
+
"video/webm": true,
|
|
14945
|
+
"video/audio/wav": true,
|
|
14946
|
+
"video/audio/s16le": true,
|
|
14947
|
+
"text/csv": true,
|
|
14948
|
+
"video/mp4": true,
|
|
14949
|
+
"video/videoframe/jpeg2000": true,
|
|
14950
|
+
"image/heif": true,
|
|
14951
|
+
"text/css": true,
|
|
14952
|
+
"application/rtf": true
|
|
14953
|
+
},
|
|
14954
|
+
modelExperiments: {
|
|
14955
|
+
experiments: {
|
|
14956
|
+
"cascade-include-ephemeral-message": {
|
|
14957
|
+
stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
|
|
14958
|
+
},
|
|
14959
|
+
template__system_prompts__communication_style: {
|
|
14960
|
+
stringValue: "- Keep your responses concise.\n- Provide a summary of your work when you end your turn.\n- Format your responses in github-style markdown.\n- If you're unsure about the user's intent, ask for clarification rather than making assumptions.\n- You MUST create clickable links for all files and code symbols (classes, types, functions, structs). Use github style markdown links with the `file://` scheme (e.g., [filename](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n\nCRITICAL INSTRUCTION 1: You may have access to a variety of tools at your disposal. Some tools may be for a specific task such as 'view_file' (for viewing contents of a file). Others may be very broadly applicable such as the ability to run a command on a terminal. Always prioritize using the most specific tool you can for the task at hand. Here are some rules: (a) NEVER run cat inside a bash command to create a new file or append to an existing file. (b) ALWAYS use grep_search instead of running grep inside a bash command unless absolutely needed. (c) DO NOT use ls for listing, cat for viewing, grep for finding, sed for replacing.\nCRITICAL INSTRUCTION 2: Before making tool calls T, think and explicitly list out any related tools for the task at hand. You can only execute a set of tools T if all other tools in the list are either more generic or cannot be used for the task at hand. ALWAYS START your thought with recalling critical instructions 1 and 2. In particular, the format for the start of your thought block must be '...94>thought\\nCRITICAL INSTRUCTION 1: ...\\nCRITICAL INSTRUCTION 2: ...'."
|
|
14961
|
+
},
|
|
14962
|
+
template__system_prompts__identity: {
|
|
14963
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
14964
|
+
},
|
|
14965
|
+
template__system_prompts__planning_more_artifacts: {
|
|
14966
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
14967
|
+
},
|
|
14968
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
14969
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
14970
|
+
}
|
|
14971
|
+
}
|
|
14972
|
+
}
|
|
14973
|
+
},
|
|
14974
|
+
"gemini-2.5-flash": {
|
|
14975
|
+
displayName: "Gemini 3.1 Flash Lite",
|
|
14976
|
+
maxTokens: 1048576,
|
|
14977
|
+
maxOutputTokens: 65535,
|
|
14978
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
14979
|
+
quotaInfo: {
|
|
14980
|
+
remainingFraction: 1,
|
|
14981
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
14982
|
+
},
|
|
14983
|
+
model: "MODEL_GOOGLE_GEMINI_2_5_FLASH",
|
|
14984
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
14985
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
14986
|
+
modelExperiments: {
|
|
14987
|
+
experiments: {
|
|
14988
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
14989
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
14990
|
+
}
|
|
14991
|
+
}
|
|
14992
|
+
}
|
|
14993
|
+
},
|
|
14994
|
+
"claude-opus-4-6-thinking": {
|
|
14995
|
+
displayName: "Claude Opus 4.6 (Thinking)",
|
|
14996
|
+
supportsImages: true,
|
|
14997
|
+
supportsThinking: true,
|
|
14998
|
+
thinkingBudget: 1024,
|
|
14999
|
+
recommended: true,
|
|
15000
|
+
maxTokens: 25e4,
|
|
15001
|
+
maxOutputTokens: 64e3,
|
|
15002
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15003
|
+
quotaInfo: {
|
|
15004
|
+
remainingFraction: 0.6,
|
|
15005
|
+
resetTime: "2026-05-29T19:43:59Z"
|
|
15006
|
+
},
|
|
15007
|
+
model: "MODEL_PLACEHOLDER_M26",
|
|
15008
|
+
apiProvider: "API_PROVIDER_ANTHROPIC_VERTEX",
|
|
15009
|
+
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
15010
|
+
supportedMimeTypes: {
|
|
15011
|
+
"image/webp": true,
|
|
15012
|
+
"video/jpeg2000": true,
|
|
15013
|
+
"video/videoframe/jpeg2000": true,
|
|
15014
|
+
"image/heic": true,
|
|
15015
|
+
"image/heif": true,
|
|
15016
|
+
"image/jpeg": true,
|
|
15017
|
+
"image/png": true
|
|
15018
|
+
},
|
|
15019
|
+
modelExperiments: {
|
|
15020
|
+
experiments: {
|
|
15021
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15022
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_UNSPECIFIED",\n "max_token_limit": "160000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15023
|
+
},
|
|
15024
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15025
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15026
|
+
}
|
|
15027
|
+
}
|
|
15028
|
+
},
|
|
15029
|
+
vertexModelId: "claude-opus-4-6@default"
|
|
15030
|
+
},
|
|
15031
|
+
"gemini-2.5-flash-thinking": {
|
|
15032
|
+
displayName: "Gemini 3.1 Flash Lite",
|
|
15033
|
+
maxTokens: 1048576,
|
|
15034
|
+
maxOutputTokens: 65535,
|
|
15035
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15036
|
+
quotaInfo: {
|
|
15037
|
+
remainingFraction: 1,
|
|
15038
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15039
|
+
},
|
|
15040
|
+
model: "MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING",
|
|
15041
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15042
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15043
|
+
modelExperiments: {
|
|
15044
|
+
experiments: {
|
|
15045
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15046
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15047
|
+
}
|
|
15048
|
+
}
|
|
15049
|
+
}
|
|
15050
|
+
},
|
|
15051
|
+
"gemini-2.5-pro": {
|
|
15052
|
+
displayName: "Gemini 2.5 Pro",
|
|
15053
|
+
supportsImages: true,
|
|
15054
|
+
supportsThinking: true,
|
|
15055
|
+
thinkingBudget: 1024,
|
|
15056
|
+
minThinkingBudget: 128,
|
|
15057
|
+
recommended: true,
|
|
15058
|
+
maxTokens: 1048576,
|
|
15059
|
+
maxOutputTokens: 65535,
|
|
15060
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15061
|
+
quotaInfo: {
|
|
15062
|
+
remainingFraction: 1,
|
|
15063
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15064
|
+
},
|
|
15065
|
+
model: "MODEL_GOOGLE_GEMINI_2_5_PRO",
|
|
15066
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15067
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15068
|
+
supportedMimeTypes: {
|
|
15069
|
+
"video/audio/wav": true,
|
|
15070
|
+
"image/heic": true,
|
|
15071
|
+
"text/html": true,
|
|
15072
|
+
"application/x-python-code": true,
|
|
15073
|
+
"image/heif": true,
|
|
15074
|
+
"text/xml": true,
|
|
15075
|
+
"image/webp": true,
|
|
15076
|
+
"video/jpeg2000": true,
|
|
15077
|
+
"application/pdf": true,
|
|
15078
|
+
"text/csv": true,
|
|
15079
|
+
"image/jpeg": true,
|
|
15080
|
+
"text/markdown": true,
|
|
15081
|
+
"text/css": true,
|
|
15082
|
+
"audio/webm;codecs=opus": true,
|
|
15083
|
+
"application/json": true,
|
|
15084
|
+
"text/x-python-script": true,
|
|
15085
|
+
"video/audio/s16le": true,
|
|
15086
|
+
"text/javascript": true,
|
|
15087
|
+
"text/x-typescript": true,
|
|
15088
|
+
"text/plain": true,
|
|
15089
|
+
"application/x-typescript": true,
|
|
15090
|
+
"application/x-ipynb+json": true,
|
|
15091
|
+
"text/rtf": true,
|
|
15092
|
+
"video/text/timestamp": true,
|
|
15093
|
+
"video/webm": true,
|
|
15094
|
+
"text/x-python": true,
|
|
15095
|
+
"video/videoframe/jpeg2000": true,
|
|
15096
|
+
"application/x-javascript": true,
|
|
15097
|
+
"application/rtf": true,
|
|
15098
|
+
"video/mp4": true,
|
|
15099
|
+
"image/png": true
|
|
15100
|
+
},
|
|
15101
|
+
requiresImageOutputOutsideFunctionResponses: true,
|
|
15102
|
+
modelExperiments: {
|
|
15103
|
+
experiments: {
|
|
15104
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15105
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15106
|
+
}
|
|
15107
|
+
}
|
|
15108
|
+
}
|
|
15109
|
+
},
|
|
15110
|
+
"gemini-3.1-flash-image": {
|
|
15111
|
+
displayName: "Gemini 3.1 Flash Image",
|
|
15112
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15113
|
+
quotaInfo: {
|
|
15114
|
+
remainingFraction: 1,
|
|
15115
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15116
|
+
},
|
|
15117
|
+
model: "MODEL_PLACEHOLDER_M21",
|
|
15118
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15119
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE"
|
|
15120
|
+
},
|
|
15121
|
+
"gemini-pro-agent": {
|
|
15122
|
+
displayName: "Gemini 3.1 Pro (High)",
|
|
15123
|
+
supportsImages: true,
|
|
15124
|
+
supportsThinking: true,
|
|
15125
|
+
thinkingBudget: 10001,
|
|
15126
|
+
minThinkingBudget: 128,
|
|
15127
|
+
recommended: true,
|
|
15128
|
+
maxTokens: 1048576,
|
|
15129
|
+
maxOutputTokens: 65535,
|
|
15130
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15131
|
+
quotaInfo: {
|
|
15132
|
+
remainingFraction: 1,
|
|
15133
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15134
|
+
},
|
|
15135
|
+
model: "MODEL_PLACEHOLDER_M16",
|
|
15136
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15137
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15138
|
+
supportsVideo: true,
|
|
15139
|
+
supportedMimeTypes: {
|
|
15140
|
+
"image/png": true,
|
|
15141
|
+
"image/heic": true,
|
|
15142
|
+
"text/plain": true,
|
|
15143
|
+
"video/mp4": true,
|
|
15144
|
+
"text/css": true,
|
|
15145
|
+
"text/rtf": true,
|
|
15146
|
+
"text/javascript": true,
|
|
15147
|
+
"audio/webm;codecs=opus": true,
|
|
15148
|
+
"application/x-typescript": true,
|
|
15149
|
+
"video/jpeg2000": true,
|
|
15150
|
+
"video/videoframe/jpeg2000": true,
|
|
15151
|
+
"application/rtf": true,
|
|
15152
|
+
"text/xml": true,
|
|
15153
|
+
"video/text/timestamp": true,
|
|
15154
|
+
"application/x-python-code": true,
|
|
15155
|
+
"text/markdown": true,
|
|
15156
|
+
"text/x-python": true,
|
|
15157
|
+
"image/webp": true,
|
|
15158
|
+
"application/x-javascript": true,
|
|
15159
|
+
"text/x-python-script": true,
|
|
15160
|
+
"application/json": true,
|
|
15161
|
+
"text/html": true,
|
|
15162
|
+
"video/webm": true,
|
|
15163
|
+
"video/audio/s16le": true,
|
|
15164
|
+
"application/x-ipynb+json": true,
|
|
15165
|
+
"image/jpeg": true,
|
|
15166
|
+
"text/x-typescript": true,
|
|
15167
|
+
"text/csv": true,
|
|
15168
|
+
"video/audio/wav": true,
|
|
15169
|
+
"image/heif": true,
|
|
15170
|
+
"application/pdf": true
|
|
15171
|
+
},
|
|
15172
|
+
modelExperiments: {
|
|
15173
|
+
experiments: {
|
|
15174
|
+
template__system_prompts__communication_style: {
|
|
15175
|
+
stringValue: "- Keep your responses concise.\n- Provide a summary of your work when you end your turn.\n- Format your responses in github-style markdown.\n- If you're unsure about the user's intent, ask for clarification rather than making assumptions.\n- You MUST create clickable links for all files and code symbols (classes, types, functions, structs). Use github style markdown links with the `file://` scheme (e.g., [filename](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n\nCRITICAL INSTRUCTION 1: You may have access to a variety of tools at your disposal. Some tools may be for a specific task such as 'view_file' (for viewing contents of a file). Others may be very broadly applicable such as the ability to run a command on a terminal. Always prioritize using the most specific tool you can for the task at hand. Here are some rules: (a) NEVER run cat inside a bash command to create a new file or append to an existing file. (b) ALWAYS use grep_search instead of running grep inside a bash command unless absolutely needed. (c) DO NOT use ls for listing, cat for viewing, grep for finding, sed for replacing.\nCRITICAL INSTRUCTION 2: Before making tool calls T, think and explicitly list out any related tools for the task at hand. You can only execute a set of tools T if all other tools in the list are either more generic or cannot be used for the task at hand. ALWAYS START your thought with recalling critical instructions 1 and 2. In particular, the format for the start of your thought block must be '...94>thought\\nCRITICAL INSTRUCTION 1: ...\\nCRITICAL INSTRUCTION 2: ...'."
|
|
15176
|
+
},
|
|
15177
|
+
template__system_prompts__identity: {
|
|
15178
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
15179
|
+
},
|
|
15180
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15181
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15182
|
+
},
|
|
15183
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15184
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15185
|
+
},
|
|
15186
|
+
"cascade-include-ephemeral-message": {
|
|
15187
|
+
stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
|
|
15188
|
+
}
|
|
15189
|
+
}
|
|
15190
|
+
}
|
|
15191
|
+
},
|
|
15192
|
+
"gemini-3.5-flash-extra-low": {
|
|
15193
|
+
displayName: "Gemini 3.5 Flash (Low)",
|
|
15194
|
+
supportsImages: true,
|
|
15195
|
+
supportsThinking: true,
|
|
15196
|
+
thinkingBudget: 1e3,
|
|
15197
|
+
minThinkingBudget: 32,
|
|
15198
|
+
recommended: true,
|
|
15199
|
+
maxTokens: 1048576,
|
|
15200
|
+
maxOutputTokens: 65536,
|
|
15201
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15202
|
+
quotaInfo: {
|
|
15203
|
+
remainingFraction: 1,
|
|
15204
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15205
|
+
},
|
|
15206
|
+
model: "MODEL_PLACEHOLDER_M187",
|
|
15207
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15208
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15209
|
+
supportsVideo: true,
|
|
15210
|
+
tagTitle: "Fast",
|
|
15211
|
+
tagDescription: "Limited time",
|
|
15212
|
+
supportedMimeTypes: {
|
|
15213
|
+
"video/audio/s16le": true,
|
|
15214
|
+
"video/mp4": true,
|
|
15215
|
+
"image/heif": true,
|
|
15216
|
+
"application/x-typescript": true,
|
|
15217
|
+
"image/png": true,
|
|
15218
|
+
"video/jpeg2000": true,
|
|
15219
|
+
"text/csv": true,
|
|
15220
|
+
"text/x-python-script": true,
|
|
15221
|
+
"image/jpeg": true,
|
|
15222
|
+
"text/rtf": true,
|
|
15223
|
+
"text/x-python": true,
|
|
15224
|
+
"audio/webm;codecs=opus": true,
|
|
15225
|
+
"video/text/timestamp": true,
|
|
15226
|
+
"application/pdf": true,
|
|
15227
|
+
"image/webp": true,
|
|
15228
|
+
"application/x-javascript": true,
|
|
15229
|
+
"text/markdown": true,
|
|
15230
|
+
"application/x-ipynb+json": true,
|
|
15231
|
+
"video/audio/wav": true,
|
|
15232
|
+
"text/javascript": true,
|
|
15233
|
+
"application/rtf": true,
|
|
15234
|
+
"video/webm": true,
|
|
15235
|
+
"text/css": true,
|
|
15236
|
+
"text/html": true,
|
|
15237
|
+
"text/xml": true,
|
|
15238
|
+
"text/x-typescript": true,
|
|
15239
|
+
"application/x-python-code": true,
|
|
15240
|
+
"application/json": true,
|
|
15241
|
+
"image/heic": true,
|
|
15242
|
+
"text/plain": true,
|
|
15243
|
+
"video/videoframe/jpeg2000": true
|
|
15244
|
+
},
|
|
15245
|
+
modelExperiments: {
|
|
15246
|
+
experiments: {
|
|
15247
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15248
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "100000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": true,\n "is_sync": true,\n "max_user_requests": 10,\n "include_last_user_message": true,\n "include_conversation_log": false,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15249
|
+
},
|
|
15250
|
+
template__system_prompts__identity: {
|
|
15251
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
15252
|
+
},
|
|
15253
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15254
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15255
|
+
}
|
|
15256
|
+
}
|
|
15257
|
+
}
|
|
15258
|
+
},
|
|
15259
|
+
"gemini-3-flash-agent": {
|
|
15260
|
+
displayName: "Gemini 3.5 Flash (High)",
|
|
15261
|
+
supportsImages: true,
|
|
15262
|
+
supportsThinking: true,
|
|
15263
|
+
thinkingBudget: 1e4,
|
|
15264
|
+
minThinkingBudget: 32,
|
|
15265
|
+
recommended: true,
|
|
15266
|
+
maxTokens: 1048576,
|
|
15267
|
+
maxOutputTokens: 65536,
|
|
15268
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15269
|
+
quotaInfo: {
|
|
15270
|
+
remainingFraction: 1,
|
|
15271
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15272
|
+
},
|
|
15273
|
+
model: "MODEL_PLACEHOLDER_M132",
|
|
15274
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15275
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15276
|
+
supportsVideo: true,
|
|
15277
|
+
tagTitle: "Fast",
|
|
15278
|
+
tagDescription: "Limited time",
|
|
15279
|
+
supportedMimeTypes: {
|
|
15280
|
+
"application/json": true,
|
|
15281
|
+
"text/html": true,
|
|
15282
|
+
"text/markdown": true,
|
|
15283
|
+
"image/webp": true,
|
|
15284
|
+
"video/text/timestamp": true,
|
|
15285
|
+
"application/pdf": true,
|
|
15286
|
+
"text/javascript": true,
|
|
15287
|
+
"application/rtf": true,
|
|
15288
|
+
"video/jpeg2000": true,
|
|
15289
|
+
"video/videoframe/jpeg2000": true,
|
|
15290
|
+
"text/csv": true,
|
|
15291
|
+
"text/x-python-script": true,
|
|
15292
|
+
"text/rtf": true,
|
|
15293
|
+
"image/png": true,
|
|
15294
|
+
"audio/webm;codecs=opus": true,
|
|
15295
|
+
"application/x-ipynb+json": true,
|
|
15296
|
+
"video/audio/wav": true,
|
|
15297
|
+
"video/audio/s16le": true,
|
|
15298
|
+
"video/webm": true,
|
|
15299
|
+
"text/x-python": true,
|
|
15300
|
+
"image/heif": true,
|
|
15301
|
+
"text/plain": true,
|
|
15302
|
+
"video/mp4": true,
|
|
15303
|
+
"application/x-javascript": true,
|
|
15304
|
+
"image/heic": true,
|
|
15305
|
+
"text/x-typescript": true,
|
|
15306
|
+
"application/x-python-code": true,
|
|
15307
|
+
"text/css": true,
|
|
15308
|
+
"image/jpeg": true,
|
|
15309
|
+
"text/xml": true,
|
|
15310
|
+
"application/x-typescript": true
|
|
15311
|
+
},
|
|
15312
|
+
modelExperiments: {
|
|
15313
|
+
experiments: {
|
|
15314
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15315
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "100000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": true,\n "is_sync": true,\n "max_user_requests": 10,\n "include_last_user_message": true,\n "include_conversation_log": false,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15316
|
+
},
|
|
15317
|
+
template__system_prompts__identity: {
|
|
15318
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
15319
|
+
},
|
|
15320
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15321
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15322
|
+
}
|
|
15323
|
+
}
|
|
15324
|
+
}
|
|
15325
|
+
},
|
|
15326
|
+
chat_23310: {
|
|
15327
|
+
maxTokens: 32768,
|
|
15328
|
+
tokenizerType: "QWEN2",
|
|
15329
|
+
quotaInfo: {
|
|
15330
|
+
remainingFraction: 1
|
|
15331
|
+
},
|
|
15332
|
+
model: "MODEL_CHAT_23310",
|
|
15333
|
+
apiProvider: "API_PROVIDER_INTERNAL",
|
|
15334
|
+
supportsCumulativeContext: true,
|
|
15335
|
+
supportsEstimateTokenCounter: true,
|
|
15336
|
+
isInternal: true,
|
|
15337
|
+
promptTemplaterType: "PROMPT_TEMPLATER_TYPE_CHATML",
|
|
15338
|
+
toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
|
|
15339
|
+
requiresLeadInGeneration: true
|
|
15340
|
+
},
|
|
15341
|
+
chat_20706: {
|
|
15342
|
+
maxTokens: 16384,
|
|
15343
|
+
tokenizerType: "QWEN2",
|
|
15344
|
+
quotaInfo: {
|
|
15345
|
+
remainingFraction: 1
|
|
15346
|
+
},
|
|
15347
|
+
model: "MODEL_CHAT_20706",
|
|
15348
|
+
apiProvider: "API_PROVIDER_INTERNAL",
|
|
15349
|
+
supportsCumulativeContext: true,
|
|
15350
|
+
tabJumpPrintLineRange: true,
|
|
15351
|
+
supportsEstimateTokenCounter: true,
|
|
15352
|
+
isInternal: true,
|
|
15353
|
+
addCursorToFindReplaceTarget: true,
|
|
15354
|
+
promptTemplaterType: "PROMPT_TEMPLATER_TYPE_CHATML",
|
|
15355
|
+
toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
|
|
15356
|
+
requiresLeadInGeneration: true
|
|
15357
|
+
},
|
|
15358
|
+
"gpt-oss-120b-medium": {
|
|
15359
|
+
displayName: "GPT-OSS 120B (Medium)",
|
|
15360
|
+
supportsThinking: true,
|
|
15361
|
+
thinkingBudget: 8192,
|
|
15362
|
+
recommended: true,
|
|
15363
|
+
maxTokens: 131072,
|
|
15364
|
+
maxOutputTokens: 32768,
|
|
15365
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15366
|
+
quotaInfo: {
|
|
15367
|
+
remainingFraction: 0.6,
|
|
15368
|
+
resetTime: "2026-05-29T19:43:59Z"
|
|
15369
|
+
},
|
|
15370
|
+
model: "MODEL_OPENAI_GPT_OSS_120B_MEDIUM",
|
|
15371
|
+
apiProvider: "API_PROVIDER_OPENAI_VERTEX",
|
|
15372
|
+
modelProvider: "MODEL_PROVIDER_OPENAI",
|
|
15373
|
+
modelExperiments: {
|
|
15374
|
+
experiments: {
|
|
15375
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15376
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_UNSPECIFIED",\n "max_token_limit": "80000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "8192",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15377
|
+
}
|
|
15378
|
+
}
|
|
15379
|
+
},
|
|
15380
|
+
vertexModelId: "openai/gpt-oss-120b-maas"
|
|
15381
|
+
},
|
|
15382
|
+
tab_flash_lite_preview: {
|
|
15383
|
+
maxTokens: 16384,
|
|
15384
|
+
maxOutputTokens: 4096,
|
|
15385
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15386
|
+
quotaInfo: {
|
|
15387
|
+
remainingFraction: 1
|
|
15388
|
+
},
|
|
15389
|
+
model: "MODEL_PLACEHOLDER_M19",
|
|
15390
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15391
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15392
|
+
supportsCumulativeContext: true,
|
|
15393
|
+
supportsEstimateTokenCounter: true,
|
|
15394
|
+
toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
|
|
15395
|
+
requiresLeadInGeneration: true
|
|
15396
|
+
},
|
|
15397
|
+
"gemini-2.5-flash-lite": {
|
|
15398
|
+
displayName: "Gemini 3.1 Flash Lite",
|
|
15399
|
+
maxTokens: 1048576,
|
|
15400
|
+
maxOutputTokens: 65535,
|
|
15401
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15402
|
+
quotaInfo: {
|
|
15403
|
+
remainingFraction: 1,
|
|
15404
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15405
|
+
},
|
|
15406
|
+
model: "MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE",
|
|
15407
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15408
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15409
|
+
modelExperiments: {
|
|
15410
|
+
experiments: {
|
|
15411
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15412
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15413
|
+
}
|
|
15414
|
+
}
|
|
15415
|
+
}
|
|
15416
|
+
},
|
|
15417
|
+
"gemini-3.1-flash-lite": {
|
|
15418
|
+
displayName: "Gemini 3.1 Flash Lite",
|
|
15419
|
+
maxTokens: 1048576,
|
|
15420
|
+
maxOutputTokens: 65535,
|
|
15421
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15422
|
+
quotaInfo: {
|
|
15423
|
+
remainingFraction: 1,
|
|
15424
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15425
|
+
},
|
|
15426
|
+
model: "MODEL_PLACEHOLDER_M50",
|
|
15427
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15428
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15429
|
+
modelExperiments: {
|
|
15430
|
+
experiments: {
|
|
15431
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15432
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15433
|
+
}
|
|
15434
|
+
}
|
|
15435
|
+
}
|
|
15436
|
+
},
|
|
15437
|
+
"gemini-3-flash": {
|
|
15438
|
+
displayName: "Gemini 3 Flash",
|
|
15439
|
+
supportsImages: true,
|
|
15440
|
+
supportsThinking: true,
|
|
15441
|
+
thinkingBudget: -1,
|
|
15442
|
+
minThinkingBudget: 32,
|
|
15443
|
+
recommended: true,
|
|
15444
|
+
maxTokens: 1048576,
|
|
15445
|
+
maxOutputTokens: 65536,
|
|
15446
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15447
|
+
quotaInfo: {
|
|
15448
|
+
remainingFraction: 1,
|
|
15449
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15450
|
+
},
|
|
15451
|
+
model: "MODEL_PLACEHOLDER_M18",
|
|
15452
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15453
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15454
|
+
supportsVideo: true,
|
|
15455
|
+
supportedMimeTypes: {
|
|
15456
|
+
"text/csv": true,
|
|
15457
|
+
"text/html": true,
|
|
15458
|
+
"application/x-typescript": true,
|
|
15459
|
+
"image/heic": true,
|
|
15460
|
+
"audio/webm;codecs=opus": true,
|
|
15461
|
+
"text/javascript": true,
|
|
15462
|
+
"video/videoframe/jpeg2000": true,
|
|
15463
|
+
"video/mp4": true,
|
|
15464
|
+
"application/x-python-code": true,
|
|
15465
|
+
"video/text/timestamp": true,
|
|
15466
|
+
"video/audio/wav": true,
|
|
15467
|
+
"video/jpeg2000": true,
|
|
15468
|
+
"text/css": true,
|
|
15469
|
+
"video/audio/s16le": true,
|
|
15470
|
+
"application/x-javascript": true,
|
|
15471
|
+
"text/x-python-script": true,
|
|
15472
|
+
"text/markdown": true,
|
|
15473
|
+
"image/webp": true,
|
|
15474
|
+
"text/x-python": true,
|
|
15475
|
+
"application/pdf": true,
|
|
15476
|
+
"application/x-ipynb+json": true,
|
|
15477
|
+
"image/heif": true,
|
|
15478
|
+
"application/json": true,
|
|
15479
|
+
"text/x-typescript": true,
|
|
15480
|
+
"text/plain": true,
|
|
15481
|
+
"image/png": true,
|
|
15482
|
+
"application/rtf": true,
|
|
15483
|
+
"text/xml": true,
|
|
15484
|
+
"image/jpeg": true,
|
|
15485
|
+
"video/webm": true,
|
|
15486
|
+
"text/rtf": true
|
|
15487
|
+
},
|
|
15488
|
+
modelExperiments: {
|
|
15489
|
+
experiments: {
|
|
15490
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15491
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15492
|
+
},
|
|
15493
|
+
template__system_prompts__communication_style: {
|
|
15494
|
+
stringValue: '- Keep your responses concise.\n- Provide a summary of your work when you end your turn. Ground your response in the work you did. Keep your tone professional and avoid overconfident language, bragging, or overclaiming success.\n- AVOID using superlatives such as "perfectly", "flawlessly", "100% correct", "Summary of Accomplishments" etc. to summarize your work for the user. Be humble.\n- AVOID over-the-top politeness or complimenting the user excessively.\n- Format your responses in github-style markdown.'
|
|
15495
|
+
}
|
|
15496
|
+
}
|
|
15497
|
+
}
|
|
15498
|
+
},
|
|
15499
|
+
"claude-sonnet-4-6": {
|
|
15500
|
+
displayName: "Claude Sonnet 4.6 (Thinking)",
|
|
15501
|
+
supportsImages: true,
|
|
15502
|
+
supportsThinking: true,
|
|
15503
|
+
thinkingBudget: 1024,
|
|
15504
|
+
recommended: true,
|
|
15505
|
+
maxTokens: 25e4,
|
|
15506
|
+
maxOutputTokens: 64e3,
|
|
15507
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15508
|
+
quotaInfo: {
|
|
15509
|
+
remainingFraction: 0.6,
|
|
15510
|
+
resetTime: "2026-05-29T19:43:59Z"
|
|
15511
|
+
},
|
|
15512
|
+
model: "MODEL_PLACEHOLDER_M35",
|
|
15513
|
+
apiProvider: "API_PROVIDER_ANTHROPIC_VERTEX",
|
|
15514
|
+
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
15515
|
+
supportedMimeTypes: {
|
|
15516
|
+
"image/png": true,
|
|
15517
|
+
"image/webp": true,
|
|
15518
|
+
"video/jpeg2000": true,
|
|
15519
|
+
"video/videoframe/jpeg2000": true,
|
|
15520
|
+
"image/heic": true,
|
|
15521
|
+
"image/heif": true,
|
|
15522
|
+
"image/jpeg": true
|
|
15523
|
+
},
|
|
15524
|
+
modelExperiments: {
|
|
15525
|
+
experiments: {
|
|
15526
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15527
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15528
|
+
},
|
|
15529
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15530
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_UNSPECIFIED",\n "max_token_limit": "160000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15531
|
+
},
|
|
15532
|
+
template__system_prompts__identity: {
|
|
15533
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
15534
|
+
}
|
|
15535
|
+
}
|
|
15536
|
+
},
|
|
15537
|
+
vertexModelId: "claude-sonnet-4-6@default"
|
|
15538
|
+
},
|
|
15539
|
+
"gemini-3.1-pro-low": {
|
|
15540
|
+
displayName: "Gemini 3.1 Pro (Low)",
|
|
15541
|
+
supportsImages: true,
|
|
15542
|
+
supportsThinking: true,
|
|
15543
|
+
thinkingBudget: 1001,
|
|
15544
|
+
minThinkingBudget: 128,
|
|
15545
|
+
recommended: true,
|
|
15546
|
+
maxTokens: 1048576,
|
|
15547
|
+
maxOutputTokens: 65535,
|
|
15548
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15549
|
+
quotaInfo: {
|
|
15550
|
+
remainingFraction: 1,
|
|
15551
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15552
|
+
},
|
|
15553
|
+
model: "MODEL_PLACEHOLDER_M36",
|
|
15554
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15555
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15556
|
+
supportsVideo: true,
|
|
15557
|
+
supportedMimeTypes: {
|
|
15558
|
+
"text/x-typescript": true,
|
|
15559
|
+
"audio/webm;codecs=opus": true,
|
|
15560
|
+
"image/webp": true,
|
|
15561
|
+
"application/json": true,
|
|
15562
|
+
"application/rtf": true,
|
|
15563
|
+
"text/x-python": true,
|
|
15564
|
+
"video/mp4": true,
|
|
15565
|
+
"text/csv": true,
|
|
15566
|
+
"video/text/timestamp": true,
|
|
15567
|
+
"text/css": true,
|
|
15568
|
+
"image/heif": true,
|
|
15569
|
+
"application/x-typescript": true,
|
|
15570
|
+
"text/x-python-script": true,
|
|
15571
|
+
"application/x-python-code": true,
|
|
15572
|
+
"text/plain": true,
|
|
15573
|
+
"video/webm": true,
|
|
15574
|
+
"video/audio/wav": true,
|
|
15575
|
+
"image/jpeg": true,
|
|
15576
|
+
"text/xml": true,
|
|
15577
|
+
"application/x-javascript": true,
|
|
15578
|
+
"text/javascript": true,
|
|
15579
|
+
"text/html": true,
|
|
15580
|
+
"video/jpeg2000": true,
|
|
15581
|
+
"image/heic": true,
|
|
15582
|
+
"application/pdf": true,
|
|
15583
|
+
"video/audio/s16le": true,
|
|
15584
|
+
"text/markdown": true,
|
|
15585
|
+
"video/videoframe/jpeg2000": true,
|
|
15586
|
+
"image/png": true,
|
|
15587
|
+
"application/x-ipynb+json": true,
|
|
15588
|
+
"text/rtf": true
|
|
15589
|
+
},
|
|
15590
|
+
modelExperiments: {
|
|
15591
|
+
experiments: {
|
|
15592
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15593
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SINGLE_PROMPT",\n "max_token_limit": "128000",\n "token_threshold": "50000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": false,\n "is_sync": false,\n "max_user_requests": 10,\n "include_last_user_message": false,\n "include_conversation_log": true,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15594
|
+
},
|
|
15595
|
+
"cascade-include-ephemeral-message": {
|
|
15596
|
+
stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
|
|
15597
|
+
},
|
|
15598
|
+
template__system_prompts__communication_style: {
|
|
15599
|
+
stringValue: "- Keep your responses concise.\n- Provide a summary of your work when you end your turn.\n- Format your responses in github-style markdown.\n- If you're unsure about the user's intent, ask for clarification rather than making assumptions.\n- You MUST create clickable links for all files and code symbols (classes, types, functions, structs). Use github style markdown links with the `file://` scheme (e.g., [filename](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n\nCRITICAL INSTRUCTION 1: You may have access to a variety of tools at your disposal. Some tools may be for a specific task such as 'view_file' (for viewing contents of a file). Others may be very broadly applicable such as the ability to run a command on a terminal. Always prioritize using the most specific tool you can for the task at hand. Here are some rules: (a) NEVER run cat inside a bash command to create a new file or append to an existing file. (b) ALWAYS use grep_search instead of running grep inside a bash command unless absolutely needed. (c) DO NOT use ls for listing, cat for viewing, grep for finding, sed for replacing.\nCRITICAL INSTRUCTION 2: Before making tool calls T, think and explicitly list out any related tools for the task at hand. You can only execute a set of tools T if all other tools in the list are either more generic or cannot be used for the task at hand. ALWAYS START your thought with recalling critical instructions 1 and 2. In particular, the format for the start of your thought block must be '...94>thought\\nCRITICAL INSTRUCTION 1: ...\\nCRITICAL INSTRUCTION 2: ...'."
|
|
15600
|
+
},
|
|
15601
|
+
template__system_prompts__identity: {
|
|
15602
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
15603
|
+
},
|
|
15604
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15605
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15606
|
+
}
|
|
15607
|
+
}
|
|
15608
|
+
}
|
|
15609
|
+
},
|
|
15610
|
+
"gemini-3.5-flash-low": {
|
|
15611
|
+
displayName: "Gemini 3.5 Flash (Medium)",
|
|
15612
|
+
supportsImages: true,
|
|
15613
|
+
supportsThinking: true,
|
|
15614
|
+
thinkingBudget: 4e3,
|
|
15615
|
+
minThinkingBudget: 32,
|
|
15616
|
+
recommended: true,
|
|
15617
|
+
maxTokens: 1048576,
|
|
15618
|
+
maxOutputTokens: 65536,
|
|
15619
|
+
tokenizerType: "LLAMA_WITH_SPECIAL",
|
|
15620
|
+
quotaInfo: {
|
|
15621
|
+
remainingFraction: 1,
|
|
15622
|
+
resetTime: "2026-05-29T18:30:05Z"
|
|
15623
|
+
},
|
|
15624
|
+
model: "MODEL_PLACEHOLDER_M20",
|
|
15625
|
+
apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
|
|
15626
|
+
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
15627
|
+
supportsVideo: true,
|
|
15628
|
+
tagTitle: "Fast",
|
|
15629
|
+
tagDescription: "Limited time",
|
|
15630
|
+
supportedMimeTypes: {
|
|
15631
|
+
"video/mp4": true,
|
|
15632
|
+
"text/x-python": true,
|
|
15633
|
+
"image/heic": true,
|
|
15634
|
+
"application/x-ipynb+json": true,
|
|
15635
|
+
"text/markdown": true,
|
|
15636
|
+
"video/text/timestamp": true,
|
|
15637
|
+
"application/x-javascript": true,
|
|
15638
|
+
"video/videoframe/jpeg2000": true,
|
|
15639
|
+
"text/xml": true,
|
|
15640
|
+
"text/x-python-script": true,
|
|
15641
|
+
"image/heif": true,
|
|
15642
|
+
"application/rtf": true,
|
|
15643
|
+
"video/jpeg2000": true,
|
|
15644
|
+
"application/pdf": true,
|
|
15645
|
+
"text/css": true,
|
|
15646
|
+
"application/json": true,
|
|
15647
|
+
"image/webp": true,
|
|
15648
|
+
"text/csv": true,
|
|
15649
|
+
"text/javascript": true,
|
|
15650
|
+
"text/plain": true,
|
|
15651
|
+
"video/audio/wav": true,
|
|
15652
|
+
"image/png": true,
|
|
15653
|
+
"application/x-python-code": true,
|
|
15654
|
+
"video/audio/s16le": true,
|
|
15655
|
+
"audio/webm;codecs=opus": true,
|
|
15656
|
+
"video/webm": true,
|
|
15657
|
+
"image/jpeg": true,
|
|
15658
|
+
"text/rtf": true,
|
|
15659
|
+
"text/html": true,
|
|
15660
|
+
"application/x-typescript": true,
|
|
15661
|
+
"text/x-typescript": true
|
|
15662
|
+
},
|
|
15663
|
+
modelExperiments: {
|
|
15664
|
+
experiments: {
|
|
15665
|
+
template__system_prompts__identity: {
|
|
15666
|
+
stringValue: "You are Antigravity, a powerful agentic AI coding assistant designed by the Google DeepMind team working on Advanced Agentic Coding.\nYou are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.\nThe USER will send you requests, which you must always prioritize addressing. User requests are enclosed within <USER_REQUEST> tags. Along with each USER request, we will attach additional metadata about their current state, such as what files they have open and where their cursor is.\nThis information may or may not be relevant to the coding task, it is up for you to decide."
|
|
15667
|
+
},
|
|
15668
|
+
template__system_prompts__planning_more_artifacts: {
|
|
15669
|
+
stringValue: "When in planning mode, you will work with three special artifacts.\n\n# Tasks\nPath: {{ArtifactDirectoryPath}}/task.md\n\n**Purpose**: A TODO list to organize your work during execution. Create this artifact after receiving user approval on your implementation plan. Break down complex tasks into component-level items and track progress as a living document.\n\n**Format**:\n```markdown\n- `[ ]` uncompleted tasks\n- `[/]` in progress tasks (custom notation)\n- `[x]` completed tasks\n- Use indented lists for sub-items\n```\n\n**Updating task.md**: Mark items as `[/]` when starting work on them, and `[x]` when completed. Update task.md as you make progress through your checklist.\n\n# Implementation Plan\nPath: {{ArtifactDirectoryPath}}/implementation_plan.md\n\n**Purpose**: A detailed design document to present your technical implementation plan to the user for feedback and approval.\nAfter reading the document, the user should understand the key technical details of your plan, and be able to make an informed decision on whether to approve it.\n\n**Format**: Use the following format, omitting any irrelevant sections.\n```markdown\n# [Goal Description]\n\nProvide a brief description of the problem, any background context, and what the change accomplishes.\n\n## User Review Required\n\nDocument anything that requires user review or feedback, for example, breaking changes or significant design decisions. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Open Questions\n\nAny clarifying or design questions for the user that will impact the implementation plan. Use GitHub alerts (IMPORTANT/WARNING/CAUTION) to highlight critical items.\n\n## Proposed Changes\n\nGroup files by component (e.g., package, feature area, dependency layer) and order logically (dependencies first). Separate components with horizontal rules for visual clarity.\n\n### [Component Name]\n\nSummary of what will change in this component, separated by files. For specific files, Use [NEW] and [DELETE] to demarcate new and deleted files, for example:\n\n#### [MODIFY] [file basename](file:///absolute/path/to/modifiedfile)\n#### [NEW] [file basename](file:///absolute/path/to/newfile)\n#### [DELETE] [file basename](file:///absolute/path/to/deletedfile)\n\n## Verification Plan\n\nSummary of how you will verify that your changes have the desired effects.\n\n### Automated Tests\n- The commands of any automated tests you'll run.\n\n### Manual Verification\n- Asking the user to deploy to staging and testing, verifying UI changes on an iOS app etc.\n```\n\n# Walkthrough\nPath: {{ArtifactDirectoryPath}}/walkthrough.md\n\n**Purpose**: After completing work, summarize what you accomplished. Update an existing walkthrough for related follow-up work rather than creating a new one.\n\n**Document**:\n- Changes made\n- What was tested\n- Validation results\n\nEmbed screenshots and recordings to visually demonstrate UI changes and user flows.\n"
|
|
15670
|
+
},
|
|
15671
|
+
CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
|
|
15672
|
+
stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "100000",\n "max_overhead_ratio": "0.15",\n "moving_window_size": "1",\n "enabled": true,\n "max_output_tokens": "16384",\n "checkpoint_model": "MODEL_PLACEHOLDER_M50",\n "use_last_planner_model": true,\n "is_sync": true,\n "max_user_requests": 10,\n "include_last_user_message": true,\n "include_conversation_log": false,\n "include_running_task_snapshots": true,\n "include_subagent_snapshots": true,\n "include_artifact_snapshots": true,\n "retry_config": {\n "max_retries": 0,\n "initial_sleep_duration_ms": 1000,\n "exponential_multiplier": 2,\n "include_error_feedback": false\n }\n}'
|
|
15673
|
+
}
|
|
15674
|
+
}
|
|
15675
|
+
}
|
|
15676
|
+
}
|
|
15677
|
+
},
|
|
15678
|
+
defaultAgentModelId: "gemini-3.5-flash",
|
|
15679
|
+
agentModelSorts: [
|
|
15680
|
+
{
|
|
15681
|
+
displayName: "Recommended",
|
|
15682
|
+
groups: [
|
|
15683
|
+
{
|
|
15684
|
+
modelIds: [
|
|
15685
|
+
"gemini-3.5-flash",
|
|
15686
|
+
"gemini-3.1-pro",
|
|
15687
|
+
"claude-sonnet-4-6",
|
|
15688
|
+
"claude-opus-4-6-thinking",
|
|
15689
|
+
"gpt-oss-120b-medium"
|
|
15690
|
+
]
|
|
15691
|
+
}
|
|
15692
|
+
]
|
|
15693
|
+
}
|
|
15694
|
+
],
|
|
15695
|
+
commandModelIds: [
|
|
15696
|
+
"gemini-3-flash"
|
|
15697
|
+
],
|
|
15698
|
+
tabModelIds: [
|
|
15699
|
+
"chat_20706",
|
|
15700
|
+
"chat_23310"
|
|
15701
|
+
],
|
|
15702
|
+
imageGenerationModelIds: [
|
|
15703
|
+
"gemini-3.1-flash-image"
|
|
15704
|
+
],
|
|
15705
|
+
mqueryModelIds: [
|
|
15706
|
+
"gemini-3.1-flash-lite"
|
|
15707
|
+
],
|
|
15708
|
+
webSearchModelIds: [
|
|
15709
|
+
"gemini-3.1-flash-lite"
|
|
15710
|
+
],
|
|
15711
|
+
deprecatedModelIds: {
|
|
15712
|
+
"gemini-3.1-pro-high": {
|
|
15713
|
+
newModelId: "gemini-pro-agent",
|
|
15714
|
+
oldModelEnum: "MODEL_PLACEHOLDER_M37",
|
|
15715
|
+
newModelEnum: "MODEL_PLACEHOLDER_M16"
|
|
15716
|
+
}
|
|
15717
|
+
},
|
|
15718
|
+
commitMessageModelIds: [
|
|
15719
|
+
"gemini-3.1-flash-lite"
|
|
15720
|
+
],
|
|
15721
|
+
audioTranscriptionModelIds: [
|
|
15722
|
+
"models/proactive-observer"
|
|
15723
|
+
],
|
|
15724
|
+
experimentIds: [
|
|
15725
|
+
106101246,
|
|
15726
|
+
106168863,
|
|
15727
|
+
105979552,
|
|
15728
|
+
105979574,
|
|
15729
|
+
106015333,
|
|
15730
|
+
105979579,
|
|
15731
|
+
105867471,
|
|
15732
|
+
106123599,
|
|
15733
|
+
106076629,
|
|
15734
|
+
106100625,
|
|
15735
|
+
105930909,
|
|
15736
|
+
106143956,
|
|
15737
|
+
105879567,
|
|
15738
|
+
105856899,
|
|
15739
|
+
106064030,
|
|
15740
|
+
105757908,
|
|
15741
|
+
106240760,
|
|
15742
|
+
106106760,
|
|
15743
|
+
106021688,
|
|
15744
|
+
106014288,
|
|
15745
|
+
105887299,
|
|
15746
|
+
106278607,
|
|
15747
|
+
106212376,
|
|
15748
|
+
106281951,
|
|
15749
|
+
106264532,
|
|
15750
|
+
106044947,
|
|
15751
|
+
106032303,
|
|
15752
|
+
106228452,
|
|
15753
|
+
106121606,
|
|
15754
|
+
105979531,
|
|
15755
|
+
105979553,
|
|
15756
|
+
106015328,
|
|
15757
|
+
105867469,
|
|
15758
|
+
106123597,
|
|
15759
|
+
106100654,
|
|
15760
|
+
106064028,
|
|
15761
|
+
106240748,
|
|
15762
|
+
106038164,
|
|
15763
|
+
106032301,
|
|
15764
|
+
106121604
|
|
15765
|
+
],
|
|
15766
|
+
tieredModelIds: {
|
|
15767
|
+
flashLite: [
|
|
15768
|
+
"gemini-3.1-flash-lite"
|
|
15769
|
+
],
|
|
15770
|
+
flash: [
|
|
15771
|
+
"gemini-3-flash-agent"
|
|
15772
|
+
],
|
|
15773
|
+
pro: [
|
|
15774
|
+
"gemini-3.1-pro-low"
|
|
15775
|
+
]
|
|
15776
|
+
}
|
|
15777
|
+
};
|
|
15778
|
+
|
|
14663
15779
|
// src/sdk/request-helpers/types.ts
|
|
14664
15780
|
var GEMINI_PREVIEW_LINK = "https://goo.gle/enable-preview-features";
|
|
14665
15781
|
var CLOUDCODE_DOMAINS2 = [
|
|
@@ -14920,7 +16036,8 @@ import { randomUUID as randomUUID2 } from "crypto";
|
|
|
14920
16036
|
|
|
14921
16037
|
// src/sdk/request/shared.ts
|
|
14922
16038
|
var REQUEST_MODEL_FALLBACKS = {
|
|
14923
|
-
"gemini-2.5-flash-image": "gemini-2.5-flash"
|
|
16039
|
+
"gemini-2.5-flash-image": "gemini-2.5-flash",
|
|
16040
|
+
"gemini-3.1-pro-high": "gemini-pro-agent"
|
|
14924
16041
|
};
|
|
14925
16042
|
var GENERATIVE_LANGUAGE_HOST = new URL(AGY_GENERATIVE_LANGUAGE_ENDPOINT).host;
|
|
14926
16043
|
var CODE_ASSIST_HOST_SUFFIX = "cloudcode-pa.googleapis.com";
|
|
@@ -15613,6 +16730,17 @@ function prepareAgyRequest(input, init, accessToken, projectId, thinkingConfigDe
|
|
|
15613
16730
|
sessionId
|
|
15614
16731
|
};
|
|
15615
16732
|
}
|
|
16733
|
+
function getModelEnum(modelName) {
|
|
16734
|
+
const models = models_default.models;
|
|
16735
|
+
if (models && models[modelName] && models[modelName].model) {
|
|
16736
|
+
return models[modelName].model;
|
|
16737
|
+
}
|
|
16738
|
+
const deprecated = models_default.deprecatedModelIds;
|
|
16739
|
+
if (deprecated && deprecated[modelName] && deprecated[modelName].oldModelEnum) {
|
|
16740
|
+
return deprecated[modelName].oldModelEnum;
|
|
16741
|
+
}
|
|
16742
|
+
return "MODEL_PLACEHOLDER_M16";
|
|
16743
|
+
}
|
|
15616
16744
|
function transformRequestBody(body, projectId, effectiveModel, requestedModel, thinkingConfigDefaults) {
|
|
15617
16745
|
const fallbackId = randomUUID3();
|
|
15618
16746
|
try {
|
|
@@ -15641,7 +16769,7 @@ function transformRequestBody(body, projectId, effectiveModel, requestedModel, t
|
|
|
15641
16769
|
requestPayloadInside.labels = {
|
|
15642
16770
|
last_execution_id: randomUUID3(),
|
|
15643
16771
|
last_step_index: "0",
|
|
15644
|
-
model_enum:
|
|
16772
|
+
model_enum: getModelEnum(effectiveModel),
|
|
15645
16773
|
trajectory_id: randomUUID3(),
|
|
15646
16774
|
used_claude: "false",
|
|
15647
16775
|
used_claude_conservative: "false"
|
|
@@ -15652,12 +16780,13 @@ function transformRequestBody(body, projectId, effectiveModel, requestedModel, t
|
|
|
15652
16780
|
}
|
|
15653
16781
|
if (requestPayloadInside && Array.isArray(requestPayloadInside.contents)) {
|
|
15654
16782
|
let contents2 = requestPayloadInside.contents;
|
|
16783
|
+
injectMissingToolCallIds(contents2);
|
|
16784
|
+
fixOrphanedFunctionResponses(contents2);
|
|
15655
16785
|
const state = analyzeConversationState(contents2);
|
|
15656
16786
|
if (needsThinkingRecovery(state)) {
|
|
15657
16787
|
contents2 = closeToolLoopForThinking(contents2);
|
|
15658
16788
|
}
|
|
15659
16789
|
contents2 = normalizeContentsSequence(contents2);
|
|
15660
|
-
injectMissingToolCallIds(contents2);
|
|
15661
16790
|
const latestSig = getLatestSignature(sessionId2);
|
|
15662
16791
|
applyLatestSignature(contents2, latestSig);
|
|
15663
16792
|
requestPayloadInside.contents = contents2;
|
|
@@ -15680,12 +16809,13 @@ function transformRequestBody(body, projectId, effectiveModel, requestedModel, t
|
|
|
15680
16809
|
const { userPromptId, sessionId, requestId } = normalizeRequestPayloadIdentifiers(requestPayload);
|
|
15681
16810
|
let contents = requestPayload.contents;
|
|
15682
16811
|
if (Array.isArray(contents)) {
|
|
16812
|
+
injectMissingToolCallIds(contents);
|
|
16813
|
+
fixOrphanedFunctionResponses(contents);
|
|
15683
16814
|
const state = analyzeConversationState(contents);
|
|
15684
16815
|
if (needsThinkingRecovery(state)) {
|
|
15685
16816
|
contents = closeToolLoopForThinking(contents);
|
|
15686
16817
|
}
|
|
15687
16818
|
contents = normalizeContentsSequence(contents);
|
|
15688
|
-
injectMissingToolCallIds(contents);
|
|
15689
16819
|
const latestSig = getLatestSignature(sessionId);
|
|
15690
16820
|
applyLatestSignature(contents, latestSig);
|
|
15691
16821
|
requestPayload.contents = contents;
|
|
@@ -15697,7 +16827,7 @@ function transformRequestBody(body, projectId, effectiveModel, requestedModel, t
|
|
|
15697
16827
|
requestPayload.labels = {
|
|
15698
16828
|
last_execution_id: randomUUID3(),
|
|
15699
16829
|
last_step_index: "0",
|
|
15700
|
-
model_enum:
|
|
16830
|
+
model_enum: getModelEnum(effectiveModel),
|
|
15701
16831
|
trajectory_id: randomUUID3(),
|
|
15702
16832
|
used_claude: "false",
|
|
15703
16833
|
used_claude_conservative: "false"
|
|
@@ -15945,6 +17075,41 @@ function applyLatestSignature(contents, latestSig) {
|
|
|
15945
17075
|
}
|
|
15946
17076
|
}
|
|
15947
17077
|
}
|
|
17078
|
+
function fixOrphanedFunctionResponses(contents) {
|
|
17079
|
+
const validCallIds = /* @__PURE__ */ new Set();
|
|
17080
|
+
for (const content of contents) {
|
|
17081
|
+
if (!content || typeof content !== "object" || !Array.isArray(content.parts)) {
|
|
17082
|
+
continue;
|
|
17083
|
+
}
|
|
17084
|
+
for (const part of content.parts) {
|
|
17085
|
+
if (part && typeof part === "object" && part.functionCall && part.functionCall.id) {
|
|
17086
|
+
validCallIds.add(part.functionCall.id);
|
|
17087
|
+
}
|
|
17088
|
+
}
|
|
17089
|
+
}
|
|
17090
|
+
for (const content of contents) {
|
|
17091
|
+
if (!content || typeof content !== "object" || !Array.isArray(content.parts)) {
|
|
17092
|
+
continue;
|
|
17093
|
+
}
|
|
17094
|
+
for (const part of content.parts) {
|
|
17095
|
+
if (part && typeof part === "object" && part.functionResponse) {
|
|
17096
|
+
const id = part.functionResponse.id;
|
|
17097
|
+
if (!id || !validCallIds.has(id)) {
|
|
17098
|
+
const name = part.functionResponse.name || "unknown_tool";
|
|
17099
|
+
const responseObj = part.functionResponse.response || {};
|
|
17100
|
+
let responseStr = "";
|
|
17101
|
+
try {
|
|
17102
|
+
responseStr = typeof responseObj === "string" ? responseObj : JSON.stringify(responseObj);
|
|
17103
|
+
} catch (e) {
|
|
17104
|
+
responseStr = String(responseObj);
|
|
17105
|
+
}
|
|
17106
|
+
part.text = `[Orphaned Tool Response for ${name}]: ${responseStr}`;
|
|
17107
|
+
delete part.functionResponse;
|
|
17108
|
+
}
|
|
17109
|
+
}
|
|
17110
|
+
}
|
|
17111
|
+
}
|
|
17112
|
+
}
|
|
15948
17113
|
|
|
15949
17114
|
// src/sdk/request/response.ts
|
|
15950
17115
|
async function transformAgyResponse(response, streaming, _ignoredDebugContext, requestedModel, sessionId, chatLogger) {
|
|
@@ -16296,6 +17461,12 @@ var AGY_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the c
|
|
|
16296
17461
|
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
16297
17462
|
Do not call other tools.
|
|
16298
17463
|
`;
|
|
17464
|
+
var AGY_QUOTA_SUMMARY_COMMAND = "agyquotasummary";
|
|
17465
|
+
var AGY_QUOTA_SUMMARY_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota summary (weekly and 5-hour limits by model group) for the current authenticated account.
|
|
17466
|
+
|
|
17467
|
+
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
17468
|
+
Do not call other tools.
|
|
17469
|
+
`;
|
|
16299
17470
|
var latestAgyAuthResolver;
|
|
16300
17471
|
var latestAgyConfiguredProjectId;
|
|
16301
17472
|
var latestAgyUserAgentModel;
|
|
@@ -16354,8 +17525,8 @@ var TIER_MAPPING = {
|
|
|
16354
17525
|
},
|
|
16355
17526
|
"gemini-3.1-pro": {
|
|
16356
17527
|
low: "gemini-3.1-pro-low",
|
|
16357
|
-
medium: "gemini-pro-
|
|
16358
|
-
high: "gemini-pro-
|
|
17528
|
+
medium: "gemini-3.1-pro-high",
|
|
17529
|
+
high: "gemini-3.1-pro-high"
|
|
16359
17530
|
}
|
|
16360
17531
|
};
|
|
16361
17532
|
var buildModelFromSimple = (modelId, simple) => {
|
|
@@ -16542,6 +17713,10 @@ var AgyCLIOAuthPlugin = async ({ client }) => {
|
|
|
16542
17713
|
description: "Show Agy Code Assist quota usage",
|
|
16543
17714
|
template: AGY_QUOTA_COMMAND_TEMPLATE
|
|
16544
17715
|
};
|
|
17716
|
+
config2.command[AGY_QUOTA_SUMMARY_COMMAND] = {
|
|
17717
|
+
description: "Show Agy Code Assist quota summary with weekly and 5-hour limits",
|
|
17718
|
+
template: AGY_QUOTA_SUMMARY_COMMAND_TEMPLATE
|
|
17719
|
+
};
|
|
16545
17720
|
config2.provider = config2.provider || {};
|
|
16546
17721
|
config2.provider[AGY_PROVIDER_ID] = {
|
|
16547
17722
|
npm: "@ai-sdk/google",
|
|
@@ -16558,6 +17733,12 @@ var AgyCLIOAuthPlugin = async ({ client }) => {
|
|
|
16558
17733
|
getAuthResolver: () => latestAgyAuthResolver,
|
|
16559
17734
|
getConfiguredProjectId: () => latestAgyConfiguredProjectId,
|
|
16560
17735
|
getUserAgentModel: () => latestAgyUserAgentModel
|
|
17736
|
+
}),
|
|
17737
|
+
[AGY_QUOTA_SUMMARY_TOOL_NAME]: createAgyQuotaSummaryTool({
|
|
17738
|
+
client,
|
|
17739
|
+
getAuthResolver: () => latestAgyAuthResolver,
|
|
17740
|
+
getConfiguredProjectId: () => latestAgyConfiguredProjectId,
|
|
17741
|
+
getUserAgentModel: () => latestAgyUserAgentModel
|
|
16561
17742
|
})
|
|
16562
17743
|
},
|
|
16563
17744
|
auth: {
|