@vybestack/llxprt-code 0.1.12 → 0.1.13-hotfix1

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 (248) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/package.json +5 -5
  3. package/dist/src/acp/acp.d.ts +208 -0
  4. package/dist/src/acp/acp.js +193 -0
  5. package/dist/src/acp/acp.js.map +1 -0
  6. package/dist/src/acp/acpPeer.d.ts +8 -0
  7. package/dist/src/acp/acpPeer.js +537 -0
  8. package/dist/src/acp/acpPeer.js.map +1 -0
  9. package/dist/src/config/config.d.ts +2 -0
  10. package/dist/src/config/config.js +73 -19
  11. package/dist/src/config/config.js.map +1 -1
  12. package/dist/src/config/extension.d.ts +2 -2
  13. package/dist/src/config/extension.js +21 -16
  14. package/dist/src/config/extension.js.map +1 -1
  15. package/dist/src/config/settings.d.ts +7 -0
  16. package/dist/src/config/settings.js +15 -0
  17. package/dist/src/config/settings.js.map +1 -1
  18. package/dist/src/gemini.js +33 -34
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +1 -1
  21. package/dist/src/generated/git-commit.js +1 -1
  22. package/dist/src/nonInteractiveCli.js +36 -3
  23. package/dist/src/nonInteractiveCli.js.map +1 -1
  24. package/dist/src/providers/index.d.ts +1 -7
  25. package/dist/src/providers/index.js +2 -10
  26. package/dist/src/providers/index.js.map +1 -1
  27. package/dist/src/providers/providerConfigUtils.d.ts +1 -2
  28. package/dist/src/providers/providerConfigUtils.js +1 -1
  29. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  30. package/dist/src/providers/providerManagerInstance.d.ts +2 -2
  31. package/dist/src/providers/providerManagerInstance.js +21 -19
  32. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  33. package/dist/src/providers/types.d.ts +1 -9
  34. package/dist/src/providers/types.js +2 -10
  35. package/dist/src/providers/types.js.map +1 -1
  36. package/dist/src/services/CommandService.d.ts +3 -1
  37. package/dist/src/services/CommandService.js +50 -11
  38. package/dist/src/services/CommandService.js.map +1 -1
  39. package/dist/src/ui/App.js +24 -25
  40. package/dist/src/ui/App.js.map +1 -1
  41. package/dist/src/ui/commands/aboutCommand.js +21 -0
  42. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  43. package/dist/src/ui/commands/baseurlCommand.d.ts +7 -0
  44. package/dist/src/ui/commands/baseurlCommand.js +22 -0
  45. package/dist/src/ui/commands/baseurlCommand.js.map +1 -0
  46. package/dist/src/ui/commands/bugCommand.d.ts +7 -0
  47. package/dist/src/ui/commands/bugCommand.js +61 -0
  48. package/dist/src/ui/commands/bugCommand.js.map +1 -0
  49. package/dist/src/ui/commands/chatCommand.d.ts +7 -0
  50. package/dist/src/ui/commands/chatCommand.js +170 -0
  51. package/dist/src/ui/commands/chatCommand.js.map +1 -0
  52. package/dist/src/ui/commands/clearCommand.js +12 -2
  53. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  54. package/dist/src/ui/commands/compressCommand.d.ts +7 -0
  55. package/dist/src/ui/commands/compressCommand.js +62 -0
  56. package/dist/src/ui/commands/compressCommand.js.map +1 -0
  57. package/dist/src/ui/commands/docsCommand.d.ts +7 -0
  58. package/dist/src/ui/commands/docsCommand.js +29 -0
  59. package/dist/src/ui/commands/docsCommand.js.map +1 -0
  60. package/dist/src/ui/commands/editorCommand.d.ts +7 -0
  61. package/dist/src/ui/commands/editorCommand.js +14 -0
  62. package/dist/src/ui/commands/editorCommand.js.map +1 -0
  63. package/dist/src/ui/commands/extensionsCommand.d.ts +7 -0
  64. package/dist/src/ui/commands/extensionsCommand.js +29 -0
  65. package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
  66. package/dist/src/ui/commands/ideCommand.d.ts +8 -0
  67. package/dist/src/ui/commands/ideCommand.js +123 -0
  68. package/dist/src/ui/commands/ideCommand.js.map +1 -0
  69. package/dist/src/{providers/ProviderAwareContentGenerator.d.ts → ui/commands/keyCommand.d.ts} +2 -1
  70. package/dist/src/ui/commands/keyCommand.js +29 -0
  71. package/dist/src/ui/commands/keyCommand.js.map +1 -0
  72. package/dist/src/ui/commands/keyfileCommand.d.ts +7 -0
  73. package/dist/src/ui/commands/keyfileCommand.js +104 -0
  74. package/dist/src/ui/commands/keyfileCommand.js.map +1 -0
  75. package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
  76. package/dist/src/ui/commands/mcpCommand.js +204 -0
  77. package/dist/src/ui/commands/mcpCommand.js.map +1 -0
  78. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  79. package/dist/src/ui/commands/modelCommand.js +60 -0
  80. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  81. package/dist/src/ui/commands/providerCommand.d.ts +7 -0
  82. package/dist/src/ui/commands/providerCommand.js +86 -0
  83. package/dist/src/ui/commands/providerCommand.js.map +1 -0
  84. package/dist/src/ui/commands/quitCommand.d.ts +7 -0
  85. package/dist/src/ui/commands/quitCommand.js +32 -0
  86. package/dist/src/ui/commands/quitCommand.js.map +1 -0
  87. package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
  88. package/dist/src/ui/commands/restoreCommand.js +126 -0
  89. package/dist/src/ui/commands/restoreCommand.js.map +1 -0
  90. package/dist/src/ui/commands/statsCommand.d.ts +7 -0
  91. package/dist/src/ui/commands/statsCommand.js +50 -0
  92. package/dist/src/ui/commands/statsCommand.js.map +1 -0
  93. package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
  94. package/dist/src/ui/commands/toolsCommand.js +54 -0
  95. package/dist/src/ui/commands/toolsCommand.js.map +1 -0
  96. package/dist/src/ui/commands/types.d.ts +34 -2
  97. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +6 -1
  98. package/dist/src/ui/components/ContextSummaryDisplay.js +46 -19
  99. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  100. package/dist/src/ui/components/Footer.d.ts +0 -1
  101. package/dist/src/ui/components/Footer.js +3 -21
  102. package/dist/src/ui/components/Footer.js.map +1 -1
  103. package/dist/src/ui/components/InputPrompt.js +110 -61
  104. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  105. package/dist/src/ui/components/ProviderModelDialog.d.ts +1 -1
  106. package/dist/src/ui/components/ThemeDialog.js +25 -24
  107. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  108. package/dist/src/ui/components/messages/ToolGroupMessage.js +3 -1
  109. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  110. package/dist/src/ui/components/shared/MaxSizedBox.js +69 -2
  111. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  112. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
  113. package/dist/src/ui/components/shared/RadioButtonSelect.js +60 -10
  114. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  115. package/dist/src/ui/components/shared/text-buffer.js +1 -1
  116. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  117. package/dist/src/ui/constants.d.ts +1 -0
  118. package/dist/src/ui/constants.js +1 -0
  119. package/dist/src/ui/constants.js.map +1 -1
  120. package/dist/src/ui/containers/SessionController.js +1 -1
  121. package/dist/src/ui/containers/SessionController.js.map +1 -1
  122. package/dist/src/ui/contexts/OpenAIProviderContext.d.ts +1 -2
  123. package/dist/src/ui/contexts/OpenAIProviderContext.js.map +1 -1
  124. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -1
  125. package/dist/src/ui/hooks/shellCommandProcessor.js +35 -11
  126. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  127. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -9
  128. package/dist/src/ui/hooks/slashCommandProcessor.js +83 -622
  129. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  130. package/dist/src/ui/hooks/useAuthCommand.js +16 -2
  131. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  132. package/dist/src/ui/hooks/useCompletion.d.ts +1 -0
  133. package/dist/src/ui/hooks/useCompletion.js +21 -2
  134. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  135. package/dist/src/ui/hooks/useFocus.d.ts +6 -0
  136. package/dist/src/ui/hooks/useFocus.js +41 -0
  137. package/dist/src/ui/hooks/useFocus.js.map +1 -0
  138. package/dist/src/ui/hooks/useGeminiStream.js +34 -2
  139. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  140. package/dist/src/ui/hooks/useOpenAIProviderInfo.d.ts +3 -2
  141. package/dist/src/ui/hooks/useOpenAIProviderInfo.js +5 -4
  142. package/dist/src/ui/hooks/useOpenAIProviderInfo.js.map +1 -1
  143. package/dist/src/ui/hooks/usePrivacySettings.js +5 -5
  144. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  145. package/dist/src/ui/hooks/useProviderDialog.d.ts +5 -2
  146. package/dist/src/ui/hooks/useProviderDialog.js +55 -3
  147. package/dist/src/ui/hooks/useProviderDialog.js.map +1 -1
  148. package/dist/src/ui/hooks/useProviderModelDialog.d.ts +1 -1
  149. package/dist/src/ui/themes/ansi-light.js +1 -1
  150. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  151. package/dist/src/ui/themes/googlecode.js +1 -1
  152. package/dist/src/ui/themes/googlecode.js.map +1 -1
  153. package/dist/src/ui/themes/xcode.js +1 -1
  154. package/dist/src/ui/themes/xcode.js.map +1 -1
  155. package/dist/src/ui/types.d.ts +10 -0
  156. package/dist/src/ui/types.js.map +1 -1
  157. package/dist/src/ui/utils/updateCheck.js +10 -6
  158. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  159. package/dist/src/utils/userStartupWarnings.js +1 -16
  160. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  161. package/dist/tsconfig.tsbuildinfo +1 -1
  162. package/package.json +5 -5
  163. package/LICENSE +0 -202
  164. package/README.md +0 -256
  165. package/dist/src/providers/IMessage.d.ts +0 -38
  166. package/dist/src/providers/IMessage.js +0 -17
  167. package/dist/src/providers/IMessage.js.map +0 -1
  168. package/dist/src/providers/IModel.d.ts +0 -23
  169. package/dist/src/providers/IModel.js +0 -17
  170. package/dist/src/providers/IModel.js.map +0 -1
  171. package/dist/src/providers/IProvider.d.ts +0 -32
  172. package/dist/src/providers/IProvider.js +0 -17
  173. package/dist/src/providers/IProvider.js.map +0 -1
  174. package/dist/src/providers/ITool.d.ts +0 -23
  175. package/dist/src/providers/ITool.js +0 -17
  176. package/dist/src/providers/ITool.js.map +0 -1
  177. package/dist/src/providers/ProviderAwareContentGenerator.js +0 -9
  178. package/dist/src/providers/ProviderAwareContentGenerator.js.map +0 -1
  179. package/dist/src/providers/ProviderManager.d.ts +0 -19
  180. package/dist/src/providers/ProviderManager.js +0 -63
  181. package/dist/src/providers/ProviderManager.js.map +0 -1
  182. package/dist/src/providers/ProviderManagerAdapter.d.ts +0 -17
  183. package/dist/src/providers/ProviderManagerAdapter.js +0 -113
  184. package/dist/src/providers/ProviderManagerAdapter.js.map +0 -1
  185. package/dist/src/providers/README-qwen3.md +0 -60
  186. package/dist/src/providers/adapters/IStreamAdapter.d.ts +0 -18
  187. package/dist/src/providers/adapters/IStreamAdapter.js +0 -7
  188. package/dist/src/providers/adapters/IStreamAdapter.js.map +0 -1
  189. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +0 -46
  190. package/dist/src/providers/anthropic/AnthropicProvider.js +0 -478
  191. package/dist/src/providers/anthropic/AnthropicProvider.js.map +0 -1
  192. package/dist/src/providers/contentGeneratorProvider.d.ts +0 -13
  193. package/dist/src/providers/contentGeneratorProvider.js +0 -17
  194. package/dist/src/providers/contentGeneratorProvider.js.map +0 -1
  195. package/dist/src/providers/gemini/GeminiProvider.d.ts +0 -72
  196. package/dist/src/providers/gemini/GeminiProvider.js +0 -454
  197. package/dist/src/providers/gemini/GeminiProvider.js.map +0 -1
  198. package/dist/src/providers/integration/TEST_INSTRUCTIONS.md +0 -197
  199. package/dist/src/providers/openai/ConversationCache.d.ts +0 -20
  200. package/dist/src/providers/openai/ConversationCache.js +0 -109
  201. package/dist/src/providers/openai/ConversationCache.js.map +0 -1
  202. package/dist/src/providers/openai/IChatGenerateParams.d.ts +0 -11
  203. package/dist/src/providers/openai/IChatGenerateParams.js +0 -2
  204. package/dist/src/providers/openai/IChatGenerateParams.js.map +0 -1
  205. package/dist/src/providers/openai/OpenAIProvider.d.ts +0 -71
  206. package/dist/src/providers/openai/OpenAIProvider.js +0 -486
  207. package/dist/src/providers/openai/OpenAIProvider.js.map +0 -1
  208. package/dist/src/providers/openai/Qwen3FireworksProvider.d.ts +0 -39
  209. package/dist/src/providers/openai/Qwen3FireworksProvider.js +0 -209
  210. package/dist/src/providers/openai/Qwen3FireworksProvider.js.map +0 -1
  211. package/dist/src/providers/openai/RESPONSES_API_MODELS.d.ts +0 -2
  212. package/dist/src/providers/openai/RESPONSES_API_MODELS.js +0 -14
  213. package/dist/src/providers/openai/RESPONSES_API_MODELS.js.map +0 -1
  214. package/dist/src/providers/openai/buildResponsesRequest.d.ts +0 -67
  215. package/dist/src/providers/openai/buildResponsesRequest.js +0 -144
  216. package/dist/src/providers/openai/buildResponsesRequest.js.map +0 -1
  217. package/dist/src/providers/openai/docs/accessing-provider-info.md +0 -172
  218. package/dist/src/providers/openai/docs/params-mapping.md +0 -91
  219. package/dist/src/providers/openai/docs/qwen3-fireworks.md +0 -47
  220. package/dist/src/providers/openai/docs/responses-api-tool-calls.md +0 -96
  221. package/dist/src/providers/openai/estimateRemoteTokens.d.ts +0 -26
  222. package/dist/src/providers/openai/estimateRemoteTokens.js +0 -75
  223. package/dist/src/providers/openai/estimateRemoteTokens.js.map +0 -1
  224. package/dist/src/providers/openai/getOpenAIProviderInfo.d.ts +0 -46
  225. package/dist/src/providers/openai/getOpenAIProviderInfo.js +0 -74
  226. package/dist/src/providers/openai/getOpenAIProviderInfo.js.map +0 -1
  227. package/dist/src/providers/openai/parseResponsesStream.d.ts +0 -3
  228. package/dist/src/providers/openai/parseResponsesStream.js +0 -444
  229. package/dist/src/providers/openai/parseResponsesStream.js.map +0 -1
  230. package/dist/src/providers/parsers/TextToolCallParser.d.ts +0 -35
  231. package/dist/src/providers/parsers/TextToolCallParser.js +0 -248
  232. package/dist/src/providers/parsers/TextToolCallParser.js.map +0 -1
  233. package/dist/src/providers/tokenizers/AnthropicTokenizer.d.ts +0 -19
  234. package/dist/src/providers/tokenizers/AnthropicTokenizer.js +0 -37
  235. package/dist/src/providers/tokenizers/AnthropicTokenizer.js.map +0 -1
  236. package/dist/src/providers/tokenizers/ITokenizer.d.ts +0 -18
  237. package/dist/src/providers/tokenizers/ITokenizer.js +0 -17
  238. package/dist/src/providers/tokenizers/ITokenizer.js.map +0 -1
  239. package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +0 -24
  240. package/dist/src/providers/tokenizers/OpenAITokenizer.js +0 -56
  241. package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +0 -1
  242. package/dist/src/tools/IToolFormatter.d.ts +0 -40
  243. package/dist/src/tools/IToolFormatter.js +0 -17
  244. package/dist/src/tools/IToolFormatter.js.map +0 -1
  245. package/dist/src/tools/ToolFormatter.d.ts +0 -45
  246. package/dist/src/tools/ToolFormatter.js +0 -216
  247. package/dist/src/tools/ToolFormatter.js.map +0 -1
  248. package/dist/vybestack-llxprt-code-0.1.12.tgz +0 -0
@@ -0,0 +1,537 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthType, logToolCall, convertToFunctionResponse, ToolConfirmationOutcome, clearCachedCredentialFile, isNodeError, getErrorMessage, isWithinRoot, getErrorStatus, } from '@vybestack/llxprt-code-core';
7
+ import * as acp from './acp.js';
8
+ import { Readable, Writable } from 'node:stream';
9
+ import { SettingScope } from '../config/settings.js';
10
+ import * as fs from 'fs/promises';
11
+ import * as path from 'path';
12
+ export async function runAcpPeer(config, settings) {
13
+ const stdout = Writable.toWeb(process.stdout);
14
+ const stdin = Readable.toWeb(process.stdin);
15
+ // Stdout is used to send messages to the client, so console.log/console.info
16
+ // messages to stderr so that they don't interfere with ACP.
17
+ console.log = console.error;
18
+ console.info = console.error;
19
+ console.debug = console.error;
20
+ new acp.ClientConnection((client) => new GeminiAgent(config, settings, client), stdout, stdin);
21
+ }
22
+ class GeminiAgent {
23
+ config;
24
+ settings;
25
+ client;
26
+ chat;
27
+ pendingSend;
28
+ constructor(config, settings, client) {
29
+ this.config = config;
30
+ this.settings = settings;
31
+ this.client = client;
32
+ }
33
+ async initialize(_) {
34
+ let isAuthenticated = false;
35
+ if (this.settings.merged.selectedAuthType) {
36
+ try {
37
+ await this.config.refreshAuth(this.settings.merged.selectedAuthType);
38
+ isAuthenticated = true;
39
+ }
40
+ catch (error) {
41
+ console.error('Failed to refresh auth:', error);
42
+ }
43
+ }
44
+ return { protocolVersion: acp.LATEST_PROTOCOL_VERSION, isAuthenticated };
45
+ }
46
+ async authenticate() {
47
+ await clearCachedCredentialFile();
48
+ await this.config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
49
+ this.settings.setValue(SettingScope.User, 'selectedAuthType', AuthType.LOGIN_WITH_GOOGLE);
50
+ }
51
+ async cancelSendMessage() {
52
+ if (!this.pendingSend) {
53
+ throw new Error('Not currently generating');
54
+ }
55
+ this.pendingSend.abort();
56
+ delete this.pendingSend;
57
+ }
58
+ async sendUserMessage(params) {
59
+ this.pendingSend?.abort();
60
+ const pendingSend = new AbortController();
61
+ this.pendingSend = pendingSend;
62
+ if (!this.chat) {
63
+ const geminiClient = this.config.getGeminiClient();
64
+ this.chat = await geminiClient.startChat();
65
+ }
66
+ const promptId = Math.random().toString(16).slice(2);
67
+ const chat = this.chat;
68
+ const toolRegistry = await this.config.getToolRegistry();
69
+ const parts = await this.#resolveUserMessage(params, pendingSend.signal);
70
+ let nextMessage = { role: 'user', parts };
71
+ while (nextMessage !== null) {
72
+ if (pendingSend.signal.aborted) {
73
+ chat.addHistory(nextMessage);
74
+ return;
75
+ }
76
+ const functionCalls = [];
77
+ try {
78
+ const responseStream = await chat.sendMessageStream({
79
+ message: nextMessage?.parts ?? [],
80
+ config: {
81
+ abortSignal: pendingSend.signal,
82
+ tools: [
83
+ {
84
+ functionDeclarations: toolRegistry.getFunctionDeclarations(),
85
+ },
86
+ ],
87
+ },
88
+ }, promptId);
89
+ nextMessage = null;
90
+ for await (const resp of responseStream) {
91
+ if (pendingSend.signal.aborted) {
92
+ return;
93
+ }
94
+ if (resp.candidates && resp.candidates.length > 0) {
95
+ const candidate = resp.candidates[0];
96
+ for (const part of candidate.content?.parts ?? []) {
97
+ if (!part.text) {
98
+ continue;
99
+ }
100
+ this.client.streamAssistantMessageChunk({
101
+ chunk: part.thought
102
+ ? { thought: part.text }
103
+ : { text: part.text },
104
+ });
105
+ }
106
+ }
107
+ if (resp.functionCalls) {
108
+ functionCalls.push(...resp.functionCalls);
109
+ }
110
+ }
111
+ }
112
+ catch (error) {
113
+ if (getErrorStatus(error) === 429) {
114
+ throw new acp.RequestError(429, 'Rate limit exceeded. Try again later.');
115
+ }
116
+ throw error;
117
+ }
118
+ if (functionCalls.length > 0) {
119
+ const toolResponseParts = [];
120
+ for (const fc of functionCalls) {
121
+ const response = await this.#runTool(pendingSend.signal, promptId, fc);
122
+ const parts = Array.isArray(response) ? response : [response];
123
+ for (const part of parts) {
124
+ if (typeof part === 'string') {
125
+ toolResponseParts.push({ text: part });
126
+ }
127
+ else if (part) {
128
+ toolResponseParts.push(part);
129
+ }
130
+ }
131
+ }
132
+ nextMessage = { role: 'user', parts: toolResponseParts };
133
+ }
134
+ }
135
+ }
136
+ async #runTool(abortSignal, promptId, fc) {
137
+ const callId = fc.id ?? `${fc.name}-${Date.now()}`;
138
+ const args = (fc.args ?? {});
139
+ const startTime = Date.now();
140
+ const errorResponse = (error) => {
141
+ const durationMs = Date.now() - startTime;
142
+ logToolCall(this.config, {
143
+ 'event.name': 'tool_call',
144
+ 'event.timestamp': new Date().toISOString(),
145
+ prompt_id: promptId,
146
+ function_name: fc.name ?? '',
147
+ function_args: args,
148
+ duration_ms: durationMs,
149
+ success: false,
150
+ error: error.message,
151
+ });
152
+ return [
153
+ {
154
+ functionResponse: {
155
+ id: callId,
156
+ name: fc.name ?? '',
157
+ response: { error: error.message },
158
+ },
159
+ },
160
+ ];
161
+ };
162
+ if (!fc.name) {
163
+ return errorResponse(new Error('Missing function name'));
164
+ }
165
+ const toolRegistry = await this.config.getToolRegistry();
166
+ const tool = toolRegistry.getTool(fc.name);
167
+ if (!tool) {
168
+ return errorResponse(new Error(`Tool "${fc.name}" not found in registry.`));
169
+ }
170
+ let toolCallId;
171
+ const confirmationDetails = await tool.shouldConfirmExecute(args, abortSignal);
172
+ if (confirmationDetails) {
173
+ let content = null;
174
+ if (confirmationDetails.type === 'edit') {
175
+ content = {
176
+ type: 'diff',
177
+ path: confirmationDetails.fileName,
178
+ oldText: confirmationDetails.originalContent,
179
+ newText: confirmationDetails.newContent,
180
+ };
181
+ }
182
+ const result = await this.client.requestToolCallConfirmation({
183
+ label: tool.getDescription(args),
184
+ icon: tool.icon,
185
+ content,
186
+ confirmation: toAcpToolCallConfirmation(confirmationDetails),
187
+ locations: tool.toolLocations(args),
188
+ });
189
+ await confirmationDetails.onConfirm(toToolCallOutcome(result.outcome));
190
+ switch (result.outcome) {
191
+ case 'reject':
192
+ return errorResponse(new Error(`Tool "${fc.name}" not allowed to run by the user.`));
193
+ case 'cancel':
194
+ return errorResponse(new Error(`Tool "${fc.name}" was canceled by the user.`));
195
+ case 'allow':
196
+ case 'alwaysAllow':
197
+ case 'alwaysAllowMcpServer':
198
+ case 'alwaysAllowTool':
199
+ break;
200
+ default: {
201
+ const resultOutcome = result.outcome;
202
+ throw new Error(`Unexpected: ${resultOutcome}`);
203
+ }
204
+ }
205
+ toolCallId = result.id;
206
+ }
207
+ else {
208
+ const result = await this.client.pushToolCall({
209
+ icon: tool.icon,
210
+ label: tool.getDescription(args),
211
+ locations: tool.toolLocations(args),
212
+ });
213
+ toolCallId = result.id;
214
+ }
215
+ try {
216
+ const toolResult = await tool.execute(args, abortSignal);
217
+ const toolCallContent = toToolCallContent(toolResult);
218
+ await this.client.updateToolCall({
219
+ toolCallId,
220
+ status: 'finished',
221
+ content: toolCallContent,
222
+ });
223
+ const durationMs = Date.now() - startTime;
224
+ logToolCall(this.config, {
225
+ 'event.name': 'tool_call',
226
+ 'event.timestamp': new Date().toISOString(),
227
+ function_name: fc.name,
228
+ function_args: args,
229
+ duration_ms: durationMs,
230
+ success: true,
231
+ prompt_id: promptId,
232
+ });
233
+ return convertToFunctionResponse(fc.name, callId, toolResult.llmContent);
234
+ }
235
+ catch (e) {
236
+ const error = e instanceof Error ? e : new Error(String(e));
237
+ await this.client.updateToolCall({
238
+ toolCallId,
239
+ status: 'error',
240
+ content: { type: 'markdown', markdown: error.message },
241
+ });
242
+ return errorResponse(error);
243
+ }
244
+ }
245
+ async #resolveUserMessage(message, abortSignal) {
246
+ const atPathCommandParts = message.chunks.filter((part) => 'path' in part);
247
+ if (atPathCommandParts.length === 0) {
248
+ return message.chunks.map((chunk) => {
249
+ if ('text' in chunk) {
250
+ return { text: chunk.text };
251
+ }
252
+ else {
253
+ throw new Error('Unexpected chunk type');
254
+ }
255
+ });
256
+ }
257
+ // Get centralized file discovery service
258
+ const fileDiscovery = this.config.getFileService();
259
+ const respectGitIgnore = this.config.getFileFilteringRespectGitIgnore();
260
+ const pathSpecsToRead = [];
261
+ const atPathToResolvedSpecMap = new Map();
262
+ const contentLabelsForDisplay = [];
263
+ const ignoredPaths = [];
264
+ const toolRegistry = await this.config.getToolRegistry();
265
+ const readManyFilesTool = toolRegistry.getTool('read_many_files');
266
+ const globTool = toolRegistry.getTool('glob');
267
+ if (!readManyFilesTool) {
268
+ throw new Error('Error: read_many_files tool not found.');
269
+ }
270
+ for (const atPathPart of atPathCommandParts) {
271
+ const pathName = atPathPart.path;
272
+ // Check if path should be ignored by git
273
+ if (fileDiscovery.shouldGitIgnoreFile(pathName)) {
274
+ ignoredPaths.push(pathName);
275
+ const reason = respectGitIgnore
276
+ ? 'git-ignored and will be skipped'
277
+ : 'ignored by custom patterns';
278
+ console.warn(`Path ${pathName} is ${reason}.`);
279
+ continue;
280
+ }
281
+ let currentPathSpec = pathName;
282
+ let resolvedSuccessfully = false;
283
+ try {
284
+ const absolutePath = path.resolve(this.config.getTargetDir(), pathName);
285
+ if (isWithinRoot(absolutePath, this.config.getTargetDir())) {
286
+ const stats = await fs.stat(absolutePath);
287
+ if (stats.isDirectory()) {
288
+ currentPathSpec = pathName.endsWith('/')
289
+ ? `${pathName}**`
290
+ : `${pathName}/**`;
291
+ this.#debug(`Path ${pathName} resolved to directory, using glob: ${currentPathSpec}`);
292
+ }
293
+ else {
294
+ this.#debug(`Path ${pathName} resolved to file: ${currentPathSpec}`);
295
+ }
296
+ resolvedSuccessfully = true;
297
+ }
298
+ else {
299
+ this.#debug(`Path ${pathName} is outside the project directory. Skipping.`);
300
+ }
301
+ }
302
+ catch (error) {
303
+ if (isNodeError(error) && error.code === 'ENOENT') {
304
+ if (this.config.getEnableRecursiveFileSearch() && globTool) {
305
+ this.#debug(`Path ${pathName} not found directly, attempting glob search.`);
306
+ try {
307
+ const globResult = await globTool.execute({
308
+ pattern: `**/*${pathName}*`,
309
+ path: this.config.getTargetDir(),
310
+ }, abortSignal);
311
+ if (globResult.llmContent &&
312
+ typeof globResult.llmContent === 'string' &&
313
+ !globResult.llmContent.startsWith('No files found') &&
314
+ !globResult.llmContent.startsWith('Error:')) {
315
+ const lines = globResult.llmContent.split('\n');
316
+ if (lines.length > 1 && lines[1]) {
317
+ const firstMatchAbsolute = lines[1].trim();
318
+ currentPathSpec = path.relative(this.config.getTargetDir(), firstMatchAbsolute);
319
+ this.#debug(`Glob search for ${pathName} found ${firstMatchAbsolute}, using relative path: ${currentPathSpec}`);
320
+ resolvedSuccessfully = true;
321
+ }
322
+ else {
323
+ this.#debug(`Glob search for '**/*${pathName}*' did not return a usable path. Path ${pathName} will be skipped.`);
324
+ }
325
+ }
326
+ else {
327
+ this.#debug(`Glob search for '**/*${pathName}*' found no files or an error. Path ${pathName} will be skipped.`);
328
+ }
329
+ }
330
+ catch (globError) {
331
+ console.error(`Error during glob search for ${pathName}: ${getErrorMessage(globError)}`);
332
+ }
333
+ }
334
+ else {
335
+ this.#debug(`Glob tool not found. Path ${pathName} will be skipped.`);
336
+ }
337
+ }
338
+ else {
339
+ console.error(`Error stating path ${pathName}. Path ${pathName} will be skipped.`);
340
+ }
341
+ }
342
+ if (resolvedSuccessfully) {
343
+ pathSpecsToRead.push(currentPathSpec);
344
+ atPathToResolvedSpecMap.set(pathName, currentPathSpec);
345
+ contentLabelsForDisplay.push(pathName);
346
+ }
347
+ }
348
+ // Construct the initial part of the query for the LLM
349
+ let initialQueryText = '';
350
+ for (let i = 0; i < message.chunks.length; i++) {
351
+ const chunk = message.chunks[i];
352
+ if ('text' in chunk) {
353
+ initialQueryText += chunk.text;
354
+ }
355
+ else {
356
+ // type === 'atPath'
357
+ const resolvedSpec = atPathToResolvedSpecMap.get(chunk.path);
358
+ if (i > 0 &&
359
+ initialQueryText.length > 0 &&
360
+ !initialQueryText.endsWith(' ') &&
361
+ resolvedSpec) {
362
+ // Add space if previous part was text and didn't end with space, or if previous was @path
363
+ const prevPart = message.chunks[i - 1];
364
+ if ('text' in prevPart ||
365
+ ('path' in prevPart && atPathToResolvedSpecMap.has(prevPart.path))) {
366
+ initialQueryText += ' ';
367
+ }
368
+ }
369
+ if (resolvedSpec) {
370
+ initialQueryText += `@${resolvedSpec}`;
371
+ }
372
+ else {
373
+ // If not resolved for reading (e.g. lone @ or invalid path that was skipped),
374
+ // add the original @-string back, ensuring spacing if it's not the first element.
375
+ if (i > 0 &&
376
+ initialQueryText.length > 0 &&
377
+ !initialQueryText.endsWith(' ') &&
378
+ !chunk.path.startsWith(' ')) {
379
+ initialQueryText += ' ';
380
+ }
381
+ initialQueryText += `@${chunk.path}`;
382
+ }
383
+ }
384
+ }
385
+ initialQueryText = initialQueryText.trim();
386
+ // Inform user about ignored paths
387
+ if (ignoredPaths.length > 0) {
388
+ const ignoreType = respectGitIgnore ? 'git-ignored' : 'custom-ignored';
389
+ this.#debug(`Ignored ${ignoredPaths.length} ${ignoreType} files: ${ignoredPaths.join(', ')}`);
390
+ }
391
+ // Fallback for lone "@" or completely invalid @-commands resulting in empty initialQueryText
392
+ if (pathSpecsToRead.length === 0) {
393
+ console.warn('No valid file paths found in @ commands to read.');
394
+ return [{ text: initialQueryText }];
395
+ }
396
+ const processedQueryParts = [{ text: initialQueryText }];
397
+ const toolArgs = {
398
+ paths: pathSpecsToRead,
399
+ respectGitIgnore, // Use configuration setting
400
+ };
401
+ const toolCall = await this.client.pushToolCall({
402
+ icon: readManyFilesTool.icon,
403
+ label: readManyFilesTool.getDescription(toolArgs),
404
+ });
405
+ try {
406
+ const result = await readManyFilesTool.execute(toolArgs, abortSignal);
407
+ const content = toToolCallContent(result) || {
408
+ type: 'markdown',
409
+ markdown: `Successfully read: ${contentLabelsForDisplay.join(', ')}`,
410
+ };
411
+ await this.client.updateToolCall({
412
+ toolCallId: toolCall.id,
413
+ status: 'finished',
414
+ content,
415
+ });
416
+ if (Array.isArray(result.llmContent)) {
417
+ const fileContentRegex = /^--- (.*?) ---\n\n([\s\S]*?)\n\n$/;
418
+ processedQueryParts.push({
419
+ text: '\n--- Content from referenced files ---',
420
+ });
421
+ for (const part of result.llmContent) {
422
+ if (typeof part === 'string') {
423
+ const match = fileContentRegex.exec(part);
424
+ if (match) {
425
+ const filePathSpecInContent = match[1]; // This is a resolved pathSpec
426
+ const fileActualContent = match[2].trim();
427
+ processedQueryParts.push({
428
+ text: `\nContent from @${filePathSpecInContent}:\n`,
429
+ });
430
+ processedQueryParts.push({ text: fileActualContent });
431
+ }
432
+ else {
433
+ processedQueryParts.push({ text: part });
434
+ }
435
+ }
436
+ else {
437
+ // part is a Part object.
438
+ processedQueryParts.push(part);
439
+ }
440
+ }
441
+ processedQueryParts.push({ text: '\n--- End of content ---' });
442
+ }
443
+ else {
444
+ console.warn('read_many_files tool returned no content or empty content.');
445
+ }
446
+ return processedQueryParts;
447
+ }
448
+ catch (error) {
449
+ await this.client.updateToolCall({
450
+ toolCallId: toolCall.id,
451
+ status: 'error',
452
+ content: {
453
+ type: 'markdown',
454
+ markdown: `Error reading files (${contentLabelsForDisplay.join(', ')}): ${getErrorMessage(error)}`,
455
+ },
456
+ });
457
+ throw error;
458
+ }
459
+ }
460
+ #debug(msg) {
461
+ if (this.config.getDebugMode()) {
462
+ console.warn(msg);
463
+ }
464
+ }
465
+ }
466
+ function toToolCallContent(toolResult) {
467
+ if (toolResult.returnDisplay) {
468
+ if (typeof toolResult.returnDisplay === 'string') {
469
+ return {
470
+ type: 'markdown',
471
+ markdown: toolResult.returnDisplay,
472
+ };
473
+ }
474
+ else {
475
+ return {
476
+ type: 'diff',
477
+ path: toolResult.returnDisplay.fileName,
478
+ oldText: toolResult.returnDisplay.originalContent,
479
+ newText: toolResult.returnDisplay.newContent,
480
+ };
481
+ }
482
+ }
483
+ else {
484
+ return null;
485
+ }
486
+ }
487
+ function toAcpToolCallConfirmation(confirmationDetails) {
488
+ switch (confirmationDetails.type) {
489
+ case 'edit':
490
+ return { type: 'edit' };
491
+ case 'exec':
492
+ return {
493
+ type: 'execute',
494
+ rootCommand: confirmationDetails.rootCommand,
495
+ command: confirmationDetails.command,
496
+ };
497
+ case 'mcp':
498
+ return {
499
+ type: 'mcp',
500
+ serverName: confirmationDetails.serverName,
501
+ toolName: confirmationDetails.toolName,
502
+ toolDisplayName: confirmationDetails.toolDisplayName,
503
+ };
504
+ case 'info':
505
+ return {
506
+ type: 'fetch',
507
+ urls: confirmationDetails.urls || [],
508
+ description: confirmationDetails.urls?.length
509
+ ? null
510
+ : confirmationDetails.prompt,
511
+ };
512
+ default: {
513
+ const unreachable = confirmationDetails;
514
+ throw new Error(`Unexpected: ${unreachable}`);
515
+ }
516
+ }
517
+ }
518
+ function toToolCallOutcome(outcome) {
519
+ switch (outcome) {
520
+ case 'allow':
521
+ return ToolConfirmationOutcome.ProceedOnce;
522
+ case 'alwaysAllow':
523
+ return ToolConfirmationOutcome.ProceedAlways;
524
+ case 'alwaysAllowMcpServer':
525
+ return ToolConfirmationOutcome.ProceedAlwaysServer;
526
+ case 'alwaysAllowTool':
527
+ return ToolConfirmationOutcome.ProceedAlwaysTool;
528
+ case 'reject':
529
+ case 'cancel':
530
+ return ToolConfirmationOutcome.Cancel;
531
+ default: {
532
+ const unreachable = outcome;
533
+ throw new Error(`Unexpected: ${unreachable}`);
534
+ }
535
+ }
536
+ }
537
+ //# sourceMappingURL=acpPeer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acpPeer.js","sourceRoot":"","sources":["../../../src/acp/acpPeer.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ export interface CliArgs {
24
24
  telemetryOtlpEndpoint: string | undefined;
25
25
  telemetryLogPrompts: boolean | undefined;
26
26
  allowedMcpServerNames: string[] | undefined;
27
+ experimentalAcp: boolean | undefined;
27
28
  extensions: string[] | undefined;
28
29
  listExtensions: boolean | undefined;
29
30
  provider: string | undefined;
@@ -31,6 +32,7 @@ export interface CliArgs {
31
32
  key: string | undefined;
32
33
  keyfile: string | undefined;
33
34
  baseurl: string | undefined;
35
+ proxy: string | undefined;
34
36
  }
35
37
  export declare function parseArguments(): Promise<CliArgs>;
36
38
  export declare function loadHierarchicalLlxprtMemory(currentWorkingDirectory: string, debugMode: boolean, fileService: FileDiscoveryService, extensionContextFilePaths?: string[]): Promise<{