@machina.ai/cell-cli-core 1.16.0-rc2 → 1.19.4-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/package.json +6 -4
  2. package/dist/src/agents/codebase-investigator.js +1 -1
  3. package/dist/src/agents/executor.js +12 -21
  4. package/dist/src/agents/executor.js.map +1 -1
  5. package/dist/src/agents/executor.test.js +53 -57
  6. package/dist/src/agents/executor.test.js.map +1 -1
  7. package/dist/src/agents/registry.d.ts +4 -0
  8. package/dist/src/agents/registry.js +23 -0
  9. package/dist/src/agents/registry.js.map +1 -1
  10. package/dist/src/agents/registry.test.js +30 -16
  11. package/dist/src/agents/registry.test.js.map +1 -1
  12. package/dist/src/availability/modelAvailabilityService.d.ts +34 -0
  13. package/dist/src/availability/modelAvailabilityService.js +84 -0
  14. package/dist/src/availability/modelAvailabilityService.js.map +1 -0
  15. package/dist/src/availability/modelAvailabilityService.test.d.ts +6 -0
  16. package/dist/src/availability/modelAvailabilityService.test.js +140 -0
  17. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -0
  18. package/dist/src/availability/modelPolicy.d.ts +42 -0
  19. package/dist/src/availability/modelPolicy.js +7 -0
  20. package/dist/src/availability/modelPolicy.js.map +1 -0
  21. package/dist/src/availability/policyCatalog.d.ts +20 -0
  22. package/dist/src/availability/policyCatalog.js +83 -0
  23. package/dist/src/availability/policyCatalog.js.map +1 -0
  24. package/dist/src/availability/policyCatalog.test.d.ts +6 -0
  25. package/dist/src/availability/policyCatalog.test.js +70 -0
  26. package/dist/src/availability/policyCatalog.test.js.map +1 -0
  27. package/dist/src/code_assist/codeAssist.js +1 -1
  28. package/dist/src/code_assist/codeAssist.test.js +3 -3
  29. package/dist/src/code_assist/oauth-credential-storage.test.js +1 -0
  30. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  31. package/dist/src/code_assist/oauth2.js +106 -53
  32. package/dist/src/code_assist/oauth2.js.map +1 -1
  33. package/dist/src/code_assist/oauth2.test.js +25 -12
  34. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  35. package/dist/src/config/config.d.ts +18 -5
  36. package/dist/src/config/config.js +51 -19
  37. package/dist/src/config/config.js.map +1 -1
  38. package/dist/src/config/config.test.js +14 -79
  39. package/dist/src/config/config.test.js.map +1 -1
  40. package/dist/src/config/defaultModelConfigs.js +56 -4
  41. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  42. package/dist/src/confirmation-bus/message-bus.d.ts +6 -0
  43. package/dist/src/confirmation-bus/message-bus.js +63 -2
  44. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  45. package/dist/src/confirmation-bus/types.d.ts +25 -2
  46. package/dist/src/confirmation-bus/types.js +3 -0
  47. package/dist/src/confirmation-bus/types.js.map +1 -1
  48. package/dist/src/core/AuthenticatedContentGenerator.d.ts +20 -0
  49. package/dist/src/core/AuthenticatedContentGenerator.js +115 -0
  50. package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -0
  51. package/dist/src/core/baseLlmClient.d.ts +27 -1
  52. package/dist/src/core/baseLlmClient.js +66 -45
  53. package/dist/src/core/baseLlmClient.js.map +1 -1
  54. package/dist/src/core/baseLlmClient.test.js +94 -6
  55. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  56. package/dist/src/core/client.d.ts +1 -2
  57. package/dist/src/core/client.js +89 -29
  58. package/dist/src/core/client.js.map +1 -1
  59. package/dist/src/core/client.test.js +82 -41
  60. package/dist/src/core/client.test.js.map +1 -1
  61. package/dist/src/core/clientHookTriggers.d.ts +36 -0
  62. package/dist/src/core/clientHookTriggers.js +76 -0
  63. package/dist/src/core/clientHookTriggers.js.map +1 -0
  64. package/dist/src/core/contentGenerator.d.ts +2 -1
  65. package/dist/src/core/contentGenerator.js +12 -5
  66. package/dist/src/core/contentGenerator.js.map +1 -1
  67. package/dist/src/core/contentGenerator.test.js +119 -1
  68. package/dist/src/core/contentGenerator.test.js.map +1 -1
  69. package/dist/src/core/coreToolScheduler.d.ts +0 -2
  70. package/dist/src/core/coreToolScheduler.js +1 -3
  71. package/dist/src/core/coreToolScheduler.js.map +1 -1
  72. package/dist/src/core/coreToolScheduler.test.js +3 -18
  73. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  74. package/dist/src/core/geminiChat.d.ts +10 -5
  75. package/dist/src/core/geminiChat.js +57 -22
  76. package/dist/src/core/geminiChat.js.map +1 -1
  77. package/dist/src/core/geminiChat.test.js +188 -55
  78. package/dist/src/core/geminiChat.test.js.map +1 -1
  79. package/dist/src/core/logger.test.js +12 -11
  80. package/dist/src/core/logger.test.js.map +1 -1
  81. package/dist/src/core/nonInteractiveToolExecutor.js +6 -2
  82. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  83. package/dist/src/core/nonInteractiveToolExecutor.test.js +10 -2
  84. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  85. package/dist/src/core/prompts.js +21 -6
  86. package/dist/src/core/prompts.js.map +1 -1
  87. package/dist/src/core/prompts.test.js +79 -93
  88. package/dist/src/core/prompts.test.js.map +1 -1
  89. package/dist/src/core/turn.d.ts +14 -3
  90. package/dist/src/core/turn.js +13 -7
  91. package/dist/src/core/turn.js.map +1 -1
  92. package/dist/src/core/turn.test.js +73 -139
  93. package/dist/src/core/turn.test.js.map +1 -1
  94. package/dist/src/fallback/handler.js +10 -5
  95. package/dist/src/fallback/handler.js.map +1 -1
  96. package/dist/src/fallback/handler.test.js +79 -17
  97. package/dist/src/fallback/handler.test.js.map +1 -1
  98. package/dist/src/generated/git-commit.d.ts +2 -2
  99. package/dist/src/generated/git-commit.js +2 -2
  100. package/dist/src/hooks/hookEventHandler.d.ts +109 -0
  101. package/dist/src/hooks/hookEventHandler.js +486 -0
  102. package/dist/src/hooks/hookEventHandler.js.map +1 -0
  103. package/dist/src/hooks/hookEventHandler.test.d.ts +6 -0
  104. package/dist/src/hooks/hookEventHandler.test.js +384 -0
  105. package/dist/src/hooks/hookEventHandler.test.js.map +1 -0
  106. package/dist/src/hooks/hookSystem.d.ts +48 -0
  107. package/dist/src/hooks/hookSystem.js +83 -0
  108. package/dist/src/hooks/hookSystem.js.map +1 -0
  109. package/dist/src/hooks/hookSystem.test.d.ts +6 -0
  110. package/dist/src/hooks/hookSystem.test.js +213 -0
  111. package/dist/src/hooks/hookSystem.test.js.map +1 -0
  112. package/dist/src/hooks/index.d.ts +15 -0
  113. package/dist/src/hooks/index.js +15 -0
  114. package/dist/src/hooks/index.js.map +1 -0
  115. package/dist/src/index.d.ts +4 -0
  116. package/dist/src/index.js +6 -0
  117. package/dist/src/index.js.map +1 -1
  118. package/dist/src/mcp/oauth-provider.test.js +1 -0
  119. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  120. package/dist/src/policy/policy-engine.d.ts +17 -1
  121. package/dist/src/policy/policy-engine.js +90 -1
  122. package/dist/src/policy/policy-engine.js.map +1 -1
  123. package/dist/src/policy/policy-engine.test.js +222 -0
  124. package/dist/src/policy/policy-engine.test.js.map +1 -1
  125. package/dist/src/policy/types.d.ts +51 -1
  126. package/dist/src/policy/types.js +21 -0
  127. package/dist/src/policy/types.js.map +1 -1
  128. package/dist/src/prompts/mcp-prompts.test.js +0 -1
  129. package/dist/src/prompts/mcp-prompts.test.js.map +1 -1
  130. package/dist/src/prompts/prompt-registry.test.js +0 -15
  131. package/dist/src/prompts/prompt-registry.test.js.map +1 -1
  132. package/dist/src/routing/modelRouterService.js +1 -1
  133. package/dist/src/routing/modelRouterService.js.map +1 -1
  134. package/dist/src/routing/strategies/classifierStrategy.test.js +4 -3
  135. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  136. package/dist/src/services/chatCompressionService.d.ts +2 -1
  137. package/dist/src/services/chatCompressionService.js +23 -7
  138. package/dist/src/services/chatCompressionService.js.map +1 -1
  139. package/dist/src/services/chatCompressionService.test.js +27 -32
  140. package/dist/src/services/chatCompressionService.test.js.map +1 -1
  141. package/dist/src/services/chatRecordingService.d.ts +1 -1
  142. package/dist/src/services/gitService.js +3 -1
  143. package/dist/src/services/gitService.js.map +1 -1
  144. package/dist/src/services/gitService.test.js +10 -0
  145. package/dist/src/services/gitService.test.js.map +1 -1
  146. package/dist/src/services/modelConfig.integration.test.js +34 -0
  147. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  148. package/dist/src/services/modelConfigService.d.ts +3 -0
  149. package/dist/src/services/modelConfigService.js +12 -3
  150. package/dist/src/services/modelConfigService.js.map +1 -1
  151. package/dist/src/services/modelConfigService.test.js +133 -0
  152. package/dist/src/services/modelConfigService.test.js.map +1 -1
  153. package/dist/src/services/shellExecutionService.d.ts +2 -0
  154. package/dist/src/services/shellExecutionService.js +35 -6
  155. package/dist/src/services/shellExecutionService.js.map +1 -1
  156. package/dist/src/services/shellExecutionService.test.js +78 -1
  157. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  158. package/dist/src/services/test-data/resolved-aliases.golden.json +57 -4
  159. package/dist/src/telemetry/activity-monitor.test.js +4 -1
  160. package/dist/src/telemetry/activity-monitor.test.js.map +1 -1
  161. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +2 -1
  162. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +97 -51
  163. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  164. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +24 -16
  165. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  166. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -0
  167. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +5 -1
  168. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  169. package/dist/src/telemetry/loggers.d.ts +2 -1
  170. package/dist/src/telemetry/loggers.js +14 -3
  171. package/dist/src/telemetry/loggers.js.map +1 -1
  172. package/dist/src/telemetry/loggers.test.js +2 -5
  173. package/dist/src/telemetry/loggers.test.js.map +1 -1
  174. package/dist/src/telemetry/metrics.d.ts +26 -8
  175. package/dist/src/telemetry/metrics.js +37 -11
  176. package/dist/src/telemetry/metrics.js.map +1 -1
  177. package/dist/src/telemetry/metrics.test.js +61 -39
  178. package/dist/src/telemetry/metrics.test.js.map +1 -1
  179. package/dist/src/telemetry/sanitize.d.ts +25 -0
  180. package/dist/src/telemetry/sanitize.js +48 -0
  181. package/dist/src/telemetry/sanitize.js.map +1 -0
  182. package/dist/src/telemetry/sanitize.test.d.ts +6 -0
  183. package/dist/src/telemetry/sanitize.test.js +279 -0
  184. package/dist/src/telemetry/sanitize.test.js.map +1 -0
  185. package/dist/src/telemetry/semantic.js +1 -1
  186. package/dist/src/telemetry/semantic.js.map +1 -1
  187. package/dist/src/telemetry/types.d.ts +19 -0
  188. package/dist/src/telemetry/types.js +65 -0
  189. package/dist/src/telemetry/types.js.map +1 -1
  190. package/dist/src/test-utils/config.d.ts +1 -1
  191. package/dist/src/test-utils/config.js +1 -1
  192. package/dist/src/test-utils/mock-message-bus.d.ts +60 -0
  193. package/dist/src/test-utils/mock-message-bus.js +131 -0
  194. package/dist/src/test-utils/mock-message-bus.js.map +1 -0
  195. package/dist/src/test-utils/mock-tool.js +1 -1
  196. package/dist/src/test-utils/mock-tool.js.map +1 -1
  197. package/dist/src/tools/edit.test.js +203 -200
  198. package/dist/src/tools/edit.test.js.map +1 -1
  199. package/dist/src/tools/mcp-client.d.ts +4 -2
  200. package/dist/src/tools/mcp-client.js +226 -114
  201. package/dist/src/tools/mcp-client.js.map +1 -1
  202. package/dist/src/tools/mcp-client.test.js +128 -54
  203. package/dist/src/tools/mcp-client.test.js.map +1 -1
  204. package/dist/src/tools/mcp-tool.test.js +186 -273
  205. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  206. package/dist/src/tools/modifiable-tool.d.ts +1 -1
  207. package/dist/src/tools/modifiable-tool.js +2 -2
  208. package/dist/src/tools/modifiable-tool.js.map +1 -1
  209. package/dist/src/tools/modifiable-tool.test.js +12 -11
  210. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  211. package/dist/src/tools/ripGrep.test.js +84 -126
  212. package/dist/src/tools/ripGrep.test.js.map +1 -1
  213. package/dist/src/tools/smart-edit.test.js +93 -112
  214. package/dist/src/tools/smart-edit.test.js.map +1 -1
  215. package/dist/src/tools/tool-registry.test.js +59 -90
  216. package/dist/src/tools/tool-registry.test.js.map +1 -1
  217. package/dist/src/tools/web-fetch.test.js +121 -179
  218. package/dist/src/tools/web-fetch.test.js.map +1 -1
  219. package/dist/src/tools/write-file.test.js +105 -116
  220. package/dist/src/tools/write-file.test.js.map +1 -1
  221. package/dist/src/tools/write-todos.d.ts +1 -1
  222. package/dist/src/tools/write-todos.js +1 -1
  223. package/dist/src/utils/customHeaderUtils.d.ts +9 -0
  224. package/dist/src/utils/customHeaderUtils.js +34 -0
  225. package/dist/src/utils/customHeaderUtils.js.map +1 -0
  226. package/dist/src/utils/customHeaderUtils.test.d.ts +6 -0
  227. package/dist/src/utils/customHeaderUtils.test.js +77 -0
  228. package/dist/src/utils/customHeaderUtils.test.js.map +1 -0
  229. package/dist/src/utils/debugLogger.test.js +27 -25
  230. package/dist/src/utils/debugLogger.test.js.map +1 -1
  231. package/dist/src/utils/editor.d.ts +1 -1
  232. package/dist/src/utils/editor.js +3 -2
  233. package/dist/src/utils/editor.js.map +1 -1
  234. package/dist/src/utils/editor.test.js +7 -46
  235. package/dist/src/utils/editor.test.js.map +1 -1
  236. package/dist/src/utils/events.d.ts +33 -3
  237. package/dist/src/utils/events.js +35 -15
  238. package/dist/src/utils/events.js.map +1 -1
  239. package/dist/src/utils/events.test.js +86 -5
  240. package/dist/src/utils/events.test.js.map +1 -1
  241. package/dist/src/utils/filesearch/fileSearch.js +1 -1
  242. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  243. package/dist/src/utils/installationManager.test.js +2 -1
  244. package/dist/src/utils/installationManager.test.js.map +1 -1
  245. package/dist/src/utils/llm-edit-fixer.test.js +2 -1
  246. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  247. package/dist/src/utils/memoryDiscovery.test.js +3 -2
  248. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  249. package/dist/src/utils/memoryImportProcessor.js +1 -1
  250. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  251. package/dist/src/utils/memoryImportProcessor.test.js +8 -14
  252. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  253. package/dist/src/utils/nextSpeakerChecker.test.js +3 -1
  254. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  255. package/dist/src/utils/package.d.ts +14 -0
  256. package/dist/src/utils/package.js +15 -2
  257. package/dist/src/utils/package.js.map +1 -1
  258. package/dist/src/utils/schemaValidator.d.ts +1 -1
  259. package/dist/src/utils/schemaValidator.js +1 -1
  260. package/dist/src/utils/shell-utils.js +1 -1
  261. package/dist/src/utils/stdio.d.ts +32 -0
  262. package/dist/src/utils/stdio.js +85 -0
  263. package/dist/src/utils/stdio.js.map +1 -0
  264. package/dist/src/utils/stdio.test.d.ts +6 -0
  265. package/dist/src/utils/stdio.test.js +47 -0
  266. package/dist/src/utils/stdio.test.js.map +1 -0
  267. package/dist/src/utils/systemEncoding.test.js +2 -1
  268. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  269. package/dist/src/utils/terminal.d.ts +14 -0
  270. package/dist/src/utils/terminal.js +38 -0
  271. package/dist/src/utils/terminal.js.map +1 -0
  272. package/dist/src/utils/userAccountManager.test.js +7 -6
  273. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  274. package/dist/src/utils/workspaceContext.test.js +5 -4
  275. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  276. package/dist/tsconfig.tsbuildinfo +1 -1
  277. package/package.json +6 -4
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { GoogleGenAI, } from '@google/genai';
7
+ import { AuthProviderKeycloak } from '@machina.ai/auth-keycloak';
8
+ import { LoggingContentGenerator } from './loggingContentGenerator.js';
9
+ function isAuthError(e) {
10
+ // Case 1: The error itself is an object with a `code` property (like GaxiosError)
11
+ if (e && typeof e === 'object' && 'code' in e) {
12
+ const error = e;
13
+ if (error.code === 401 || error.code === '401') {
14
+ return true;
15
+ }
16
+ }
17
+ // Case 2: The error is an `Error` instance with a JSON message.
18
+ if (e instanceof Error) {
19
+ try {
20
+ const parsed = JSON.parse(e.message);
21
+ const error = parsed.error || parsed;
22
+ if (error.code === 401 || error.status === 'UNAUTHENTICATED') {
23
+ return true;
24
+ }
25
+ }
26
+ catch {
27
+ // Not a JSON message, fall back to simple string check
28
+ return e.message.includes('401');
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+ export class AuthenticatedContentGenerator {
34
+ generator;
35
+ config;
36
+ constructor(generator, config) {
37
+ this.generator = generator;
38
+ this.config = config;
39
+ }
40
+ async generateContent(request, userPromptId) {
41
+ try {
42
+ return await this.generator.generateContent(request, userPromptId);
43
+ }
44
+ catch (e) {
45
+ if (isAuthError(e)) {
46
+ await this.refreshToken();
47
+ return await this.generator.generateContent(request, userPromptId);
48
+ }
49
+ throw e;
50
+ }
51
+ }
52
+ async generateContentStream(request, userPromptId) {
53
+ try {
54
+ return await this.generator.generateContentStream(request, userPromptId);
55
+ }
56
+ catch (e) {
57
+ if (isAuthError(e)) {
58
+ await this.refreshToken();
59
+ return await this.generator.generateContentStream(request, userPromptId);
60
+ }
61
+ throw e;
62
+ }
63
+ }
64
+ async countTokens(request) {
65
+ try {
66
+ return await this.generator.countTokens(request);
67
+ }
68
+ catch (e) {
69
+ if (isAuthError(e)) {
70
+ await this.refreshToken();
71
+ return await this.generator.countTokens(request);
72
+ }
73
+ throw e;
74
+ }
75
+ }
76
+ async embedContent(request) {
77
+ try {
78
+ return await this.generator.embedContent(request);
79
+ }
80
+ catch (e) {
81
+ if (isAuthError(e)) {
82
+ await this.refreshToken();
83
+ return await this.generator.embedContent(request);
84
+ }
85
+ throw e;
86
+ }
87
+ }
88
+ async refreshToken() {
89
+ const provider = new AuthProviderKeycloak();
90
+ // First, try to refresh silently.
91
+ let token = await provider.forceRefreshToken();
92
+ // If silent refresh fails, try the full authentication flow which may be interactive.
93
+ if (!token) {
94
+ token = await provider.getToken();
95
+ }
96
+ // If we still don't have a token, then we must fail.
97
+ if (!token) {
98
+ throw new Error('Authentication failed. Unable to get a new token.');
99
+ }
100
+ // Re-create the underlying generator with the new token to avoid recursive wrapping.
101
+ const httpOptions = {};
102
+ if (token) {
103
+ httpOptions.headers = { Authorization: `Bearer ${token}` };
104
+ }
105
+ const googleGenAI = new GoogleGenAI({
106
+ apiKey: 'dummy',
107
+ httpOptions,
108
+ });
109
+ this.generator = new LoggingContentGenerator(googleGenAI.models, this.config);
110
+ }
111
+ get userTier() {
112
+ return this.generator.userTier;
113
+ }
114
+ }
115
+ //# sourceMappingURL=AuthenticatedContentGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticatedContentGenerator.js","sourceRoot":"","sources":["../../../src/core/AuthenticatedContentGenerator.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { Content, Part } from '@google/genai';
6
+ import type { Content, Part, GenerateContentResponse } from '@google/genai';
7
7
  import type { Config } from '../config/config.js';
8
8
  import type { ContentGenerator } from './contentGenerator.js';
9
9
  import type { ModelConfigKey } from '../services/modelConfigService.js';
@@ -33,6 +33,30 @@ export interface GenerateJsonOptions {
33
33
  */
34
34
  maxAttempts?: number;
35
35
  }
36
+ /**
37
+ * Options for the generateContent utility function.
38
+ */
39
+ export interface GenerateContentOptions {
40
+ /** The desired model config. */
41
+ modelConfigKey: ModelConfigKey;
42
+ /** The input prompt or history. */
43
+ contents: Content[];
44
+ /**
45
+ * Task-specific system instructions.
46
+ * If omitted, no system instruction is sent.
47
+ */
48
+ systemInstruction?: string | Part | Part[] | Content;
49
+ /** Signal for cancellation. */
50
+ abortSignal: AbortSignal;
51
+ /**
52
+ * A unique ID for the prompt, used for logging/telemetry correlation.
53
+ */
54
+ promptId: string;
55
+ /**
56
+ * The maximum number of attempts for the request.
57
+ */
58
+ maxAttempts?: number;
59
+ }
36
60
  /**
37
61
  * A client dedicated to stateless, utility-focused LLM calls.
38
62
  */
@@ -43,4 +67,6 @@ export declare class BaseLlmClient {
43
67
  generateJson(options: GenerateJsonOptions): Promise<Record<string, unknown>>;
44
68
  generateEmbedding(texts: string[]): Promise<number[][]>;
45
69
  private cleanJsonResponse;
70
+ generateContent(options: GenerateContentOptions): Promise<GenerateContentResponse>;
71
+ private _generateWithRetry;
46
72
  }
@@ -21,55 +21,35 @@ export class BaseLlmClient {
21
21
  this.config = config;
22
22
  }
23
23
  async generateJson(options) {
24
- const { modelConfigKey, contents, schema, abortSignal, systemInstruction, promptId, maxAttempts, } = options;
24
+ const { schema, modelConfigKey, contents, systemInstruction, abortSignal, promptId, maxAttempts, } = options;
25
25
  const { model, generateContentConfig } = this.config.modelConfigService.getResolvedConfig(modelConfigKey);
26
- const requestConfig = {
27
- abortSignal,
28
- ...generateContentConfig,
29
- ...(systemInstruction && { systemInstruction }),
30
- responseJsonSchema: schema,
31
- responseMimeType: 'application/json',
32
- };
33
- try {
34
- const apiCall = () => this.contentGenerator.generateContent({
35
- model,
36
- config: requestConfig,
37
- contents,
38
- }, promptId);
39
- const shouldRetryOnContent = (response) => {
40
- const text = getResponseText(response)?.trim();
41
- if (!text) {
42
- return true; // Retry on empty response
43
- }
44
- try {
45
- JSON.parse(this.cleanJsonResponse(text, model));
46
- return false;
47
- }
48
- catch (_e) {
49
- return true;
50
- }
51
- };
52
- const result = await retryWithBackoff(apiCall, {
53
- shouldRetryOnContent,
54
- maxAttempts: maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
55
- });
56
- // If we are here, the content is valid (not empty and parsable).
57
- return JSON.parse(this.cleanJsonResponse(getResponseText(result).trim(), model));
58
- }
59
- catch (error) {
60
- if (abortSignal.aborted) {
61
- throw error;
26
+ const shouldRetryOnContent = (response) => {
27
+ const text = getResponseText(response)?.trim();
28
+ if (!text) {
29
+ return true; // Retry on empty response
62
30
  }
63
- // Check if the error is from exhausting retries, and report accordingly.
64
- if (error instanceof Error &&
65
- error.message.includes('Retry attempts exhausted')) {
66
- await reportError(error, 'API returned invalid content (empty or unparsable JSON) after all retries.', contents, 'generateJson-invalid-content');
31
+ try {
32
+ // We don't use the result, just check if it's valid JSON
33
+ JSON.parse(this.cleanJsonResponse(text, model));
34
+ return false; // It's valid, don't retry
67
35
  }
68
- else {
69
- await reportError(error, 'Error generating JSON content via API.', contents, 'generateJson-api');
36
+ catch (_e) {
37
+ return true; // It's not valid, retry
70
38
  }
71
- throw new Error(`Failed to generate JSON content: ${getErrorMessage(error)}`);
72
- }
39
+ };
40
+ const result = await this._generateWithRetry({
41
+ model,
42
+ contents,
43
+ config: {
44
+ ...generateContentConfig,
45
+ ...(systemInstruction && { systemInstruction }),
46
+ responseJsonSchema: schema,
47
+ responseMimeType: 'application/json',
48
+ abortSignal,
49
+ },
50
+ }, promptId, maxAttempts, shouldRetryOnContent, 'generateJson');
51
+ // If we are here, the content is valid (not empty and parsable).
52
+ return JSON.parse(this.cleanJsonResponse(getResponseText(result).trim(), model));
73
53
  }
74
54
  async generateEmbedding(texts) {
75
55
  if (!texts || texts.length === 0) {
@@ -104,5 +84,46 @@ export class BaseLlmClient {
104
84
  }
105
85
  return text;
106
86
  }
87
+ async generateContent(options) {
88
+ const { modelConfigKey, contents, systemInstruction, abortSignal, promptId, maxAttempts, } = options;
89
+ const { model, generateContentConfig } = this.config.modelConfigService.getResolvedConfig(modelConfigKey);
90
+ const shouldRetryOnContent = (response) => {
91
+ const text = getResponseText(response)?.trim();
92
+ return !text; // Retry on empty response
93
+ };
94
+ return this._generateWithRetry({
95
+ model,
96
+ contents,
97
+ config: {
98
+ ...generateContentConfig,
99
+ ...(systemInstruction && { systemInstruction }),
100
+ abortSignal,
101
+ },
102
+ }, promptId, maxAttempts, shouldRetryOnContent, 'generateContent');
103
+ }
104
+ async _generateWithRetry(requestParams, promptId, maxAttempts, shouldRetryOnContent, errorContext) {
105
+ const abortSignal = requestParams.config?.abortSignal;
106
+ try {
107
+ const apiCall = () => this.contentGenerator.generateContent(requestParams, promptId);
108
+ return await retryWithBackoff(apiCall, {
109
+ shouldRetryOnContent,
110
+ maxAttempts: maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
111
+ });
112
+ }
113
+ catch (error) {
114
+ if (abortSignal?.aborted) {
115
+ throw error;
116
+ }
117
+ // Check if the error is from exhausting retries, and report accordingly.
118
+ if (error instanceof Error &&
119
+ error.message.includes('Retry attempts exhausted')) {
120
+ await reportError(error, `API returned invalid content after all retries.`, requestParams.contents, `${errorContext}-invalid-content`);
121
+ }
122
+ else {
123
+ await reportError(error, `Error generating content via API.`, requestParams.contents, `${errorContext}-api`);
124
+ }
125
+ throw new Error(`Failed to generate content: ${getErrorMessage(error)}`);
126
+ }
127
+ }
107
128
  }
108
129
  //# sourceMappingURL=baseLlmClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseLlmClient.js","sourceRoot":"","sources":["../../../src/core/baseLlmClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,oBAAoB,GAAG,CAAC,CAAC;AA6B/B;;GAEG;AACH,MAAM,OAAO,aAAa;IAEL;IACA;IAFnB,YACmB,gBAAkC,EAClC,MAAc;QADd,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,YAAY,CAChB,OAA4B;QAE5B,MAAM,EACJ,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,WAAW,GACZ,GAAG,OAAO,CAAC;QAEZ,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GACpC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,aAAa,GAA0B;YAC3C,WAAW;YACX,GAAG,qBAAqB;YACxB,GAAG,CAAC,iBAAiB,IAAI,EAAE,iBAAiB,EAAE,CAAC;YAC/C,kBAAkB,EAAE,MAAM;YAC1B,gBAAgB,EAAE,kBAAkB;SACrC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CACnC;gBACE,KAAK;gBACL,MAAM,EAAE,aAAa;gBACrB,QAAQ;aACT,EACD,QAAQ,CACT,CAAC;YAEJ,MAAM,oBAAoB,GAAG,CAAC,QAAiC,EAAE,EAAE;gBACjE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,IAAI,CAAC,CAAC,0BAA0B;gBACzC,CAAC;gBACD,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBAChD,OAAO,KAAK,CAAC;gBACf,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;gBAC7C,oBAAoB;gBACpB,WAAW,EAAE,WAAW,IAAI,oBAAoB;aACjD,CAAC,CAAC;YAEH,iEAAiE;YACjE,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,MAAM,CAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAC/D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC;YACd,CAAC;YAED,yEAAyE;YACzE,IACE,KAAK,YAAY,KAAK;gBACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAClD,CAAC;gBACD,MAAM,WAAW,CACf,KAAK,EACL,4EAA4E,EAC5E,QAAQ,EACR,8BAA8B,CAC/B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,CACf,KAAK,EACL,wCAAwC,EACxC,QAAQ,EACR,kBAAkB,CACnB,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,KAAK,CACb,oCAAoC,eAAe,CAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAe;QACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,gBAAgB,GAA2B;YAC/C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACtC,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IACE,CAAC,oBAAoB,CAAC,UAAU;YAChC,oBAAoB,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,oBAAoB,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,4DAA4D,KAAK,CAAC,MAAM,SAAS,oBAAoB,CAAC,UAAU,CAAC,MAAM,GAAG,CAC3H,CAAC;QACJ,CAAC;QAED,OAAO,oBAAoB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,2DAA2D,KAAK,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CACtF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,IAAY,EAAE,KAAa;QACnD,MAAM,MAAM,GAAG,SAAS,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,wBAAwB,CACtB,IAAI,CAAC,MAAM,EACX,IAAI,0BAA0B,CAAC,KAAK,CAAC,CACtC,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"baseLlmClient.js","sourceRoot":"","sources":["../../../src/core/baseLlmClient.ts"],"names":[],"mappings":"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"}
@@ -206,30 +206,57 @@ describe('BaseLlmClient', () => {
206
206
  expect(result).toEqual({ color: 'orange' });
207
207
  expect(logMalformedJsonResponse).not.toHaveBeenCalled();
208
208
  });
209
+ it('should use the resolved model name when logging malformed JSON telemetry', async () => {
210
+ const aliasModel = 'fast-alias';
211
+ const resolvedModel = 'gemini-1.5-flash';
212
+ // Override the mock for this specific test to simulate resolution
213
+ mockConfig.modelConfigService.getResolvedConfig.mockReturnValue({
214
+ model: resolvedModel,
215
+ generateContentConfig: {
216
+ temperature: 0,
217
+ topP: 1,
218
+ },
219
+ });
220
+ const malformedResponse = '```json\n{"color": "red"}\n```';
221
+ mockGenerateContent.mockResolvedValue(createMockResponse(malformedResponse));
222
+ const options = {
223
+ ...defaultOptions,
224
+ modelConfigKey: { model: aliasModel },
225
+ };
226
+ const result = await client.generateJson(options);
227
+ expect(result).toEqual({ color: 'red' });
228
+ expect(logMalformedJsonResponse).toHaveBeenCalled();
229
+ const calls = vi.mocked(logMalformedJsonResponse).mock.calls;
230
+ const lastCall = calls[calls.length - 1];
231
+ const event = lastCall[1];
232
+ // This is the key assertion: it should be the resolved model, not the alias
233
+ expect(event.model).toBe(resolvedModel);
234
+ expect(event.model).not.toBe(aliasModel);
235
+ });
209
236
  });
210
237
  describe('generateJson - Error Handling', () => {
211
238
  it('should throw and report error for empty response after retry exhaustion', async () => {
212
239
  mockGenerateContent.mockResolvedValue(createMockResponse(''));
213
- await expect(client.generateJson(defaultOptions)).rejects.toThrow('Failed to generate JSON content: Retry attempts exhausted for invalid content');
240
+ await expect(client.generateJson(defaultOptions)).rejects.toThrow('Failed to generate content: Retry attempts exhausted for invalid content');
214
241
  // Verify error reporting details
215
242
  expect(reportError).toHaveBeenCalledTimes(1);
216
- expect(reportError).toHaveBeenCalledWith(expect.any(Error), 'API returned invalid content (empty or unparsable JSON) after all retries.', defaultOptions.contents, 'generateJson-invalid-content');
243
+ expect(reportError).toHaveBeenCalledWith(expect.any(Error), 'API returned invalid content after all retries.', defaultOptions.contents, 'generateJson-invalid-content');
217
244
  });
218
245
  it('should throw and report error for invalid JSON syntax after retry exhaustion', async () => {
219
246
  const invalidJson = '{"color": "blue"'; // missing closing brace
220
247
  mockGenerateContent.mockResolvedValue(createMockResponse(invalidJson));
221
- await expect(client.generateJson(defaultOptions)).rejects.toThrow('Failed to generate JSON content: Retry attempts exhausted for invalid content');
248
+ await expect(client.generateJson(defaultOptions)).rejects.toThrow('Failed to generate content: Retry attempts exhausted for invalid content');
222
249
  expect(reportError).toHaveBeenCalledTimes(1);
223
- expect(reportError).toHaveBeenCalledWith(expect.any(Error), 'API returned invalid content (empty or unparsable JSON) after all retries.', defaultOptions.contents, 'generateJson-invalid-content');
250
+ expect(reportError).toHaveBeenCalledWith(expect.any(Error), 'API returned invalid content after all retries.', defaultOptions.contents, 'generateJson-invalid-content');
224
251
  });
225
252
  it('should throw and report generic API errors', async () => {
226
253
  const apiError = new Error('Service Unavailable (503)');
227
254
  // Simulate the generator failing
228
255
  mockGenerateContent.mockRejectedValue(apiError);
229
- await expect(client.generateJson(defaultOptions)).rejects.toThrow('Failed to generate JSON content: Service Unavailable (503)');
256
+ await expect(client.generateJson(defaultOptions)).rejects.toThrow('Failed to generate content: Service Unavailable (503)');
230
257
  // Verify generic error reporting
231
258
  expect(reportError).toHaveBeenCalledTimes(1);
232
- expect(reportError).toHaveBeenCalledWith(apiError, 'Error generating JSON content via API.', defaultOptions.contents, 'generateJson-api');
259
+ expect(reportError).toHaveBeenCalledWith(apiError, 'Error generating content via API.', defaultOptions.contents, 'generateJson-api');
233
260
  });
234
261
  it('should throw immediately without reporting if aborted', async () => {
235
262
  const abortError = new DOMException('Aborted', 'AbortError');
@@ -307,5 +334,66 @@ describe('BaseLlmClient', () => {
307
334
  await expect(client.generateEmbedding(texts)).rejects.toThrow('API Failure');
308
335
  });
309
336
  });
337
+ describe('generateContent', () => {
338
+ it('should call generateContent with correct parameters and utilize retry mechanism', async () => {
339
+ const mockResponse = createMockResponse('This is the content.');
340
+ mockGenerateContent.mockResolvedValue(mockResponse);
341
+ const options = {
342
+ modelConfigKey: { model: 'test-model' },
343
+ contents: [{ role: 'user', parts: [{ text: 'Give me content.' }] }],
344
+ abortSignal: abortController.signal,
345
+ promptId: 'content-prompt-id',
346
+ };
347
+ const result = await client.generateContent(options);
348
+ expect(result).toBe(mockResponse);
349
+ // Ensure the retry mechanism was engaged
350
+ expect(retryWithBackoff).toHaveBeenCalledTimes(1);
351
+ expect(retryWithBackoff).toHaveBeenCalledWith(expect.any(Function), expect.objectContaining({
352
+ shouldRetryOnContent: expect.any(Function),
353
+ }));
354
+ // Validate the parameters passed to the underlying generator
355
+ expect(mockGenerateContent).toHaveBeenCalledTimes(1);
356
+ expect(mockGenerateContent).toHaveBeenCalledWith({
357
+ model: 'test-model',
358
+ contents: options.contents,
359
+ config: {
360
+ abortSignal: options.abortSignal,
361
+ temperature: 0,
362
+ topP: 1,
363
+ },
364
+ }, 'content-prompt-id');
365
+ });
366
+ it('should validate content using shouldRetryOnContent function', async () => {
367
+ const mockResponse = createMockResponse('Some valid content.');
368
+ mockGenerateContent.mockResolvedValue(mockResponse);
369
+ const options = {
370
+ modelConfigKey: { model: 'test-model' },
371
+ contents: [{ role: 'user', parts: [{ text: 'Give me content.' }] }],
372
+ abortSignal: abortController.signal,
373
+ promptId: 'content-prompt-id',
374
+ };
375
+ await client.generateContent(options);
376
+ const retryCall = vi.mocked(retryWithBackoff).mock.calls[0];
377
+ const shouldRetryOnContent = retryCall[1]?.shouldRetryOnContent;
378
+ // Valid content should not trigger retry
379
+ expect(shouldRetryOnContent(mockResponse)).toBe(false);
380
+ // Empty response should trigger retry
381
+ expect(shouldRetryOnContent(createMockResponse(''))).toBe(true);
382
+ expect(shouldRetryOnContent(createMockResponse(' '))).toBe(true);
383
+ });
384
+ it('should throw and report error for empty response after retry exhaustion', async () => {
385
+ mockGenerateContent.mockResolvedValue(createMockResponse(''));
386
+ const options = {
387
+ modelConfigKey: { model: 'test-model' },
388
+ contents: [{ role: 'user', parts: [{ text: 'Give me content.' }] }],
389
+ abortSignal: abortController.signal,
390
+ promptId: 'content-prompt-id',
391
+ };
392
+ await expect(client.generateContent(options)).rejects.toThrow('Failed to generate content: Retry attempts exhausted for invalid content');
393
+ // Verify error reporting details
394
+ expect(reportError).toHaveBeenCalledTimes(1);
395
+ expect(reportError).toHaveBeenCalledWith(expect.any(Error), 'API returned invalid content after all retries.', options.contents, 'generateContent-invalid-content');
396
+ });
397
+ });
310
398
  });
311
399
  //# sourceMappingURL=baseLlmClient.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseLlmClient.test.js","sourceRoot":"","sources":["../../../src/core/baseLlmClient.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseLlmClient.test.js","sourceRoot":"","sources":["../../../src/core/baseLlmClient.test.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,9 @@ import { GeminiChat } from './geminiChat.js';
11
11
  import type { ChatRecordingService, ResumedSessionData } from '../services/chatRecordingService.js';
12
12
  import { LoopDetectionService } from '../services/loopDetectionService.js';
13
13
  import type { ModelConfigKey } from '../services/modelConfigService.js';
14
- export declare function isThinkingSupported(model: string): boolean;
15
14
  export declare class GeminiClient {
16
15
  private readonly config;
17
16
  private chat?;
18
- private readonly generateContentConfig;
19
17
  private sessionTurnCount;
20
18
  private readonly loopDetector;
21
19
  private readonly compressionService;
@@ -45,6 +43,7 @@ export declare class GeminiClient {
45
43
  getLoopDetectionService(): LoopDetectionService;
46
44
  getCurrentSequenceModel(): string | null;
47
45
  addDirectoryContext(): Promise<void>;
46
+ updateSystemInstruction(): Promise<void>;
48
47
  startChat(extraHistory?: Content[], resumedSessionData?: ResumedSessionData): Promise<GeminiChat>;
49
48
  private getIdeContextParts;
50
49
  private _getEffectiveModelForCurrentTurn;