@vybestack/llxprt-code-core 0.3.4-nightly.250918.ed04d656 → 0.3.4-nightly.250921.fdbf3cd7

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 (132) hide show
  1. package/README.md +3 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.js +4 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/types.d.ts +2 -2
  6. package/dist/src/code_assist/codeAssist.d.ts +9 -2
  7. package/dist/src/code_assist/codeAssist.js +33 -0
  8. package/dist/src/code_assist/codeAssist.js.map +1 -1
  9. package/dist/src/code_assist/oauth2.d.ts +4 -0
  10. package/dist/src/code_assist/oauth2.js +85 -40
  11. package/dist/src/code_assist/oauth2.js.map +1 -1
  12. package/dist/src/config/config.d.ts +11 -1
  13. package/dist/src/config/config.js +41 -8
  14. package/dist/src/config/config.js.map +1 -1
  15. package/dist/src/core/client.d.ts +2 -2
  16. package/dist/src/core/client.js +7 -6
  17. package/dist/src/core/client.js.map +1 -1
  18. package/dist/src/core/contentGenerator.d.ts +2 -2
  19. package/dist/src/core/geminiChat.d.ts +14 -1
  20. package/dist/src/core/geminiChat.js +12 -1
  21. package/dist/src/core/geminiChat.js.map +1 -1
  22. package/dist/src/core/loggingContentGenerator.js +11 -11
  23. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  24. package/dist/src/core/subagent.d.ts +2 -0
  25. package/dist/src/core/subagent.js +13 -3
  26. package/dist/src/core/subagent.js.map +1 -1
  27. package/dist/src/core/turn.d.ts +26 -4
  28. package/dist/src/core/turn.js +64 -3
  29. package/dist/src/core/turn.js.map +1 -1
  30. package/dist/src/filters/EmojiFilter.js +1 -0
  31. package/dist/src/filters/EmojiFilter.js.map +1 -1
  32. package/dist/src/ide/ide-client.d.ts +6 -1
  33. package/dist/src/ide/ide-client.js +20 -2
  34. package/dist/src/ide/ide-client.js.map +1 -1
  35. package/dist/src/ide/ideContext.d.ts +44 -32
  36. package/dist/src/ide/ideContext.js +1 -0
  37. package/dist/src/ide/ideContext.js.map +1 -1
  38. package/dist/src/ide/process-utils.js +49 -33
  39. package/dist/src/ide/process-utils.js.map +1 -1
  40. package/dist/src/index.d.ts +3 -0
  41. package/dist/src/index.js +4 -0
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/mcp/file-token-store.d.ts +20 -1
  44. package/dist/src/mcp/file-token-store.js +95 -14
  45. package/dist/src/mcp/file-token-store.js.map +1 -1
  46. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  47. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  48. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  49. package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  50. package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
  51. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  52. package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  53. package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  54. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  55. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
  56. package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
  57. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  58. package/dist/src/mcp/token-storage/types.d.ts +40 -0
  59. package/dist/src/mcp/token-storage/types.js +11 -0
  60. package/dist/src/mcp/token-storage/types.js.map +1 -0
  61. package/dist/src/providers/anthropic/AnthropicProvider.js +1 -3
  62. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  63. package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +1 -0
  64. package/dist/src/providers/tokenizers/OpenAITokenizer.js +3 -1
  65. package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +1 -1
  66. package/dist/src/services/loopDetectionService.d.ts +23 -0
  67. package/dist/src/services/loopDetectionService.js +134 -1
  68. package/dist/src/services/loopDetectionService.js.map +1 -1
  69. package/dist/src/services/shellExecutionService.js +8 -7
  70. package/dist/src/services/shellExecutionService.js.map +1 -1
  71. package/dist/src/telemetry/sdk.js +2 -1
  72. package/dist/src/telemetry/sdk.js.map +1 -1
  73. package/dist/src/telemetry/types.d.ts +12 -0
  74. package/dist/src/telemetry/types.js +19 -0
  75. package/dist/src/telemetry/types.js.map +1 -1
  76. package/dist/src/test-utils/config.d.ts +10 -0
  77. package/dist/src/test-utils/config.js +24 -0
  78. package/dist/src/test-utils/config.js.map +1 -0
  79. package/dist/src/test-utils/index.d.ts +6 -0
  80. package/dist/src/test-utils/index.js +7 -0
  81. package/dist/src/test-utils/index.js.map +1 -0
  82. package/dist/src/test-utils/mock-tool.d.ts +41 -0
  83. package/dist/src/test-utils/mock-tool.js +51 -0
  84. package/dist/src/test-utils/mock-tool.js.map +1 -0
  85. package/dist/src/tools/edit.d.ts +2 -2
  86. package/dist/src/tools/edit.js +20 -30
  87. package/dist/src/tools/edit.js.map +1 -1
  88. package/dist/src/tools/mcp-client-manager.d.ts +8 -6
  89. package/dist/src/tools/mcp-client-manager.js +30 -5
  90. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  91. package/dist/src/tools/mcp-client.d.ts +5 -5
  92. package/dist/src/tools/mcp-client.js +13 -22
  93. package/dist/src/tools/mcp-client.js.map +1 -1
  94. package/dist/src/tools/mcp-tool.d.ts +3 -2
  95. package/dist/src/tools/mcp-tool.js +9 -9
  96. package/dist/src/tools/mcp-tool.js.map +1 -1
  97. package/dist/src/tools/memoryTool.js +5 -33
  98. package/dist/src/tools/memoryTool.js.map +1 -1
  99. package/dist/src/tools/shell.js +6 -3
  100. package/dist/src/tools/shell.js.map +1 -1
  101. package/dist/src/tools/smart-edit.d.ts +73 -0
  102. package/dist/src/tools/smart-edit.js +606 -0
  103. package/dist/src/tools/smart-edit.js.map +1 -0
  104. package/dist/src/tools/tool-registry.d.ts +2 -1
  105. package/dist/src/tools/tool-registry.js +6 -6
  106. package/dist/src/tools/tool-registry.js.map +1 -1
  107. package/dist/src/tools/web-fetch.js +3 -1
  108. package/dist/src/tools/web-fetch.js.map +1 -1
  109. package/dist/src/utils/fileUtils.d.ts +19 -3
  110. package/dist/src/utils/fileUtils.js +139 -28
  111. package/dist/src/utils/fileUtils.js.map +1 -1
  112. package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
  113. package/dist/src/utils/gitIgnoreParser.js +101 -10
  114. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  115. package/dist/src/utils/ide-trust.d.ts +10 -0
  116. package/dist/src/utils/ide-trust.js +14 -0
  117. package/dist/src/utils/ide-trust.js.map +1 -0
  118. package/dist/src/utils/llm-edit-fixer.d.ts +25 -0
  119. package/dist/src/utils/llm-edit-fixer.js +111 -0
  120. package/dist/src/utils/llm-edit-fixer.js.map +1 -0
  121. package/dist/src/utils/memoryDiscovery.d.ts +5 -4
  122. package/dist/src/utils/memoryDiscovery.js +10 -9
  123. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  124. package/dist/src/utils/partUtils.d.ts +1 -2
  125. package/dist/src/utils/partUtils.js +0 -14
  126. package/dist/src/utils/partUtils.js.map +1 -1
  127. package/dist/src/utils/pathReader.d.ts +28 -0
  128. package/dist/src/utils/pathReader.js +47 -0
  129. package/dist/src/utils/pathReader.js.map +1 -0
  130. package/dist/src/utils/summarizer.js +2 -1
  131. package/dist/src/utils/summarizer.js.map +1 -1
  132. package/package.json +3 -3
package/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  [![LLxprt Code CI](https://github.com/acoliver/llxprt-code/actions/workflows/ci.yml/badge.svg)](https://github.com/acoliver/llxprt-code/actions/workflows/ci.yml)
4
4
   
5
5
  [![Mentioned in Awesome Gemini CLI](https://awesome.re/mentioned-badge.svg)](https://github.com/Piebald-AI/awesome-gemini-cli)
6
+  
7
+ [![Discord Server](https://dcbadge.limes.pink/api/server/https://discord.gg/Wc6dZqWWYv?style=flat)](https://discord.gg/Wc6dZqWWYv)
6
8
 
7
9
  ![LLxprt Code Screenshot](./docs/assets/llxprt-screenshot.png)
8
10
 
@@ -54,6 +56,7 @@ You have two options to install LLxprt Code.
54
56
  ```bash
55
57
  llxprt
56
58
  ```
59
+
57
60
  - Pick a beautiful theme
58
61
  - Choose your provider with `/provider` (defaults to Gemini)
59
62
  - Set up authentication as needed
package/dist/index.d.ts CHANGED
@@ -11,3 +11,7 @@ export { openBrowserSecurely, shouldLaunchBrowser, } from './src/utils/secure-br
11
11
  export { SettingsService } from './src/settings/SettingsService.js';
12
12
  export type { ISettingsService, GlobalSettings, SettingsChangeEvent, ProviderSettings, UISettings, AdvancedSettings, EventListener, EventUnsubscribe, } from './src/settings/types.js';
13
13
  export type { TelemetrySettings as SettingsTelemetrySettings } from './src/settings/types.js';
14
+ export { IdeConnectionEvent, IdeConnectionType, } from './src/telemetry/types.js';
15
+ export { getIdeTrust } from './src/utils/ide-trust.js';
16
+ export { makeFakeConfig } from './src/test-utils/config.js';
17
+ export * from './src/utils/pathReader.js';
package/dist/index.js CHANGED
@@ -11,4 +11,8 @@ export { openBrowserSecurely, shouldLaunchBrowser, } from './src/utils/secure-br
11
11
  // Re-export settings system for explicit access
12
12
  export { SettingsService } from './src/settings/SettingsService.js';
13
13
  // IDE connection telemetry exports removed - telemetry disabled in llxprt
14
+ export { IdeConnectionEvent, IdeConnectionType, } from './src/telemetry/types.js';
15
+ export { getIdeTrust } from './src/utils/ide-trust.js';
16
+ export { makeFakeConfig } from './src/test-utils/config.js';
17
+ export * from './src/utils/pathReader.js';
14
18
  //# sourceMappingURL=index.js.map
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,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC;AAEhD,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAYpE,0EAA0E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC;AAEhD,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAYpE,0EAA0E;AAC1E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,cAAc,2BAA2B,CAAC"}
@@ -111,14 +111,14 @@ export declare const AuthStatusSchema: z.ZodObject<{
111
111
  expiresIn: z.ZodOptional<z.ZodNumber>;
112
112
  oauthEnabled: z.ZodOptional<z.ZodBoolean>;
113
113
  }, "strip", z.ZodTypeAny, {
114
- provider: string;
115
114
  authType: "none" | "oauth" | "api-key";
115
+ provider: string;
116
116
  authenticated: boolean;
117
117
  expiresIn?: number | undefined;
118
118
  oauthEnabled?: boolean | undefined;
119
119
  }, {
120
- provider: string;
121
120
  authType: "none" | "oauth" | "api-key";
121
+ provider: string;
122
122
  authenticated: boolean;
123
123
  expiresIn?: number | undefined;
124
124
  oauthEnabled?: boolean | undefined;
@@ -4,7 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { AuthType, ContentGenerator } from '../core/contentGenerator.js';
7
- import { HttpOptions } from './server.js';
8
- import { Config } from '../config/config.js';
7
+ import type { HttpOptions } from './server.js';
8
+ import { CodeAssistServer } from './server.js';
9
+ import type { Config } from '../config/config.js';
9
10
  export declare function createCodeAssistContentGenerator(httpOptions: HttpOptions, authType: AuthType, config: Config, baseURL?: string, // Add baseURL parameter
10
11
  _sessionId?: string): Promise<ContentGenerator>;
12
+ export declare function getCodeAssistServer(config: Config): CodeAssistServer | undefined;
13
+ /**
14
+ * Emits a citation event if citation display is enabled for the current user.
15
+ * This function integrates with llxprt's provider abstraction to work across all providers.
16
+ */
17
+ export declare function emitCitationEvent(config: Config, citationText: string): void;
@@ -7,6 +7,7 @@ import { AuthType } from '../core/contentGenerator.js';
7
7
  import { getOauthClient } from './oauth2.js';
8
8
  import { setupUser } from './setup.js';
9
9
  import { CodeAssistServer } from './server.js';
10
+ import { LoggingContentGenerator } from '../core/loggingContentGenerator.js';
10
11
  import { DebugLogger } from '../debug/index.js';
11
12
  export async function createCodeAssistContentGenerator(httpOptions, authType, config, baseURL, // Add baseURL parameter
12
13
  _sessionId) {
@@ -33,4 +34,36 @@ _sessionId) {
33
34
  }
34
35
  throw new Error(`Unsupported authType: ${authType}`);
35
36
  }
37
+ export function getCodeAssistServer(config) {
38
+ let server = config.getGeminiClient().getContentGenerator();
39
+ // Unwrap LoggingContentGenerator if present
40
+ if (server instanceof LoggingContentGenerator) {
41
+ server = server.getWrapped();
42
+ }
43
+ if (!(server instanceof CodeAssistServer)) {
44
+ return undefined;
45
+ }
46
+ return server;
47
+ }
48
+ /**
49
+ * Emits a citation event if citation display is enabled for the current user.
50
+ * This function integrates with llxprt's provider abstraction to work across all providers.
51
+ */
52
+ export function emitCitationEvent(config, citationText) {
53
+ // Get provider manager to emit citation through the event system
54
+ const providerManager = config.getProviderManager();
55
+ if (providerManager) {
56
+ // Use the provider manager's event system to emit citation events
57
+ // This ensures the event flows through the proper channels to reach the CLI
58
+ try {
59
+ // TODO: Implement provider-neutral event emission
60
+ // For now, this is a placeholder that can be extended when we have
61
+ // a provider-neutral event emission system
62
+ console.debug('Citation event would be emitted:', citationText);
63
+ }
64
+ catch (error) {
65
+ console.debug('Failed to emit citation event:', error);
66
+ }
67
+ }
68
+ }
36
69
  //# sourceMappingURL=codeAssist.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeAssist.js","sourceRoot":"","sources":["../../../src/code_assist/codeAssist.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAoB,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,WAAwB,EACxB,QAAkB,EAClB,MAAc,EACd,OAAgB,EAAE,wBAAwB;AAC1C,UAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAErD,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,8CAA8C,QAAQ,YAAY,CAAC,CAAC,MAAM,aAAa,OAAO,EAAE,CACnG,CAAC;IAEF,IACE,QAAQ,KAAK,QAAQ,CAAC,iBAAiB;QACvC,QAAQ,KAAK,QAAQ,CAAC,WAAW,EACjC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,yEAAyE,QAAQ,EAAE,CACtF,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,2EAA2E,CAC9E,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,oEAAoE,QAAQ,CAAC,SAAS,cAAc,QAAQ,CAAC,QAAQ,EAAE,CAC1H,CAAC;YACF,OAAO,IAAI,gBAAgB,CACzB,UAAU,EACV,QAAQ,CAAC,SAAS,EAClB,WAAW;YACX,2EAA2E;YAC3E,wBAAwB;YACxB,QAAQ,CAAC,QAAQ,EACjB,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CACH,+DAA+D,KAAK,EAAE,CACzE,CAAC;YACF,MAAM,CAAC,KAAK,CACV,GAAG,EAAE,CAAC,oDAAoD,KAAK,EAAE,CAClE,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"codeAssist.js","sourceRoot":"","sources":["../../../src/code_assist/codeAssist.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,12 @@ export interface OauthWebLogin {
15
15
  authUrl: string;
16
16
  loginCompletePromise: Promise<void>;
17
17
  }
18
+ export declare function performLogin(authType: AuthType, config: Config): Promise<boolean>;
18
19
  export declare function getOauthClient(authType: AuthType, config: Config): Promise<OAuth2Client>;
19
20
  export declare function getAvailablePort(): Promise<number>;
21
+ export declare function authWithCode(client: OAuth2Client, code: string, codeVerifier: {
22
+ codeVerifier: string;
23
+ } | undefined, redirectUri: string): Promise<boolean>;
20
24
  export declare function clearCachedCredentialFile(): Promise<void>;
21
25
  /**
22
26
  * Clears the OAuth client cache to prevent session leakage during logout.
@@ -71,8 +71,9 @@ async function initOauthClient(authType, config) {
71
71
  try {
72
72
  await fetchAndCacheUserInfo(client);
73
73
  }
74
- catch {
74
+ catch (error) {
75
75
  // Non-fatal, continue with existing auth.
76
+ console.warn('Failed to fetch user info:', getErrorMessage(error));
76
77
  }
77
78
  }
78
79
  // Loaded cached credentials
@@ -124,17 +125,27 @@ async function initOauthClient(authType, config) {
124
125
  // Without this, if `open` fails to spawn a process (e.g., `xdg-open` is not found
125
126
  // in a minimal Docker container), it will emit an unhandled 'error' event,
126
127
  // causing the entire Node.js process to crash.
127
- childProcess.on('error', (_) => {
128
+ childProcess.on('error', (error) => {
128
129
  console.error('Failed to open browser automatically. Please try running again with NO_BROWSER=true set.');
129
- throw new FatalAuthenticationError('Failed to open browser.');
130
+ console.error('Browser error details:', getErrorMessage(error));
130
131
  });
131
132
  }
132
133
  catch (_err) {
133
- console.error('Failed to open browser automatically. Falling back to manual authentication.');
134
- throw new FatalAuthenticationError('Failed to open browser.');
134
+ console.error('An unexpected error occurred while trying to open the browser:', getErrorMessage(_err), '\nThis might be due to browser compatibility issues or system configuration.', '\nPlease try running again with NO_BROWSER=true set for manual authentication.');
135
+ throw new FatalAuthenticationError(`Failed to open browser: ${getErrorMessage(_err)}`);
135
136
  }
136
- console.log('Waiting for authentication...');
137
- await webLogin.loginCompletePromise;
137
+ if (typeof config.isInteractive === 'function' && config.isInteractive()) {
138
+ console.log('Waiting for authentication...');
139
+ }
140
+ // Add timeout to prevent infinite waiting when browser tab gets stuck
141
+ const authTimeout = 5 * 60 * 1000; // 5 minutes timeout
142
+ const timeoutPromise = new Promise((_, reject) => {
143
+ setTimeout(() => {
144
+ reject(new FatalAuthenticationError('Authentication timed out after 5 minutes. The browser tab may have gotten stuck in a loading state. ' +
145
+ 'Please try again or use NO_BROWSER=true for manual authentication.'));
146
+ }, authTimeout);
147
+ });
148
+ await Promise.race([webLogin.loginCompletePromise, timeoutPromise]);
138
149
  // Reset global state variables after successful authentication
139
150
  /**
140
151
  * @plan PLAN-20250822-GEMINIFALLBACK.P13
@@ -146,6 +157,10 @@ async function initOauthClient(authType, config) {
146
157
  }
147
158
  return client;
148
159
  }
160
+ export async function performLogin(authType, config) {
161
+ await initOauthClient(authType, config);
162
+ return true;
163
+ }
149
164
  export async function getOauthClient(authType, config) {
150
165
  if (!oauthClientPromises.has(authType)) {
151
166
  oauthClientPromises.set(authType, initOauthClient(authType, config));
@@ -199,19 +214,7 @@ async function authWithUserCode(client) {
199
214
  console.error('Authorization code is required.');
200
215
  return false;
201
216
  }
202
- try {
203
- const { tokens } = await client.getToken({
204
- code,
205
- codeVerifier: codeVerifier.codeVerifier,
206
- redirect_uri: redirectUri,
207
- });
208
- client.setCredentials(tokens);
209
- }
210
- catch (error) {
211
- console.error('Failed to exchange authorization code for tokens:', error);
212
- return false;
213
- }
214
- return true;
217
+ return authWithCode(client, code, codeVerifier, redirectUri);
215
218
  }
216
219
  async function authWithWeb(client) {
217
220
  const port = await getAvailablePort();
@@ -235,49 +238,62 @@ async function authWithWeb(client) {
235
238
  if (req.url.indexOf('/oauth2callback') === -1) {
236
239
  res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_FAILURE_URL });
237
240
  res.end();
238
- reject(new Error('Unexpected request: ' + req.url));
241
+ reject(new FatalAuthenticationError('OAuth callback not received. Unexpected request: ' + req.url));
239
242
  }
240
243
  // acquire the code from the querystring, and close the web server.
241
244
  const qs = new url.URL(req.url, 'http://localhost:3000').searchParams;
242
245
  if (qs.get('error')) {
243
246
  res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_FAILURE_URL });
244
247
  res.end();
245
- reject(new Error(`Error during authentication: ${qs.get('error')}`));
248
+ const errorCode = qs.get('error');
249
+ const errorDescription = qs.get('error_description') || 'No additional details provided';
250
+ reject(new FatalAuthenticationError(`Google OAuth error: ${errorCode}. ${errorDescription}`));
246
251
  }
247
252
  else if (qs.get('state') !== state) {
248
253
  res.end('State mismatch. Possible CSRF attack');
249
- reject(new Error('State mismatch. Possible CSRF attack'));
254
+ reject(new FatalAuthenticationError('OAuth state mismatch. Possible CSRF attack or browser session issue.'));
250
255
  }
251
256
  else if (qs.get('code')) {
252
- const { tokens } = await client.getToken({
253
- code: qs.get('code'),
254
- redirect_uri: redirectUri,
255
- });
256
- client.setCredentials(tokens);
257
- // Retrieve and cache Google Account ID during authentication
258
257
  try {
259
- await fetchAndCacheUserInfo(client);
258
+ const success = await authWithCode(client, qs.get('code'), undefined, redirectUri);
259
+ if (!success) {
260
+ throw new FatalAuthenticationError('Failed to exchange authorization code for tokens.');
261
+ }
262
+ res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_SUCCESS_URL });
263
+ res.end();
264
+ resolve();
260
265
  }
261
266
  catch (error) {
262
- console.error('Failed to retrieve Google Account ID during authentication:', error);
263
- // Don't fail the auth flow if Google Account ID retrieval fails
267
+ res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_FAILURE_URL });
268
+ res.end();
269
+ reject(error instanceof FatalAuthenticationError
270
+ ? error
271
+ : new FatalAuthenticationError(`Failed to exchange authorization code for tokens: ${getErrorMessage(error)}`));
264
272
  }
265
- res.writeHead(HTTP_REDIRECT, { Location: SIGN_IN_SUCCESS_URL });
266
- res.end();
267
- resolve();
268
273
  }
269
274
  else {
270
- reject(new Error('No code found in request'));
275
+ reject(new FatalAuthenticationError('No authorization code received from Google OAuth. Please try authenticating again.'));
271
276
  }
272
277
  }
273
278
  catch (e) {
274
- reject(e);
279
+ // Provide more specific error message for unexpected errors during OAuth flow
280
+ if (e instanceof FatalAuthenticationError) {
281
+ reject(e);
282
+ }
283
+ else {
284
+ reject(new FatalAuthenticationError(`Unexpected error during OAuth authentication: ${getErrorMessage(e)}`));
285
+ }
275
286
  }
276
287
  finally {
277
288
  server.close();
278
289
  }
279
290
  });
280
- server.listen(port, host);
291
+ server.listen(port, host, () => {
292
+ // Server started successfully
293
+ });
294
+ server.on('error', (err) => {
295
+ reject(new FatalAuthenticationError(`OAuth callback server error: ${getErrorMessage(err)}`));
296
+ });
281
297
  });
282
298
  return {
283
299
  authUrl,
@@ -328,8 +344,9 @@ async function loadCachedCredentials(client) {
328
344
  return true;
329
345
  }
330
346
  }
331
- catch {
332
- // Continue to next path
347
+ catch (error) {
348
+ // Log specific error for debugging, but continue trying other paths
349
+ console.debug(`Failed to load credentials from ${credPath}:`, getErrorMessage(error));
333
350
  }
334
351
  }
335
352
  return false;
@@ -360,12 +377,40 @@ async function cacheCredentials(credentials) {
360
377
  await fs.writeFile(filePath, JSON.stringify(credentials, null, 2), {
361
378
  mode: 0o600,
362
379
  });
380
+ // Belt-and-suspenders: explicitly chmod the file for platforms where writeFile mode may not work
381
+ try {
382
+ await fs.chmod(filePath, 0o600);
383
+ }
384
+ catch {
385
+ /* empty - file already has correct permissions from writeFile */
386
+ }
363
387
  }
364
388
  catch (error) {
365
389
  console.error('Failed to cache OAuth credentials:', error);
366
390
  // Don't throw - allow OAuth to continue without caching
367
391
  }
368
392
  }
393
+ export async function authWithCode(client, code, codeVerifier, redirectUri) {
394
+ try {
395
+ const { tokens } = await client.getToken({
396
+ code,
397
+ redirect_uri: redirectUri,
398
+ ...(codeVerifier ? { codeVerifier: codeVerifier.codeVerifier } : {}),
399
+ });
400
+ client.setCredentials(tokens);
401
+ try {
402
+ await fetchAndCacheUserInfo(client);
403
+ }
404
+ catch (error) {
405
+ console.warn('Failed to retrieve Google Account ID during authentication:', getErrorMessage(error));
406
+ }
407
+ return true;
408
+ }
409
+ catch (error) {
410
+ console.error('Failed to authenticate with authorization code:', getErrorMessage(error));
411
+ return false;
412
+ }
413
+ }
369
414
  export async function clearCachedCredentialFile() {
370
415
  try {
371
416
  await fs.rm(Storage.getOAuthCredsPath(), { force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../../src/code_assist/oauth2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../../src/code_assist/oauth2.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ import type { AnyToolInvocation } from '../tools/tools.js';
21
21
  import { WorkspaceContext } from '../utils/workspaceContext.js';
22
22
  import { Storage } from './storage.js';
23
23
  import { FileExclusions } from '../utils/ignorePatterns.js';
24
+ import type { EventEmitter } from 'node:events';
24
25
  export interface RedactionConfig {
25
26
  redactApiKeys: boolean;
26
27
  redactCredentials: boolean;
@@ -198,6 +199,8 @@ export interface ConfigParameters {
198
199
  skipNextSpeakerCheck?: boolean;
199
200
  extensionManagement?: boolean;
200
201
  enablePromptCompletion?: boolean;
202
+ eventEmitter?: EventEmitter;
203
+ useSmartEdit?: boolean;
201
204
  }
202
205
  export declare class Config {
203
206
  private toolRegistry;
@@ -273,6 +276,8 @@ export declare class Config {
273
276
  private readonly shellReplacement;
274
277
  readonly storage: Storage;
275
278
  private readonly fileExclusions;
279
+ private readonly eventEmitter?;
280
+ private readonly useSmartEdit;
276
281
  constructor(params: ConfigParameters);
277
282
  /**
278
283
  * Must only be called once, throws if called again.
@@ -377,8 +382,12 @@ export declare class Config {
377
382
  getIdeClient(): IdeClient | undefined;
378
383
  getIdeMode(): boolean;
379
384
  getFolderTrustFeature(): boolean;
385
+ /**
386
+ * Returns 'true' if the workspace is considered "trusted".
387
+ * 'false' for untrusted.
388
+ */
380
389
  getFolderTrust(): boolean;
381
- isTrustedFolder(): boolean | undefined;
390
+ isTrustedFolder(): boolean;
382
391
  setIdeMode(value: boolean): void;
383
392
  setIdeClientDisconnected(): void;
384
393
  setIdeClientConnected(): void;
@@ -406,6 +415,7 @@ export declare class Config {
406
415
  getSkipNextSpeakerCheck(): boolean;
407
416
  getScreenReader(): boolean;
408
417
  getEnablePromptCompletion(): boolean;
418
+ getUseSmartEdit(): boolean;
409
419
  getGitService(): Promise<GitService>;
410
420
  /**
411
421
  * Get the SettingsService instance
@@ -15,6 +15,7 @@ import { RipGrepTool } from '../tools/ripGrep.js';
15
15
  import { GlobTool } from '../tools/glob.js';
16
16
  import { DebugLogger } from '../debug/DebugLogger.js';
17
17
  import { EditTool } from '../tools/edit.js';
18
+ import { SmartEditTool } from '../tools/smart-edit.js';
18
19
  import { ShellTool } from '../tools/shell.js';
19
20
  import { WriteFileTool } from '../tools/write-file.js';
20
21
  import { WebFetchTool } from '../tools/web-fetch.js';
@@ -34,6 +35,7 @@ initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, logCliConf
34
35
  import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } from './models.js';
35
36
  import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
36
37
  import { IdeClient } from '../ide/ide-client.js';
38
+ import { ideContext } from '../ide/ideContext.js';
37
39
  import { getSettingsService } from '../settings/settingsServiceInstance.js';
38
40
  import { StandardFileSystemService, } from '../services/fileSystemService.js';
39
41
  import { WorkspaceContext } from '../utils/workspaceContext.js';
@@ -189,6 +191,8 @@ export class Config {
189
191
  shellReplacement = false;
190
192
  storage;
191
193
  fileExclusions;
194
+ eventEmitter;
195
+ useSmartEdit;
192
196
  constructor(params) {
193
197
  this.sessionId = params.sessionId;
194
198
  this.embeddingModel =
@@ -269,24 +273,27 @@ export class Config {
269
273
  this.useRipgrep = params.useRipgrep ?? false;
270
274
  this.shouldUseNodePtyShell = params.shouldUseNodePtyShell ?? false;
271
275
  this.skipNextSpeakerCheck = params.skipNextSpeakerCheck ?? false;
276
+ this.useSmartEdit = params.useSmartEdit ?? false;
272
277
  this.extensionManagement = params.extensionManagement ?? false;
273
278
  this.storage = new Storage(this.targetDir);
274
279
  this.enablePromptCompletion = params.enablePromptCompletion ?? false;
275
280
  this.fileExclusions = new FileExclusions(this);
281
+ this.eventEmitter = params.eventEmitter;
276
282
  if (params.contextFileName) {
277
283
  setLlxprtMdFilename(params.contextFileName);
278
284
  }
279
285
  // TELEMETRY: Re-enabled for local file logging only - no network endpoints allowed
280
- if (process.env.VERBOSE === 'true') {
286
+ const isTestEnvironment = process.env.NODE_ENV === 'test' || process.env.VITEST;
287
+ if (process.env.VERBOSE === 'true' && !isTestEnvironment) {
281
288
  console.log(`[CONFIG] Telemetry settings:`, JSON.stringify(this.telemetrySettings));
282
289
  }
283
290
  if (this.telemetrySettings.enabled) {
284
- if (process.env.VERBOSE === 'true') {
291
+ if (process.env.VERBOSE === 'true' && !isTestEnvironment) {
285
292
  console.log(`[CONFIG] Initializing telemetry`);
286
293
  }
287
294
  initializeTelemetry(this);
288
295
  }
289
- else if (process.env.VERBOSE === 'true') {
296
+ else if (process.env.VERBOSE === 'true' && !isTestEnvironment) {
290
297
  console.log(`[CONFIG] Telemetry disabled`);
291
298
  }
292
299
  logCliConfiguration(this, new StartSessionEvent(this));
@@ -536,7 +543,7 @@ export class Config {
536
543
  return this.approvalMode;
537
544
  }
538
545
  setApprovalMode(mode) {
539
- if (this.isTrustedFolder() === false && mode !== ApprovalMode.DEFAULT) {
546
+ if (!this.isTrustedFolder() && mode !== ApprovalMode.DEFAULT) {
540
547
  throw new Error('Cannot enable privileged approval modes in an untrusted folder.');
541
548
  }
542
549
  this.approvalMode = mode;
@@ -752,11 +759,29 @@ export class Config {
752
759
  getFolderTrustFeature() {
753
760
  return this.folderTrustFeature;
754
761
  }
762
+ /**
763
+ * Returns 'true' if the workspace is considered "trusted".
764
+ * 'false' for untrusted.
765
+ */
755
766
  getFolderTrust() {
756
767
  return this.folderTrust;
757
768
  }
758
769
  isTrustedFolder() {
759
- return this.trustedFolder;
770
+ // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
771
+ // when the file based trust value is unavailable, since it is mainly used
772
+ // in the initialization for trust dialogs, etc. Here we return true since
773
+ // config.isTrustedFolder() is used for the main business logic of blocking
774
+ // tool calls etc in the rest of the application.
775
+ //
776
+ // Default value is true since we load with trusted settings to avoid
777
+ // restarts in the more common path. If the user chooses to mark the folder
778
+ // as untrusted, the CLI will restart and we will have the trust value
779
+ // reloaded.
780
+ const context = ideContext.getIdeContext();
781
+ if (context?.workspaceState?.isTrusted !== undefined) {
782
+ return context.workspaceState.isTrusted;
783
+ }
784
+ return this.trustedFolder ?? true;
760
785
  }
761
786
  setIdeMode(value) {
762
787
  this.ideMode = value;
@@ -859,6 +884,9 @@ export class Config {
859
884
  getEnablePromptCompletion() {
860
885
  return this.enablePromptCompletion;
861
886
  }
887
+ getUseSmartEdit() {
888
+ return this.useSmartEdit;
889
+ }
862
890
  async getGitService() {
863
891
  if (!this.gitService) {
864
892
  this.gitService = new GitService(this.targetDir, this.storage);
@@ -878,13 +906,13 @@ export class Config {
878
906
  async refreshMemory() {
879
907
  const { memoryContent, fileCount } = await loadServerHierarchicalMemory(this.getWorkingDir(), this.shouldLoadMemoryFromIncludeDirectories()
880
908
  ? this.getWorkspaceContext().getDirectories()
881
- : [], this.getDebugMode(), this.getFileService(), this.getExtensionContextFilePaths());
909
+ : [], this.getDebugMode(), this.getFileService(), this.getExtensionContextFilePaths(), this.getFolderTrust());
882
910
  this.setUserMemory(memoryContent);
883
911
  this.setLlxprtMdFileCount(fileCount);
884
912
  return { memoryContent, fileCount };
885
913
  }
886
914
  async createToolRegistry() {
887
- const registry = new ToolRegistry(this);
915
+ const registry = new ToolRegistry(this, this.eventEmitter);
888
916
  // helper to create & register core tools that are enabled
889
917
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
890
918
  const registerCoreTool = (ToolClass, ...args) => {
@@ -916,7 +944,12 @@ export class Config {
916
944
  registerCoreTool(GrepTool, this);
917
945
  }
918
946
  registerCoreTool(GlobTool, this);
919
- registerCoreTool(EditTool, this);
947
+ if (this.getUseSmartEdit()) {
948
+ registerCoreTool(SmartEditTool, this);
949
+ }
950
+ else {
951
+ registerCoreTool(EditTool, this);
952
+ }
920
953
  registerCoreTool(WriteFileTool, this);
921
954
  registerCoreTool(WebFetchTool, this);
922
955
  registerCoreTool(ReadManyFilesTool, this);