@anthonyhaussman/opencode-agy-auth 1.1.19-alpha.0 → 1.1.19-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -102,106 +102,10 @@ function updateStaticModelsWithPricing(staticModels) {
102
102
  });
103
103
  }
104
104
 
105
- // src/sdk/credentials.ts
106
- import { execSync } from "child_process";
107
- import { existsSync as existsSync2, readFileSync as readFileSync2, realpathSync } from "fs";
108
- import { homedir } from "os";
109
- import { join as join2 } from "path";
110
- var cachedCredentials = null;
111
- function findAgyBinary() {
112
- if (process.env.AGY_BIN_PATH && existsSync2(process.env.AGY_BIN_PATH)) {
113
- try {
114
- return realpathSync(process.env.AGY_BIN_PATH);
115
- } catch {
116
- return process.env.AGY_BIN_PATH;
117
- }
118
- }
119
- try {
120
- const which = execSync("which agy 2>/dev/null || which antigravity 2>/dev/null", {
121
- encoding: "utf8",
122
- stdio: ["pipe", "pipe", "ignore"]
123
- }).trim();
124
- if (which && existsSync2(which)) {
125
- return realpathSync(which);
126
- }
127
- } catch {
128
- }
129
- const home = homedir();
130
- const candidatePaths = [
131
- join2(home, ".local/share/mise/installs/antigravity-cli/latest/agy"),
132
- join2(home, ".local/share/mise/installs/antigravity-cli/latest/antigravity"),
133
- join2(home, ".local/bin/agy"),
134
- join2(home, ".local/bin/antigravity"),
135
- join2(home, "bin/agy"),
136
- join2(home, "bin/antigravity"),
137
- "/usr/local/bin/agy",
138
- "/usr/local/bin/antigravity",
139
- "/usr/bin/agy",
140
- "/usr/bin/antigravity"
141
- ];
142
- for (const candidate of candidatePaths) {
143
- if (existsSync2(candidate)) {
144
- try {
145
- return realpathSync(candidate);
146
- } catch {
147
- return candidate;
148
- }
149
- }
150
- }
151
- return null;
152
- }
153
- function extractAgyCredentialsFromBinary(binaryPath) {
154
- try {
155
- const buffer = readFileSync2(binaryPath);
156
- const content = buffer.toString("latin1");
157
- const clientIds = [...new Set(content.match(/[0-9]+-[a-z0-9_]+\.apps\.googleusercontent\.com/g) || [])];
158
- const clientSecrets = [...new Set(content.match(/GOCSPX-[A-Za-z0-9_-]{28}/g) || [])];
159
- if (clientIds.length === 0 || clientSecrets.length === 0) {
160
- return null;
161
- }
162
- const preferredClientId = clientIds.find((id) => id.startsWith("1071")) || clientIds[clientIds.length - 1];
163
- const preferredClientSecret = clientSecrets[0];
164
- if (!preferredClientId || !preferredClientSecret) {
165
- return null;
166
- }
167
- return {
168
- clientId: preferredClientId,
169
- clientSecret: preferredClientSecret
170
- };
171
- } catch {
172
- return null;
173
- }
174
- }
175
- function getAgyCredentials() {
176
- const envClientId = process.env.AGY_CLIENT_ID || process.env.GOOGLE_AGY_CLIENT_ID;
177
- const envClientSecret = process.env.AGY_CLIENT_SECRET || process.env.GOOGLE_AGY_CLIENT_SECRET;
178
- if (envClientId && envClientSecret) {
179
- return { clientId: envClientId, clientSecret: envClientSecret };
180
- }
181
- if (cachedCredentials) {
182
- return cachedCredentials;
183
- }
184
- const binaryPath = findAgyBinary();
185
- if (binaryPath) {
186
- const extracted = extractAgyCredentialsFromBinary(binaryPath);
187
- if (extracted) {
188
- cachedCredentials = extracted;
189
- return extracted;
190
- }
191
- }
192
- throw new Error(
193
- 'Antigravity OAuth credentials not found. Ensure the "agy" CLI is installed and in PATH, or set the AGY_CLIENT_ID and AGY_CLIENT_SECRET environment variables.'
194
- );
195
- }
196
- function getAgyClientId() {
197
- return getAgyCredentials().clientId;
198
- }
199
- function getAgyClientSecret() {
200
- return getAgyCredentials().clientSecret;
201
- }
202
-
203
105
  // src/constants.ts
204
106
  var AGY_PROVIDER_ID = "google-agy";
107
+ var AGY_CLIENT_ID = "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com";
108
+ var AGY_CLIENT_SECRET = "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";
205
109
  var AGY_SCOPES = [
206
110
  "openid",
207
111
  "https://www.googleapis.com/auth/cloud-platform",
@@ -290,7 +194,7 @@ async function authorizeAgy() {
290
194
  const pkce = await generatePKCE();
291
195
  const state = randomBytes(32).toString("hex");
292
196
  const url2 = new URL("https://accounts.google.com/o/oauth2/v2/auth");
293
- url2.searchParams.set("client_id", getAgyClientId());
197
+ url2.searchParams.set("client_id", AGY_CLIENT_ID);
294
198
  url2.searchParams.set("response_type", "code");
295
199
  url2.searchParams.set("redirect_uri", AGY_REDIRECT_URI);
296
200
  url2.searchParams.set("scope", AGY_SCOPES.join(" "));
@@ -323,8 +227,8 @@ async function exchangeAgyWithVerifierInternal(code, verifier) {
323
227
  "Content-Type": "application/x-www-form-urlencoded"
324
228
  },
325
229
  body: new URLSearchParams({
326
- client_id: getAgyClientId(),
327
- client_secret: getAgyClientSecret(),
230
+ client_id: AGY_CLIENT_ID,
231
+ client_secret: AGY_CLIENT_SECRET,
328
232
  code,
329
233
  grant_type: "authorization_code",
330
234
  redirect_uri: AGY_REDIRECT_URI,
@@ -816,29 +720,29 @@ function clampDelay(delayMs) {
816
720
  }
817
721
 
818
722
  // src/sdk/retry/cooldown-store.ts
819
- import { existsSync as existsSync3, mkdirSync, readFileSync as readFileSync3, writeFileSync as writeFileSync2, renameSync, unlinkSync } from "fs";
820
- import { join as join3, dirname } from "path";
821
- import { homedir as homedir2, tmpdir as tmpdir2 } from "os";
723
+ import { existsSync as existsSync2, mkdirSync, readFileSync as readFileSync2, writeFileSync as writeFileSync2, renameSync, unlinkSync } from "fs";
724
+ import { join as join2, dirname } from "path";
725
+ import { homedir, tmpdir as tmpdir2 } from "os";
822
726
  var WRITE_THROTTLE_MS = 5e3;
823
727
  function getConfigDir() {
824
728
  const platform2 = process.platform;
825
729
  if (platform2 === "win32") {
826
- return join3(process.env.APPDATA || join3(homedir2(), "AppData", "Roaming"), "opencode");
730
+ return join2(process.env.APPDATA || join2(homedir(), "AppData", "Roaming"), "opencode");
827
731
  }
828
- const xdgConfig = process.env.XDG_CONFIG_HOME || join3(homedir2(), ".config");
829
- return join3(xdgConfig, "opencode");
732
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join2(homedir(), ".config");
733
+ return join2(xdgConfig, "opencode");
830
734
  }
831
735
  function getCooldownFilePath() {
832
- return join3(getConfigDir(), "antigravity-retry-cooldowns.json");
736
+ return join2(getConfigDir(), "antigravity-retry-cooldowns.json");
833
737
  }
834
738
  function loadCooldowns() {
835
739
  const result = /* @__PURE__ */ new Map();
836
740
  try {
837
741
  const filePath = getCooldownFilePath();
838
- if (!existsSync3(filePath)) {
742
+ if (!existsSync2(filePath)) {
839
743
  return result;
840
744
  }
841
- const content = readFileSync3(filePath, "utf-8");
745
+ const content = readFileSync2(filePath, "utf-8");
842
746
  const data = JSON.parse(content);
843
747
  if (data.version !== "1.0") {
844
748
  return result;
@@ -857,7 +761,7 @@ function saveCooldowns(entries) {
857
761
  try {
858
762
  const filePath = getCooldownFilePath();
859
763
  const dir = dirname(filePath);
860
- if (!existsSync3(dir)) {
764
+ if (!existsSync2(dir)) {
861
765
  mkdirSync(dir, { recursive: true });
862
766
  }
863
767
  const now = Date.now();
@@ -872,12 +776,12 @@ function saveCooldowns(entries) {
872
776
  entries: serializable,
873
777
  updatedAt: now
874
778
  };
875
- const tmpPath = join3(tmpdir2(), `antigravity-cooldowns-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);
779
+ const tmpPath = join2(tmpdir2(), `antigravity-cooldowns-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);
876
780
  writeFileSync2(tmpPath, JSON.stringify(data), "utf-8");
877
781
  try {
878
782
  renameSync(tmpPath, filePath);
879
783
  } catch {
880
- writeFileSync2(filePath, readFileSync3(tmpPath));
784
+ writeFileSync2(filePath, readFileSync2(tmpPath));
881
785
  try {
882
786
  unlinkSync(tmpPath);
883
787
  } catch {
@@ -1743,27 +1647,27 @@ function openBrowserUrl(url2) {
1743
1647
  import { createHash } from "crypto";
1744
1648
 
1745
1649
  // src/sdk/cache/signature-cache.ts
1746
- import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync4, writeFileSync as writeFileSync3, renameSync as renameSync2, unlinkSync as unlinkSync2, appendFileSync } from "fs";
1747
- import { join as join4, dirname as dirname2 } from "path";
1748
- import { homedir as homedir3, tmpdir as tmpdir3 } from "os";
1650
+ import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as readFileSync3, writeFileSync as writeFileSync3, renameSync as renameSync2, unlinkSync as unlinkSync2, appendFileSync } from "fs";
1651
+ import { join as join3, dirname as dirname2 } from "path";
1652
+ import { homedir as homedir2, tmpdir as tmpdir3 } from "os";
1749
1653
  function getConfigDir2() {
1750
1654
  const platform2 = process.platform;
1751
1655
  if (platform2 === "win32") {
1752
- return join4(process.env.APPDATA || join4(homedir3(), "AppData", "Roaming"), "opencode");
1656
+ return join3(process.env.APPDATA || join3(homedir2(), "AppData", "Roaming"), "opencode");
1753
1657
  }
1754
- const xdgConfig = process.env.XDG_CONFIG_HOME || join4(homedir3(), ".config");
1755
- return join4(xdgConfig, "opencode");
1658
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join3(homedir2(), ".config");
1659
+ return join3(xdgConfig, "opencode");
1756
1660
  }
1757
1661
  function getCacheFilePath() {
1758
- return join4(getConfigDir2(), "antigravity-signature-cache.json");
1662
+ return join3(getConfigDir2(), "antigravity-signature-cache.json");
1759
1663
  }
1760
1664
  function ensureGitignoreSync(configDir) {
1761
- const gitignorePath = join4(configDir, ".gitignore");
1665
+ const gitignorePath = join3(configDir, ".gitignore");
1762
1666
  const entries = [".gitignore", "antigravity-signature-cache.json"];
1763
1667
  try {
1764
1668
  let content = "";
1765
- if (existsSync4(gitignorePath)) {
1766
- content = readFileSync4(gitignorePath, "utf-8");
1669
+ if (existsSync3(gitignorePath)) {
1670
+ content = readFileSync3(gitignorePath, "utf-8");
1767
1671
  }
1768
1672
  const existingLines = content.split("\n").map((line) => line.trim());
1769
1673
  const missing = entries.filter((e) => !existingLines.includes(e));
@@ -1945,10 +1849,10 @@ var SignatureCache = class {
1945
1849
  */
1946
1850
  loadFromDisk() {
1947
1851
  try {
1948
- if (!existsSync4(this.cacheFilePath)) {
1852
+ if (!existsSync3(this.cacheFilePath)) {
1949
1853
  return;
1950
1854
  }
1951
- const content = readFileSync4(this.cacheFilePath, "utf-8");
1855
+ const content = readFileSync3(this.cacheFilePath, "utf-8");
1952
1856
  const data = JSON.parse(content);
1953
1857
  if (data.version !== "1.0") {
1954
1858
  return;
@@ -1976,15 +1880,15 @@ var SignatureCache = class {
1976
1880
  saveToDisk() {
1977
1881
  try {
1978
1882
  const dir = dirname2(this.cacheFilePath);
1979
- if (!existsSync4(dir)) {
1883
+ if (!existsSync3(dir)) {
1980
1884
  mkdirSync2(dir, { recursive: true });
1981
1885
  }
1982
1886
  ensureGitignoreSync(dir);
1983
1887
  const now = Date.now();
1984
1888
  let existingEntries = {};
1985
- if (existsSync4(this.cacheFilePath)) {
1889
+ if (existsSync3(this.cacheFilePath)) {
1986
1890
  try {
1987
- const content = readFileSync4(this.cacheFilePath, "utf-8");
1891
+ const content = readFileSync3(this.cacheFilePath, "utf-8");
1988
1892
  const data = JSON.parse(content);
1989
1893
  existingEntries = data.entries || {};
1990
1894
  } catch {
@@ -2020,12 +1924,12 @@ var SignatureCache = class {
2020
1924
  last_write: now
2021
1925
  }
2022
1926
  };
2023
- const tmpPath = join4(tmpdir3(), `antigravity-cache-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);
1927
+ const tmpPath = join3(tmpdir3(), `antigravity-cache-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);
2024
1928
  writeFileSync3(tmpPath, JSON.stringify(cacheData, null, 2), "utf-8");
2025
1929
  try {
2026
1930
  renameSync2(tmpPath, this.cacheFilePath);
2027
1931
  } catch {
2028
- writeFileSync3(this.cacheFilePath, readFileSync4(tmpPath));
1932
+ writeFileSync3(this.cacheFilePath, readFileSync3(tmpPath));
2029
1933
  try {
2030
1934
  unlinkSync2(tmpPath);
2031
1935
  } catch {
@@ -2179,9 +2083,9 @@ function getLatestSignature(sessionId) {
2179
2083
  }
2180
2084
 
2181
2085
  // src/sdk/request/turn-state-tracker.ts
2182
- import { existsSync as existsSync5, mkdirSync as mkdirSync3, readFileSync as readFileSync5, writeFileSync as writeFileSync4, renameSync as renameSync3, unlinkSync as unlinkSync3 } from "fs";
2183
- import { join as join5, dirname as dirname3 } from "path";
2184
- import { homedir as homedir4, tmpdir as tmpdir4 } from "os";
2086
+ import { existsSync as existsSync4, mkdirSync as mkdirSync3, readFileSync as readFileSync4, writeFileSync as writeFileSync4, renameSync as renameSync3, unlinkSync as unlinkSync3 } from "fs";
2087
+ import { join as join4, dirname as dirname3 } from "path";
2088
+ import { homedir as homedir3, tmpdir as tmpdir4 } from "os";
2185
2089
 
2186
2090
  // src/sdk/request/thinking.ts
2187
2091
  import { createHash as createHash2 } from "crypto";
@@ -2604,22 +2508,22 @@ var WRITE_THROTTLE_MS2 = 5e3;
2604
2508
  function getConfigDir3() {
2605
2509
  const platform2 = process.platform;
2606
2510
  if (platform2 === "win32") {
2607
- return join5(process.env.APPDATA || join5(homedir4(), "AppData", "Roaming"), "opencode");
2511
+ return join4(process.env.APPDATA || join4(homedir3(), "AppData", "Roaming"), "opencode");
2608
2512
  }
2609
- const xdgConfig = process.env.XDG_CONFIG_HOME || join5(homedir4(), ".config");
2610
- return join5(xdgConfig, "opencode");
2513
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join4(homedir3(), ".config");
2514
+ return join4(xdgConfig, "opencode");
2611
2515
  }
2612
2516
  function getTurnStateFilePath() {
2613
- return join5(getConfigDir3(), "antigravity-turn-states.json");
2517
+ return join4(getConfigDir3(), "antigravity-turn-states.json");
2614
2518
  }
2615
2519
  function loadTurnStatesFromDisk() {
2616
2520
  const result = /* @__PURE__ */ new Map();
2617
2521
  try {
2618
2522
  const filePath = getTurnStateFilePath();
2619
- if (!existsSync5(filePath)) {
2523
+ if (!existsSync4(filePath)) {
2620
2524
  return result;
2621
2525
  }
2622
- const content = readFileSync5(filePath, "utf-8");
2526
+ const content = readFileSync4(filePath, "utf-8");
2623
2527
  const data = JSON.parse(content);
2624
2528
  if (data.version !== "1.0") {
2625
2529
  return result;
@@ -2639,7 +2543,7 @@ function saveTurnStatesToDisk(entries) {
2639
2543
  try {
2640
2544
  const filePath = getTurnStateFilePath();
2641
2545
  const dir = dirname3(filePath);
2642
- if (!existsSync5(dir)) {
2546
+ if (!existsSync4(dir)) {
2643
2547
  mkdirSync3(dir, { recursive: true });
2644
2548
  }
2645
2549
  const now = Date.now();
@@ -2655,12 +2559,12 @@ function saveTurnStatesToDisk(entries) {
2655
2559
  entries: serializable,
2656
2560
  updatedAt: now
2657
2561
  };
2658
- const tmpPath = join5(tmpdir4(), `antigravity-turn-states-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);
2562
+ const tmpPath = join4(tmpdir4(), `antigravity-turn-states-${Date.now()}-${Math.random().toString(36).slice(2)}.tmp`);
2659
2563
  writeFileSync4(tmpPath, JSON.stringify(data), "utf-8");
2660
2564
  try {
2661
2565
  renameSync3(tmpPath, filePath);
2662
2566
  } catch {
2663
- writeFileSync4(filePath, readFileSync5(tmpPath));
2567
+ writeFileSync4(filePath, readFileSync4(tmpPath));
2664
2568
  try {
2665
2569
  unlinkSync3(tmpPath);
2666
2570
  } catch {
@@ -15317,8 +15221,8 @@ async function refreshAccessTokenInternal(auth, client, parts) {
15317
15221
  }
15318
15222
  async function fetchTokenRefresh(refreshToken) {
15319
15223
  const tokenUrl = "https://oauth2.googleapis.com/token";
15320
- const clientId = getAgyClientId();
15321
- const clientSecret = getAgyClientSecret();
15224
+ const clientId = AGY_CLIENT_ID;
15225
+ const clientSecret = AGY_CLIENT_SECRET;
15322
15226
  const init = {
15323
15227
  method: "POST",
15324
15228
  headers: {
@@ -16096,145 +16000,180 @@ import { randomUUID as randomUUID3 } from "crypto";
16096
16000
 
16097
16001
  // models.json
16098
16002
  var models_default = {
16003
+ agentModelSorts: [
16004
+ {
16005
+ displayName: "Recommended",
16006
+ groups: [
16007
+ {
16008
+ modelIds: [
16009
+ "gemini-3.7-flash-high",
16010
+ "gemini-3.7-flash-medium",
16011
+ "gemini-3.7-flash-low",
16012
+ "gemini-3.6-flash-high",
16013
+ "gemini-3.6-flash-medium",
16014
+ "gemini-3.6-flash-low",
16015
+ "gemini-3-flash-agent",
16016
+ "gemini-3.5-flash-low",
16017
+ "gemini-3.5-flash-extra-low",
16018
+ "gemini-pro-agent",
16019
+ "gemini-3.1-pro-low",
16020
+ "claude-sonnet-4-6",
16021
+ "claude-opus-4-6-thinking",
16022
+ "gpt-oss-120b-medium"
16023
+ ]
16024
+ }
16025
+ ]
16026
+ }
16027
+ ],
16028
+ audioTranscriptionModelIds: [
16029
+ "models/proactive-observer-v10"
16030
+ ],
16031
+ commandModelIds: [
16032
+ "gemini-3-flash"
16033
+ ],
16034
+ commitMessageModelIds: [
16035
+ "gemini-3.1-flash-lite"
16036
+ ],
16037
+ defaultAgentModelId: "gemini-3.7-flash-high",
16038
+ deprecatedModelIds: {
16039
+ "gemini-3.1-pro-high": {
16040
+ newModelEnum: "MODEL_PLACEHOLDER_M16",
16041
+ newModelId: "gemini-pro-agent",
16042
+ oldModelEnum: "MODEL_PLACEHOLDER_M37"
16043
+ }
16044
+ },
16045
+ experimentIds: [
16046
+ 106140402,
16047
+ 105979552,
16048
+ 105979574,
16049
+ 106015333,
16050
+ 106568772,
16051
+ 105867471,
16052
+ 106548982,
16053
+ 106123599,
16054
+ 106076629,
16055
+ 106121401,
16056
+ 106100625,
16057
+ 106143956,
16058
+ 105879567,
16059
+ 105856899,
16060
+ 106312323,
16061
+ 106064030,
16062
+ 106567313,
16063
+ 106396310,
16064
+ 106470335,
16065
+ 105757908,
16066
+ 106106760,
16067
+ 106021688,
16068
+ 105887299,
16069
+ 106428370,
16070
+ 106283618,
16071
+ 106278607,
16072
+ 106538964,
16073
+ 106512082,
16074
+ 106380926,
16075
+ 106281951,
16076
+ 106264532,
16077
+ 106044947,
16078
+ 106032303,
16079
+ 106228452,
16080
+ 106121607,
16081
+ 105979531,
16082
+ 105979553,
16083
+ 106015328,
16084
+ 106568390,
16085
+ 105867469,
16086
+ 106123597,
16087
+ 106121399,
16088
+ 106100654,
16089
+ 106064028,
16090
+ 106567309,
16091
+ 106396304,
16092
+ 106470331,
16093
+ 105906495,
16094
+ 106283614,
16095
+ 106038164,
16096
+ 106032301,
16097
+ 106121604
16098
+ ],
16099
+ imageGenerationModelIds: [
16100
+ "gemini-3.1-flash-image"
16101
+ ],
16099
16102
  models: {
16100
- tab_flash_lite_preview: {
16103
+ chat_20706: {
16104
+ addCursorToFindReplaceTarget: true,
16105
+ apiProvider: "API_PROVIDER_INTERNAL",
16106
+ isInternal: true,
16101
16107
  maxTokens: 16384,
16102
- maxOutputTokens: 4096,
16108
+ model: "MODEL_CHAT_20706",
16109
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16110
+ promptTemplaterType: "PROMPT_TEMPLATER_TYPE_CHATML",
16103
16111
  quotaInfo: {
16104
16112
  remainingFraction: 1
16105
16113
  },
16106
- model: "MODEL_PLACEHOLDER_M19",
16107
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16108
- modelProvider: "MODEL_PROVIDER_GOOGLE",
16114
+ requiresLeadInGeneration: true,
16109
16115
  supportsCumulativeContext: true,
16110
16116
  supportsEstimateTokenCounter: true,
16111
- toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
16112
- requiresLeadInGeneration: true
16117
+ tabJumpPrintLineRange: true,
16118
+ toolFormatterType: "TOOL_FORMATTER_TYPE_XML"
16113
16119
  },
16114
- "gemini-3.1-flash-lite": {
16115
- displayName: "Gemini 3.1 Flash Lite",
16116
- maxTokens: 1048576,
16117
- maxOutputTokens: 65535,
16120
+ chat_23310: {
16121
+ apiProvider: "API_PROVIDER_INTERNAL",
16122
+ isInternal: true,
16123
+ maxTokens: 32768,
16124
+ model: "MODEL_CHAT_23310",
16125
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16126
+ promptTemplaterType: "PROMPT_TEMPLATER_TYPE_CHATML",
16118
16127
  quotaInfo: {
16119
- remainingFraction: 0.9783466,
16120
- resetTime: "2026-08-22T17:36:20Z"
16128
+ remainingFraction: 1
16121
16129
  },
16122
- model: "MODEL_PLACEHOLDER_M50",
16123
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16124
- modelProvider: "MODEL_PROVIDER_GOOGLE",
16130
+ requiresLeadInGeneration: true,
16131
+ supportsCumulativeContext: true,
16132
+ supportsEstimateTokenCounter: true,
16133
+ toolFormatterType: "TOOL_FORMATTER_TYPE_XML"
16134
+ },
16135
+ "claude-opus-4-6-thinking": {
16136
+ apiProvider: "API_PROVIDER_ANTHROPIC_VERTEX",
16137
+ displayName: "Claude Opus 4.6 (Thinking)",
16138
+ maxOutputTokens: 64e3,
16139
+ maxTokens: 25e4,
16140
+ model: "MODEL_PLACEHOLDER_M26",
16125
16141
  modelExperiments: {
16126
16142
  experiments: {
16127
16143
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16128
- 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 "session_summary_prompt_override": ""\n}'
16144
+ 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 "session_summary_prompt_override": ""\n}'
16145
+ },
16146
+ template__system_prompts__planning_mode_artifacts: {
16147
+ 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"
16129
16148
  }
16130
16149
  }
16131
- }
16132
- },
16133
- "gemini-3.1-pro-low": {
16134
- displayName: "Gemini 3.1 Pro (Low)",
16135
- supportsImages: true,
16136
- supportsThinking: true,
16137
- thinkingBudget: 1001,
16138
- minThinkingBudget: 128,
16139
- recommended: true,
16140
- maxTokens: 1048576,
16141
- maxOutputTokens: 65535,
16150
+ },
16151
+ modelProvider: "MODEL_PROVIDER_ANTHROPIC",
16142
16152
  quotaInfo: {
16143
- remainingFraction: 0.9783466,
16144
- resetTime: "2026-08-22T17:36:20Z"
16153
+ remainingFraction: 1,
16154
+ resetTime: "2026-08-23T17:29:11Z"
16145
16155
  },
16146
- model: "MODEL_PLACEHOLDER_M36",
16147
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16148
- modelProvider: "MODEL_PROVIDER_GOOGLE",
16149
- supportsVideo: true,
16156
+ recommended: true,
16150
16157
  supportedMimeTypes: {
16151
- "text/plain": true,
16152
- "image/jpeg": true,
16153
- "text/x-python-script": true,
16154
- "audio/mpeg": true,
16155
- "image/webp": true,
16156
- "audio/wave": true,
16157
- "video/webm": true,
16158
- "text/x-python": true,
16159
- "application/x-python-code": true,
16160
- "audio/mp4": true,
16161
16158
  "image/heic": true,
16162
- "text/html": true,
16163
- "text/markdown": true,
16164
- "text/xml": true,
16165
- "text/javascript": true,
16166
- "audio/webm;codecs=opus": true,
16167
- "application/json": true,
16168
- "application/x-javascript": true,
16169
- "audio/wav": true,
16170
16159
  "image/heif": true,
16171
- "audio/webm": true,
16172
- "application/pdf": true,
16173
- "video/mp4": true,
16174
- "video/videoframe/jpeg2000": true,
16175
- "text/csv": true,
16160
+ "image/jpeg": true,
16176
16161
  "image/png": true,
16177
- "video/text/timestamp": true,
16178
- "audio/vnd.wave": true,
16162
+ "image/webp": true,
16179
16163
  "video/jpeg2000": true,
16180
- "application/x-ipynb+json": true,
16181
- "video/audio/s16le": true,
16182
- "audio/m4a": true,
16183
- "audio/mp3": true,
16184
- "text/rtf": true,
16185
- "audio/flac": true,
16186
- "video/audio/wav": true,
16187
- "application/rtf": true,
16188
- "application/x-typescript": true,
16189
- "text/css": true,
16190
- "text/x-typescript": true,
16191
- "audio/opus": true,
16192
- "audio/aac": true,
16193
- "audio/l16": true,
16194
- "audio/ogg": true,
16195
- "audio/x-wav": true
16164
+ "video/videoframe/jpeg2000": true
16196
16165
  },
16197
- modelExperiments: {
16198
- experiments: {
16199
- template__system_prompts__communication_style: {
16200
- 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: ...'."
16201
- },
16202
- template__system_prompts__planning_mode_artifacts: {
16203
- 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"
16204
- },
16205
- CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16206
- 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 "session_summary_prompt_override": ""\n}'
16207
- },
16208
- "cascade-include-ephemeral-message": {
16209
- stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16210
- }
16211
- }
16212
- }
16213
- },
16214
- "claude-opus-4-6-thinking": {
16215
- displayName: "Claude Opus 4.6 (Thinking)",
16216
16166
  supportsImages: true,
16217
16167
  supportsThinking: true,
16218
16168
  thinkingBudget: 1024,
16219
- recommended: true,
16220
- maxTokens: 25e4,
16221
- maxOutputTokens: 64e3,
16222
- quotaInfo: {
16223
- remainingFraction: 1,
16224
- resetTime: "2026-08-22T17:39:05Z"
16225
- },
16226
- model: "MODEL_PLACEHOLDER_M26",
16169
+ vertexModelId: "claude-opus-4-6@default"
16170
+ },
16171
+ "claude-sonnet-4-6": {
16227
16172
  apiProvider: "API_PROVIDER_ANTHROPIC_VERTEX",
16228
- modelProvider: "MODEL_PROVIDER_ANTHROPIC",
16229
- supportedMimeTypes: {
16230
- "image/jpeg": true,
16231
- "image/png": true,
16232
- "image/webp": true,
16233
- "video/jpeg2000": true,
16234
- "video/videoframe/jpeg2000": true,
16235
- "image/heic": true,
16236
- "image/heif": true
16237
- },
16173
+ displayName: "Claude Sonnet 4.6 (Thinking)",
16174
+ maxOutputTokens: 64e3,
16175
+ maxTokens: 25e4,
16176
+ model: "MODEL_PLACEHOLDER_M35",
16238
16177
  modelExperiments: {
16239
16178
  experiments: {
16240
16179
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
@@ -16245,562 +16184,583 @@ var models_default = {
16245
16184
  }
16246
16185
  }
16247
16186
  },
16248
- vertexModelId: "claude-opus-4-6@default"
16249
- },
16250
- chat_20706: {
16251
- maxTokens: 16384,
16252
- quotaInfo: {
16253
- remainingFraction: 1
16254
- },
16255
- model: "MODEL_CHAT_20706",
16256
- apiProvider: "API_PROVIDER_INTERNAL",
16257
- modelProvider: "MODEL_PROVIDER_GOOGLE",
16258
- supportsCumulativeContext: true,
16259
- tabJumpPrintLineRange: true,
16260
- supportsEstimateTokenCounter: true,
16261
- isInternal: true,
16262
- addCursorToFindReplaceTarget: true,
16263
- promptTemplaterType: "PROMPT_TEMPLATER_TYPE_CHATML",
16264
- toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
16265
- requiresLeadInGeneration: true
16266
- },
16267
- "claude-sonnet-4-6": {
16268
- displayName: "Claude Sonnet 4.6 (Thinking)",
16269
- supportsImages: true,
16270
- supportsThinking: true,
16271
- thinkingBudget: 1024,
16272
- recommended: true,
16273
- maxTokens: 25e4,
16274
- maxOutputTokens: 64e3,
16187
+ modelProvider: "MODEL_PROVIDER_ANTHROPIC",
16275
16188
  quotaInfo: {
16276
16189
  remainingFraction: 1,
16277
- resetTime: "2026-08-22T17:39:05Z"
16190
+ resetTime: "2026-08-23T17:29:11Z"
16278
16191
  },
16279
- model: "MODEL_PLACEHOLDER_M35",
16280
- apiProvider: "API_PROVIDER_ANTHROPIC_VERTEX",
16281
- modelProvider: "MODEL_PROVIDER_ANTHROPIC",
16192
+ recommended: true,
16282
16193
  supportedMimeTypes: {
16283
- "video/jpeg2000": true,
16284
- "video/videoframe/jpeg2000": true,
16285
16194
  "image/heic": true,
16286
16195
  "image/heif": true,
16287
16196
  "image/jpeg": true,
16288
16197
  "image/png": true,
16289
- "image/webp": true
16198
+ "image/webp": true,
16199
+ "video/jpeg2000": true,
16200
+ "video/videoframe/jpeg2000": true
16290
16201
  },
16202
+ supportsImages: true,
16203
+ supportsThinking: true,
16204
+ thinkingBudget: 1024,
16205
+ vertexModelId: "claude-sonnet-4-6@default"
16206
+ },
16207
+ "gemini-2.5-flash": {
16208
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16209
+ displayName: "Gemini 3.1 Flash Lite",
16210
+ maxOutputTokens: 65535,
16211
+ maxTokens: 1048576,
16212
+ model: "MODEL_GOOGLE_GEMINI_2_5_FLASH",
16291
16213
  modelExperiments: {
16292
16214
  experiments: {
16293
16215
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16294
- 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 "session_summary_prompt_override": ""\n}'
16295
- },
16296
- template__system_prompts__planning_mode_artifacts: {
16297
- 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"
16216
+ 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 "session_summary_prompt_override": ""\n}'
16298
16217
  }
16299
16218
  }
16300
16219
  },
16301
- vertexModelId: "claude-sonnet-4-6@default"
16220
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16221
+ quotaInfo: {
16222
+ remainingFraction: 0.9765516,
16223
+ resetTime: "2026-08-23T17:21:50Z"
16224
+ }
16302
16225
  },
16303
- "gemini-pro-agent": {
16304
- displayName: "Gemini 3.1 Pro (High)",
16305
- supportsImages: true,
16306
- supportsThinking: true,
16307
- thinkingBudget: 10001,
16308
- minThinkingBudget: 128,
16309
- recommended: true,
16310
- maxTokens: 1048576,
16226
+ "gemini-2.5-flash-lite": {
16227
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16228
+ displayName: "Gemini 3.1 Flash Lite",
16311
16229
  maxOutputTokens: 65535,
16230
+ maxTokens: 1048576,
16231
+ model: "MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE",
16232
+ modelExperiments: {
16233
+ experiments: {
16234
+ CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16235
+ 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 "session_summary_prompt_override": ""\n}'
16236
+ }
16237
+ }
16238
+ },
16239
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16312
16240
  quotaInfo: {
16313
- remainingFraction: 0.9783466,
16314
- resetTime: "2026-08-22T17:36:20Z"
16241
+ remainingFraction: 0.9765516,
16242
+ resetTime: "2026-08-23T17:21:50Z"
16243
+ }
16244
+ },
16245
+ "gemini-2.5-flash-thinking": {
16246
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16247
+ displayName: "Gemini 3.1 Flash Lite",
16248
+ maxOutputTokens: 65535,
16249
+ maxTokens: 1048576,
16250
+ model: "MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING",
16251
+ modelExperiments: {
16252
+ experiments: {
16253
+ CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16254
+ 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 "session_summary_prompt_override": ""\n}'
16255
+ }
16256
+ }
16315
16257
  },
16316
- model: "MODEL_PLACEHOLDER_M16",
16258
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16259
+ quotaInfo: {
16260
+ remainingFraction: 0.9765516,
16261
+ resetTime: "2026-08-23T17:21:50Z"
16262
+ }
16263
+ },
16264
+ "gemini-2.5-pro": {
16317
16265
  apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16266
+ displayName: "Gemini 2.5 Pro",
16267
+ maxOutputTokens: 65535,
16268
+ maxTokens: 1048576,
16269
+ minThinkingBudget: 128,
16270
+ model: "MODEL_GOOGLE_GEMINI_2_5_PRO",
16271
+ modelExperiments: {
16272
+ experiments: {
16273
+ CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16274
+ 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 "session_summary_prompt_override": ""\n}'
16275
+ }
16276
+ }
16277
+ },
16318
16278
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16319
- supportsVideo: true,
16279
+ quotaInfo: {
16280
+ remainingFraction: 0.9765516,
16281
+ resetTime: "2026-08-23T17:21:50Z"
16282
+ },
16283
+ recommended: true,
16284
+ requiresImageOutputOutsideFunctionResponses: true,
16320
16285
  supportedMimeTypes: {
16321
- "audio/vnd.wave": true,
16322
- "text/x-typescript": true,
16323
- "audio/x-wav": true,
16324
- "audio/mp4": true,
16325
- "application/x-ipynb+json": true,
16326
- "text/markdown": true,
16327
- "application/pdf": true,
16328
- "video/jpeg2000": true,
16329
- "audio/opus": true,
16330
- "image/jpeg": true,
16331
- "text/javascript": true,
16332
- "audio/webm": true,
16333
- "audio/aac": true,
16334
- "audio/l16": true,
16335
- "video/audio/s16le": true,
16336
- "image/webp": true,
16337
16286
  "application/json": true,
16287
+ "application/pdf": true,
16338
16288
  "application/rtf": true,
16339
- "image/png": true,
16340
- "text/rtf": true,
16341
- "image/heif": true,
16342
- "video/audio/wav": true,
16343
- "audio/webm;codecs=opus": true,
16344
- "text/x-python-script": true,
16345
- "audio/mp3": true,
16346
- "text/plain": true,
16347
- "audio/m4a": true,
16289
+ "application/x-ipynb+json": true,
16290
+ "application/x-javascript": true,
16348
16291
  "application/x-python-code": true,
16292
+ "application/x-typescript": true,
16293
+ "audio/aac": true,
16349
16294
  "audio/flac": true,
16295
+ "audio/l16": true,
16296
+ "audio/m4a": true,
16297
+ "audio/mp3": true,
16298
+ "audio/mp4": true,
16299
+ "audio/mpeg": true,
16350
16300
  "audio/ogg": true,
16351
- "text/xml": true,
16352
- "video/text/timestamp": true,
16353
- "text/html": true,
16354
- "image/heic": true,
16301
+ "audio/opus": true,
16302
+ "audio/vnd.wave": true,
16355
16303
  "audio/wav": true,
16356
- "video/webm": true,
16357
- "text/css": true,
16358
16304
  "audio/wave": true,
16305
+ "audio/webm": true,
16306
+ "audio/webm;codecs=opus": true,
16307
+ "audio/x-wav": true,
16308
+ "image/heic": true,
16309
+ "image/heif": true,
16310
+ "image/jpeg": true,
16311
+ "image/png": true,
16312
+ "image/webp": true,
16313
+ "text/css": true,
16314
+ "text/csv": true,
16315
+ "text/html": true,
16316
+ "text/javascript": true,
16317
+ "text/markdown": true,
16318
+ "text/plain": true,
16319
+ "text/rtf": true,
16320
+ "text/x-python": true,
16321
+ "text/x-python-script": true,
16322
+ "text/x-typescript": true,
16323
+ "text/xml": true,
16324
+ "video/audio/s16le": true,
16325
+ "video/audio/wav": true,
16326
+ "video/jpeg2000": true,
16359
16327
  "video/mp4": true,
16328
+ "video/text/timestamp": true,
16360
16329
  "video/videoframe/jpeg2000": true,
16361
- "application/x-javascript": true,
16362
- "audio/mpeg": true,
16363
- "text/x-python": true,
16364
- "text/csv": true,
16365
- "application/x-typescript": true
16330
+ "video/webm": true
16366
16331
  },
16332
+ supportsImages: true,
16333
+ supportsThinking: true,
16334
+ thinkingBudget: 1024
16335
+ },
16336
+ "gemini-3-flash": {
16337
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16338
+ displayName: "Gemini 3 Flash",
16339
+ maxOutputTokens: 65536,
16340
+ maxTokens: 1048576,
16341
+ minThinkingBudget: 32,
16342
+ model: "MODEL_PLACEHOLDER_M18",
16367
16343
  modelExperiments: {
16368
16344
  experiments: {
16369
- template__system_prompts__planning_mode_artifacts: {
16370
- 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"
16371
- },
16372
16345
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16373
16346
  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 "session_summary_prompt_override": ""\n}'
16374
16347
  },
16375
- "cascade-include-ephemeral-message": {
16376
- stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16377
- },
16378
16348
  template__system_prompts__communication_style: {
16379
- 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: ...'."
16349
+ 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.'
16380
16350
  }
16381
16351
  }
16382
- }
16383
- },
16384
- "gemini-3.6-flash-tiered": {
16385
- supportsImages: true,
16386
- supportsThinking: true,
16387
- thinkingBudget: -1,
16388
- minThinkingBudget: 32,
16389
- recommended: true,
16390
- maxTokens: 1048576,
16391
- maxOutputTokens: 65536,
16392
- quotaInfo: {
16393
- remainingFraction: 0.9783466,
16394
- resetTime: "2026-08-22T17:36:20Z"
16395
16352
  },
16396
- model: "MODEL_PLACEHOLDER_M196",
16397
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16398
16353
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16399
- supportsVideo: true,
16354
+ quotaInfo: {
16355
+ remainingFraction: 0.9765516,
16356
+ resetTime: "2026-08-23T17:21:50Z"
16357
+ },
16358
+ recommended: true,
16400
16359
  supportedMimeTypes: {
16401
- "video/audio/s16le": true,
16402
- "text/x-typescript": true,
16403
- "audio/ogg": true,
16360
+ "application/json": true,
16361
+ "application/pdf": true,
16404
16362
  "application/rtf": true,
16405
- "audio/m4a": true,
16406
- "audio/mpeg": true,
16407
- "image/webp": true,
16408
- "audio/webm": true,
16363
+ "application/x-ipynb+json": true,
16364
+ "application/x-javascript": true,
16365
+ "application/x-python-code": true,
16366
+ "application/x-typescript": true,
16367
+ "audio/aac": true,
16368
+ "audio/flac": true,
16409
16369
  "audio/l16": true,
16370
+ "audio/m4a": true,
16371
+ "audio/mp3": true,
16372
+ "audio/mp4": true,
16373
+ "audio/mpeg": true,
16374
+ "audio/ogg": true,
16375
+ "audio/opus": true,
16410
16376
  "audio/vnd.wave": true,
16411
- "text/plain": true,
16412
- "application/json": true,
16413
- "image/png": true,
16414
- "text/javascript": true,
16377
+ "audio/wav": true,
16415
16378
  "audio/wave": true,
16416
- "video/webm": true,
16379
+ "audio/webm": true,
16380
+ "audio/webm;codecs=opus": true,
16381
+ "audio/x-wav": true,
16417
16382
  "image/heic": true,
16418
- "text/rtf": true,
16419
- "application/x-python-code": true,
16420
- "video/audio/wav": true,
16421
- "audio/flac": true,
16422
- "image/jpeg": true,
16423
16383
  "image/heif": true,
16424
- "application/x-javascript": true,
16425
- "video/text/timestamp": true,
16426
- "video/videoframe/jpeg2000": true,
16427
- "video/mp4": true,
16428
- "text/x-python-script": true,
16384
+ "image/jpeg": true,
16385
+ "image/png": true,
16386
+ "image/webp": true,
16387
+ "text/css": true,
16388
+ "text/csv": true,
16429
16389
  "text/html": true,
16430
- "application/x-typescript": true,
16431
- "audio/webm;codecs=opus": true,
16432
- "audio/mp3": true,
16390
+ "text/javascript": true,
16433
16391
  "text/markdown": true,
16434
- "audio/wav": true,
16435
- "application/x-ipynb+json": true,
16436
- "audio/aac": true,
16437
- "audio/opus": true,
16438
- "video/jpeg2000": true,
16392
+ "text/plain": true,
16393
+ "text/rtf": true,
16394
+ "text/x-python": true,
16395
+ "text/x-python-script": true,
16396
+ "text/x-typescript": true,
16439
16397
  "text/xml": true,
16440
- "application/pdf": true,
16441
- "text/css": true,
16442
- "text/csv": true,
16443
- "audio/mp4": true,
16444
- "audio/x-wav": true,
16445
- "text/x-python": true
16398
+ "video/audio/s16le": true,
16399
+ "video/audio/wav": true,
16400
+ "video/jpeg2000": true,
16401
+ "video/mp4": true,
16402
+ "video/text/timestamp": true,
16403
+ "video/videoframe/jpeg2000": true,
16404
+ "video/webm": true
16446
16405
  },
16406
+ supportsImages: true,
16407
+ supportsThinking: true,
16408
+ supportsVideo: true,
16409
+ thinkingBudget: -1
16410
+ },
16411
+ "gemini-3-flash-agent": {
16412
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16413
+ displayName: "Gemini 3.5 Flash (High)",
16414
+ maxOutputTokens: 65536,
16415
+ maxTokens: 1048576,
16416
+ minThinkingBudget: 32,
16417
+ model: "MODEL_PLACEHOLDER_M84",
16447
16418
  modelExperiments: {
16448
16419
  experiments: {
16449
- template__system_prompts__messaging: {
16450
- stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
16451
- },
16452
16420
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16453
16421
  stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16454
16422
  },
16455
- "cascade-include-ephemeral-message": {
16456
- stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16457
- },
16458
- template__system_prompts__communication_style: {
16459
- 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- You can render LaTeX math (KaTeX): inline with `\\(...\\)` or `$...$`, display with `\\[...\\]` or `$$...$$` placed on its own line.\n- Use math only for genuine mathematical content. Use backticks for code, identifiers, paths, flags, and shell variables.\n- `$` opens inline math, so write a literal dollar as `\\$` or wrap it in backticks. Two unescaped `$` in the same paragraph turn everything between them into math \u2014 this bites prices (`\\$100`) and shell syntax written in prose (`$HOME`, awk `$1`).\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., [utils.py](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n- After launching a background task such as 'run_command', YOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: \nA) either proceed to other relevant work (if any) or, \nB) simply update the user with a short message (e.g. 'task-20 has been launched in the background. I will wait for it to complete before proceeding.') and end the turn.\nDO NOTHING ELSE.\n"
16460
- },
16461
- template__system_prompts__guidelines: {
16462
- stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
16423
+ template__system_prompts__planning_mode_artifacts: {
16424
+ 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"
16463
16425
  }
16464
16426
  }
16465
- }
16466
- },
16467
- tab_jump_flash_lite_preview: {
16468
- maxTokens: 16384,
16469
- maxOutputTokens: 4096,
16470
- quotaInfo: {
16471
- remainingFraction: 1
16472
16427
  },
16473
- model: "MODEL_PLACEHOLDER_M28",
16474
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16475
16428
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16476
- supportsCumulativeContext: true,
16477
- tabJumpPrintLineRange: true,
16478
- supportsEstimateTokenCounter: true,
16479
- addCursorToFindReplaceTarget: true,
16480
- toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
16481
- requiresLeadInGeneration: true,
16482
- requiresNoXmlToolExamples: true
16483
- },
16484
- "gemini-3.7-flash-tiered": {
16485
- supportsImages: true,
16486
- supportsThinking: true,
16487
- thinkingBudget: -1,
16488
- minThinkingBudget: 32,
16489
- recommended: true,
16490
- maxTokens: 1048576,
16491
- maxOutputTokens: 65536,
16492
16429
  quotaInfo: {
16493
- remainingFraction: 0.9783466,
16494
- resetTime: "2026-08-22T17:36:20Z"
16430
+ remainingFraction: 0.9765516,
16431
+ resetTime: "2026-08-23T17:21:50Z"
16495
16432
  },
16496
- model: "MODEL_PLACEHOLDER_M301",
16497
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16498
- modelProvider: "MODEL_PROVIDER_GOOGLE",
16499
- supportsVideo: true,
16433
+ recommended: true,
16500
16434
  supportedMimeTypes: {
16501
- "audio/x-wav": true,
16502
- "text/x-typescript": true,
16503
- "video/audio/s16le": true,
16504
- "text/x-python-script": true,
16505
- "audio/aac": true,
16435
+ "application/json": true,
16436
+ "application/pdf": true,
16506
16437
  "application/rtf": true,
16507
- "text/rtf": true,
16508
- "video/text/timestamp": true,
16509
- "audio/l16": true,
16510
- "image/heic": true,
16511
- "text/csv": true,
16512
- "audio/wave": true,
16513
- "text/x-python": true,
16514
- "image/png": true,
16515
- "video/videoframe/jpeg2000": true,
16516
- "audio/webm;codecs=opus": true,
16438
+ "application/x-ipynb+json": true,
16517
16439
  "application/x-javascript": true,
16518
- "image/webp": true,
16519
- "application/pdf": true,
16520
- "audio/mp3": true,
16521
- "image/jpeg": true,
16522
- "application/x-typescript": true,
16523
16440
  "application/x-python-code": true,
16524
- "text/html": true,
16525
- "video/webm": true,
16441
+ "application/x-typescript": true,
16442
+ "audio/aac": true,
16443
+ "audio/flac": true,
16444
+ "audio/l16": true,
16445
+ "audio/m4a": true,
16446
+ "audio/mp3": true,
16526
16447
  "audio/mp4": true,
16527
- "text/markdown": true,
16528
- "text/css": true,
16448
+ "audio/mpeg": true,
16449
+ "audio/ogg": true,
16450
+ "audio/opus": true,
16451
+ "audio/vnd.wave": true,
16529
16452
  "audio/wav": true,
16453
+ "audio/wave": true,
16454
+ "audio/webm": true,
16455
+ "audio/webm;codecs=opus": true,
16456
+ "audio/x-wav": true,
16457
+ "image/heic": true,
16530
16458
  "image/heif": true,
16531
- "audio/vnd.wave": true,
16459
+ "image/jpeg": true,
16460
+ "image/png": true,
16461
+ "image/webp": true,
16462
+ "text/css": true,
16463
+ "text/csv": true,
16464
+ "text/html": true,
16532
16465
  "text/javascript": true,
16466
+ "text/markdown": true,
16467
+ "text/plain": true,
16468
+ "text/rtf": true,
16469
+ "text/x-python": true,
16470
+ "text/x-python-script": true,
16471
+ "text/x-typescript": true,
16533
16472
  "text/xml": true,
16473
+ "video/audio/s16le": true,
16534
16474
  "video/audio/wav": true,
16535
- "audio/webm": true,
16536
16475
  "video/jpeg2000": true,
16537
- "audio/opus": true,
16538
- "text/plain": true,
16539
- "audio/ogg": true,
16540
16476
  "video/mp4": true,
16541
- "application/json": true,
16542
- "audio/m4a": true,
16543
- "application/x-ipynb+json": true,
16544
- "audio/flac": true,
16545
- "audio/mpeg": true
16477
+ "video/text/timestamp": true,
16478
+ "video/videoframe/jpeg2000": true,
16479
+ "video/webm": true
16480
+ },
16481
+ supportsImages: true,
16482
+ supportsThinking: true,
16483
+ supportsVideo: true,
16484
+ tagDescription: "Limited time",
16485
+ tagTitle: "Fast",
16486
+ thinkingBudget: -1
16487
+ },
16488
+ "gemini-3.1-flash-image": {
16489
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16490
+ displayName: "Gemini 3.1 Flash Image",
16491
+ model: "MODEL_PLACEHOLDER_M21",
16492
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16493
+ quotaInfo: {
16494
+ remainingFraction: 0.9765516,
16495
+ resetTime: "2026-08-23T17:21:50Z"
16496
+ }
16497
+ },
16498
+ "gemini-3.1-flash-lite": {
16499
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16500
+ displayName: "Gemini 3.1 Flash Lite",
16501
+ maxOutputTokens: 65535,
16502
+ maxTokens: 1048576,
16503
+ model: "MODEL_PLACEHOLDER_M50",
16504
+ modelExperiments: {
16505
+ experiments: {
16506
+ CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16507
+ 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 "session_summary_prompt_override": ""\n}'
16508
+ }
16509
+ }
16546
16510
  },
16511
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
16512
+ quotaInfo: {
16513
+ remainingFraction: 0.9765516,
16514
+ resetTime: "2026-08-23T17:21:50Z"
16515
+ }
16516
+ },
16517
+ "gemini-3.1-pro-high": {
16518
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16519
+ displayName: "Gemini 3.1 Pro (High)",
16520
+ maxOutputTokens: 65535,
16521
+ maxTokens: 1048576,
16522
+ minThinkingBudget: 128,
16523
+ model: "MODEL_PLACEHOLDER_M37",
16547
16524
  modelExperiments: {
16548
16525
  experiments: {
16549
16526
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16550
- stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16527
+ 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 "session_summary_prompt_override": ""\n}'
16551
16528
  },
16552
16529
  "cascade-include-ephemeral-message": {
16553
- stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16530
+ stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16554
16531
  },
16555
- "task-details-suffix": {
16556
- stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
16532
+ template__system_prompts__communication_style: {
16533
+ 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: ...'."
16534
+ },
16535
+ template__system_prompts__planning_mode_artifacts: {
16536
+ 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"
16557
16537
  }
16558
16538
  }
16559
- }
16560
- },
16561
- "gemini-3.6-flash-medium": {
16562
- displayName: "Gemini 3.6 Flash (Medium)",
16563
- supportsImages: true,
16564
- supportsThinking: true,
16565
- thinkingBudget: 4e3,
16566
- minThinkingBudget: 32,
16567
- recommended: true,
16568
- maxTokens: 1048576,
16569
- maxOutputTokens: 65536,
16570
- quotaInfo: {
16571
- remainingFraction: 0.9783466,
16572
- resetTime: "2026-08-22T17:36:20Z"
16573
16539
  },
16574
- model: "MODEL_PLACEHOLDER_M72",
16575
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16576
16540
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16577
- supportsVideo: true,
16578
- tagTitle: "Fast",
16579
- tagDescription: "Limited time",
16541
+ quotaInfo: {
16542
+ remainingFraction: 0.9765516,
16543
+ resetTime: "2026-08-23T17:21:50Z"
16544
+ },
16545
+ recommended: true,
16580
16546
  supportedMimeTypes: {
16581
- "audio/aac": true,
16582
- "text/csv": true,
16583
16547
  "application/json": true,
16584
- "video/videoframe/jpeg2000": true,
16585
- "audio/ogg": true,
16586
- "audio/webm": true,
16587
- "video/mp4": true,
16588
- "image/heif": true,
16589
- "text/rtf": true,
16590
- "audio/flac": true,
16591
- "image/png": true,
16592
- "image/jpeg": true,
16593
- "video/text/timestamp": true,
16594
- "text/plain": true,
16595
- "text/x-python": true,
16596
- "text/html": true,
16597
- "audio/mp3": true,
16598
16548
  "application/pdf": true,
16599
- "video/audio/wav": true,
16600
- "image/heic": true,
16601
- "application/x-typescript": true,
16602
- "video/audio/s16le": true,
16549
+ "application/rtf": true,
16603
16550
  "application/x-ipynb+json": true,
16604
- "audio/wave": true,
16605
- "audio/vnd.wave": true,
16606
- "audio/x-wav": true,
16607
- "text/javascript": true,
16608
- "audio/l16": true,
16609
- "audio/wav": true,
16610
- "image/webp": true,
16611
- "audio/opus": true,
16612
- "application/x-python-code": true,
16613
- "video/webm": true,
16614
- "video/jpeg2000": true,
16615
- "text/x-python-script": true,
16616
16551
  "application/x-javascript": true,
16552
+ "application/x-python-code": true,
16553
+ "application/x-typescript": true,
16554
+ "audio/aac": true,
16555
+ "audio/flac": true,
16556
+ "audio/l16": true,
16617
16557
  "audio/m4a": true,
16618
- "text/markdown": true,
16558
+ "audio/mp3": true,
16559
+ "audio/mp4": true,
16619
16560
  "audio/mpeg": true,
16620
- "text/x-typescript": true,
16561
+ "audio/ogg": true,
16562
+ "audio/opus": true,
16563
+ "audio/vnd.wave": true,
16564
+ "audio/wav": true,
16565
+ "audio/wave": true,
16566
+ "audio/webm": true,
16621
16567
  "audio/webm;codecs=opus": true,
16622
- "audio/mp4": true,
16568
+ "audio/x-wav": true,
16569
+ "image/heic": true,
16570
+ "image/heif": true,
16571
+ "image/jpeg": true,
16572
+ "image/png": true,
16573
+ "image/webp": true,
16623
16574
  "text/css": true,
16575
+ "text/csv": true,
16576
+ "text/html": true,
16577
+ "text/javascript": true,
16578
+ "text/markdown": true,
16579
+ "text/plain": true,
16580
+ "text/rtf": true,
16581
+ "text/x-python": true,
16582
+ "text/x-python-script": true,
16583
+ "text/x-typescript": true,
16624
16584
  "text/xml": true,
16625
- "application/rtf": true
16585
+ "video/audio/s16le": true,
16586
+ "video/audio/wav": true,
16587
+ "video/jpeg2000": true,
16588
+ "video/mp4": true,
16589
+ "video/text/timestamp": true,
16590
+ "video/videoframe/jpeg2000": true,
16591
+ "video/webm": true
16626
16592
  },
16593
+ supportsImages: true,
16594
+ supportsThinking: true,
16595
+ supportsVideo: true,
16596
+ tagTitle: "New",
16597
+ thinkingBudget: 10001
16598
+ },
16599
+ "gemini-3.1-pro-low": {
16600
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16601
+ displayName: "Gemini 3.1 Pro (Low)",
16602
+ maxOutputTokens: 65535,
16603
+ maxTokens: 1048576,
16604
+ minThinkingBudget: 128,
16605
+ model: "MODEL_PLACEHOLDER_M36",
16627
16606
  modelExperiments: {
16628
16607
  experiments: {
16629
16608
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16630
- stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16609
+ 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 "session_summary_prompt_override": ""\n}'
16631
16610
  },
16632
16611
  "cascade-include-ephemeral-message": {
16633
- stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16612
+ stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16634
16613
  },
16635
16614
  template__system_prompts__communication_style: {
16636
- 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- You can render LaTeX math (KaTeX): inline with `\\(...\\)` or `$...$`, display with `\\[...\\]` or `$$...$$` placed on its own line.\n- Use math only for genuine mathematical content. Use backticks for code, identifiers, paths, flags, and shell variables.\n- `$` opens inline math, so write a literal dollar as `\\$` or wrap it in backticks. Two unescaped `$` in the same paragraph turn everything between them into math \u2014 this bites prices (`\\$100`) and shell syntax written in prose (`$HOME`, awk `$1`).\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., [utils.py](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n- After launching a background task such as 'run_command', YOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: \nA) either proceed to other relevant work (if any) or, \nB) simply update the user with a short message (e.g. 'task-20 has been launched in the background. I will wait for it to complete before proceeding.') and end the turn.\nDO NOTHING ELSE.\n"
16637
- },
16638
- template__system_prompts__guidelines: {
16639
- stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
16615
+ 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: ...'."
16640
16616
  },
16641
- template__system_prompts__messaging: {
16642
- stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
16617
+ template__system_prompts__planning_mode_artifacts: {
16618
+ 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"
16643
16619
  }
16644
16620
  }
16645
- }
16646
- },
16647
- "gemini-2.5-pro": {
16648
- displayName: "Gemini 2.5 Pro",
16649
- supportsImages: true,
16650
- supportsThinking: true,
16651
- thinkingBudget: 1024,
16652
- minThinkingBudget: 128,
16653
- recommended: true,
16654
- maxTokens: 1048576,
16655
- maxOutputTokens: 65535,
16656
- quotaInfo: {
16657
- remainingFraction: 0.9783466,
16658
- resetTime: "2026-08-22T17:36:20Z"
16659
16621
  },
16660
- model: "MODEL_GOOGLE_GEMINI_2_5_PRO",
16661
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16662
16622
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16623
+ quotaInfo: {
16624
+ remainingFraction: 0.9765516,
16625
+ resetTime: "2026-08-23T17:21:50Z"
16626
+ },
16627
+ recommended: true,
16663
16628
  supportedMimeTypes: {
16664
- "audio/webm": true,
16665
16629
  "application/json": true,
16666
- "video/videoframe/jpeg2000": true,
16667
- "image/jpeg": true,
16668
- "audio/vnd.wave": true,
16669
- "audio/flac": true,
16670
- "audio/l16": true,
16630
+ "application/pdf": true,
16631
+ "application/rtf": true,
16671
16632
  "application/x-ipynb+json": true,
16672
- "audio/mpeg": true,
16673
16633
  "application/x-javascript": true,
16674
- "video/audio/s16le": true,
16675
- "image/png": true,
16634
+ "application/x-python-code": true,
16676
16635
  "application/x-typescript": true,
16677
- "text/rtf": true,
16636
+ "audio/aac": true,
16637
+ "audio/flac": true,
16638
+ "audio/l16": true,
16678
16639
  "audio/m4a": true,
16679
16640
  "audio/mp3": true,
16641
+ "audio/mp4": true,
16642
+ "audio/mpeg": true,
16680
16643
  "audio/ogg": true,
16681
- "audio/webm;codecs=opus": true,
16682
- "audio/x-wav": true,
16683
- "text/x-typescript": true,
16684
16644
  "audio/opus": true,
16685
- "application/rtf": true,
16686
- "application/pdf": true,
16687
- "text/javascript": true,
16688
- "video/audio/wav": true,
16689
- "text/html": true,
16645
+ "audio/vnd.wave": true,
16646
+ "audio/wav": true,
16690
16647
  "audio/wave": true,
16691
- "audio/aac": true,
16692
- "video/mp4": true,
16648
+ "audio/webm": true,
16649
+ "audio/webm;codecs=opus": true,
16650
+ "audio/x-wav": true,
16693
16651
  "image/heic": true,
16694
- "application/x-python-code": true,
16652
+ "image/heif": true,
16653
+ "image/jpeg": true,
16654
+ "image/png": true,
16695
16655
  "image/webp": true,
16696
- "audio/mp4": true,
16656
+ "text/css": true,
16657
+ "text/csv": true,
16658
+ "text/html": true,
16659
+ "text/javascript": true,
16660
+ "text/markdown": true,
16661
+ "text/plain": true,
16662
+ "text/rtf": true,
16697
16663
  "text/x-python": true,
16698
16664
  "text/x-python-script": true,
16699
- "video/text/timestamp": true,
16700
- "audio/wav": true,
16701
- "video/webm": true,
16702
- "image/heif": true,
16703
- "text/plain": true,
16704
- "video/jpeg2000": true,
16705
- "text/markdown": true,
16706
- "text/csv": true,
16665
+ "text/x-typescript": true,
16707
16666
  "text/xml": true,
16708
- "text/css": true
16667
+ "video/audio/s16le": true,
16668
+ "video/audio/wav": true,
16669
+ "video/jpeg2000": true,
16670
+ "video/mp4": true,
16671
+ "video/text/timestamp": true,
16672
+ "video/videoframe/jpeg2000": true,
16673
+ "video/webm": true
16709
16674
  },
16710
- requiresImageOutputOutsideFunctionResponses: true,
16711
- modelExperiments: {
16712
- experiments: {
16713
- CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16714
- 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 "session_summary_prompt_override": ""\n}'
16715
- }
16716
- }
16717
- }
16675
+ supportsImages: true,
16676
+ supportsThinking: true,
16677
+ supportsVideo: true,
16678
+ thinkingBudget: 1001
16718
16679
  },
16719
- "gemini-2.5-flash-thinking": {
16720
- displayName: "Gemini 3.1 Flash Lite",
16721
- maxTokens: 1048576,
16722
- maxOutputTokens: 65535,
16723
- quotaInfo: {
16724
- remainingFraction: 0.9783466,
16725
- resetTime: "2026-08-22T17:36:20Z"
16726
- },
16727
- model: "MODEL_GOOGLE_GEMINI_2_5_FLASH_THINKING",
16680
+ "gemini-3.5-flash-extra-low": {
16728
16681
  apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16729
- modelProvider: "MODEL_PROVIDER_GOOGLE",
16682
+ displayName: "Gemini 3.5 Flash (Low)",
16683
+ maxOutputTokens: 65536,
16684
+ maxTokens: 1048576,
16685
+ minThinkingBudget: 32,
16686
+ model: "MODEL_PLACEHOLDER_M187",
16730
16687
  modelExperiments: {
16731
16688
  experiments: {
16732
16689
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16733
- 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 "session_summary_prompt_override": ""\n}'
16690
+ stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16691
+ },
16692
+ template__system_prompts__planning_mode_artifacts: {
16693
+ 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"
16734
16694
  }
16735
16695
  }
16736
- }
16737
- },
16738
- "gemini-3.5-flash-extra-low": {
16739
- displayName: "Gemini 3.5 Flash (Low)",
16740
- supportsImages: true,
16741
- supportsThinking: true,
16742
- thinkingBudget: 1e3,
16743
- minThinkingBudget: 32,
16744
- recommended: true,
16745
- maxTokens: 1048576,
16746
- maxOutputTokens: 65536,
16747
- quotaInfo: {
16748
- remainingFraction: 0.9783466,
16749
- resetTime: "2026-08-22T17:36:20Z"
16750
16696
  },
16751
- model: "MODEL_PLACEHOLDER_M187",
16752
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16753
16697
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16754
- supportsVideo: true,
16755
- tagTitle: "Fast",
16756
- tagDescription: "Limited time",
16698
+ quotaInfo: {
16699
+ remainingFraction: 0.9765516,
16700
+ resetTime: "2026-08-23T17:21:50Z"
16701
+ },
16702
+ recommended: true,
16757
16703
  supportedMimeTypes: {
16758
- "audio/opus": true,
16759
- "audio/mp3": true,
16704
+ "application/json": true,
16705
+ "application/pdf": true,
16706
+ "application/rtf": true,
16760
16707
  "application/x-ipynb+json": true,
16708
+ "application/x-javascript": true,
16761
16709
  "application/x-python-code": true,
16762
- "text/javascript": true,
16763
- "video/audio/s16le": true,
16764
- "text/plain": true,
16765
- "text/xml": true,
16710
+ "application/x-typescript": true,
16711
+ "audio/aac": true,
16766
16712
  "audio/flac": true,
16767
- "audio/webm;codecs=opus": true,
16768
- "video/text/timestamp": true,
16769
- "audio/wave": true,
16770
- "text/html": true,
16771
- "audio/x-wav": true,
16772
- "text/css": true,
16773
- "video/mp4": true,
16774
16713
  "audio/l16": true,
16775
- "image/webp": true,
16776
- "application/json": true,
16777
- "text/x-python-script": true,
16778
- "audio/mpeg": true,
16779
16714
  "audio/m4a": true,
16780
- "image/heic": true,
16781
- "application/x-typescript": true,
16782
- "text/csv": true,
16783
- "text/markdown": true,
16784
- "text/rtf": true,
16715
+ "audio/mp3": true,
16785
16716
  "audio/mp4": true,
16786
- "application/pdf": true,
16787
- "audio/aac": true,
16788
- "image/heif": true,
16789
- "video/audio/wav": true,
16790
- "video/videoframe/jpeg2000": true,
16791
- "audio/wav": true,
16792
- "image/png": true,
16717
+ "audio/mpeg": true,
16793
16718
  "audio/ogg": true,
16794
- "text/x-typescript": true,
16795
- "text/x-python": true,
16796
- "application/rtf": true,
16719
+ "audio/opus": true,
16797
16720
  "audio/vnd.wave": true,
16721
+ "audio/wav": true,
16722
+ "audio/wave": true,
16723
+ "audio/webm": true,
16724
+ "audio/webm;codecs=opus": true,
16725
+ "audio/x-wav": true,
16726
+ "image/heic": true,
16727
+ "image/heif": true,
16798
16728
  "image/jpeg": true,
16729
+ "image/png": true,
16730
+ "image/webp": true,
16731
+ "text/css": true,
16732
+ "text/csv": true,
16733
+ "text/html": true,
16734
+ "text/javascript": true,
16735
+ "text/markdown": true,
16736
+ "text/plain": true,
16737
+ "text/rtf": true,
16738
+ "text/x-python": true,
16739
+ "text/x-python-script": true,
16740
+ "text/x-typescript": true,
16741
+ "text/xml": true,
16742
+ "video/audio/s16le": true,
16743
+ "video/audio/wav": true,
16799
16744
  "video/jpeg2000": true,
16800
- "video/webm": true,
16801
- "application/x-javascript": true,
16802
- "audio/webm": true
16745
+ "video/mp4": true,
16746
+ "video/text/timestamp": true,
16747
+ "video/videoframe/jpeg2000": true,
16748
+ "video/webm": true
16803
16749
  },
16750
+ supportsImages: true,
16751
+ supportsThinking: true,
16752
+ supportsVideo: true,
16753
+ tagDescription: "Limited time",
16754
+ tagTitle: "Fast",
16755
+ thinkingBudget: 1e3
16756
+ },
16757
+ "gemini-3.5-flash-low": {
16758
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16759
+ displayName: "Gemini 3.5 Flash (Medium)",
16760
+ maxOutputTokens: 65536,
16761
+ maxTokens: 1048576,
16762
+ minThinkingBudget: 32,
16763
+ model: "MODEL_PLACEHOLDER_M20",
16804
16764
  modelExperiments: {
16805
16765
  experiments: {
16806
16766
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
@@ -16810,253 +16770,248 @@ var models_default = {
16810
16770
  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"
16811
16771
  }
16812
16772
  }
16813
- }
16814
- },
16815
- "gemini-3-flash": {
16816
- displayName: "Gemini 3 Flash",
16817
- supportsImages: true,
16818
- supportsThinking: true,
16819
- thinkingBudget: -1,
16820
- minThinkingBudget: 32,
16821
- recommended: true,
16822
- maxTokens: 1048576,
16823
- maxOutputTokens: 65536,
16824
- quotaInfo: {
16825
- remainingFraction: 0.9783466,
16826
- resetTime: "2026-08-22T17:36:20Z"
16827
16773
  },
16828
- model: "MODEL_PLACEHOLDER_M18",
16829
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16830
16774
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16831
- supportsVideo: true,
16775
+ quotaInfo: {
16776
+ remainingFraction: 0.9765516,
16777
+ resetTime: "2026-08-23T17:21:50Z"
16778
+ },
16779
+ recommended: true,
16832
16780
  supportedMimeTypes: {
16833
- "text/x-python-script": true,
16834
- "audio/flac": true,
16835
- "text/html": true,
16781
+ "application/json": true,
16782
+ "application/pdf": true,
16783
+ "application/rtf": true,
16784
+ "application/x-ipynb+json": true,
16836
16785
  "application/x-javascript": true,
16837
- "audio/wave": true,
16838
- "audio/webm;codecs=opus": true,
16786
+ "application/x-python-code": true,
16839
16787
  "application/x-typescript": true,
16840
- "image/heif": true,
16841
- "audio/x-wav": true,
16842
- "audio/mpeg": true,
16843
- "video/audio/wav": true,
16844
- "video/mp4": true,
16788
+ "audio/aac": true,
16789
+ "audio/flac": true,
16790
+ "audio/l16": true,
16791
+ "audio/m4a": true,
16792
+ "audio/mp3": true,
16845
16793
  "audio/mp4": true,
16846
- "audio/vnd.wave": true,
16847
- "audio/webm": true,
16848
- "video/jpeg2000": true,
16794
+ "audio/mpeg": true,
16849
16795
  "audio/ogg": true,
16850
- "video/webm": true,
16851
16796
  "audio/opus": true,
16852
- "video/text/timestamp": true,
16853
- "application/x-python-code": true,
16854
- "text/css": true,
16797
+ "audio/vnd.wave": true,
16798
+ "audio/wav": true,
16799
+ "audio/wave": true,
16800
+ "audio/webm": true,
16801
+ "audio/webm;codecs=opus": true,
16802
+ "audio/x-wav": true,
16803
+ "image/heic": true,
16804
+ "image/heif": true,
16855
16805
  "image/jpeg": true,
16856
- "application/rtf": true,
16857
- "text/xml": true,
16858
- "text/x-typescript": true,
16806
+ "image/png": true,
16859
16807
  "image/webp": true,
16860
- "text/x-python": true,
16808
+ "text/css": true,
16809
+ "text/csv": true,
16810
+ "text/html": true,
16861
16811
  "text/javascript": true,
16862
- "text/rtf": true,
16863
16812
  "text/markdown": true,
16864
- "audio/wav": true,
16865
- "video/videoframe/jpeg2000": true,
16866
- "image/heic": true,
16867
- "text/csv": true,
16868
- "application/x-ipynb+json": true,
16869
- "audio/mp3": true,
16870
- "audio/m4a": true,
16871
16813
  "text/plain": true,
16814
+ "text/rtf": true,
16815
+ "text/x-python": true,
16816
+ "text/x-python-script": true,
16817
+ "text/x-typescript": true,
16818
+ "text/xml": true,
16872
16819
  "video/audio/s16le": true,
16873
- "audio/aac": true,
16874
- "image/png": true,
16875
- "application/json": true,
16876
- "application/pdf": true,
16877
- "audio/l16": true
16820
+ "video/audio/wav": true,
16821
+ "video/jpeg2000": true,
16822
+ "video/mp4": true,
16823
+ "video/text/timestamp": true,
16824
+ "video/videoframe/jpeg2000": true,
16825
+ "video/webm": true
16878
16826
  },
16827
+ supportsImages: true,
16828
+ supportsThinking: true,
16829
+ supportsVideo: true,
16830
+ tagDescription: "Limited time",
16831
+ tagTitle: "Fast",
16832
+ thinkingBudget: 4e3
16833
+ },
16834
+ "gemini-3.6-flash-high": {
16835
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16836
+ displayName: "Gemini 3.6 Flash (High)",
16837
+ maxOutputTokens: 65536,
16838
+ maxTokens: 1048576,
16839
+ minThinkingBudget: 32,
16840
+ model: "MODEL_PLACEHOLDER_M71",
16879
16841
  modelExperiments: {
16880
16842
  experiments: {
16881
16843
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16882
- 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 "session_summary_prompt_override": ""\n}'
16844
+ stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16845
+ },
16846
+ "cascade-include-ephemeral-message": {
16847
+ stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16883
16848
  },
16884
16849
  template__system_prompts__communication_style: {
16885
- 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.'
16850
+ 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- You can render LaTeX math (KaTeX): inline with `\\(...\\)` or `$...$`, display with `\\[...\\]` or `$$...$$` placed on its own line.\n- Use math only for genuine mathematical content. Use backticks for code, identifiers, paths, flags, and shell variables.\n- `$` opens inline math, so write a literal dollar as `\\$` or wrap it in backticks. Two unescaped `$` in the same paragraph turn everything between them into math \u2014 this bites prices (`\\$100`) and shell syntax written in prose (`$HOME`, awk `$1`).\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., [utils.py](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n- After launching a background task such as 'run_command', YOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: \nA) either proceed to other relevant work (if any) or, \nB) simply update the user with a short message (e.g. 'task-20 has been launched in the background. I will wait for it to complete before proceeding.') and end the turn.\nDO NOTHING ELSE.\n"
16851
+ },
16852
+ template__system_prompts__guidelines: {
16853
+ stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
16854
+ },
16855
+ template__system_prompts__messaging: {
16856
+ stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
16886
16857
  }
16887
16858
  }
16888
- }
16889
- },
16890
- "gemini-3.7-flash-high": {
16891
- displayName: "Gemini 3.7 Flash (High)",
16892
- supportsImages: true,
16893
- supportsThinking: true,
16894
- thinkingBudget: -1,
16895
- minThinkingBudget: 32,
16896
- recommended: true,
16897
- maxTokens: 1048576,
16898
- maxOutputTokens: 65536,
16899
- quotaInfo: {
16900
- remainingFraction: 0.9783466,
16901
- resetTime: "2026-08-22T17:36:20Z"
16902
16859
  },
16903
- model: "MODEL_PLACEHOLDER_M298",
16904
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16905
16860
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16906
- supportsVideo: true,
16907
- tagTitle: "Fast",
16908
- tagDescription: "Limited time",
16861
+ quotaInfo: {
16862
+ remainingFraction: 0.9765516,
16863
+ resetTime: "2026-08-23T17:21:50Z"
16864
+ },
16865
+ recommended: true,
16909
16866
  supportedMimeTypes: {
16910
- "audio/webm;codecs=opus": true,
16911
- "text/javascript": true,
16912
- "text/html": true,
16913
- "application/x-javascript": true,
16914
- "text/x-python-script": true,
16915
- "audio/mpeg": true,
16916
- "image/jpeg": true,
16917
- "text/rtf": true,
16918
- "audio/aac": true,
16919
- "text/csv": true,
16920
- "application/pdf": true,
16921
- "text/markdown": true,
16922
- "audio/wav": true,
16923
- "audio/wave": true,
16924
16867
  "application/json": true,
16868
+ "application/pdf": true,
16869
+ "application/rtf": true,
16870
+ "application/x-ipynb+json": true,
16871
+ "application/x-javascript": true,
16925
16872
  "application/x-python-code": true,
16926
- "video/mp4": true,
16927
- "video/webm": true,
16928
- "audio/x-wav": true,
16873
+ "application/x-typescript": true,
16874
+ "audio/aac": true,
16929
16875
  "audio/flac": true,
16876
+ "audio/l16": true,
16930
16877
  "audio/m4a": true,
16931
- "audio/vnd.wave": true,
16932
- "image/heic": true,
16878
+ "audio/mp3": true,
16879
+ "audio/mp4": true,
16880
+ "audio/mpeg": true,
16933
16881
  "audio/ogg": true,
16934
- "text/x-python": true,
16882
+ "audio/opus": true,
16883
+ "audio/vnd.wave": true,
16884
+ "audio/wav": true,
16885
+ "audio/wave": true,
16935
16886
  "audio/webm": true,
16887
+ "audio/webm;codecs=opus": true,
16888
+ "audio/x-wav": true,
16889
+ "image/heic": true,
16936
16890
  "image/heif": true,
16937
- "text/x-typescript": true,
16938
- "application/x-typescript": true,
16939
- "audio/l16": true,
16940
- "audio/opus": true,
16941
- "text/css": true,
16942
- "video/audio/s16le": true,
16943
- "video/jpeg2000": true,
16944
- "application/x-ipynb+json": true,
16945
- "video/audio/wav": true,
16946
- "video/videoframe/jpeg2000": true,
16891
+ "image/jpeg": true,
16947
16892
  "image/png": true,
16948
16893
  "image/webp": true,
16949
- "video/text/timestamp": true,
16950
- "application/rtf": true,
16894
+ "text/css": true,
16895
+ "text/csv": true,
16896
+ "text/html": true,
16897
+ "text/javascript": true,
16898
+ "text/markdown": true,
16951
16899
  "text/plain": true,
16900
+ "text/rtf": true,
16901
+ "text/x-python": true,
16902
+ "text/x-python-script": true,
16903
+ "text/x-typescript": true,
16952
16904
  "text/xml": true,
16953
- "audio/mp3": true,
16954
- "audio/mp4": true
16905
+ "video/audio/s16le": true,
16906
+ "video/audio/wav": true,
16907
+ "video/jpeg2000": true,
16908
+ "video/mp4": true,
16909
+ "video/text/timestamp": true,
16910
+ "video/videoframe/jpeg2000": true,
16911
+ "video/webm": true
16955
16912
  },
16913
+ supportsImages: true,
16914
+ supportsThinking: true,
16915
+ supportsVideo: true,
16916
+ tagDescription: "Limited time",
16917
+ tagTitle: "Fast",
16918
+ thinkingBudget: -1
16919
+ },
16920
+ "gemini-3.6-flash-low": {
16921
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16922
+ displayName: "Gemini 3.6 Flash (Low)",
16923
+ maxOutputTokens: 65536,
16924
+ maxTokens: 1048576,
16925
+ minThinkingBudget: 32,
16926
+ model: "MODEL_PLACEHOLDER_M73",
16956
16927
  modelExperiments: {
16957
16928
  experiments: {
16929
+ CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16930
+ stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16931
+ },
16958
16932
  "cascade-include-ephemeral-message": {
16959
16933
  stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
16960
16934
  },
16961
- "task-details-suffix": {
16962
- stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
16935
+ template__system_prompts__communication_style: {
16936
+ 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- You can render LaTeX math (KaTeX): inline with `\\(...\\)` or `$...$`, display with `\\[...\\]` or `$$...$$` placed on its own line.\n- Use math only for genuine mathematical content. Use backticks for code, identifiers, paths, flags, and shell variables.\n- `$` opens inline math, so write a literal dollar as `\\$` or wrap it in backticks. Two unescaped `$` in the same paragraph turn everything between them into math \u2014 this bites prices (`\\$100`) and shell syntax written in prose (`$HOME`, awk `$1`).\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., [utils.py](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n- After launching a background task such as 'run_command', YOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: \nA) either proceed to other relevant work (if any) or, \nB) simply update the user with a short message (e.g. 'task-20 has been launched in the background. I will wait for it to complete before proceeding.') and end the turn.\nDO NOTHING ELSE.\n"
16963
16937
  },
16964
- CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16965
- stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
16938
+ template__system_prompts__guidelines: {
16939
+ stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
16940
+ },
16941
+ template__system_prompts__messaging: {
16942
+ stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
16966
16943
  }
16967
16944
  }
16968
- }
16969
- },
16970
- "gemini-2.5-flash-lite": {
16971
- displayName: "Gemini 3.1 Flash Lite",
16972
- maxTokens: 1048576,
16973
- maxOutputTokens: 65535,
16974
- quotaInfo: {
16975
- remainingFraction: 0.9783466,
16976
- resetTime: "2026-08-22T17:36:20Z"
16977
16945
  },
16978
- model: "MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE",
16979
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
16980
16946
  modelProvider: "MODEL_PROVIDER_GOOGLE",
16981
- modelExperiments: {
16982
- experiments: {
16983
- CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
16984
- 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 "session_summary_prompt_override": ""\n}'
16985
- }
16986
- }
16987
- }
16988
- },
16989
- "gemini-3.6-flash-high": {
16990
- displayName: "Gemini 3.6 Flash (High)",
16991
- supportsImages: true,
16992
- supportsThinking: true,
16993
- thinkingBudget: -1,
16994
- minThinkingBudget: 32,
16995
- recommended: true,
16996
- maxTokens: 1048576,
16997
- maxOutputTokens: 65536,
16998
16947
  quotaInfo: {
16999
- remainingFraction: 0.9783466,
17000
- resetTime: "2026-08-22T17:36:20Z"
16948
+ remainingFraction: 0.9765516,
16949
+ resetTime: "2026-08-23T17:21:50Z"
17001
16950
  },
17002
- model: "MODEL_PLACEHOLDER_M71",
17003
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17004
- modelProvider: "MODEL_PROVIDER_GOOGLE",
17005
- supportsVideo: true,
17006
- tagTitle: "Fast",
17007
- tagDescription: "Limited time",
16951
+ recommended: true,
17008
16952
  supportedMimeTypes: {
17009
- "audio/aac": true,
16953
+ "application/json": true,
16954
+ "application/pdf": true,
16955
+ "application/rtf": true,
16956
+ "application/x-ipynb+json": true,
16957
+ "application/x-javascript": true,
17010
16958
  "application/x-python-code": true,
17011
16959
  "application/x-typescript": true,
17012
- "text/css": true,
16960
+ "audio/aac": true,
16961
+ "audio/flac": true,
16962
+ "audio/l16": true,
16963
+ "audio/m4a": true,
16964
+ "audio/mp3": true,
17013
16965
  "audio/mp4": true,
17014
- "image/webp": true,
17015
- "audio/x-wav": true,
16966
+ "audio/mpeg": true,
16967
+ "audio/ogg": true,
17016
16968
  "audio/opus": true,
16969
+ "audio/vnd.wave": true,
16970
+ "audio/wav": true,
16971
+ "audio/wave": true,
16972
+ "audio/webm": true,
16973
+ "audio/webm;codecs=opus": true,
16974
+ "audio/x-wav": true,
17017
16975
  "image/heic": true,
16976
+ "image/heif": true,
16977
+ "image/jpeg": true,
16978
+ "image/png": true,
16979
+ "image/webp": true,
16980
+ "text/css": true,
17018
16981
  "text/csv": true,
16982
+ "text/html": true,
16983
+ "text/javascript": true,
16984
+ "text/markdown": true,
16985
+ "text/plain": true,
17019
16986
  "text/rtf": true,
17020
- "audio/wave": true,
16987
+ "text/x-python": true,
16988
+ "text/x-python-script": true,
16989
+ "text/x-typescript": true,
16990
+ "text/xml": true,
17021
16991
  "video/audio/s16le": true,
16992
+ "video/audio/wav": true,
16993
+ "video/jpeg2000": true,
17022
16994
  "video/mp4": true,
17023
- "text/xml": true,
17024
16995
  "video/text/timestamp": true,
17025
- "application/rtf": true,
17026
- "application/x-javascript": true,
17027
- "image/jpeg": true,
17028
- "text/x-python-script": true,
17029
- "video/jpeg2000": true,
17030
- "audio/vnd.wave": true,
17031
- "text/x-python": true,
17032
- "text/javascript": true,
17033
16996
  "video/videoframe/jpeg2000": true,
17034
- "application/x-ipynb+json": true,
17035
- "audio/flac": true,
17036
- "text/markdown": true,
17037
- "audio/l16": true,
17038
- "application/json": true,
17039
- "audio/wav": true,
17040
- "audio/ogg": true,
17041
- "video/webm": true,
17042
- "text/html": true,
17043
- "audio/mp3": true,
17044
- "video/audio/wav": true,
17045
- "audio/mpeg": true,
17046
- "audio/m4a": true,
17047
- "audio/webm;codecs=opus": true,
17048
- "audio/webm": true,
17049
- "image/png": true,
17050
- "text/x-typescript": true,
17051
- "image/heif": true,
17052
- "text/plain": true,
17053
- "application/pdf": true
16997
+ "video/webm": true
17054
16998
  },
16999
+ supportsImages: true,
17000
+ supportsThinking: true,
17001
+ supportsVideo: true,
17002
+ tagDescription: "Limited time",
17003
+ tagTitle: "Fast",
17004
+ thinkingBudget: 1e3
17005
+ },
17006
+ "gemini-3.6-flash-medium": {
17007
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17008
+ displayName: "Gemini 3.6 Flash (Medium)",
17009
+ maxOutputTokens: 65536,
17010
+ maxTokens: 1048576,
17011
+ minThinkingBudget: 32,
17012
+ model: "MODEL_PLACEHOLDER_M72",
17055
17013
  modelExperiments: {
17056
17014
  experiments: {
17057
- template__system_prompts__messaging: {
17058
- stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
17059
- },
17060
17015
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17061
17016
  stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17062
17017
  },
@@ -17068,177 +17023,162 @@ var models_default = {
17068
17023
  },
17069
17024
  template__system_prompts__guidelines: {
17070
17025
  stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
17026
+ },
17027
+ template__system_prompts__messaging: {
17028
+ stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
17071
17029
  }
17072
17030
  }
17073
- }
17074
- },
17075
- "gemini-2.5-flash": {
17076
- displayName: "Gemini 3.1 Flash Lite",
17077
- maxTokens: 1048576,
17078
- maxOutputTokens: 65535,
17079
- quotaInfo: {
17080
- remainingFraction: 0.9783466,
17081
- resetTime: "2026-08-22T17:36:20Z"
17082
17031
  },
17083
- model: "MODEL_GOOGLE_GEMINI_2_5_FLASH",
17084
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17085
17032
  modelProvider: "MODEL_PROVIDER_GOOGLE",
17086
- modelExperiments: {
17087
- experiments: {
17088
- CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17089
- 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 "session_summary_prompt_override": ""\n}'
17090
- }
17091
- }
17092
- }
17093
- },
17094
- "gemini-3.1-pro-high": {
17095
- displayName: "Gemini 3.1 Pro (High)",
17096
- supportsImages: true,
17097
- supportsThinking: true,
17098
- thinkingBudget: 10001,
17099
- minThinkingBudget: 128,
17100
- recommended: true,
17101
- maxTokens: 1048576,
17102
- maxOutputTokens: 65535,
17103
17033
  quotaInfo: {
17104
- remainingFraction: 0.9783466,
17105
- resetTime: "2026-08-22T17:36:20Z"
17034
+ remainingFraction: 0.9765516,
17035
+ resetTime: "2026-08-23T17:21:50Z"
17106
17036
  },
17107
- model: "MODEL_PLACEHOLDER_M37",
17108
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17109
- modelProvider: "MODEL_PROVIDER_GOOGLE",
17110
- supportsVideo: true,
17111
- tagTitle: "New",
17037
+ recommended: true,
17112
17038
  supportedMimeTypes: {
17113
- "image/heif": true,
17114
- "audio/wav": true,
17115
- "text/markdown": true,
17116
- "image/png": true,
17039
+ "application/json": true,
17040
+ "application/pdf": true,
17041
+ "application/rtf": true,
17117
17042
  "application/x-ipynb+json": true,
17118
- "audio/mpeg": true,
17119
- "text/rtf": true,
17043
+ "application/x-javascript": true,
17120
17044
  "application/x-python-code": true,
17121
- "application/json": true,
17122
- "text/x-python": true,
17123
- "text/html": true,
17045
+ "application/x-typescript": true,
17046
+ "audio/aac": true,
17047
+ "audio/flac": true,
17124
17048
  "audio/l16": true,
17125
- "video/audio/s16le": true,
17126
- "text/xml": true,
17049
+ "audio/m4a": true,
17050
+ "audio/mp3": true,
17051
+ "audio/mp4": true,
17052
+ "audio/mpeg": true,
17053
+ "audio/ogg": true,
17127
17054
  "audio/opus": true,
17128
- "video/mp4": true,
17055
+ "audio/vnd.wave": true,
17056
+ "audio/wav": true,
17057
+ "audio/wave": true,
17058
+ "audio/webm": true,
17129
17059
  "audio/webm;codecs=opus": true,
17130
- "application/rtf": true,
17131
- "video/audio/wav": true,
17132
- "audio/ogg": true,
17133
- "audio/mp3": true,
17134
- "audio/aac": true,
17135
- "application/x-javascript": true,
17136
- "text/csv": true,
17137
- "text/css": true,
17060
+ "audio/x-wav": true,
17138
17061
  "image/heic": true,
17139
- "application/pdf": true,
17140
- "text/javascript": true,
17062
+ "image/heif": true,
17141
17063
  "image/jpeg": true,
17142
- "application/x-typescript": true,
17143
- "video/videoframe/jpeg2000": true,
17144
- "audio/webm": true,
17145
- "video/text/timestamp": true,
17146
- "audio/vnd.wave": true,
17147
- "audio/x-wav": true,
17148
- "video/webm": true,
17149
- "audio/m4a": true,
17150
- "audio/mp4": true,
17151
- "text/x-python-script": true,
17064
+ "image/png": true,
17152
17065
  "image/webp": true,
17066
+ "text/css": true,
17067
+ "text/csv": true,
17068
+ "text/html": true,
17069
+ "text/javascript": true,
17070
+ "text/markdown": true,
17153
17071
  "text/plain": true,
17072
+ "text/rtf": true,
17073
+ "text/x-python": true,
17074
+ "text/x-python-script": true,
17154
17075
  "text/x-typescript": true,
17155
- "audio/wave": true,
17156
- "audio/flac": true,
17157
- "video/jpeg2000": true
17076
+ "text/xml": true,
17077
+ "video/audio/s16le": true,
17078
+ "video/audio/wav": true,
17079
+ "video/jpeg2000": true,
17080
+ "video/mp4": true,
17081
+ "video/text/timestamp": true,
17082
+ "video/videoframe/jpeg2000": true,
17083
+ "video/webm": true
17158
17084
  },
17085
+ supportsImages: true,
17086
+ supportsThinking: true,
17087
+ supportsVideo: true,
17088
+ tagDescription: "Limited time",
17089
+ tagTitle: "Fast",
17090
+ thinkingBudget: 4e3
17091
+ },
17092
+ "gemini-3.6-flash-tiered": {
17093
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17094
+ maxOutputTokens: 65536,
17095
+ maxTokens: 1048576,
17096
+ minThinkingBudget: 32,
17097
+ model: "MODEL_PLACEHOLDER_M196",
17159
17098
  modelExperiments: {
17160
17099
  experiments: {
17161
- template__system_prompts__planning_mode_artifacts: {
17162
- 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"
17163
- },
17164
17100
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17165
- 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 "session_summary_prompt_override": ""\n}'
17101
+ stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17166
17102
  },
17167
17103
  "cascade-include-ephemeral-message": {
17168
- stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17104
+ stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17169
17105
  },
17170
17106
  template__system_prompts__communication_style: {
17171
- 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: ...'."
17107
+ 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- You can render LaTeX math (KaTeX): inline with `\\(...\\)` or `$...$`, display with `\\[...\\]` or `$$...$$` placed on its own line.\n- Use math only for genuine mathematical content. Use backticks for code, identifiers, paths, flags, and shell variables.\n- `$` opens inline math, so write a literal dollar as `\\$` or wrap it in backticks. Two unescaped `$` in the same paragraph turn everything between them into math \u2014 this bites prices (`\\$100`) and shell syntax written in prose (`$HOME`, awk `$1`).\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., [utils.py](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n- After launching a background task such as 'run_command', YOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: \nA) either proceed to other relevant work (if any) or, \nB) simply update the user with a short message (e.g. 'task-20 has been launched in the background. I will wait for it to complete before proceeding.') and end the turn.\nDO NOTHING ELSE.\n"
17108
+ },
17109
+ template__system_prompts__guidelines: {
17110
+ stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
17111
+ },
17112
+ template__system_prompts__messaging: {
17113
+ stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
17172
17114
  }
17173
17115
  }
17174
- }
17175
- },
17176
- "gemini-3.7-flash-medium": {
17177
- displayName: "Gemini 3.7 Flash (Medium)",
17178
- supportsImages: true,
17179
- supportsThinking: true,
17180
- thinkingBudget: 4e3,
17181
- minThinkingBudget: 32,
17182
- recommended: true,
17183
- maxTokens: 1048576,
17184
- maxOutputTokens: 65536,
17185
- quotaInfo: {
17186
- remainingFraction: 0.9783466,
17187
- resetTime: "2026-08-22T17:36:20Z"
17188
17116
  },
17189
- model: "MODEL_PLACEHOLDER_M299",
17190
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17191
17117
  modelProvider: "MODEL_PROVIDER_GOOGLE",
17192
- supportsVideo: true,
17193
- tagTitle: "Fast",
17194
- tagDescription: "Limited time",
17118
+ quotaInfo: {
17119
+ remainingFraction: 0.9765516,
17120
+ resetTime: "2026-08-23T17:21:50Z"
17121
+ },
17122
+ recommended: true,
17195
17123
  supportedMimeTypes: {
17196
- "audio/opus": true,
17197
- "image/heic": true,
17198
- "text/html": true,
17124
+ "application/json": true,
17125
+ "application/pdf": true,
17126
+ "application/rtf": true,
17127
+ "application/x-ipynb+json": true,
17128
+ "application/x-javascript": true,
17129
+ "application/x-python-code": true,
17130
+ "application/x-typescript": true,
17131
+ "audio/aac": true,
17199
17132
  "audio/flac": true,
17200
- "audio/vnd.wave": true,
17201
- "text/markdown": true,
17133
+ "audio/l16": true,
17202
17134
  "audio/m4a": true,
17203
- "image/jpeg": true,
17204
- "text/plain": true,
17135
+ "audio/mp3": true,
17136
+ "audio/mp4": true,
17137
+ "audio/mpeg": true,
17138
+ "audio/ogg": true,
17139
+ "audio/opus": true,
17140
+ "audio/vnd.wave": true,
17141
+ "audio/wav": true,
17142
+ "audio/wave": true,
17143
+ "audio/webm": true,
17205
17144
  "audio/webm;codecs=opus": true,
17145
+ "audio/x-wav": true,
17146
+ "image/heic": true,
17206
17147
  "image/heif": true,
17207
- "text/x-typescript": true,
17208
- "audio/webm": true,
17148
+ "image/jpeg": true,
17209
17149
  "image/png": true,
17210
- "audio/mp4": true,
17211
17150
  "image/webp": true,
17151
+ "text/css": true,
17152
+ "text/csv": true,
17153
+ "text/html": true,
17154
+ "text/javascript": true,
17155
+ "text/markdown": true,
17156
+ "text/plain": true,
17157
+ "text/rtf": true,
17158
+ "text/x-python": true,
17212
17159
  "text/x-python-script": true,
17213
- "video/videoframe/jpeg2000": true,
17160
+ "text/x-typescript": true,
17161
+ "text/xml": true,
17214
17162
  "video/audio/s16le": true,
17215
- "audio/wave": true,
17216
- "video/mp4": true,
17217
- "audio/x-wav": true,
17218
- "audio/mpeg": true,
17219
- "application/pdf": true,
17220
- "audio/l16": true,
17221
17163
  "video/audio/wav": true,
17222
- "application/json": true,
17223
- "video/webm": true,
17224
- "video/text/timestamp": true,
17225
17164
  "video/jpeg2000": true,
17226
- "application/rtf": true,
17227
- "text/xml": true,
17228
- "application/x-ipynb+json": true,
17229
- "application/x-python-code": true,
17230
- "text/x-python": true,
17231
- "audio/mp3": true,
17232
- "application/x-typescript": true,
17233
- "audio/ogg": true,
17234
- "audio/aac": true,
17235
- "text/rtf": true,
17236
- "application/x-javascript": true,
17237
- "text/javascript": true,
17238
- "text/csv": true,
17239
- "text/css": true,
17240
- "audio/wav": true
17165
+ "video/mp4": true,
17166
+ "video/text/timestamp": true,
17167
+ "video/videoframe/jpeg2000": true,
17168
+ "video/webm": true
17241
17169
  },
17170
+ supportsImages: true,
17171
+ supportsThinking: true,
17172
+ supportsVideo: true,
17173
+ thinkingBudget: -1
17174
+ },
17175
+ "gemini-3.7-flash-high": {
17176
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17177
+ displayName: "Gemini 3.7 Flash (High)",
17178
+ maxOutputTokens: 65536,
17179
+ maxTokens: 1048576,
17180
+ minThinkingBudget: 32,
17181
+ model: "MODEL_PLACEHOLDER_M298",
17242
17182
  modelExperiments: {
17243
17183
  experiments: {
17244
17184
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
@@ -17251,498 +17191,461 @@ var models_default = {
17251
17191
  stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
17252
17192
  }
17253
17193
  }
17254
- }
17255
- },
17256
- "gemini-3.6-flash-low": {
17257
- displayName: "Gemini 3.6 Flash (Low)",
17258
- supportsImages: true,
17259
- supportsThinking: true,
17260
- thinkingBudget: 1e3,
17261
- minThinkingBudget: 32,
17262
- recommended: true,
17263
- maxTokens: 1048576,
17264
- maxOutputTokens: 65536,
17265
- quotaInfo: {
17266
- remainingFraction: 0.9783466,
17267
- resetTime: "2026-08-22T17:36:20Z"
17268
17194
  },
17269
- model: "MODEL_PLACEHOLDER_M73",
17270
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17271
17195
  modelProvider: "MODEL_PROVIDER_GOOGLE",
17272
- supportsVideo: true,
17273
- tagTitle: "Fast",
17274
- tagDescription: "Limited time",
17196
+ quotaInfo: {
17197
+ remainingFraction: 0.9765516,
17198
+ resetTime: "2026-08-23T17:21:50Z"
17199
+ },
17200
+ recommended: true,
17275
17201
  supportedMimeTypes: {
17276
- "text/html": true,
17202
+ "application/json": true,
17277
17203
  "application/pdf": true,
17278
- "video/audio/s16le": true,
17279
- "text/xml": true,
17280
- "audio/x-wav": true,
17281
- "audio/flac": true,
17282
- "audio/webm;codecs=opus": true,
17283
- "audio/vnd.wave": true,
17284
- "audio/aac": true,
17204
+ "application/rtf": true,
17285
17205
  "application/x-ipynb+json": true,
17206
+ "application/x-javascript": true,
17207
+ "application/x-python-code": true,
17208
+ "application/x-typescript": true,
17209
+ "audio/aac": true,
17210
+ "audio/flac": true,
17211
+ "audio/l16": true,
17212
+ "audio/m4a": true,
17213
+ "audio/mp3": true,
17214
+ "audio/mp4": true,
17286
17215
  "audio/mpeg": true,
17216
+ "audio/ogg": true,
17217
+ "audio/opus": true,
17218
+ "audio/vnd.wave": true,
17287
17219
  "audio/wav": true,
17288
- "audio/mp4": true,
17289
- "video/videoframe/jpeg2000": true,
17290
- "audio/l16": true,
17291
- "text/x-python": true,
17292
- "application/x-python-code": true,
17293
- "text/csv": true,
17220
+ "audio/wave": true,
17221
+ "audio/webm": true,
17222
+ "audio/webm;codecs=opus": true,
17223
+ "audio/x-wav": true,
17294
17224
  "image/heic": true,
17295
- "video/audio/wav": true,
17296
- "video/webm": true,
17297
- "audio/mp3": true,
17225
+ "image/heif": true,
17226
+ "image/jpeg": true,
17227
+ "image/png": true,
17298
17228
  "image/webp": true,
17299
- "application/x-javascript": true,
17300
- "text/x-python-script": true,
17229
+ "text/css": true,
17230
+ "text/csv": true,
17231
+ "text/html": true,
17232
+ "text/javascript": true,
17301
17233
  "text/markdown": true,
17302
- "audio/m4a": true,
17303
- "text/x-typescript": true,
17304
- "audio/wave": true,
17305
- "application/json": true,
17234
+ "text/plain": true,
17306
17235
  "text/rtf": true,
17307
- "audio/webm": true,
17308
- "text/css": true,
17236
+ "text/x-python": true,
17237
+ "text/x-python-script": true,
17238
+ "text/x-typescript": true,
17239
+ "text/xml": true,
17240
+ "video/audio/s16le": true,
17241
+ "video/audio/wav": true,
17309
17242
  "video/jpeg2000": true,
17310
17243
  "video/mp4": true,
17311
- "application/rtf": true,
17312
- "text/javascript": true,
17313
- "image/jpeg": true,
17314
17244
  "video/text/timestamp": true,
17315
- "image/heif": true,
17316
- "audio/ogg": true,
17317
- "application/x-typescript": true,
17318
- "text/plain": true,
17319
- "image/png": true,
17320
- "audio/opus": true
17245
+ "video/videoframe/jpeg2000": true,
17246
+ "video/webm": true
17321
17247
  },
17248
+ supportsImages: true,
17249
+ supportsThinking: true,
17250
+ supportsVideo: true,
17251
+ tagDescription: "Limited time",
17252
+ tagTitle: "Fast",
17253
+ thinkingBudget: -1
17254
+ },
17255
+ "gemini-3.7-flash-low": {
17256
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17257
+ displayName: "Gemini 3.7 Flash (Low)",
17258
+ maxOutputTokens: 65536,
17259
+ maxTokens: 1048576,
17260
+ minThinkingBudget: 32,
17261
+ model: "MODEL_PLACEHOLDER_M300",
17322
17262
  modelExperiments: {
17323
17263
  experiments: {
17324
- template__system_prompts__communication_style: {
17325
- 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- You can render LaTeX math (KaTeX): inline with `\\(...\\)` or `$...$`, display with `\\[...\\]` or `$$...$$` placed on its own line.\n- Use math only for genuine mathematical content. Use backticks for code, identifiers, paths, flags, and shell variables.\n- `$` opens inline math, so write a literal dollar as `\\$` or wrap it in backticks. Two unescaped `$` in the same paragraph turn everything between them into math \u2014 this bites prices (`\\$100`) and shell syntax written in prose (`$HOME`, awk `$1`).\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., [utils.py](file:///path/to/file) or [ClassName](file:///path/to/file#L10-L20)`). For Windows, use forward slashes for paths.\n- After launching a background task such as 'run_command', YOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: \nA) either proceed to other relevant work (if any) or, \nB) simply update the user with a short message (e.g. 'task-20 has been launched in the background. I will wait for it to complete before proceeding.') and end the turn.\nDO NOTHING ELSE.\n"
17326
- },
17327
- template__system_prompts__guidelines: {
17328
- stringValue: "Follow these behavioral and workflow guidelines at all times:\n# Documentation\n- Maintain documentation integrity. Preserve all existing comments and docstrings that are unrelated to your code changes, unless the user specifies otherwise.\n\n# Obey Explicit Directives\nIf the user specifies precise quantitative filtering rules, layout boundaries, or architectural preferences, enforce them exactly as requested without alteration.\n\n# Never Guess Code Logic, Schemas, or File Paths\nNEVER infer implementation details, variable names, or file locations without inspecting the authoritative source using code search and file viewing tools.\n\n# Inspect Logs & Stack Traces Before Diagnosing Errors\nNEVER form a diagnostic hypothesis for a runtime failure, or test breakage, without reading the full, un-truncated error log. When an error occurs, your VERY FIRST ACTION must be to fetch and read the exact logs. Base your diagnosis strictly on empirical log evidence.\n\n# No Superficial Symptom Patches\nNEVER resolve errors by masking symptoms, swallowing exceptions, returning dummy fallbacks, commenting out broken assertions, or deleting failing unit tests. When a test or function fails, identify why the underlying contract was broken. If an API returns missing or null data, trace the upstream data provider instead of wrapping the call in a silent try/except or returning an empty 0-byte ArrayBuffer.\n\n# Never Declare Success Without Running Verification Commands\nNEVER claim a task is resolved, a bug is fixed, or a feature is working until you have gathered concrete, empirical runtime verification demonstrating clean success. Editing a file does not equal completing the task. You MUST run the build or test command afterwards.\n\n# Never Ignore Explicit Command Failures or Error Exit Codes\nIf a command fails, you MUST explicitly acknowledge the failure to the user or continue debugging. Never gloss over a build timeout or permission denied error by focusing only on the part of the code that compiled.\n\n# Check Feature Flags & Enforce Strict Control Flow Scoping\nWhenever modifying conditional branches, adding experimental features, or processing loops, ensure that new logic is strictly scoped and evaluated against all possible execution paths.\n\n# Preserve Existing API Contracts & Avoid Unintended Side Effects\nIf you modify a function signature, use code search to find and update every invocation site so the parameter is actually passed.\n\n# Silent Log Inspection & Professional Synthesis\nWhen background tasks (run_command async, manage_task, schedule) complete or emit log notifications, inspect the log files silently. Summarize and synthesize the exact findings in clean, professional natural language.\n\n# No Snippet Tunnel Vision\nNever infer the definition of data structures (proto, struct, class, or enum schemas) from partial file views (first 15 lines or L40-L65 snippets) or design doc text.\nIf view_file output indicates truncation or if an imported schema is referenced, you MUST adjust StartLine/EndLine or ContentOffset to inspect the complete, exact definition of the target symbols before writing code that consumes them.\n\n# Check Command Registries\nWhenever modifying core C/C++/Java command implementations (CLIENT LIST, CLIENT KILL), explicitly search for and update corresponding command definitions across all registry files (commands.def, JSON schemas, .bzl build manifests).\n\n# Audit Before Re-inventing\nSearch the codebase and recent commit history for pre-existing utility classes or decoupled architecture before writing custom helper classes from scratch.\n\n# No Blocking Calls on Main Looper Threads\nNever invoke blocking thread synchronizations (webLatch.await(500, ...), Future.get()) on main Android UI loops or single-threaded event dispatchers. \n\n# Thread Pool Shutdown Safety\nWhen modifying worker thread loops or shared queues, ensure emergency stop/shutdown signals and loop termination criteria remain intact so thread join operations never deadlock.\n\n# Exact Argument Structure\nPass arguments exactly as expected by the API (calculateRoute({ origin, destination, travelMode }) vs calculateRoute(origin, destination, travelMode)).\n\n# Local State Mutation Only\nDo not mutate private third-party DOM properties. Do not push incomplete draft objects directly into global array states; keep transient state within local component state.\n\n# Traceback Justification Required\nEvery code or configuration edit during debugging MUST be justified by an explicit error traceback, log line, or verified root cause. If the root cause is unknown, investigate further before mutating code.\n\n# Analyze Before Retrying\nNever repeat the exact same broken test or shell command line with duplicate/conflicting arguments without analyzing and resolving why the previous command failed.\n\n# Persevere on Log Extraction\nIf a log retrieval command fails, NEVER abandon log extraction to diagnose blindly. Immediately switch to alternative tools to inspect the actual failure traceback.\n\n# Verify Signatures & Prop Names\nCheck exact variable names, component prop keys, and method signatures before passing them. Prevent NullPointerException, AttributeError, KeyError, and ReferenceError crashes by explicitly verifying object initialization and non-null states before property dereferencing (layer._path, stat.owner()).\n\n# Dynamic Layout Math\nAvoid hardcoding static pixel offsets (+ 12) or arbitrary multipliers (pill_font_size * 2.0) when computing dynamic UI layout heights; calculate exact container bounds from wrapped elements.\n"
17329
- },
17330
- template__system_prompts__messaging: {
17331
- stringValue: "You are connected to a messaging system where you may receive messages from: {{- $subagent := .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled -}}\n{{- $message := .CascadeConfig.GetMessageConfig.GetEnabled -}}\n{{- if and $subagent $message }} agents, background tasks, user-queued messages\n{{- else if $subagent }} agents, background tasks\n{{- else if $message }} background tasks, user-queued messages\n{{- else }} background tasks\n{{- end }}.\n\n## Receiving Messages\n\nYou receive messages automatically at the start of each invocation. All messages are delivered in full directly into your context \u2014 no manual retrieval is needed.\n\n## Reactive Wakeup (No Polling Needed)\n\nThe system automatically resumes your execution when:\n{{- if .CascadeConfig.GetPlannerConfig.GetToolConfig.GetInvokeSubagent.GetEnabled }}\n- A message arrives from a subagent or peer agent\n{{- end }}\n- A **background task** completes or sends you a notification\n{{- if .CascadeConfig.GetMessageConfig.GetEnabled }}\n- A **user-queued message** is ready to be dequeued\n{{- end }}\n\nThis means you do **NOT** need to poll in a loop while waiting for messages or updates. After launching a task that runs in the background, you may continue other work or simply stop by calling no more tools. The system will notify you when there is something to process."
17332
- },
17333
17264
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17334
17265
  stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17335
17266
  },
17336
17267
  "cascade-include-ephemeral-message": {
17337
17268
  stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17269
+ },
17270
+ "task-details-suffix": {
17271
+ stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
17338
17272
  }
17339
17273
  }
17340
- }
17341
- },
17342
- "gemini-3-flash-agent": {
17343
- displayName: "Gemini 3.5 Flash (High)",
17344
- supportsImages: true,
17345
- supportsThinking: true,
17346
- thinkingBudget: -1,
17347
- minThinkingBudget: 32,
17348
- recommended: true,
17349
- maxTokens: 1048576,
17350
- maxOutputTokens: 65536,
17351
- quotaInfo: {
17352
- remainingFraction: 0.9783466,
17353
- resetTime: "2026-08-22T17:36:20Z"
17354
17274
  },
17355
- model: "MODEL_PLACEHOLDER_M84",
17356
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17357
17275
  modelProvider: "MODEL_PROVIDER_GOOGLE",
17358
- supportsVideo: true,
17359
- tagTitle: "Fast",
17360
- tagDescription: "Limited time",
17276
+ quotaInfo: {
17277
+ remainingFraction: 0.9765516,
17278
+ resetTime: "2026-08-23T17:21:50Z"
17279
+ },
17280
+ recommended: true,
17361
17281
  supportedMimeTypes: {
17362
- "audio/x-wav": true,
17363
- "audio/mp3": true,
17364
- "text/x-typescript": true,
17365
- "video/mp4": true,
17366
- "video/audio/s16le": true,
17367
- "audio/mpeg": true,
17282
+ "application/json": true,
17283
+ "application/pdf": true,
17284
+ "application/rtf": true,
17285
+ "application/x-ipynb+json": true,
17286
+ "application/x-javascript": true,
17368
17287
  "application/x-python-code": true,
17369
- "audio/mp4": true,
17370
- "text/markdown": true,
17288
+ "application/x-typescript": true,
17371
17289
  "audio/aac": true,
17372
- "audio/webm": true,
17373
- "image/webp": true,
17374
- "video/jpeg2000": true,
17375
- "text/x-python-script": true,
17376
- "audio/vnd.wave": true,
17377
- "application/x-javascript": true,
17290
+ "audio/flac": true,
17291
+ "audio/l16": true,
17292
+ "audio/m4a": true,
17293
+ "audio/mp3": true,
17294
+ "audio/mp4": true,
17295
+ "audio/mpeg": true,
17296
+ "audio/ogg": true,
17378
17297
  "audio/opus": true,
17298
+ "audio/vnd.wave": true,
17379
17299
  "audio/wav": true,
17380
- "text/xml": true,
17381
17300
  "audio/wave": true,
17382
- "application/pdf": true,
17383
- "audio/flac": true,
17384
- "text/plain": true,
17385
- "text/csv": true,
17386
- "application/json": true,
17387
- "text/css": true,
17388
- "video/text/timestamp": true,
17389
- "application/x-typescript": true,
17301
+ "audio/webm": true,
17302
+ "audio/webm;codecs=opus": true,
17303
+ "audio/x-wav": true,
17390
17304
  "image/heic": true,
17391
- "video/audio/wav": true,
17392
17305
  "image/heif": true,
17393
- "audio/webm;codecs=opus": true,
17306
+ "image/jpeg": true,
17394
17307
  "image/png": true,
17308
+ "image/webp": true,
17309
+ "text/css": true,
17310
+ "text/csv": true,
17395
17311
  "text/html": true,
17396
- "video/videoframe/jpeg2000": true,
17397
- "image/jpeg": true,
17398
- "audio/l16": true,
17399
- "application/rtf": true,
17400
- "audio/m4a": true,
17401
- "text/x-python": true,
17402
- "video/webm": true,
17403
- "application/x-ipynb+json": true,
17404
17312
  "text/javascript": true,
17313
+ "text/markdown": true,
17314
+ "text/plain": true,
17405
17315
  "text/rtf": true,
17406
- "audio/ogg": true
17316
+ "text/x-python": true,
17317
+ "text/x-python-script": true,
17318
+ "text/x-typescript": true,
17319
+ "text/xml": true,
17320
+ "video/audio/s16le": true,
17321
+ "video/audio/wav": true,
17322
+ "video/jpeg2000": true,
17323
+ "video/mp4": true,
17324
+ "video/text/timestamp": true,
17325
+ "video/videoframe/jpeg2000": true,
17326
+ "video/webm": true
17407
17327
  },
17328
+ supportsImages: true,
17329
+ supportsThinking: true,
17330
+ supportsVideo: true,
17331
+ tagDescription: "Limited time",
17332
+ tagTitle: "Fast",
17333
+ thinkingBudget: 1e3
17334
+ },
17335
+ "gemini-3.7-flash-medium": {
17336
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17337
+ displayName: "Gemini 3.7 Flash (Medium)",
17338
+ maxOutputTokens: 65536,
17339
+ maxTokens: 1048576,
17340
+ minThinkingBudget: 32,
17341
+ model: "MODEL_PLACEHOLDER_M299",
17408
17342
  modelExperiments: {
17409
17343
  experiments: {
17410
17344
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17411
17345
  stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17412
17346
  },
17413
- template__system_prompts__planning_mode_artifacts: {
17414
- 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"
17347
+ "cascade-include-ephemeral-message": {
17348
+ stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17349
+ },
17350
+ "task-details-suffix": {
17351
+ stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
17415
17352
  }
17416
17353
  }
17417
- }
17418
- },
17419
- "gpt-oss-120b-medium": {
17420
- displayName: "GPT-OSS 120B (Medium)",
17421
- supportsThinking: true,
17422
- thinkingBudget: 8192,
17423
- recommended: true,
17424
- maxTokens: 131072,
17425
- maxOutputTokens: 32768,
17354
+ },
17355
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
17426
17356
  quotaInfo: {
17427
- remainingFraction: 1,
17428
- resetTime: "2026-08-22T17:39:05Z"
17357
+ remainingFraction: 0.9765516,
17358
+ resetTime: "2026-08-23T17:21:50Z"
17429
17359
  },
17430
- model: "MODEL_OPENAI_GPT_OSS_120B_MEDIUM",
17431
- apiProvider: "API_PROVIDER_OPENAI_VERTEX",
17432
- modelProvider: "MODEL_PROVIDER_OPENAI",
17360
+ recommended: true,
17361
+ supportedMimeTypes: {
17362
+ "application/json": true,
17363
+ "application/pdf": true,
17364
+ "application/rtf": true,
17365
+ "application/x-ipynb+json": true,
17366
+ "application/x-javascript": true,
17367
+ "application/x-python-code": true,
17368
+ "application/x-typescript": true,
17369
+ "audio/aac": true,
17370
+ "audio/flac": true,
17371
+ "audio/l16": true,
17372
+ "audio/m4a": true,
17373
+ "audio/mp3": true,
17374
+ "audio/mp4": true,
17375
+ "audio/mpeg": true,
17376
+ "audio/ogg": true,
17377
+ "audio/opus": true,
17378
+ "audio/vnd.wave": true,
17379
+ "audio/wav": true,
17380
+ "audio/wave": true,
17381
+ "audio/webm": true,
17382
+ "audio/webm;codecs=opus": true,
17383
+ "audio/x-wav": true,
17384
+ "image/heic": true,
17385
+ "image/heif": true,
17386
+ "image/jpeg": true,
17387
+ "image/png": true,
17388
+ "image/webp": true,
17389
+ "text/css": true,
17390
+ "text/csv": true,
17391
+ "text/html": true,
17392
+ "text/javascript": true,
17393
+ "text/markdown": true,
17394
+ "text/plain": true,
17395
+ "text/rtf": true,
17396
+ "text/x-python": true,
17397
+ "text/x-python-script": true,
17398
+ "text/x-typescript": true,
17399
+ "text/xml": true,
17400
+ "video/audio/s16le": true,
17401
+ "video/audio/wav": true,
17402
+ "video/jpeg2000": true,
17403
+ "video/mp4": true,
17404
+ "video/text/timestamp": true,
17405
+ "video/videoframe/jpeg2000": true,
17406
+ "video/webm": true
17407
+ },
17408
+ supportsImages: true,
17409
+ supportsThinking: true,
17410
+ supportsVideo: true,
17411
+ tagDescription: "Limited time",
17412
+ tagTitle: "Fast",
17413
+ thinkingBudget: 4e3
17414
+ },
17415
+ "gemini-3.7-flash-tiered": {
17416
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17417
+ maxOutputTokens: 65536,
17418
+ maxTokens: 1048576,
17419
+ minThinkingBudget: 32,
17420
+ model: "MODEL_PLACEHOLDER_M301",
17433
17421
  modelExperiments: {
17434
17422
  experiments: {
17435
17423
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17436
- 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 "session_summary_prompt_override": ""\n}'
17424
+ stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17425
+ },
17426
+ "cascade-include-ephemeral-message": {
17427
+ stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17428
+ },
17429
+ "task-details-suffix": {
17430
+ stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
17437
17431
  }
17438
17432
  }
17439
17433
  },
17440
- vertexModelId: "openai/gpt-oss-120b-maas"
17441
- },
17442
- chat_23310: {
17443
- maxTokens: 32768,
17444
- quotaInfo: {
17445
- remainingFraction: 1
17446
- },
17447
- model: "MODEL_CHAT_23310",
17448
- apiProvider: "API_PROVIDER_INTERNAL",
17449
17434
  modelProvider: "MODEL_PROVIDER_GOOGLE",
17450
- supportsCumulativeContext: true,
17451
- supportsEstimateTokenCounter: true,
17452
- isInternal: true,
17453
- promptTemplaterType: "PROMPT_TEMPLATER_TYPE_CHATML",
17454
- toolFormatterType: "TOOL_FORMATTER_TYPE_XML",
17455
- requiresLeadInGeneration: true
17456
- },
17457
- "gemini-3.5-flash-low": {
17458
- displayName: "Gemini 3.5 Flash (Medium)",
17459
- supportsImages: true,
17460
- supportsThinking: true,
17461
- thinkingBudget: 4e3,
17462
- minThinkingBudget: 32,
17463
- recommended: true,
17464
- maxTokens: 1048576,
17465
- maxOutputTokens: 65536,
17466
17435
  quotaInfo: {
17467
- remainingFraction: 0.9783466,
17468
- resetTime: "2026-08-22T17:36:20Z"
17436
+ remainingFraction: 0.9765516,
17437
+ resetTime: "2026-08-23T17:21:50Z"
17469
17438
  },
17470
- model: "MODEL_PLACEHOLDER_M20",
17471
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17472
- modelProvider: "MODEL_PROVIDER_GOOGLE",
17473
- supportsVideo: true,
17474
- tagTitle: "Fast",
17475
- tagDescription: "Limited time",
17439
+ recommended: true,
17476
17440
  supportedMimeTypes: {
17441
+ "application/json": true,
17477
17442
  "application/pdf": true,
17478
- "audio/wav": true,
17479
- "image/png": true,
17480
- "audio/mp3": true,
17443
+ "application/rtf": true,
17444
+ "application/x-ipynb+json": true,
17445
+ "application/x-javascript": true,
17446
+ "application/x-python-code": true,
17447
+ "application/x-typescript": true,
17448
+ "audio/aac": true,
17481
17449
  "audio/flac": true,
17450
+ "audio/l16": true,
17482
17451
  "audio/m4a": true,
17483
- "audio/x-wav": true,
17452
+ "audio/mp3": true,
17453
+ "audio/mp4": true,
17454
+ "audio/mpeg": true,
17455
+ "audio/ogg": true,
17484
17456
  "audio/opus": true,
17485
- "video/jpeg2000": true,
17486
- "text/csv": true,
17487
- "text/rtf": true,
17488
- "audio/aac": true,
17489
- "video/audio/wav": true,
17490
- "image/heif": true,
17491
- "video/webm": true,
17492
- "application/x-typescript": true,
17493
- "text/javascript": true,
17494
- "text/x-typescript": true,
17457
+ "audio/vnd.wave": true,
17458
+ "audio/wav": true,
17459
+ "audio/wave": true,
17495
17460
  "audio/webm": true,
17496
- "audio/l16": true,
17497
- "video/text/timestamp": true,
17498
- "video/audio/s16le": true,
17499
- "application/rtf": true,
17500
- "video/mp4": true,
17501
- "image/jpeg": true,
17502
17461
  "audio/webm;codecs=opus": true,
17503
- "application/x-ipynb+json": true,
17504
- "audio/ogg": true,
17505
- "text/x-python": true,
17462
+ "audio/x-wav": true,
17506
17463
  "image/heic": true,
17507
- "text/markdown": true,
17508
- "application/x-javascript": true,
17464
+ "image/heif": true,
17465
+ "image/jpeg": true,
17466
+ "image/png": true,
17467
+ "image/webp": true,
17509
17468
  "text/css": true,
17469
+ "text/csv": true,
17470
+ "text/html": true,
17471
+ "text/javascript": true,
17472
+ "text/markdown": true,
17473
+ "text/plain": true,
17474
+ "text/rtf": true,
17475
+ "text/x-python": true,
17476
+ "text/x-python-script": true,
17477
+ "text/x-typescript": true,
17510
17478
  "text/xml": true,
17511
- "application/json": true,
17512
- "audio/mp4": true,
17513
- "application/x-python-code": true,
17514
- "audio/wave": true,
17479
+ "video/audio/s16le": true,
17480
+ "video/audio/wav": true,
17481
+ "video/jpeg2000": true,
17482
+ "video/mp4": true,
17483
+ "video/text/timestamp": true,
17515
17484
  "video/videoframe/jpeg2000": true,
17516
- "audio/vnd.wave": true,
17517
- "audio/mpeg": true,
17518
- "image/webp": true,
17519
- "text/x-python-script": true,
17520
- "text/plain": true,
17521
- "text/html": true
17485
+ "video/webm": true
17522
17486
  },
17487
+ supportsImages: true,
17488
+ supportsThinking: true,
17489
+ supportsVideo: true,
17490
+ thinkingBudget: -1
17491
+ },
17492
+ "gemini-pro-agent": {
17493
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17494
+ displayName: "Gemini 3.1 Pro (High)",
17495
+ maxOutputTokens: 65535,
17496
+ maxTokens: 1048576,
17497
+ minThinkingBudget: 128,
17498
+ model: "MODEL_PLACEHOLDER_M16",
17523
17499
  modelExperiments: {
17524
17500
  experiments: {
17525
17501
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17526
- stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17502
+ 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 "session_summary_prompt_override": ""\n}'
17503
+ },
17504
+ "cascade-include-ephemeral-message": {
17505
+ stringValue: '{\n "enabled": true,\n "disabledHeuristics": ["running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17506
+ },
17507
+ template__system_prompts__communication_style: {
17508
+ 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: ...'."
17527
17509
  },
17528
17510
  template__system_prompts__planning_mode_artifacts: {
17529
17511
  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"
17530
17512
  }
17531
17513
  }
17532
- }
17533
- },
17534
- "gemini-3.7-flash-low": {
17535
- displayName: "Gemini 3.7 Flash (Low)",
17536
- supportsImages: true,
17537
- supportsThinking: true,
17538
- thinkingBudget: 1e3,
17539
- minThinkingBudget: 32,
17540
- recommended: true,
17541
- maxTokens: 1048576,
17542
- maxOutputTokens: 65536,
17543
- quotaInfo: {
17544
- remainingFraction: 0.9783466,
17545
- resetTime: "2026-08-22T17:36:20Z"
17546
17514
  },
17547
- model: "MODEL_PLACEHOLDER_M300",
17548
- apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17549
17515
  modelProvider: "MODEL_PROVIDER_GOOGLE",
17550
- supportsVideo: true,
17551
- tagTitle: "Fast",
17552
- tagDescription: "Limited time",
17516
+ quotaInfo: {
17517
+ remainingFraction: 0.9765516,
17518
+ resetTime: "2026-08-23T17:21:50Z"
17519
+ },
17520
+ recommended: true,
17553
17521
  supportedMimeTypes: {
17554
- "image/heic": true,
17555
- "image/jpeg": true,
17556
- "audio/flac": true,
17557
- "audio/aac": true,
17558
- "application/x-typescript": true,
17522
+ "application/json": true,
17523
+ "application/pdf": true,
17524
+ "application/rtf": true,
17525
+ "application/x-ipynb+json": true,
17559
17526
  "application/x-javascript": true,
17527
+ "application/x-python-code": true,
17528
+ "application/x-typescript": true,
17529
+ "audio/aac": true,
17530
+ "audio/flac": true,
17531
+ "audio/l16": true,
17532
+ "audio/m4a": true,
17560
17533
  "audio/mp3": true,
17534
+ "audio/mp4": true,
17535
+ "audio/mpeg": true,
17536
+ "audio/ogg": true,
17537
+ "audio/opus": true,
17538
+ "audio/vnd.wave": true,
17561
17539
  "audio/wav": true,
17562
- "application/x-python-code": true,
17563
- "text/markdown": true,
17564
17540
  "audio/wave": true,
17565
- "text/x-python-script": true,
17566
- "text/xml": true,
17567
- "application/json": true,
17541
+ "audio/webm": true,
17542
+ "audio/webm;codecs=opus": true,
17568
17543
  "audio/x-wav": true,
17569
- "audio/l16": true,
17544
+ "image/heic": true,
17545
+ "image/heif": true,
17546
+ "image/jpeg": true,
17547
+ "image/png": true,
17548
+ "image/webp": true,
17549
+ "text/css": true,
17550
+ "text/csv": true,
17551
+ "text/html": true,
17570
17552
  "text/javascript": true,
17553
+ "text/markdown": true,
17554
+ "text/plain": true,
17555
+ "text/rtf": true,
17556
+ "text/x-python": true,
17557
+ "text/x-python-script": true,
17558
+ "text/x-typescript": true,
17559
+ "text/xml": true,
17571
17560
  "video/audio/s16le": true,
17572
17561
  "video/audio/wav": true,
17573
- "audio/ogg": true,
17574
- "application/rtf": true,
17575
- "text/css": true,
17576
- "video/mp4": true,
17577
- "audio/mpeg": true,
17578
- "video/videoframe/jpeg2000": true,
17579
- "audio/webm;codecs=opus": true,
17580
- "text/rtf": true,
17581
- "image/heif": true,
17582
- "application/pdf": true,
17583
17562
  "video/jpeg2000": true,
17584
- "audio/mp4": true,
17585
- "image/webp": true,
17586
- "text/x-python": true,
17587
- "audio/vnd.wave": true,
17563
+ "video/mp4": true,
17588
17564
  "video/text/timestamp": true,
17589
- "video/webm": true,
17590
- "text/plain": true,
17591
- "text/x-typescript": true,
17592
- "text/html": true,
17593
- "text/csv": true,
17594
- "application/x-ipynb+json": true,
17595
- "image/png": true,
17596
- "audio/webm": true,
17597
- "audio/opus": true,
17598
- "audio/m4a": true
17565
+ "video/videoframe/jpeg2000": true,
17566
+ "video/webm": true
17599
17567
  },
17568
+ supportsImages: true,
17569
+ supportsThinking: true,
17570
+ supportsVideo: true,
17571
+ thinkingBudget: 10001
17572
+ },
17573
+ "gpt-oss-120b-medium": {
17574
+ apiProvider: "API_PROVIDER_OPENAI_VERTEX",
17575
+ displayName: "GPT-OSS 120B (Medium)",
17576
+ maxOutputTokens: 32768,
17577
+ maxTokens: 131072,
17578
+ model: "MODEL_OPENAI_GPT_OSS_120B_MEDIUM",
17600
17579
  modelExperiments: {
17601
17580
  experiments: {
17602
17581
  CASCADE_USE_EXPERIMENT_CHECKPOINTER: {
17603
- stringValue: '{\n "strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",\n "max_token_limit": "256000",\n "token_threshold": "140000",\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": 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 "session_summary_prompt_override": ""\n}'
17604
- },
17605
- "cascade-include-ephemeral-message": {
17606
- stringValue: '{\n "enabled": false,\n "disabledHeuristics": ["planning_mode", "bash_command_reminder", "running_tasks_reminder"],\n "staticMessages": [],\n "useAllowlist": false,\n "enabledHeuristics": []\n}'
17607
- },
17608
- "task-details-suffix": {
17609
- stringValue: "\nYOU MUST TAKE ONE OF THE FOLLOWING TWO ACTIONS: A) either proceed to other relevant work (if any) or, B) simply update the user with a short message (that you have launched the command and will wait for it to finish) and end the turn.\n DO NOTHING ELSE."
17582
+ 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 "session_summary_prompt_override": ""\n}'
17610
17583
  }
17611
17584
  }
17612
- }
17585
+ },
17586
+ modelProvider: "MODEL_PROVIDER_OPENAI",
17587
+ quotaInfo: {
17588
+ remainingFraction: 1,
17589
+ resetTime: "2026-08-23T17:29:11Z"
17590
+ },
17591
+ recommended: true,
17592
+ supportsThinking: true,
17593
+ thinkingBudget: 8192,
17594
+ vertexModelId: "openai/gpt-oss-120b-maas"
17613
17595
  },
17614
- "gemini-3.1-flash-image": {
17615
- displayName: "Gemini 3.1 Flash Image",
17596
+ tab_flash_lite_preview: {
17597
+ apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17598
+ maxOutputTokens: 4096,
17599
+ maxTokens: 16384,
17600
+ model: "MODEL_PLACEHOLDER_M19",
17601
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
17616
17602
  quotaInfo: {
17617
- remainingFraction: 0.9783466,
17618
- resetTime: "2026-08-22T17:36:20Z"
17603
+ remainingFraction: 1
17619
17604
  },
17620
- model: "MODEL_PLACEHOLDER_M21",
17605
+ requiresLeadInGeneration: true,
17606
+ supportsCumulativeContext: true,
17607
+ supportsEstimateTokenCounter: true,
17608
+ toolFormatterType: "TOOL_FORMATTER_TYPE_XML"
17609
+ },
17610
+ tab_jump_flash_lite_preview: {
17611
+ addCursorToFindReplaceTarget: true,
17621
17612
  apiProvider: "API_PROVIDER_GOOGLE_GEMINI",
17622
- modelProvider: "MODEL_PROVIDER_GOOGLE"
17613
+ maxOutputTokens: 4096,
17614
+ maxTokens: 16384,
17615
+ model: "MODEL_PLACEHOLDER_M28",
17616
+ modelProvider: "MODEL_PROVIDER_GOOGLE",
17617
+ quotaInfo: {
17618
+ remainingFraction: 1
17619
+ },
17620
+ requiresLeadInGeneration: true,
17621
+ requiresNoXmlToolExamples: true,
17622
+ supportsCumulativeContext: true,
17623
+ supportsEstimateTokenCounter: true,
17624
+ tabJumpPrintLineRange: true,
17625
+ toolFormatterType: "TOOL_FORMATTER_TYPE_XML"
17623
17626
  }
17624
17627
  },
17625
- defaultAgentModelId: "gemini-3.7-flash-high",
17626
- agentModelSorts: [
17627
- {
17628
- displayName: "Recommended",
17629
- groups: [
17630
- {
17631
- modelIds: [
17632
- "gemini-3.7-flash-high",
17633
- "gemini-3.7-flash-medium",
17634
- "gemini-3.7-flash-low",
17635
- "gemini-3.6-flash-high",
17636
- "gemini-3.6-flash-medium",
17637
- "gemini-3.6-flash-low",
17638
- "gemini-3-flash-agent",
17639
- "gemini-3.5-flash-low",
17640
- "gemini-3.5-flash-extra-low",
17641
- "gemini-pro-agent",
17642
- "gemini-3.1-pro-low",
17643
- "claude-sonnet-4-6",
17644
- "claude-opus-4-6-thinking",
17645
- "gpt-oss-120b-medium"
17646
- ]
17647
- }
17648
- ]
17649
- }
17650
- ],
17651
- commandModelIds: [
17652
- "gemini-3-flash"
17628
+ mqueryModelIds: [
17629
+ "gemini-3.1-flash-lite"
17653
17630
  ],
17654
17631
  tabModelIds: [
17655
17632
  "chat_20706",
17656
17633
  "chat_23310"
17657
17634
  ],
17658
- imageGenerationModelIds: [
17659
- "gemini-3.1-flash-image"
17660
- ],
17661
- mqueryModelIds: [
17662
- "gemini-3.1-flash-lite"
17663
- ],
17664
- webSearchModelIds: [
17665
- "gemini-3.1-flash-lite"
17666
- ],
17667
- deprecatedModelIds: {
17668
- "gemini-3.1-pro-high": {
17669
- newModelId: "gemini-pro-agent",
17670
- oldModelEnum: "MODEL_PLACEHOLDER_M37",
17671
- newModelEnum: "MODEL_PLACEHOLDER_M16"
17672
- }
17673
- },
17674
- commitMessageModelIds: [
17675
- "gemini-3.1-flash-lite"
17676
- ],
17677
- audioTranscriptionModelIds: [
17678
- "models/proactive-observer-v10"
17679
- ],
17680
- experimentIds: [
17681
- 106140402,
17682
- 105979552,
17683
- 105979574,
17684
- 106015333,
17685
- 106568772,
17686
- 105867471,
17687
- 106548982,
17688
- 106123599,
17689
- 106076629,
17690
- 106121401,
17691
- 106100625,
17692
- 106143956,
17693
- 105879567,
17694
- 105856899,
17695
- 106312323,
17696
- 106064030,
17697
- 106567313,
17698
- 106396310,
17699
- 106470335,
17700
- 105757908,
17701
- 106106760,
17702
- 106021688,
17703
- 105887299,
17704
- 106428370,
17705
- 106283618,
17706
- 106278607,
17707
- 106538964,
17708
- 106512082,
17709
- 106380926,
17710
- 106281951,
17711
- 106264532,
17712
- 106222835,
17713
- 106044947,
17714
- 106032303,
17715
- 106228452,
17716
- 106121607,
17717
- 105979531,
17718
- 105979553,
17719
- 106015328,
17720
- 106568390,
17721
- 105867469,
17722
- 106123597,
17723
- 106121399,
17724
- 106100654,
17725
- 106064028,
17726
- 106567309,
17727
- 106396304,
17728
- 106470331,
17729
- 105906495,
17730
- 106283614,
17731
- 106038164,
17732
- 106032301,
17733
- 106121604
17734
- ],
17735
17635
  tieredModelIds: {
17736
- flashLite: [
17737
- "gemini-3.1-flash-lite"
17738
- ],
17739
17636
  flash: [
17740
17637
  "gemini-3.7-flash-tiered"
17741
17638
  ],
17639
+ flashLite: [
17640
+ "gemini-3.1-flash-lite"
17641
+ ],
17742
17642
  pro: [
17743
17643
  "gemini-3.1-pro-low"
17744
17644
  ]
17745
- }
17645
+ },
17646
+ webSearchModelIds: [
17647
+ "gemini-3.1-flash-lite"
17648
+ ]
17746
17649
  };
17747
17650
 
17748
17651
  // src/sdk/request-helpers/types.ts
@@ -19038,20 +18941,20 @@ function transformStreamingPayloadStream(stream, sessionId, chatLogger) {
19038
18941
  }
19039
18942
 
19040
18943
  // src/sdk/chat-logger.ts
19041
- import { createWriteStream, existsSync as existsSync6, mkdirSync as mkdirSync4 } from "fs";
19042
- import { join as join6 } from "path";
18944
+ import { createWriteStream, existsSync as existsSync5, mkdirSync as mkdirSync4 } from "fs";
18945
+ import { join as join5 } from "path";
19043
18946
  import { cwd } from "process";
19044
18947
  function createChatLogger() {
19045
18948
  if (process.env.AGY_LOG !== "1") {
19046
18949
  return null;
19047
18950
  }
19048
18951
  try {
19049
- const logDir = join6(cwd(), "agy_chat_log");
19050
- if (!existsSync6(logDir)) {
18952
+ const logDir = join5(cwd(), "agy_chat_log");
18953
+ if (!existsSync5(logDir)) {
19051
18954
  mkdirSync4(logDir, { recursive: true });
19052
18955
  }
19053
18956
  const timestamp = Date.now();
19054
- const logFile = join6(logDir, `${timestamp}.log`);
18957
+ const logFile = join5(logDir, `${timestamp}.log`);
19055
18958
  const stream = createWriteStream(logFile, { flags: "w", encoding: "utf8" });
19056
18959
  return new ChatLoggerImpl(stream);
19057
18960
  } catch (error45) {