@machina.ai/cell-cli-core 1.4.0-rc2 → 1.5.5-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +2 -2
  5. package/dist/src/code_assist/codeAssist.js +1 -1
  6. package/dist/src/code_assist/codeAssist.js.map +1 -1
  7. package/dist/src/code_assist/oauth-credential-storage.d.ts +27 -0
  8. package/dist/src/code_assist/oauth-credential-storage.js +112 -0
  9. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
  10. package/dist/src/code_assist/oauth-credential-storage.test.js +134 -0
  11. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
  12. package/dist/src/code_assist/server.d.ts +1 -1
  13. package/dist/src/code_assist/server.js +24 -1
  14. package/dist/src/code_assist/server.js.map +1 -1
  15. package/dist/src/code_assist/server.test.js +25 -0
  16. package/dist/src/code_assist/server.test.js.map +1 -1
  17. package/dist/src/code_assist/types.d.ts +17 -2
  18. package/dist/src/config/config.d.ts +25 -4
  19. package/dist/src/config/config.js +84 -29
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +131 -121
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/storage.d.ts +2 -0
  24. package/dist/src/config/storage.js +6 -1
  25. package/dist/src/config/storage.js.map +1 -1
  26. package/dist/src/config/storage.test.js +4 -0
  27. package/dist/src/config/storage.test.js.map +1 -1
  28. package/dist/src/core/baseLlmClient.d.ts +45 -0
  29. package/dist/src/core/baseLlmClient.js +88 -0
  30. package/dist/src/core/baseLlmClient.js.map +1 -0
  31. package/dist/src/core/baseLlmClient.test.d.ts +6 -0
  32. package/dist/src/core/baseLlmClient.test.js +190 -0
  33. package/dist/src/core/baseLlmClient.test.js.map +1 -0
  34. package/dist/src/core/client.d.ts +4 -15
  35. package/dist/src/core/client.js +56 -100
  36. package/dist/src/core/client.js.map +1 -1
  37. package/dist/src/core/client.test.js +101 -321
  38. package/dist/src/core/client.test.js.map +1 -1
  39. package/dist/src/core/contentGenerator.test.js +1 -0
  40. package/dist/src/core/contentGenerator.test.js.map +1 -1
  41. package/dist/src/core/coreToolScheduler.d.ts +4 -0
  42. package/dist/src/core/coreToolScheduler.js +66 -2
  43. package/dist/src/core/coreToolScheduler.js.map +1 -1
  44. package/dist/src/core/coreToolScheduler.test.js +172 -5
  45. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  46. package/dist/src/core/geminiChat.d.ts +2 -8
  47. package/dist/src/core/geminiChat.js +42 -46
  48. package/dist/src/core/geminiChat.js.map +1 -1
  49. package/dist/src/core/geminiChat.test.js +207 -48
  50. package/dist/src/core/geminiChat.test.js.map +1 -1
  51. package/dist/src/core/loggingContentGenerator.js +3 -6
  52. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  53. package/dist/src/core/nonInteractiveToolExecutor.test.js +8 -1
  54. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  55. package/dist/src/core/prompts.d.ts +5 -0
  56. package/dist/src/core/prompts.js +64 -43
  57. package/dist/src/core/prompts.js.map +1 -1
  58. package/dist/src/core/prompts.test.js +146 -17
  59. package/dist/src/core/prompts.test.js.map +1 -1
  60. package/dist/src/core/subagent.js +1 -3
  61. package/dist/src/core/subagent.js.map +1 -1
  62. package/dist/src/core/subagent.test.js +3 -5
  63. package/dist/src/core/subagent.test.js.map +1 -1
  64. package/dist/src/core/turn.d.ts +1 -0
  65. package/dist/src/core/turn.js.map +1 -1
  66. package/dist/src/fallback/handler.d.ts +7 -0
  67. package/dist/src/fallback/handler.js +51 -0
  68. package/dist/src/fallback/handler.js.map +1 -0
  69. package/dist/src/fallback/handler.test.d.ts +6 -0
  70. package/dist/src/fallback/handler.test.js +130 -0
  71. package/dist/src/fallback/handler.test.js.map +1 -0
  72. package/dist/src/fallback/types.d.ts +14 -0
  73. package/dist/src/fallback/types.js +7 -0
  74. package/dist/src/fallback/types.js.map +1 -0
  75. package/dist/src/generated/git-commit.d.ts +2 -2
  76. package/dist/src/generated/git-commit.js +2 -2
  77. package/dist/src/generated/git-commit.js.map +1 -1
  78. package/dist/src/ide/constants.d.ts +2 -0
  79. package/dist/src/ide/constants.js +2 -0
  80. package/dist/src/ide/constants.js.map +1 -1
  81. package/dist/src/ide/ide-client.d.ts +1 -1
  82. package/dist/src/ide/ide-client.js +61 -2
  83. package/dist/src/ide/ide-client.js.map +1 -1
  84. package/dist/src/ide/ide-client.test.js +165 -0
  85. package/dist/src/ide/ide-client.test.js.map +1 -1
  86. package/dist/src/ide/ideContext.d.ts +1 -264
  87. package/dist/src/ide/ideContext.js +42 -31
  88. package/dist/src/ide/ideContext.js.map +1 -1
  89. package/dist/src/ide/ideContext.test.js +154 -24
  90. package/dist/src/ide/ideContext.test.js.map +1 -1
  91. package/dist/src/ide/process-utils.js +8 -1
  92. package/dist/src/ide/process-utils.js.map +1 -1
  93. package/dist/src/ide/types.d.ts +345 -0
  94. package/dist/src/ide/types.js +65 -0
  95. package/dist/src/ide/types.js.map +1 -0
  96. package/dist/src/index.d.ts +3 -0
  97. package/dist/src/index.js +3 -0
  98. package/dist/src/index.js.map +1 -1
  99. package/dist/src/mcp/oauth-provider.js +3 -3
  100. package/dist/src/mcp/oauth-provider.js.map +1 -1
  101. package/dist/src/mcp/oauth-provider.test.js +12 -12
  102. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  103. package/dist/src/mcp/oauth-token-storage.d.ts +8 -6
  104. package/dist/src/mcp/oauth-token-storage.js +24 -17
  105. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  106. package/dist/src/mcp/oauth-token-storage.test.js +18 -18
  107. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  108. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -0
  109. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +7 -0
  110. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  111. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +20 -1
  112. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  113. package/dist/src/telemetry/constants.d.ts +1 -0
  114. package/dist/src/telemetry/constants.js +1 -0
  115. package/dist/src/telemetry/constants.js.map +1 -1
  116. package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
  117. package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
  118. package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
  119. package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +6 -0
  120. package/dist/src/telemetry/high-water-mark-tracker.test.js +152 -0
  121. package/dist/src/telemetry/high-water-mark-tracker.test.js.map +1 -0
  122. package/dist/src/telemetry/index.d.ts +2 -0
  123. package/dist/src/telemetry/index.js +2 -0
  124. package/dist/src/telemetry/index.js.map +1 -1
  125. package/dist/src/telemetry/loggers.d.ts +2 -1
  126. package/dist/src/telemetry/loggers.js +18 -1
  127. package/dist/src/telemetry/loggers.js.map +1 -1
  128. package/dist/src/telemetry/loggers.test.js +64 -5
  129. package/dist/src/telemetry/loggers.test.js.map +1 -1
  130. package/dist/src/telemetry/rate-limiter.d.ts +48 -0
  131. package/dist/src/telemetry/rate-limiter.js +100 -0
  132. package/dist/src/telemetry/rate-limiter.js.map +1 -0
  133. package/dist/src/telemetry/rate-limiter.test.d.ts +6 -0
  134. package/dist/src/telemetry/rate-limiter.test.js +207 -0
  135. package/dist/src/telemetry/rate-limiter.test.js.map +1 -0
  136. package/dist/src/telemetry/types.d.ts +6 -0
  137. package/dist/src/telemetry/types.js +14 -0
  138. package/dist/src/telemetry/types.js.map +1 -1
  139. package/dist/src/tools/mcp-client-manager.js +5 -21
  140. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  141. package/dist/src/tools/mcp-client.js +5 -5
  142. package/dist/src/tools/mcp-client.js.map +1 -1
  143. package/dist/src/tools/read-file.js +7 -2
  144. package/dist/src/tools/read-file.js.map +1 -1
  145. package/dist/src/tools/read-file.test.js +29 -0
  146. package/dist/src/tools/read-file.test.js.map +1 -1
  147. package/dist/src/tools/ripGrep.d.ts +4 -0
  148. package/dist/src/tools/ripGrep.js +17 -2
  149. package/dist/src/tools/ripGrep.js.map +1 -1
  150. package/dist/src/tools/ripGrep.test.js +57 -5
  151. package/dist/src/tools/ripGrep.test.js.map +1 -1
  152. package/dist/src/tools/smart-edit.js +1 -1
  153. package/dist/src/tools/smart-edit.js.map +1 -1
  154. package/dist/src/tools/smart-edit.test.js +5 -0
  155. package/dist/src/tools/smart-edit.test.js.map +1 -1
  156. package/dist/src/utils/fileUtils.d.ts +1 -0
  157. package/dist/src/utils/fileUtils.js +10 -0
  158. package/dist/src/utils/fileUtils.js.map +1 -1
  159. package/dist/src/utils/fileUtils.test.js +17 -1
  160. package/dist/src/utils/fileUtils.test.js.map +1 -1
  161. package/dist/src/utils/filesearch/crawler.test.js +1 -1
  162. package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
  163. package/dist/src/utils/filesearch/fileSearch.test.js +1 -1
  164. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  165. package/dist/src/utils/filesearch/ignore.test.js +1 -1
  166. package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
  167. package/dist/src/utils/flashFallback.test.d.ts +6 -0
  168. package/dist/src/utils/{flashFallback.integration.test.js → flashFallback.test.js} +31 -27
  169. package/dist/src/utils/flashFallback.test.js.map +1 -0
  170. package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
  171. package/dist/src/utils/gitIgnoreParser.js +33 -24
  172. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  173. package/dist/src/utils/llm-edit-fixer.d.ts +4 -3
  174. package/dist/src/utils/llm-edit-fixer.js +19 -10
  175. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  176. package/dist/src/utils/llm-edit-fixer.test.d.ts +6 -0
  177. package/dist/src/utils/llm-edit-fixer.test.js +105 -0
  178. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
  179. package/dist/src/utils/nextSpeakerChecker.test.js +13 -42
  180. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  181. package/dist/src/utils/promptIdContext.d.ts +7 -0
  182. package/dist/src/utils/promptIdContext.js +8 -0
  183. package/dist/src/utils/promptIdContext.js.map +1 -0
  184. package/dist/tsconfig.tsbuildinfo +1 -1
  185. package/package.json +3 -2
  186. package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
  187. /package/dist/src/{utils/flashFallback.integration.test.d.ts → code_assist/oauth-credential-storage.test.d.ts} +0 -0
package/dist/index.d.ts CHANGED
@@ -6,6 +6,8 @@
6
6
  export * from './src/index.js';
7
7
  export { Storage } from './src/config/storage.js';
8
8
  export { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_FLASH_LITE_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, } from './src/config/models.js';
9
+ export { DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES, DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD, } from './src/config/config.js';
10
+ export { detectIdeFromEnv, getIdeInfo } from './src/ide/detect-ide.js';
9
11
  export { logIdeConnection } from './src/telemetry/loggers.js';
10
12
  export { IdeConnectionEvent, IdeConnectionType, ExtensionInstallEvent, } from './src/telemetry/types.js';
11
13
  export { getIdeTrust } from './src/utils/ide-trust.js';
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@
6
6
  export * from './src/index.js';
7
7
  export { Storage } from './src/config/storage.js';
8
8
  export { DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_FLASH_LITE_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, } from './src/config/models.js';
9
+ export { DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES, DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD, } from './src/config/config.js';
10
+ export { detectIdeFromEnv, getIdeInfo } from './src/ide/detect-ide.js';
9
11
  export { logIdeConnection } from './src/telemetry/loggers.js';
10
12
  export { IdeConnectionEvent, IdeConnectionType, ExtensionInstallEvent, } from './src/telemetry/types.js';
11
13
  export { getIdeTrust } from './src/utils/ide-trust.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kCAAkC,EAClC,sCAAsC,GACvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@machina.ai/cell-cli-core",
3
- "version": "1.4.0-rc2",
3
+ "version": "1.5.5-rc1",
4
4
  "description": "Cell CLI Core",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "dependencies": {
15
15
  "@google/genai": "1.16.0",
16
- "@lvce-editor/ripgrep": "^1.6.0",
16
+ "@joshua.litt/get-ripgrep": "^0.0.2",
17
17
  "@modelcontextprotocol/sdk": "^1.11.0",
18
18
  "@opentelemetry/api": "^1.9.0",
19
19
  "@opentelemetry/exporter-logs-otlp-grpc": "^0.203.0",
@@ -18,7 +18,7 @@ export async function createCodeAssistContentGenerator(httpOptions, authType, co
18
18
  throw new Error(`Unsupported authType: ${authType}`);
19
19
  }
20
20
  export function getCodeAssistServer(config) {
21
- let server = config.getGeminiClient().getContentGenerator();
21
+ let server = config.getContentGenerator();
22
22
  // Unwrap LoggingContentGenerator if present
23
23
  if (server instanceof LoggingContentGenerator) {
24
24
  server = server.getWrapped();
@@ -1 +1 @@
1
- {"version":3,"file":"codeAssist.js","sourceRoot":"","sources":["../../../src/code_assist/codeAssist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,WAAwB,EACxB,QAAkB,EAClB,MAAc,EACd,SAAkB;IAElB,IACE,QAAQ,KAAK,QAAQ,CAAC,iBAAiB;QACvC,QAAQ,KAAK,QAAQ,CAAC,WAAW,EACjC,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,gBAAgB,CACzB,UAAU,EACV,QAAQ,CAAC,SAAS,EAClB,WAAW,EACX,SAAS,EACT,QAAQ,CAAC,QAAQ,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc;IAEd,IAAI,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAE5D,4CAA4C;IAC5C,IAAI,MAAM,YAAY,uBAAuB,EAAE,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"codeAssist.js","sourceRoot":"","sources":["../../../src/code_assist/codeAssist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,WAAwB,EACxB,QAAkB,EAClB,MAAc,EACd,SAAkB;IAElB,IACE,QAAQ,KAAK,QAAQ,CAAC,iBAAiB;QACvC,QAAQ,KAAK,QAAQ,CAAC,WAAW,EACjC,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,IAAI,gBAAgB,CACzB,UAAU,EACV,QAAQ,CAAC,SAAS,EAClB,WAAW,EACX,SAAS,EACT,QAAQ,CAAC,QAAQ,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc;IAEd,IAAI,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAE1C,4CAA4C;IAC5C,IAAI,MAAM,YAAY,uBAAuB,EAAE,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type Credentials } from 'google-auth-library';
7
+ import { HybridTokenStorage } from '../mcp/token-storage/hybrid-token-storage.js';
8
+ export declare class OAuthCredentialStorage {
9
+ private readonly storage;
10
+ constructor(storage?: HybridTokenStorage);
11
+ /**
12
+ * Load cached OAuth credentials
13
+ */
14
+ loadCredentials(): Promise<Credentials | null>;
15
+ /**
16
+ * Save OAuth credentials
17
+ */
18
+ saveCredentials(credentials: Credentials): Promise<void>;
19
+ /**
20
+ * Clear cached OAuth credentials
21
+ */
22
+ clearCredentials(): Promise<void>;
23
+ /**
24
+ * Migrate credentials from old file-based storage to keychain
25
+ */
26
+ private migrateFromFileStorage;
27
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {} from 'google-auth-library';
7
+ import { HybridTokenStorage } from '../mcp/token-storage/hybrid-token-storage.js';
8
+ import { OAUTH_FILE } from '../config/storage.js';
9
+ import * as path from 'node:path';
10
+ import * as os from 'node:os';
11
+ import { promises as fs } from 'node:fs';
12
+ const GEMINI_DIR = '.gemini';
13
+ const KEYCHAIN_SERVICE_NAME = 'gemini-cli-oauth';
14
+ const MAIN_ACCOUNT_KEY = 'main-account';
15
+ export class OAuthCredentialStorage {
16
+ storage;
17
+ constructor(storage = new HybridTokenStorage(KEYCHAIN_SERVICE_NAME)) {
18
+ this.storage = storage;
19
+ }
20
+ /**
21
+ * Load cached OAuth credentials
22
+ */
23
+ async loadCredentials() {
24
+ try {
25
+ const credentials = await this.storage.getCredentials(MAIN_ACCOUNT_KEY);
26
+ if (credentials?.token) {
27
+ const { accessToken, refreshToken, expiresAt, tokenType, scope } = credentials.token;
28
+ // Convert from OAuthCredentials format to Google Credentials format
29
+ const googleCreds = {
30
+ access_token: accessToken,
31
+ refresh_token: refreshToken || undefined,
32
+ token_type: tokenType || undefined,
33
+ scope: scope || undefined,
34
+ };
35
+ if (expiresAt) {
36
+ googleCreds.expiry_date = expiresAt;
37
+ }
38
+ return googleCreds;
39
+ }
40
+ // Fallback: Try to migrate from old file-based storage
41
+ return await this.migrateFromFileStorage();
42
+ }
43
+ catch (error) {
44
+ console.error(error);
45
+ throw new Error('Failed to load OAuth credentials');
46
+ }
47
+ }
48
+ /**
49
+ * Save OAuth credentials
50
+ */
51
+ async saveCredentials(credentials) {
52
+ if (!credentials.access_token) {
53
+ throw new Error('Attempted to save credentials without an access token.');
54
+ }
55
+ // Convert Google Credentials to OAuthCredentials format
56
+ const mcpCredentials = {
57
+ serverName: MAIN_ACCOUNT_KEY,
58
+ token: {
59
+ accessToken: credentials.access_token,
60
+ refreshToken: credentials.refresh_token || undefined,
61
+ tokenType: credentials.token_type || 'Bearer',
62
+ scope: credentials.scope || undefined,
63
+ expiresAt: credentials.expiry_date || undefined,
64
+ },
65
+ updatedAt: Date.now(),
66
+ };
67
+ await this.storage.setCredentials(mcpCredentials);
68
+ }
69
+ /**
70
+ * Clear cached OAuth credentials
71
+ */
72
+ async clearCredentials() {
73
+ try {
74
+ await this.storage.deleteCredentials(MAIN_ACCOUNT_KEY);
75
+ // Also try to remove the old file if it exists
76
+ const oldFilePath = path.join(os.homedir(), GEMINI_DIR, OAUTH_FILE);
77
+ await fs.rm(oldFilePath, { force: true }).catch(() => { });
78
+ }
79
+ catch (error) {
80
+ console.error(error);
81
+ throw new Error('Failed to clear OAuth credentials');
82
+ }
83
+ }
84
+ /**
85
+ * Migrate credentials from old file-based storage to keychain
86
+ */
87
+ async migrateFromFileStorage() {
88
+ const oldFilePath = path.join(os.homedir(), GEMINI_DIR, OAUTH_FILE);
89
+ let credsJson;
90
+ try {
91
+ credsJson = await fs.readFile(oldFilePath, 'utf-8');
92
+ }
93
+ catch (error) {
94
+ if (typeof error === 'object' &&
95
+ error !== null &&
96
+ 'code' in error &&
97
+ error.code === 'ENOENT') {
98
+ // File doesn't exist, so no migration.
99
+ return null;
100
+ }
101
+ // Other read errors should propagate.
102
+ throw error;
103
+ }
104
+ const credentials = JSON.parse(credsJson);
105
+ // Save to new storage
106
+ await this.saveCredentials(credentials);
107
+ // Remove old file after successful migration
108
+ await fs.rm(oldFilePath, { force: true }).catch(() => { });
109
+ return credentials;
110
+ }
111
+ }
112
+ //# sourceMappingURL=oauth-credential-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-credential-storage.js","sourceRoot":"","sources":["../../../src/code_assist/oauth-credential-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {} from 'google-auth-library';
7
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
+ import { OAuthCredentialStorage } from './oauth-credential-storage.js';
9
+ import { HybridTokenStorage } from '../mcp/token-storage/hybrid-token-storage.js';
10
+ import * as path from 'node:path';
11
+ import * as os from 'node:os';
12
+ import { promises as fs } from 'node:fs';
13
+ // Mock external dependencies
14
+ vi.mock('../mcp/token-storage/hybrid-token-storage.js');
15
+ vi.mock('node:fs', () => ({
16
+ promises: {
17
+ readFile: vi.fn(),
18
+ rm: vi.fn(),
19
+ },
20
+ }));
21
+ vi.mock('node:os');
22
+ vi.mock('node:path');
23
+ describe('OAuthCredentialStorage', () => {
24
+ let storage;
25
+ let oauthStorage;
26
+ const mockCredentials = {
27
+ access_token: 'mock_access_token',
28
+ refresh_token: 'mock_refresh_token',
29
+ expiry_date: Date.now() + 3600 * 1000,
30
+ token_type: 'Bearer',
31
+ scope: 'email profile',
32
+ };
33
+ const mockMcpCredentials = {
34
+ serverName: 'main-account',
35
+ token: {
36
+ accessToken: 'mock_access_token',
37
+ refreshToken: 'mock_refresh_token',
38
+ tokenType: 'Bearer',
39
+ scope: 'email profile',
40
+ expiresAt: mockCredentials.expiry_date,
41
+ },
42
+ updatedAt: expect.any(Number),
43
+ };
44
+ const oldFilePath = '/mock/home/.gemini/oauth.json';
45
+ beforeEach(() => {
46
+ storage = new HybridTokenStorage('');
47
+ oauthStorage = new OAuthCredentialStorage(storage);
48
+ vi.spyOn(storage, 'getCredentials').mockResolvedValue(null);
49
+ vi.spyOn(storage, 'setCredentials').mockResolvedValue(undefined);
50
+ vi.spyOn(storage, 'deleteCredentials').mockResolvedValue(undefined);
51
+ vi.spyOn(fs, 'readFile').mockRejectedValue(new Error('File not found'));
52
+ vi.spyOn(fs, 'rm').mockResolvedValue(undefined);
53
+ vi.spyOn(os, 'homedir').mockReturnValue('/mock/home');
54
+ vi.spyOn(path, 'join').mockReturnValue(oldFilePath);
55
+ });
56
+ afterEach(() => {
57
+ vi.restoreAllMocks();
58
+ });
59
+ describe('loadCredentials', () => {
60
+ it('should load credentials from HybridTokenStorage if available', async () => {
61
+ vi.spyOn(storage, 'getCredentials').mockResolvedValue(mockMcpCredentials);
62
+ const result = await oauthStorage.loadCredentials();
63
+ expect(storage.getCredentials).toHaveBeenCalledWith('main-account');
64
+ expect(result).toEqual(mockCredentials);
65
+ });
66
+ it('should fallback to migrateFromFileStorage if no credentials in HybridTokenStorage', async () => {
67
+ vi.spyOn(storage, 'getCredentials').mockResolvedValue(null);
68
+ vi.spyOn(fs, 'readFile').mockResolvedValue(JSON.stringify(mockCredentials));
69
+ const result = await oauthStorage.loadCredentials();
70
+ expect(storage.getCredentials).toHaveBeenCalledWith('main-account');
71
+ expect(fs.readFile).toHaveBeenCalledWith(oldFilePath, 'utf-8');
72
+ expect(storage.setCredentials).toHaveBeenCalled(); // Verify credentials were saved
73
+ expect(fs.rm).toHaveBeenCalledWith(oldFilePath, { force: true }); // Verify old file was removed
74
+ expect(result).toEqual(mockCredentials);
75
+ });
76
+ it('should return null if no credentials found and no old file to migrate', async () => {
77
+ vi.spyOn(fs, 'readFile').mockRejectedValue({
78
+ message: 'File not found',
79
+ code: 'ENOENT',
80
+ });
81
+ const result = await oauthStorage.loadCredentials();
82
+ expect(result).toBeNull();
83
+ });
84
+ it('should throw an error if loading fails', async () => {
85
+ vi.spyOn(storage, 'getCredentials').mockRejectedValue(new Error('Loading error'));
86
+ await expect(oauthStorage.loadCredentials()).rejects.toThrow('Failed to load OAuth credentials');
87
+ });
88
+ it('should throw an error if read file fails', async () => {
89
+ vi.spyOn(storage, 'getCredentials').mockResolvedValue(null);
90
+ vi.spyOn(fs, 'readFile').mockRejectedValue(new Error('Permission denied'));
91
+ await expect(oauthStorage.loadCredentials()).rejects.toThrow('Failed to load OAuth credentials');
92
+ });
93
+ it('should not throw error if migration file removal failed', async () => {
94
+ vi.spyOn(storage, 'getCredentials').mockResolvedValue(null);
95
+ vi.spyOn(fs, 'readFile').mockResolvedValue(JSON.stringify(mockCredentials));
96
+ vi.spyOn(oauthStorage, 'saveCredentials').mockResolvedValue(undefined);
97
+ vi.spyOn(fs, 'rm').mockRejectedValue(new Error('Deletion failed'));
98
+ const result = await oauthStorage.loadCredentials();
99
+ expect(result).toEqual(mockCredentials);
100
+ });
101
+ });
102
+ describe('saveCredentials', () => {
103
+ it('should save credentials to HybridTokenStorage', async () => {
104
+ await oauthStorage.saveCredentials(mockCredentials);
105
+ expect(storage.setCredentials).toHaveBeenCalledWith(mockMcpCredentials);
106
+ });
107
+ it('should throw an error if access_token is missing', async () => {
108
+ const invalidCredentials = {
109
+ ...mockCredentials,
110
+ access_token: undefined,
111
+ };
112
+ await expect(oauthStorage.saveCredentials(invalidCredentials)).rejects.toThrow('Attempted to save credentials without an access token.');
113
+ });
114
+ });
115
+ describe('clearCredentials', () => {
116
+ it('should delete credentials from HybridTokenStorage', async () => {
117
+ await oauthStorage.clearCredentials();
118
+ expect(storage.deleteCredentials).toHaveBeenCalledWith('main-account');
119
+ });
120
+ it('should attempt to remove the old file-based storage', async () => {
121
+ await oauthStorage.clearCredentials();
122
+ expect(fs.rm).toHaveBeenCalledWith(oldFilePath, { force: true });
123
+ });
124
+ it('should not throw an error if deleting old file fails', async () => {
125
+ vi.spyOn(fs, 'rm').mockRejectedValue(new Error('File deletion failed'));
126
+ await expect(oauthStorage.clearCredentials()).resolves.toBeUndefined();
127
+ });
128
+ it('should throw an error if clearing from HybridTokenStorage fails', async () => {
129
+ vi.spyOn(storage, 'deleteCredentials').mockRejectedValue(new Error('Deletion error'));
130
+ await expect(oauthStorage.clearCredentials()).rejects.toThrow('Failed to clear OAuth credentials');
131
+ });
132
+ });
133
+ });
134
+ //# sourceMappingURL=oauth-credential-storage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-credential-storage.test.js","sourceRoot":"","sources":["../../../src/code_assist/oauth-credential-storage.test.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import type { OAuth2Client } from 'google-auth-library';
7
7
  import type { CodeAssistGlobalUserSettingResponse, LoadCodeAssistRequest, LoadCodeAssistResponse, LongRunningOperationResponse, OnboardUserRequest, SetCodeAssistGlobalUserSettingRequest } from './types.js';
8
8
  import type { CountTokensParameters, CountTokensResponse, EmbedContentParameters, EmbedContentResponse, GenerateContentParameters, GenerateContentResponse } from '@google/genai';
9
9
  import type { ContentGenerator } from '../core/contentGenerator.js';
10
- import type { UserTierId } from './types.js';
10
+ import { UserTierId } from './types.js';
11
11
  /** HTTP options to be used in each of the requests. */
12
12
  export interface HttpOptions {
13
13
  /** Additional HTTP headers to be sent with the request. */
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import * as readline from 'node:readline';
7
+ import { UserTierId } from './types.js';
7
8
  import { fromCountTokenResponse, fromGenerateContentResponse, toCountTokenRequest, toGenerateContentRequest, } from './converter.js';
8
9
  export const CODE_ASSIST_ENDPOINT = 'https://cloudcode-pa.googleapis.com';
9
10
  export const CODE_ASSIST_API_VERSION = 'v1internal';
@@ -36,7 +37,19 @@ export class CodeAssistServer {
36
37
  return await this.requestPost('onboardUser', req);
37
38
  }
38
39
  async loadCodeAssist(req) {
39
- return await this.requestPost('loadCodeAssist', req);
40
+ try {
41
+ return await this.requestPost('loadCodeAssist', req);
42
+ }
43
+ catch (e) {
44
+ if (isVpcScAffectedUser(e)) {
45
+ return {
46
+ currentTier: { id: UserTierId.STANDARD },
47
+ };
48
+ }
49
+ else {
50
+ throw e;
51
+ }
52
+ }
40
53
  }
41
54
  async getCodeAssistGlobalUserSetting() {
42
55
  return await this.requestGet('getCodeAssistGlobalUserSetting');
@@ -122,4 +135,14 @@ export class CodeAssistServer {
122
135
  return `${endpoint}/${CODE_ASSIST_API_VERSION}:${method}`;
123
136
  }
124
137
  }
138
+ function isVpcScAffectedUser(error) {
139
+ if (error && typeof error === 'object' && 'response' in error) {
140
+ const gaxiosError = error;
141
+ const response = gaxiosError.response?.data;
142
+ if (Array.isArray(response?.error?.details)) {
143
+ return response.error.details.some((detail) => detail.reason === 'SECURITY_POLICY_VIOLATED');
144
+ }
145
+ }
146
+ return false;
147
+ }
125
148
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/code_assist/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/code_assist/server.ts"],"names":[],"mappings":"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"}
@@ -130,5 +130,30 @@ describe('CodeAssistServer', () => {
130
130
  contents: [{ role: 'user', parts: [{ text: 'request' }] }],
131
131
  })).rejects.toThrow();
132
132
  });
133
+ it('should handle VPC-SC errors when calling loadCodeAssist', async () => {
134
+ const client = new OAuth2Client();
135
+ const server = new CodeAssistServer(client, 'test-project', {}, 'test-session', UserTierId.FREE);
136
+ const mockVpcScError = {
137
+ response: {
138
+ data: {
139
+ error: {
140
+ details: [
141
+ {
142
+ reason: 'SECURITY_POLICY_VIOLATED',
143
+ },
144
+ ],
145
+ },
146
+ },
147
+ },
148
+ };
149
+ vi.spyOn(server, 'requestPost').mockRejectedValue(mockVpcScError);
150
+ const response = await server.loadCodeAssist({
151
+ metadata: {},
152
+ });
153
+ expect(server.requestPost).toHaveBeenCalledWith('loadCodeAssist', expect.any(Object));
154
+ expect(response).toEqual({
155
+ currentTier: { id: UserTierId.STANDARD },
156
+ });
157
+ });
133
158
  });
134
159
  //# sourceMappingURL=server.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../../src/code_assist/server.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../../src/code_assist/server.test.ts"],"names":[],"mappings":"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"}
@@ -35,8 +35,8 @@ export interface LoadCodeAssistResponse {
35
35
  */
36
36
  export interface GeminiUserTier {
37
37
  id: UserTierId;
38
- name: string;
39
- description: string;
38
+ name?: string;
39
+ description?: string;
40
40
  userDefinedCloudaicompanionProject?: boolean | null;
41
41
  isDefault?: boolean;
42
42
  privacyNotice?: PrivacyNotice;
@@ -146,3 +146,18 @@ export interface CodeAssistGlobalUserSettingResponse {
146
146
  cloudaicompanionProject?: string;
147
147
  freeTierDataCollectionOptin: boolean;
148
148
  }
149
+ /**
150
+ * Relevant fields that can be returned from a Google RPC response
151
+ */
152
+ export interface GoogleRpcResponse {
153
+ error?: {
154
+ details?: GoogleRpcErrorInfo[];
155
+ };
156
+ }
157
+ /**
158
+ * Relevant fields that can be returned in the details of an error returned from GoogleRPCs
159
+ */
160
+ interface GoogleRpcErrorInfo {
161
+ reason?: string;
162
+ }
163
+ export {};
@@ -3,23 +3,26 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { ContentGeneratorConfig } from '../core/contentGenerator.js';
6
+ import type { ContentGenerator, ContentGeneratorConfig } from '../core/contentGenerator.js';
7
7
  import { AuthType } from '../core/contentGenerator.js';
8
8
  import { PromptRegistry } from '../prompts/prompt-registry.js';
9
9
  import { ToolRegistry } from '../tools/tool-registry.js';
10
10
  import { GeminiClient } from '../core/client.js';
11
+ import { BaseLlmClient } from '../core/baseLlmClient.js';
11
12
  import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
12
13
  import { GitService } from '../services/gitService.js';
13
14
  import type { TelemetryTarget } from '../telemetry/index.js';
14
15
  import { DEFAULT_GEMINI_FLASH_MODEL } from './models.js';
15
16
  import type { MCPOAuthConfig } from '../mcp/oauth-provider.js';
16
17
  import type { FileSystemService } from '../services/fileSystemService.js';
18
+ import type { FallbackModelHandler } from '../fallback/types.js';
17
19
  export type { MCPOAuthConfig, AnyToolInvocation };
18
20
  import type { AnyToolInvocation } from '../tools/tools.js';
19
21
  import { WorkspaceContext } from '../utils/workspaceContext.js';
20
22
  import { Storage } from './storage.js';
21
23
  import { FileExclusions } from '../utils/ignorePatterns.js';
22
24
  import type { EventEmitter } from 'node:events';
25
+ import type { UserTierId } from '../code_assist/types.js';
23
26
  export declare enum ApprovalMode {
24
27
  DEFAULT = "default",
25
28
  AUTO_EDIT = "autoEdit",
@@ -58,6 +61,8 @@ export interface FileFilteringOptions {
58
61
  }
59
62
  export declare const DEFAULT_MEMORY_FILE_FILTERING_OPTIONS: FileFilteringOptions;
60
63
  export declare const DEFAULT_FILE_FILTERING_OPTIONS: FileFilteringOptions;
64
+ export declare const DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD = 4000000;
65
+ export declare const DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES = 1000;
61
66
  export declare class MCPServerConfig {
62
67
  readonly command?: string | undefined;
63
68
  readonly args?: string[] | undefined;
@@ -85,7 +90,6 @@ export interface SandboxConfig {
85
90
  command: 'docker' | 'podman' | 'sandbox-exec';
86
91
  image: string;
87
92
  }
88
- export type FlashFallbackHandler = (currentModel: string, fallbackModel: string, error?: unknown) => Promise<boolean | string | null>;
89
93
  export interface ConfigParameters {
90
94
  sessionId: string;
91
95
  embeddingModel?: string;
@@ -149,6 +153,9 @@ export interface ConfigParameters {
149
153
  skipNextSpeakerCheck?: boolean;
150
154
  extensionManagement?: boolean;
151
155
  enablePromptCompletion?: boolean;
156
+ truncateToolOutputThreshold?: number;
157
+ truncateToolOutputLines?: number;
158
+ enableToolOutputTruncation?: boolean;
152
159
  eventEmitter?: EventEmitter;
153
160
  useSmartEdit?: boolean;
154
161
  }
@@ -158,6 +165,7 @@ export declare class Config {
158
165
  private readonly sessionId;
159
166
  private fileSystemService;
160
167
  private contentGeneratorConfig;
168
+ private contentGenerator;
161
169
  private readonly embeddingModel;
162
170
  private readonly sandbox;
163
171
  private readonly targetDir;
@@ -180,6 +188,7 @@ export declare class Config {
180
188
  private readonly telemetrySettings;
181
189
  private readonly usageStatisticsEnabled;
182
190
  private geminiClient;
191
+ private baseLlmClient;
183
192
  private readonly fileFiltering;
184
193
  private fileDiscoveryService;
185
194
  private gitService;
@@ -202,7 +211,7 @@ export declare class Config {
202
211
  private readonly listExtensions;
203
212
  private readonly _extensions;
204
213
  private readonly _blockedMcpServers;
205
- flashFallbackHandler?: FlashFallbackHandler;
214
+ fallbackModelHandler?: FallbackModelHandler;
206
215
  private quotaErrorOccurred;
207
216
  private readonly summarizeToolOutput;
208
217
  private readonly experimentalZedIntegration;
@@ -215,6 +224,9 @@ export declare class Config {
215
224
  private readonly skipNextSpeakerCheck;
216
225
  private readonly extensionManagement;
217
226
  private readonly enablePromptCompletion;
227
+ private readonly truncateToolOutputThreshold;
228
+ private readonly truncateToolOutputLines;
229
+ private readonly enableToolOutputTruncation;
218
230
  private initialized;
219
231
  readonly storage: Storage;
220
232
  private readonly fileExclusions;
@@ -225,7 +237,13 @@ export declare class Config {
225
237
  * Must only be called once, throws if called again.
226
238
  */
227
239
  initialize(): Promise<void>;
240
+ getContentGenerator(): ContentGenerator;
228
241
  refreshAuth(authMethod: AuthType, displayMessage?: (message: string) => void): Promise<void>;
242
+ getUserTier(): UserTierId | undefined;
243
+ /**
244
+ * Provides access to the BaseLlmClient for stateless LLM operations.
245
+ */
246
+ getBaseLlmClient(): BaseLlmClient;
229
247
  getSessionId(): string;
230
248
  shouldLoadMemoryFromIncludeDirectories(): boolean;
231
249
  getContentGeneratorConfig(): ContentGeneratorConfig;
@@ -233,7 +251,7 @@ export declare class Config {
233
251
  setModel(newModel: string): void;
234
252
  isInFallbackMode(): boolean;
235
253
  setFallbackMode(active: boolean): void;
236
- setFlashFallbackHandler(handler: FlashFallbackHandler): void;
254
+ setFallbackModelHandler(handler: FallbackModelHandler): void;
237
255
  getMaxSessionTurns(): number;
238
256
  setQuotaErrorOccurred(value: boolean): void;
239
257
  getQuotaErrorOccurred(): boolean;
@@ -327,6 +345,9 @@ export declare class Config {
327
345
  getSkipNextSpeakerCheck(): boolean;
328
346
  getScreenReader(): boolean;
329
347
  getEnablePromptCompletion(): boolean;
348
+ getEnableToolOutputTruncation(): boolean;
349
+ getTruncateToolOutputThreshold(): number;
350
+ getTruncateToolOutputLines(): number;
330
351
  getUseSmartEdit(): boolean;
331
352
  getGitService(): Promise<GitService>;
332
353
  getFileExclusions(): FileExclusions;