@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.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/package.json +2 -2
- package/dist/src/code_assist/codeAssist.js +1 -1
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.d.ts +27 -0
- package/dist/src/code_assist/oauth-credential-storage.js +112 -0
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js +134 -0
- package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -0
- package/dist/src/code_assist/server.d.ts +1 -1
- package/dist/src/code_assist/server.js +24 -1
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +25 -0
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +17 -2
- package/dist/src/config/config.d.ts +25 -4
- package/dist/src/config/config.js +84 -29
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +131 -121
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/storage.d.ts +2 -0
- package/dist/src/config/storage.js +6 -1
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +4 -0
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +45 -0
- package/dist/src/core/baseLlmClient.js +88 -0
- package/dist/src/core/baseLlmClient.js.map +1 -0
- package/dist/src/core/baseLlmClient.test.d.ts +6 -0
- package/dist/src/core/baseLlmClient.test.js +190 -0
- package/dist/src/core/baseLlmClient.test.js.map +1 -0
- package/dist/src/core/client.d.ts +4 -15
- package/dist/src/core/client.js +56 -100
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +101 -321
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +1 -0
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +4 -0
- package/dist/src/core/coreToolScheduler.js +66 -2
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +172 -5
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +2 -8
- package/dist/src/core/geminiChat.js +42 -46
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +207 -48
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.js +3 -6
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +8 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.d.ts +5 -0
- package/dist/src/core/prompts.js +64 -43
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +146 -17
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/subagent.js +1 -3
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/subagent.test.js +3 -5
- package/dist/src/core/subagent.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +1 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/fallback/handler.d.ts +7 -0
- package/dist/src/fallback/handler.js +51 -0
- package/dist/src/fallback/handler.js.map +1 -0
- package/dist/src/fallback/handler.test.d.ts +6 -0
- package/dist/src/fallback/handler.test.js +130 -0
- package/dist/src/fallback/handler.test.js.map +1 -0
- package/dist/src/fallback/types.d.ts +14 -0
- package/dist/src/fallback/types.js +7 -0
- package/dist/src/fallback/types.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ide/constants.d.ts +2 -0
- package/dist/src/ide/constants.js +2 -0
- package/dist/src/ide/constants.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +1 -1
- package/dist/src/ide/ide-client.js +61 -2
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +165 -0
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +1 -264
- package/dist/src/ide/ideContext.js +42 -31
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/ideContext.test.js +154 -24
- package/dist/src/ide/ideContext.test.js.map +1 -1
- package/dist/src/ide/process-utils.js +8 -1
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/ide/types.d.ts +345 -0
- package/dist/src/ide/types.js +65 -0
- package/dist/src/ide/types.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.js +3 -3
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +12 -12
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.d.ts +8 -6
- package/dist/src/mcp/oauth-token-storage.js +24 -17
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.test.js +18 -18
- package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +7 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +20 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +1 -0
- package/dist/src/telemetry/constants.js +1 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
- package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
- package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.d.ts +6 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.js +152 -0
- package/dist/src/telemetry/high-water-mark-tracker.test.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +2 -0
- package/dist/src/telemetry/index.js +2 -0
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +18 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +64 -5
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/rate-limiter.d.ts +48 -0
- package/dist/src/telemetry/rate-limiter.js +100 -0
- package/dist/src/telemetry/rate-limiter.js.map +1 -0
- package/dist/src/telemetry/rate-limiter.test.d.ts +6 -0
- package/dist/src/telemetry/rate-limiter.test.js +207 -0
- package/dist/src/telemetry/rate-limiter.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +6 -0
- package/dist/src/telemetry/types.js +14 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.js +5 -21
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client.js +5 -5
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/read-file.js +7 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +29 -0
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +4 -0
- package/dist/src/tools/ripGrep.js +17 -2
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +57 -5
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/smart-edit.js +1 -1
- package/dist/src/tools/smart-edit.js.map +1 -1
- package/dist/src/tools/smart-edit.test.js +5 -0
- package/dist/src/tools/smart-edit.test.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +1 -0
- package/dist/src/utils/fileUtils.js +10 -0
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +17 -1
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.test.js +1 -1
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.test.js +1 -1
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
- package/dist/src/utils/flashFallback.test.d.ts +6 -0
- package/dist/src/utils/{flashFallback.integration.test.js → flashFallback.test.js} +31 -27
- package/dist/src/utils/flashFallback.test.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
- package/dist/src/utils/gitIgnoreParser.js +33 -24
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.d.ts +4 -3
- package/dist/src/utils/llm-edit-fixer.js +19 -10
- package/dist/src/utils/llm-edit-fixer.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.test.d.ts +6 -0
- package/dist/src/utils/llm-edit-fixer.test.js +105 -0
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.test.js +13 -42
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/promptIdContext.d.ts +7 -0
- package/dist/src/utils/promptIdContext.js +8 -0
- package/dist/src/utils/promptIdContext.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/dist/src/utils/flashFallback.integration.test.js.map +0 -1
- /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.
|
|
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
|
-
"@
|
|
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.
|
|
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,
|
|
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
|
|
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
|
-
|
|
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":"AAAA;;;;GAIG;
|
|
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
|
|
39
|
-
description
|
|
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
|
-
|
|
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
|
-
|
|
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;
|