genaicode 0.9.6 → 0.10.0

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 (165) hide show
  1. package/dist/ai-service/ai-studio.d.ts +1 -1
  2. package/dist/ai-service/ai-studio.js +114 -31
  3. package/dist/ai-service/ai-studio.js.map +1 -1
  4. package/dist/ai-service/anthropic.js +64 -28
  5. package/dist/ai-service/anthropic.js.map +1 -1
  6. package/dist/ai-service/common-types.d.ts +28 -7
  7. package/dist/ai-service/local-llm.d.ts +6 -0
  8. package/dist/ai-service/local-llm.js +77 -0
  9. package/dist/ai-service/local-llm.js.map +1 -0
  10. package/dist/ai-service/openai.d.ts +3 -13
  11. package/dist/ai-service/openai.js +107 -51
  12. package/dist/ai-service/openai.js.map +1 -1
  13. package/dist/ai-service/service-configurations-types.d.ts +14 -4
  14. package/dist/ai-service/service-configurations-types.js +0 -4
  15. package/dist/ai-service/service-configurations-types.js.map +1 -1
  16. package/dist/ai-service/service-configurations.d.ts +9 -1
  17. package/dist/ai-service/service-configurations.js +108 -12
  18. package/dist/ai-service/service-configurations.js.map +1 -1
  19. package/dist/ai-service/vertex-ai-claude.d.ts +1 -1
  20. package/dist/ai-service/vertex-ai-claude.js +80 -39
  21. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  22. package/dist/ai-service/vertex-ai.d.ts +1 -1
  23. package/dist/ai-service/vertex-ai.js +261 -155
  24. package/dist/ai-service/vertex-ai.js.map +1 -1
  25. package/dist/cli/cli-options.js +1 -1
  26. package/dist/cli/cli-options.js.map +1 -1
  27. package/dist/cli/validate-cli-params.js +1 -1
  28. package/dist/cli/validate-cli-params.js.map +1 -1
  29. package/dist/main/codegen-utils.js +9 -1
  30. package/dist/main/codegen-utils.js.map +1 -1
  31. package/dist/main/codegen.js +2 -0
  32. package/dist/main/codegen.js.map +1 -1
  33. package/dist/main/common/user-actions.d.ts +2 -0
  34. package/dist/main/common/user-actions.js.map +1 -1
  35. package/dist/main/config-schema.js +16 -0
  36. package/dist/main/config-schema.js.map +1 -1
  37. package/dist/main/config-types.d.ts +15 -0
  38. package/dist/main/config.js +1 -0
  39. package/dist/main/config.js.map +1 -1
  40. package/dist/main/interactive/select-ai-service.js +1 -0
  41. package/dist/main/interactive/select-ai-service.js.map +1 -1
  42. package/dist/main/plugin-loader.d.ts +1 -2
  43. package/dist/main/plugin-loader.js.map +1 -1
  44. package/dist/main/ui/backend/endpoints/question-endpoint.js +34 -3
  45. package/dist/main/ui/backend/endpoints/question-endpoint.js.map +1 -1
  46. package/dist/main/ui/backend/service.d.ts +6 -5
  47. package/dist/main/ui/backend/service.js +54 -17
  48. package/dist/main/ui/backend/service.js.map +1 -1
  49. package/dist/main/ui/common/api-types.d.ts +1 -0
  50. package/dist/main/ui/frontend/assets/index-BlVGo0E6.js +1902 -0
  51. package/dist/main/ui/frontend/index.html +1 -1
  52. package/dist/project-profiles/types.d.ts +1 -1
  53. package/dist/project-profiles/types.js +1 -1
  54. package/dist/project-profiles/types.js.map +1 -1
  55. package/dist/prompt/function-calling.js +6 -0
  56. package/dist/prompt/function-calling.js.map +1 -1
  57. package/dist/prompt/function-defs/ask-question.js +8 -4
  58. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  59. package/dist/prompt/function-defs/conversation-summary.d.ts +2 -0
  60. package/dist/prompt/function-defs/conversation-summary.js +15 -0
  61. package/dist/prompt/function-defs/conversation-summary.js.map +1 -0
  62. package/dist/prompt/function-defs/explore-external-directories.d.ts +16 -0
  63. package/dist/prompt/function-defs/explore-external-directories.js +48 -0
  64. package/dist/prompt/function-defs/explore-external-directories.js.map +1 -0
  65. package/dist/prompt/function-defs/read-external-files.d.ts +9 -0
  66. package/dist/prompt/function-defs/read-external-files.js +30 -0
  67. package/dist/prompt/function-defs/read-external-files.js.map +1 -0
  68. package/dist/prompt/limits.js +1 -1
  69. package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.js +23 -18
  70. package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.js.map +1 -1
  71. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js +60 -28
  72. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js.map +1 -1
  73. package/dist/prompt/steps/step-ask-question/handlers/handle-create-file.js +76 -73
  74. package/dist/prompt/steps/step-ask-question/handlers/handle-create-file.js.map +1 -1
  75. package/dist/prompt/steps/step-ask-question/handlers/handle-end-conversation.js +1 -1
  76. package/dist/prompt/steps/step-ask-question/handlers/handle-end-conversation.js.map +1 -1
  77. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.d.ts +2 -0
  78. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +277 -0
  79. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -0
  80. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js +13 -1
  81. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js.map +1 -1
  82. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js +13 -1
  83. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js.map +1 -1
  84. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.d.ts +1 -1
  85. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js +54 -61
  86. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js.map +1 -1
  87. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js +22 -10
  88. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js.map +1 -1
  89. package/dist/prompt/steps/step-ask-question/handlers/handle-pull-app-context.js +13 -1
  90. package/dist/prompt/steps/step-ask-question/handlers/handle-pull-app-context.js.map +1 -1
  91. package/dist/prompt/steps/step-ask-question/handlers/handle-push-app-context.js +13 -1
  92. package/dist/prompt/steps/step-ask-question/handlers/handle-push-app-context.js.map +1 -1
  93. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.d.ts +2 -0
  94. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js +144 -0
  95. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js.map +1 -0
  96. package/dist/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.js +27 -6
  97. package/dist/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.js.map +1 -1
  98. package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.js +13 -1
  99. package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.js.map +1 -1
  100. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.js +14 -5
  101. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.js.map +1 -1
  102. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.js +26 -2
  103. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.js.map +1 -1
  104. package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.js +13 -1
  105. package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.js.map +1 -1
  106. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.js +14 -2
  107. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.js.map +1 -1
  108. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +1 -0
  109. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  110. package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js +59 -60
  111. package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js.map +1 -1
  112. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +5 -1
  113. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
  114. package/dist/prompt/steps/step-ask-question/step-ask-question.js +14 -7
  115. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  116. package/dist/prompt/steps/step-codegen-planning.js +14 -5
  117. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  118. package/dist/prompt/steps/step-context-compression.js +14 -5
  119. package/dist/prompt/steps/step-context-compression.js.map +1 -1
  120. package/dist/prompt/steps/step-context-optimization.js +10 -5
  121. package/dist/prompt/steps/step-context-optimization.js.map +1 -1
  122. package/dist/prompt/steps/step-generate-codegen-summary.js +14 -5
  123. package/dist/prompt/steps/step-generate-codegen-summary.js.map +1 -1
  124. package/dist/prompt/steps/step-generate-summary.d.ts +6 -0
  125. package/dist/prompt/steps/step-generate-summary.js +36 -16
  126. package/dist/prompt/steps/step-generate-summary.js.map +1 -1
  127. package/dist/prompt/steps/step-history-update.js +14 -5
  128. package/dist/prompt/steps/step-history-update.js.map +1 -1
  129. package/dist/prompt/steps/step-process-file-updates.js +10 -5
  130. package/dist/prompt/steps/step-process-file-updates.js.map +1 -1
  131. package/dist/prompt/steps/step-summarization.js +14 -2
  132. package/dist/prompt/steps/step-summarization.js.map +1 -1
  133. package/dist/prompt/steps/step-validate-recover.d.ts +2 -4
  134. package/dist/prompt/steps/step-validate-recover.js +18 -9
  135. package/dist/prompt/steps/step-validate-recover.js.map +1 -1
  136. package/dist/prompt/steps/step-verify-patch.js +14 -5
  137. package/dist/prompt/steps/step-verify-patch.js.map +1 -1
  138. package/dist/prompt/systemprompt.js +5 -3
  139. package/dist/prompt/systemprompt.js.map +1 -1
  140. package/package.json +4 -4
  141. package/dist/main/ui/frontend/assets/index-DI1ngpa2.js +0 -1840
  142. package/dist/prompt/steps/step-ask-question/handlers/code-generation.d.ts +0 -4
  143. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +0 -167
  144. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +0 -1
  145. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.d.ts +0 -2
  146. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js +0 -34
  147. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js.map +0 -1
  148. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.d.ts +0 -2
  149. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js +0 -32
  150. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js.map +0 -1
  151. package/dist/prompt/steps/step-ask-question/handlers/genaicode-help-document.d.ts +0 -1
  152. package/dist/prompt/steps/step-ask-question/handlers/genaicode-help-document.js +0 -251
  153. package/dist/prompt/steps/step-ask-question/handlers/genaicode-help-document.js.map +0 -1
  154. package/dist/prompt/steps/step-ask-question/handlers/lint.d.ts +0 -6
  155. package/dist/prompt/steps/step-ask-question/handlers/lint.js +0 -103
  156. package/dist/prompt/steps/step-ask-question/handlers/lint.js.map +0 -1
  157. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.d.ts +0 -2
  158. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +0 -82
  159. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js.map +0 -1
  160. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.d.ts +0 -8
  161. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +0 -179
  162. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +0 -1
  163. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.d.ts +0 -2
  164. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js +0 -69
  165. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { GenerateContentFunction } from './common-types.js';
2
2
  /**
3
- * This function generates content using the Anthropic Claude model via Vertex AI.
3
+ * This function generates content using the Google AI Studio models with the new interface.
4
4
  */
5
5
  export declare const generateContent: GenerateContentFunction;
@@ -1,15 +1,24 @@
1
1
  import { FunctionCallingMode, GoogleGenerativeAI, HarmBlockThreshold, HarmCategory, } from '@google/generative-ai';
2
2
  import assert from 'node:assert';
3
- import { printTokenUsageAndCost, processFunctionCalls } from './common.js';
3
+ import { printTokenUsageAndCost } from './common.js';
4
4
  import { ModelType } from './common-types.js';
5
5
  import { abortController } from '../main/common/abort-controller.js';
6
6
  import { unescapeFunctionCall } from './unescape-function-call.js';
7
7
  import { enableVertexUnescape } from '../cli/cli-params.js';
8
- import { getServiceConfig } from './service-configurations.js';
8
+ import { getServiceConfig, getModelSettings } from './service-configurations.js';
9
9
  /**
10
- * This function generates content using the Anthropic Claude model via Vertex AI.
10
+ * This function generates content using the Google AI Studio models with the new interface.
11
11
  */
12
- export const generateContent = async function generateContent(prompt, functionDefs, requiredFunctionName, temperature, modelType = ModelType.DEFAULT, options = {}) {
12
+ export const generateContent = async function generateContent(prompt, config, options = {}) {
13
+ const modelType = config.modelType ?? ModelType.DEFAULT;
14
+ const temperature = config.temperature ?? 0.7;
15
+ const functionDefs = config.functionDefs ?? [];
16
+ const requiredFunctionName = config.requiredFunctionName ?? null;
17
+ const expectedResponseType = config.expectedResponseType ?? {
18
+ text: false,
19
+ functionCall: true,
20
+ media: false,
21
+ };
13
22
  const messages = prompt
14
23
  .filter((item) => item.type === 'user' || item.type === 'assistant')
15
24
  .map((item) => {
@@ -66,6 +75,8 @@ export const generateContent = async function generateContent(prompt, functionDe
66
75
  functionDeclarations: functionDefs,
67
76
  },
68
77
  ];
78
+ }
79
+ if (expectedResponseType.functionCall !== false) {
69
80
  req.toolConfig = {
70
81
  functionCallingConfig: {
71
82
  mode: FunctionCallingMode.ANY,
@@ -73,8 +84,18 @@ export const generateContent = async function generateContent(prompt, functionDe
73
84
  },
74
85
  };
75
86
  }
87
+ else if (expectedResponseType.functionCall === false) {
88
+ req.toolConfig = {
89
+ functionCallingConfig: {
90
+ mode: FunctionCallingMode.NONE,
91
+ allowedFunctionNames: [],
92
+ },
93
+ };
94
+ }
76
95
  const model = getModel(modelType, temperature, prompt.find((item) => item.type === 'systemPrompt')?.systemPrompt, options.geminiBlockNone);
77
- const result = await model.generateContent(req, { signal: abortController?.signal });
96
+ const result = await model.generateContent(req, {
97
+ signal: abortController?.signal,
98
+ });
78
99
  // Print token usage
79
100
  const usageMetadata = result.response.usageMetadata;
80
101
  const usage = {
@@ -101,19 +122,51 @@ export const generateContent = async function generateContent(prompt, functionDe
101
122
  .map((candidate) => candidate.content?.parts?.map((part) => part.functionCall))
102
123
  .flat()
103
124
  .filter((functionCall) => !!functionCall)
104
- .map((call) => ({ name: call.name, args: call.args }))
125
+ .map((call) => ({
126
+ name: call.name,
127
+ args: call.args,
128
+ }))
105
129
  .map(!enableVertexUnescape ? (call) => call : unescapeFunctionCall);
130
+ // Prepare the result parts array
131
+ const resultParts = [];
132
+ // Add function calls to result parts if they exist
133
+ if (functionCalls.length > 0) {
134
+ functionCalls.forEach((call) => {
135
+ resultParts.push({
136
+ type: 'functionCall',
137
+ functionCall: call,
138
+ });
139
+ });
140
+ }
141
+ // Handle reasoning model special case
106
142
  if (modelType === ModelType.REASONING) {
107
- functionCalls.push({
108
- name: 'reasoningInferenceResponse',
109
- args: {
110
- reasoning: result.response.candidates[0].content?.parts.length === 2
111
- ? result.response.candidates[0].content?.parts.slice(-2)[0].text
112
- : undefined,
113
- response: result.response.candidates[0].content?.parts.slice(-1)[0].text,
143
+ // Add the reasoning text if available
144
+ if (result.response.candidates[0].content?.parts.length === 2) {
145
+ resultParts.push({
146
+ type: 'text',
147
+ text: result.response.candidates[0].content?.parts.slice(-2)[0].text ?? '',
148
+ });
149
+ }
150
+ // Add the response text
151
+ resultParts.push({
152
+ type: 'text',
153
+ text: result.response.candidates[0].content?.parts.slice(-1)[0].text ?? '',
154
+ });
155
+ // Add the special function call for reasoning inference response
156
+ resultParts.push({
157
+ type: 'functionCall',
158
+ functionCall: {
159
+ name: 'reasoningInferenceResponse',
160
+ args: {
161
+ reasoning: result.response.candidates[0].content?.parts.length === 2
162
+ ? result.response.candidates[0].content?.parts.slice(-2)[0].text
163
+ : undefined,
164
+ response: result.response.candidates[0].content?.parts.slice(-1)[0].text,
165
+ },
114
166
  },
115
167
  });
116
168
  }
169
+ // Handle text response if no function calls were returned
117
170
  if (functionCalls.length === 0) {
118
171
  const textResponse = result.response.candidates
119
172
  .map((candidate) => candidate.content?.parts?.map((part) => part.text))
@@ -122,21 +175,42 @@ export const generateContent = async function generateContent(prompt, functionDe
122
175
  result.response.candidates.map((candidate) =>
123
176
  // @ts-expect-error: FinishReason type does not have this error
124
177
  candidate.finishReason === 'MALFORMED_FUNCTION_CALL' ? candidate.finishMessage : '')[0];
125
- const recoveredFunctionCall = textResponse &&
126
- (await recoverFunctionCall(textResponse, functionCalls, functionDefs.find((def) => def.name === requiredFunctionName)));
127
- if (!recoveredFunctionCall) {
128
- console.log('No function calls, output text response if it exists:', textResponse);
129
- }
130
- else {
131
- console.log('Recovered function call.');
178
+ if (textResponse) {
179
+ resultParts.push({
180
+ type: 'text',
181
+ text: textResponse,
182
+ });
183
+ // Try to recover function call from text if required function name is provided
184
+ const functionDef = functionDefs.find((def) => def.name === requiredFunctionName);
185
+ if (functionDef) {
186
+ try {
187
+ const recoveredCall = await recoverFunctionCall(textResponse, [], functionDef);
188
+ if (recoveredCall) {
189
+ console.log('Recovered function call.');
190
+ // The recovered call will be added to the functionCalls array by the recoverFunctionCall function
191
+ // We need to add it to resultParts as well
192
+ resultParts.push({
193
+ type: 'functionCall',
194
+ functionCall: {
195
+ name: functionDef.name,
196
+ args: recoveredCall,
197
+ },
198
+ });
199
+ }
200
+ }
201
+ catch (error) {
202
+ console.log('Failed to recover function call:', error);
203
+ }
204
+ }
132
205
  }
133
206
  }
134
- return processFunctionCalls(functionCalls, functionDefs);
207
+ return resultParts;
135
208
  };
136
209
  function getModel(modelType, temperature, systemPrompt, geminiBlockNone) {
137
210
  const serviceConfig = getServiceConfig('ai-studio');
138
211
  assert(serviceConfig.apiKey, 'API key not configured, use API_KEY environment variable');
139
212
  const genAI = new GoogleGenerativeAI(serviceConfig.apiKey);
213
+ // Determine the model name based on model type
140
214
  const model = (() => {
141
215
  switch (modelType) {
142
216
  case ModelType.CHEAP:
@@ -148,13 +222,21 @@ function getModel(modelType, temperature, systemPrompt, geminiBlockNone) {
148
222
  }
149
223
  })();
150
224
  console.log(`Using AI Studio model: ${model}`);
225
+ // Get model-specific settings
226
+ const { systemInstruction: modelSystemInstruction, outputTokenLimit } = getModelSettings('ai-studio', model);
227
+ // Combine base system prompt with model-specific instructions if available
228
+ let effectiveSystemPrompt = systemPrompt || '';
229
+ if (modelSystemInstruction?.length) {
230
+ effectiveSystemPrompt += `\n${modelSystemInstruction.join('\n')}`;
231
+ }
232
+ const generationConfig = {
233
+ maxOutputTokens: outputTokenLimit,
234
+ temperature,
235
+ topP: 0.95,
236
+ };
151
237
  return genAI.getGenerativeModel({
152
238
  model,
153
- generationConfig: {
154
- maxOutputTokens: 8192,
155
- temperature,
156
- topP: 0.95,
157
- },
239
+ generationConfig,
158
240
  safetySettings: [
159
241
  {
160
242
  category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
@@ -173,13 +255,13 @@ function getModel(modelType, temperature, systemPrompt, geminiBlockNone) {
173
255
  threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
174
256
  },
175
257
  ],
176
- ...(systemPrompt
258
+ ...(effectiveSystemPrompt
177
259
  ? {
178
260
  systemInstruction: {
179
261
  role: 'system',
180
262
  parts: [
181
263
  {
182
- text: systemPrompt,
264
+ text: effectiveSystemPrompt,
183
265
  },
184
266
  ],
185
267
  },
@@ -212,10 +294,11 @@ async function recoverFunctionCall(textResponse, functionCalls, functionDef) {
212
294
  });
213
295
  try {
214
296
  const parsed = JSON.parse(result.response.text());
215
- functionCalls.push(enableVertexUnescape
297
+ const functionCall = enableVertexUnescape
216
298
  ? unescapeFunctionCall({ name: functionDef.name, args: parsed })
217
- : { name: functionDef.name, args: parsed });
218
- return true;
299
+ : { name: functionDef.name, args: parsed };
300
+ functionCalls.push(functionCall);
301
+ return parsed;
219
302
  }
220
303
  catch {
221
304
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-studio.js","sourceRoot":"","sources":["../../src/ai-service/ai-studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-studio.js","sourceRoot":"","sources":["../../src/ai-service/ai-studio.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,19 @@
1
1
  import assert from 'node:assert';
2
2
  import Anthropic from '@anthropic-ai/sdk';
3
- import { printTokenUsageAndCost, processFunctionCalls } from './common.js';
3
+ import { printTokenUsageAndCost } from './common.js';
4
4
  import { ModelType } from './common-types.js';
5
5
  import { abortController } from '../main/common/abort-controller.js';
6
6
  import { putSystemMessage } from '../main/common/content-bus.js';
7
- import { getServiceConfig } from './service-configurations.js';
7
+ import { getServiceConfig, getModelSettings } from './service-configurations.js';
8
8
  /**
9
9
  * This function generates content using the Anthropic Claude model.
10
10
  */
11
- export const generateContent = async function generateContent(prompt, functionDefs, requiredFunctionName, temperature, modelType = ModelType.DEFAULT, options = {}) {
11
+ export const generateContent = async function generateContent(prompt, config, options = {}) {
12
+ const modelType = config.modelType ?? ModelType.DEFAULT;
13
+ const temperature = config.temperature ?? 0.7;
14
+ let functionDefs = config.functionDefs ?? [];
15
+ let requiredFunctionName = config.requiredFunctionName ?? null;
16
+ const expectedResponseType = config.expectedResponseType ?? { text: false, functionCall: true, media: false };
12
17
  try {
13
18
  const serviceConfig = getServiceConfig('anthropic');
14
19
  assert(serviceConfig?.apiKey, 'Anthropic API key not configured, use ANTHROPIC_API_KEY environment variable.');
@@ -18,7 +23,22 @@ export const generateContent = async function generateContent(prompt, functionDe
18
23
  'anthropic-beta': 'max-tokens-3-5-sonnet-2024-07-15' + (!options.disableCache ? ',prompt-caching-2024-07-31' : ''),
19
24
  },
20
25
  });
21
- const systemPrompt = prompt.find((item) => item.type === 'systemPrompt')?.systemPrompt || '';
26
+ // Get base system prompt
27
+ let baseSystemPrompt = prompt.find((item) => item.type === 'systemPrompt')?.systemPrompt || '';
28
+ // Determine which model to use
29
+ const defaultModel = modelType === ModelType.CHEAP ? 'claude-3-5-haiku-20241022' : 'claude-3-7-sonnet-20250219';
30
+ const modelOverrides = serviceConfig?.modelOverrides;
31
+ let model = modelType === ModelType.CHEAP
32
+ ? (modelOverrides?.cheap ?? defaultModel)
33
+ : modelType === ModelType.REASONING
34
+ ? (modelOverrides?.reasoning ?? defaultModel)
35
+ : (modelOverrides?.default ?? defaultModel);
36
+ // Get model-specific settings
37
+ const { systemInstruction: modelSystemInstruction, outputTokenLimit } = getModelSettings('anthropic', model);
38
+ // Combine base system prompt with model-specific instructions if available
39
+ if (modelSystemInstruction?.length) {
40
+ baseSystemPrompt += `\n${modelSystemInstruction.join('\n')}`;
41
+ }
22
42
  if (modelType === ModelType.REASONING) {
23
43
  functionDefs = [];
24
44
  requiredFunctionName = null;
@@ -91,33 +111,32 @@ export const generateContent = async function generateContent(prompt, functionDe
91
111
  return message;
92
112
  }
93
113
  });
94
- const defaultModel = modelType === ModelType.CHEAP ? 'claude-3-5-haiku-20241022' : 'claude-3-7-sonnet-20250219';
95
- const modelOverrides = serviceConfig?.modelOverrides;
96
- let model = modelType === ModelType.CHEAP
97
- ? (modelOverrides?.cheap ?? defaultModel)
98
- : modelType === ModelType.REASONING
99
- ? (modelOverrides?.reasoning ?? defaultModel)
100
- : (modelOverrides?.default ?? defaultModel);
101
114
  console.log(`Using Anthropic model: ${model}`);
102
115
  let retryCount = 0;
103
116
  let response;
117
+ // Set max_tokens based on model-specific setting or defaults
118
+ const maxTokens = outputTokenLimit ?? (modelType === ModelType.REASONING ? 8192 * 2 : 8192);
104
119
  while (retryCount < 3) {
105
120
  try {
106
121
  response = await anthropic.messages.create({
107
122
  model: model,
108
- system: systemPrompt,
123
+ system: baseSystemPrompt,
109
124
  messages: messages,
110
- tools: functionDefs.map((fd) => ({
111
- name: fd.name,
112
- description: fd.description,
113
- input_schema: fd.parameters,
114
- })),
125
+ tools: expectedResponseType.functionCall !== false
126
+ ? functionDefs.map((fd) => ({
127
+ name: fd.name,
128
+ description: fd.description,
129
+ input_schema: fd.parameters,
130
+ }))
131
+ : undefined,
115
132
  tool_choice: requiredFunctionName && modelType !== ModelType.REASONING
116
133
  ? { type: 'tool', name: requiredFunctionName }
117
- : functionDefs.length > 0 && modelType !== ModelType.REASONING
134
+ : functionDefs.length > 0 &&
135
+ modelType !== ModelType.REASONING &&
136
+ expectedResponseType.functionCall !== false
118
137
  ? { type: 'any' }
119
138
  : undefined,
120
- max_tokens: modelType === ModelType.REASONING ? 8192 * 2 : 8192,
139
+ max_tokens: maxTokens,
121
140
  temperature: modelType !== ModelType.REASONING ? temperature : 1,
122
141
  thinking: modelType === ModelType.REASONING
123
142
  ? {
@@ -196,18 +215,18 @@ export const generateContent = async function generateContent(prompt, functionDe
196
215
  const responseMessage = responseMessages.find((item) => item.type === 'text')?.text;
197
216
  return [
198
217
  {
199
- id: 'reasoning_inference_response',
200
- name: 'reasoningInferenceResponse',
201
- args: {
202
- ...(thinking ? { reasoning: thinking } : {}),
203
- response: responseMessage,
218
+ type: 'functionCall',
219
+ functionCall: {
220
+ id: 'reasoning_inference_response',
221
+ name: 'reasoningInferenceResponse',
222
+ args: {
223
+ ...(thinking ? { reasoning: thinking } : {}),
224
+ response: responseMessage,
225
+ },
204
226
  },
205
227
  },
206
228
  ];
207
229
  }
208
- if (responseMessages.length > 0) {
209
- console.log('Response messages', responseMessages);
210
- }
211
230
  const functionCalls = response.content
212
231
  .filter((item) => item.type === 'tool_use')
213
232
  .map((item) => ({
@@ -215,7 +234,24 @@ export const generateContent = async function generateContent(prompt, functionDe
215
234
  name: item.name,
216
235
  args: item.input,
217
236
  }));
218
- return processFunctionCalls(functionCalls, functionDefs);
237
+ if (!expectedResponseType.functionCall) {
238
+ functionCalls.length = 0;
239
+ }
240
+ if (!expectedResponseType.text) {
241
+ responseMessages.length = 0;
242
+ }
243
+ return [
244
+ ...functionCalls.map((fc) => ({
245
+ type: 'functionCall',
246
+ functionCall: fc,
247
+ })),
248
+ ...responseMessages
249
+ .filter((item) => item.type === 'text')
250
+ .map((item) => ({
251
+ type: 'text',
252
+ text: item.text,
253
+ })),
254
+ ];
219
255
  }
220
256
  catch (error) {
221
257
  if (error instanceof Error && error.message.includes('API key not configured')) {
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/ai-service/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/ai-service/anthropic.ts"],"names":[],"mappings":"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"}
@@ -47,21 +47,42 @@ export interface PromptItem {
47
47
  functionCalls?: FunctionCall[];
48
48
  cache?: boolean;
49
49
  } /** Hook function type for generateContent hooks */
50
- export type GenerateContentHook = (args: GenerateContentArgs, result: FunctionCall[]) => Promise<void>;
50
+ export type GenerateContentResultPart = {
51
+ type: 'text';
52
+ text: string;
53
+ } | {
54
+ type: 'functionCall';
55
+ functionCall: FunctionCall;
56
+ } | {
57
+ type: 'media';
58
+ media: {
59
+ mediaType: PromptImageMediaType;
60
+ base64url: string;
61
+ };
62
+ };
63
+ export type GenerateContentResult = GenerateContentResultPart[];
64
+ export type GenerateContentHook = (args: GenerateContentArgs, result: GenerateContentResult) => Promise<void>;
51
65
  export type GenerateContentArgs = [
52
66
  prompt: PromptItem[],
53
- functionDefs: FunctionDef[],
54
- requiredFunctionName: string | null,
55
- temperature: number,
56
- modelType?: ModelType,
57
- options?: {
67
+ config: {
68
+ modelType?: ModelType;
69
+ temperature?: number;
70
+ functionDefs?: FunctionDef[];
71
+ requiredFunctionName?: string | null;
72
+ expectedResponseType?: {
73
+ text: boolean;
74
+ functionCall: boolean;
75
+ media: boolean;
76
+ };
77
+ },
78
+ options: {
58
79
  geminiBlockNone?: boolean;
59
80
  disableCache?: boolean;
60
81
  aiService?: string;
61
82
  askQuestion?: boolean;
62
83
  }
63
84
  ];
64
- export type GenerateContentFunction = (...args: GenerateContentArgs) => Promise<FunctionCall[]>;
85
+ export type GenerateContentFunction = (...args: GenerateContentArgs) => Promise<GenerateContentResult>;
65
86
  export type GenerateImageFunction = (prompt: string, contextImagePath: string | undefined, size: {
66
87
  width: number;
67
88
  height: number;
@@ -0,0 +1,6 @@
1
+ import { GenerateContentFunction } from './common-types.js';
2
+ /**
3
+ * This function generates content using the local llm service.
4
+ * Local llm provides an OpenAI-compatible API, so we can reuse the OpenAI implementation.
5
+ */
6
+ export declare const generateContent: GenerateContentFunction;
@@ -0,0 +1,77 @@
1
+ import OpenAI from 'openai';
2
+ import assert from 'node:assert';
3
+ import { ModelType } from './common-types.js';
4
+ import { getServiceConfig } from './service-configurations.js';
5
+ import { internalGenerateContent } from './openai.js'; // Import the exported function
6
+ /**
7
+ * This function generates content using the local llm service.
8
+ * Local llm provides an OpenAI-compatible API, so we can reuse the OpenAI implementation.
9
+ */
10
+ export const generateContent = async function generateContent(...args) {
11
+ const [prompt, { modelType, temperature, functionDefs, requiredFunctionName }] = args;
12
+ try {
13
+ const serviceConfig = getServiceConfig('local-llm');
14
+ const apiKey = serviceConfig?.apiKey || 'local-llm'; // Use configured or default key
15
+ const baseURL = serviceConfig?.openaiBaseUrl || 'http://localhost:11434/v1/'; // Use configured or default URL
16
+ assert(baseURL, 'Local llm base URL not configured, use LOCAL_LLM_BASE_URL environment variable.');
17
+ // Create OpenAI client instance configured for the local LLM service
18
+ const openai = new OpenAI({
19
+ apiKey,
20
+ baseURL,
21
+ });
22
+ // Determine the model name based on ModelType and service configuration
23
+ const model = (() => {
24
+ switch (modelType) {
25
+ case ModelType.CHEAP:
26
+ return serviceConfig.modelOverrides?.cheap ?? 'gemma3:12b';
27
+ case ModelType.REASONING:
28
+ // Local LLM doesn't have a standard reasoning model, fallback to default
29
+ console.warn('Reasoning model type requested for local-llm, falling back to default model.');
30
+ return serviceConfig.modelOverrides?.default ?? 'gemma3:12b';
31
+ default:
32
+ return serviceConfig.modelOverrides?.default ?? 'gemma3:12b';
33
+ }
34
+ })();
35
+ console.log(`Using local model: ${model}`);
36
+ // Map arguments from GenerateContentArgs to GenerateContentArgsNew
37
+ const config = {
38
+ modelType,
39
+ temperature,
40
+ functionDefs,
41
+ requiredFunctionName,
42
+ expectedResponseType: { functionCall: true, text: false, media: false }, // Old interface expects only function calls
43
+ };
44
+ // Add a nudge for required function name if necessary (specific to local-llm behavior)
45
+ const adjustedPrompt = [...prompt];
46
+ if (requiredFunctionName) {
47
+ adjustedPrompt.push({
48
+ type: 'user',
49
+ text: `Call the \`${requiredFunctionName}\` function`,
50
+ });
51
+ }
52
+ // Call the imported internalGenerateContent function with 'local-llm' as serviceType
53
+ const result = await internalGenerateContent(adjustedPrompt.map((item) => ({ ...item, text: item.text ?? ' ' })), // Ensure text isn't undefined
54
+ config, model, openai, 'local-llm');
55
+ // Adapt the GenerateContentResult back to FunctionCall[] for backward compatibility
56
+ const functionCalls = result
57
+ .filter((part) => part.type === 'functionCall')
58
+ .map((part) => part.functionCall);
59
+ return functionCalls.map((call) => ({
60
+ type: 'functionCall',
61
+ functionCall: call,
62
+ }));
63
+ }
64
+ catch (error) {
65
+ if (error instanceof Error && error.message.includes('base URL not configured')) {
66
+ throw new Error('Local base URL not configured. Please set up the service configuration.');
67
+ }
68
+ // Add specific error handling for local LLM connection issues
69
+ if (error instanceof Error && (error.message.includes('ECONNREFUSED') || error.message.includes('fetch failed'))) {
70
+ const serviceConfig = getServiceConfig('local-llm');
71
+ const baseURL = serviceConfig?.openaiBaseUrl || 'http://localhost:11434/v1/';
72
+ throw new Error(`Failed to connect to local LLM at ${baseURL}. Please ensure the service is running and accessible.`);
73
+ }
74
+ throw error;
75
+ }
76
+ };
77
+ //# sourceMappingURL=local-llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-llm.js","sourceRoot":"","sources":["../../src/ai-service/local-llm.ts"],"names":[],"mappings":"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"}