genaicode 0.9.6 → 0.10.1

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 (175) 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/help-docs/genaicode-help-document.d.ts +1 -1
  30. package/dist/help-docs/genaicode-help-document.js +1 -0
  31. package/dist/help-docs/genaicode-help-document.js.map +1 -1
  32. package/dist/main/codegen-utils.js +9 -1
  33. package/dist/main/codegen-utils.js.map +1 -1
  34. package/dist/main/codegen.js +2 -0
  35. package/dist/main/codegen.js.map +1 -1
  36. package/dist/main/common/user-actions.d.ts +2 -0
  37. package/dist/main/common/user-actions.js.map +1 -1
  38. package/dist/main/config-schema.js +16 -0
  39. package/dist/main/config-schema.js.map +1 -1
  40. package/dist/main/config-types.d.ts +16 -0
  41. package/dist/main/config.js +9 -1
  42. package/dist/main/config.js.map +1 -1
  43. package/dist/main/interactive/select-ai-service.js +1 -0
  44. package/dist/main/interactive/select-ai-service.js.map +1 -1
  45. package/dist/main/plugin-loader.d.ts +1 -2
  46. package/dist/main/plugin-loader.js.map +1 -1
  47. package/dist/main/ui/backend/endpoints/question-endpoint.js +34 -3
  48. package/dist/main/ui/backend/endpoints/question-endpoint.js.map +1 -1
  49. package/dist/main/ui/backend/service.d.ts +6 -5
  50. package/dist/main/ui/backend/service.js +54 -17
  51. package/dist/main/ui/backend/service.js.map +1 -1
  52. package/dist/main/ui/common/api-types.d.ts +1 -0
  53. package/dist/main/ui/frontend/assets/index-C7n3IQsE.js +1896 -0
  54. package/dist/main/ui/frontend/index.html +1 -1
  55. package/dist/project-profiles/types.d.ts +1 -1
  56. package/dist/project-profiles/types.js +1 -1
  57. package/dist/project-profiles/types.js.map +1 -1
  58. package/dist/prompt/function-calling.js +8 -1
  59. package/dist/prompt/function-calling.js.map +1 -1
  60. package/dist/prompt/function-defs/ask-question.d.ts +1 -0
  61. package/dist/prompt/function-defs/ask-question.js +38 -4
  62. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  63. package/dist/prompt/function-defs/conversation-summary.d.ts +2 -0
  64. package/dist/prompt/function-defs/conversation-summary.js +15 -0
  65. package/dist/prompt/function-defs/conversation-summary.js.map +1 -0
  66. package/dist/prompt/function-defs/explore-external-directories.d.ts +16 -0
  67. package/dist/prompt/function-defs/explore-external-directories.js +48 -0
  68. package/dist/prompt/function-defs/explore-external-directories.js.map +1 -0
  69. package/dist/prompt/function-defs/read-external-files.d.ts +9 -0
  70. package/dist/prompt/function-defs/read-external-files.js +30 -0
  71. package/dist/prompt/function-defs/read-external-files.js.map +1 -0
  72. package/dist/prompt/limits.js +1 -1
  73. package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.js +23 -18
  74. package/dist/prompt/steps/step-ask-question/handlers/handle-code-generation.js.map +1 -1
  75. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js +60 -28
  76. package/dist/prompt/steps/step-ask-question/handlers/handle-conversation-graph.js.map +1 -1
  77. package/dist/prompt/steps/step-ask-question/handlers/handle-create-file.js +76 -73
  78. package/dist/prompt/steps/step-ask-question/handlers/handle-create-file.js.map +1 -1
  79. package/dist/prompt/steps/step-ask-question/handlers/handle-end-conversation.js +1 -1
  80. package/dist/prompt/steps/step-ask-question/handlers/handle-end-conversation.js.map +1 -1
  81. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.d.ts +2 -0
  82. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +277 -0
  83. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -0
  84. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js +13 -1
  85. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js.map +1 -1
  86. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js +13 -1
  87. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js.map +1 -1
  88. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.d.ts +1 -1
  89. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js +54 -61
  90. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js.map +1 -1
  91. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js +22 -10
  92. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js.map +1 -1
  93. package/dist/prompt/steps/step-ask-question/handlers/handle-pull-app-context.js +13 -1
  94. package/dist/prompt/steps/step-ask-question/handlers/handle-pull-app-context.js.map +1 -1
  95. package/dist/prompt/steps/step-ask-question/handlers/handle-push-app-context.js +13 -1
  96. package/dist/prompt/steps/step-ask-question/handlers/handle-push-app-context.js.map +1 -1
  97. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.d.ts +2 -0
  98. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js +144 -0
  99. package/dist/prompt/steps/step-ask-question/handlers/handle-read-external-files.js.map +1 -0
  100. package/dist/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.js +27 -6
  101. package/dist/prompt/steps/step-ask-question/handlers/handle-reasoning-inference.js.map +1 -1
  102. package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.js +13 -1
  103. package/dist/prompt/steps/step-ask-question/handlers/handle-remove-files-from-context.js.map +1 -1
  104. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.js +14 -5
  105. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-content.js.map +1 -1
  106. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.js +26 -2
  107. package/dist/prompt/steps/step-ask-question/handlers/handle-request-files-fragments.js.map +1 -1
  108. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.d.ts +3 -0
  109. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js +182 -0
  110. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js.map +1 -0
  111. package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.js +13 -1
  112. package/dist/prompt/steps/step-ask-question/handlers/handle-request-permissions.js.map +1 -1
  113. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.js +14 -2
  114. package/dist/prompt/steps/step-ask-question/handlers/handle-search-code.js.map +1 -1
  115. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +1 -0
  116. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  117. package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js +59 -60
  118. package/dist/prompt/steps/step-ask-question/handlers/handle-update-file.js.map +1 -1
  119. package/dist/prompt/steps/step-ask-question/step-ask-question-handlers.js +4 -1
  120. package/dist/prompt/steps/step-ask-question/step-ask-question-handlers.js.map +1 -1
  121. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +11 -1
  122. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
  123. package/dist/prompt/steps/step-ask-question/step-ask-question.js +14 -7
  124. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  125. package/dist/prompt/steps/step-codegen-planning.js +14 -5
  126. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  127. package/dist/prompt/steps/step-context-compression.js +14 -5
  128. package/dist/prompt/steps/step-context-compression.js.map +1 -1
  129. package/dist/prompt/steps/step-context-optimization.js +10 -5
  130. package/dist/prompt/steps/step-context-optimization.js.map +1 -1
  131. package/dist/prompt/steps/step-generate-codegen-summary.js +14 -5
  132. package/dist/prompt/steps/step-generate-codegen-summary.js.map +1 -1
  133. package/dist/prompt/steps/step-generate-summary.d.ts +6 -0
  134. package/dist/prompt/steps/step-generate-summary.js +36 -16
  135. package/dist/prompt/steps/step-generate-summary.js.map +1 -1
  136. package/dist/prompt/steps/step-history-update.js +14 -5
  137. package/dist/prompt/steps/step-history-update.js.map +1 -1
  138. package/dist/prompt/steps/step-process-file-updates.js +10 -5
  139. package/dist/prompt/steps/step-process-file-updates.js.map +1 -1
  140. package/dist/prompt/steps/step-summarization.js +14 -2
  141. package/dist/prompt/steps/step-summarization.js.map +1 -1
  142. package/dist/prompt/steps/step-validate-recover.d.ts +2 -4
  143. package/dist/prompt/steps/step-validate-recover.js +18 -9
  144. package/dist/prompt/steps/step-validate-recover.js.map +1 -1
  145. package/dist/prompt/steps/step-verify-patch.js +14 -5
  146. package/dist/prompt/steps/step-verify-patch.js.map +1 -1
  147. package/dist/prompt/systemprompt.d.ts +1 -1
  148. package/dist/prompt/systemprompt.js +10 -5
  149. package/dist/prompt/systemprompt.js.map +1 -1
  150. package/package.json +5 -4
  151. package/dist/main/ui/frontend/assets/index-DI1ngpa2.js +0 -1840
  152. package/dist/prompt/steps/step-ask-question/handlers/code-generation.d.ts +0 -4
  153. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +0 -167
  154. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +0 -1
  155. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.d.ts +0 -2
  156. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js +0 -34
  157. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js.map +0 -1
  158. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.d.ts +0 -2
  159. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js +0 -32
  160. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js.map +0 -1
  161. package/dist/prompt/steps/step-ask-question/handlers/genaicode-help-document.d.ts +0 -1
  162. package/dist/prompt/steps/step-ask-question/handlers/genaicode-help-document.js +0 -251
  163. package/dist/prompt/steps/step-ask-question/handlers/genaicode-help-document.js.map +0 -1
  164. package/dist/prompt/steps/step-ask-question/handlers/lint.d.ts +0 -6
  165. package/dist/prompt/steps/step-ask-question/handlers/lint.js +0 -103
  166. package/dist/prompt/steps/step-ask-question/handlers/lint.js.map +0 -1
  167. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.d.ts +0 -2
  168. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +0 -82
  169. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js.map +0 -1
  170. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.d.ts +0 -8
  171. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +0 -179
  172. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +0 -1
  173. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.d.ts +0 -2
  174. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js +0 -69
  175. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +0 -1
@@ -1,84 +1,106 @@
1
1
  import assert from 'node:assert';
2
- import { VertexAI, HarmCategory, HarmBlockThreshold, FunctionCallingMode, } from '@google-cloud/vertexai';
3
- import { printTokenUsageAndCost, processFunctionCalls } from './common.js';
4
- import { ModelType } from './common-types.js';
2
+ import { VertexAI, HarmCategory, HarmBlockThreshold, FunctionCallingMode, SchemaType, } from '@google-cloud/vertexai';
3
+ import { printTokenUsageAndCost } from './common.js';
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 Gemini Pro model.
10
+ * This function generates content using the Vertex AI Gemini 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
13
  try {
14
14
  // Limitation: https://github.com/googleapis/nodejs-vertexai/issues/143
15
15
  abortController?.signal.throwIfAborted();
16
+ const modelType = config.modelType ?? ModelType.DEFAULT;
17
+ const temperature = config.temperature ?? 0.7;
18
+ const functionDefs = config.functionDefs ?? [];
19
+ const requiredFunctionName = config.requiredFunctionName ?? null;
20
+ const expectedResponseType = config.expectedResponseType ?? { text: false, functionCall: true, media: false };
16
21
  const messages = prompt
17
22
  .filter((item) => item.type === 'user' || item.type === 'assistant')
18
23
  .map((item) => {
24
+ const parts = [];
19
25
  if (item.type === 'user') {
20
- const content = {
21
- role: 'user',
22
- parts: [
23
- ...(item.functionResponses ?? []).map((response) => ({
24
- functionResponse: {
25
- name: response.name,
26
- response: { name: response.name, content: response.content },
27
- },
28
- })),
29
- ...(item.images ?? []).map((image) => ({
30
- inlineData: {
31
- mimeType: image.mediaType,
32
- data: image.base64url,
33
- },
34
- })),
35
- ...(item.text ? [{ text: item.text }] : []),
36
- ],
37
- };
38
- return content;
26
+ if (item.functionResponses) {
27
+ parts.push(...item.functionResponses.map((response) => ({
28
+ functionResponse: {
29
+ name: response.name,
30
+ response: { name: response.name, content: response.content },
31
+ },
32
+ })));
33
+ }
34
+ if (item.images) {
35
+ parts.push(...item.images.map((image) => ({
36
+ inlineData: {
37
+ mimeType: image.mediaType,
38
+ data: image.base64url,
39
+ },
40
+ })));
41
+ }
42
+ if (item.text) {
43
+ parts.push({ text: item.text });
44
+ }
45
+ return { role: 'user', parts };
39
46
  }
40
47
  else {
41
48
  assert(item.type === 'assistant');
42
- const content = {
43
- role: 'model',
44
- parts: [
45
- ...(item.text ? [{ text: item.text }] : []),
46
- ...(item.functionCalls ?? []).map((call) => ({
47
- functionCall: {
48
- name: call.name,
49
- args: call.args ?? {},
50
- },
51
- })),
52
- ...(item.images ?? []).map((image) => ({
53
- inlineData: {
54
- mimeType: image.mediaType,
55
- data: image.base64url,
56
- },
57
- })),
58
- ],
59
- };
60
- return content;
49
+ if (item.text) {
50
+ parts.push({ text: item.text });
51
+ }
52
+ if (item.functionCalls) {
53
+ parts.push(...item.functionCalls.map((call) => ({
54
+ functionCall: {
55
+ name: call.name,
56
+ args: call.args ?? {},
57
+ },
58
+ })));
59
+ }
60
+ // Note: Vertex AI SDK currently might not fully support model generating images in parts
61
+ if (item.images) {
62
+ parts.push(...item.images.map((image) => ({
63
+ inlineData: {
64
+ mimeType: image.mediaType,
65
+ data: image.base64url,
66
+ },
67
+ })));
68
+ }
69
+ return { role: 'model', parts };
61
70
  }
62
71
  });
63
72
  const req = {
64
73
  contents: messages,
65
74
  };
66
- const model = await getGenModel(prompt.find((item) => item.type === 'systemPrompt').systemPrompt, temperature, functionDefs, options.geminiBlockNone, requiredFunctionName, modelType);
67
- const result = await model.generateContent(req);
68
- // Print token usage
69
- const usageMetadata = result.response.usageMetadata;
70
- const usage = {
71
- inputTokens: usageMetadata.promptTokenCount,
72
- outputTokens: usageMetadata.candidatesTokenCount,
73
- totalTokens: usageMetadata.totalTokenCount,
74
- };
75
- printTokenUsageAndCost({
76
- aiService: 'vertex-ai',
77
- usage,
78
- inputCostPerToken: 0.000125 / 1000,
79
- outputCostPerToken: 0.000375 / 1000,
75
+ const modelInstance = await getGenModel({
76
+ systemPromptText: prompt.find((item) => item.type === 'systemPrompt')?.systemPrompt,
77
+ temperature,
78
+ functionDefs,
79
+ geminiBlockNone: options.geminiBlockNone,
80
+ requiredFunctionName,
80
81
  modelType,
82
+ expectedResponseType,
81
83
  });
84
+ const result = await modelInstance.generateContent(req);
85
+ // Print token usage
86
+ const usageMetadata = result.response.usageMetadata;
87
+ if (usageMetadata) {
88
+ const usage = {
89
+ inputTokens: usageMetadata.promptTokenCount,
90
+ outputTokens: usageMetadata.candidatesTokenCount,
91
+ totalTokens: usageMetadata.totalTokenCount,
92
+ };
93
+ printTokenUsageAndCost({
94
+ aiService: 'vertex-ai',
95
+ usage,
96
+ inputCostPerToken: 0.000125 / 1000, // Example cost, adjust as needed
97
+ outputCostPerToken: 0.000375 / 1000, // Example cost, adjust as needed
98
+ modelType,
99
+ });
100
+ }
101
+ else {
102
+ console.log('Usage metadata not available.');
103
+ }
82
104
  if (result.response.promptFeedback) {
83
105
  console.log('Prompt feedback:');
84
106
  console.log(JSON.stringify(result.response.promptFeedback, null, 2));
@@ -88,29 +110,62 @@ export const generateContent = async function generateContent(prompt, functionDe
88
110
  throw new Error('No candidates found');
89
111
  }
90
112
  const functionCalls = result.response.candidates
91
- .map((candidate) => candidate.content.parts?.map((part) => part.functionCall))
92
- .flat()
113
+ .flatMap((candidate) => candidate.content.parts?.filter((part) => part.functionCall))
114
+ .map((part) => part.functionCall)
93
115
  .filter((functionCall) => !!functionCall)
94
116
  .map((call) => ({ name: call.name, args: call.args }))
95
- .map(enableVertexUnescape ? (call) => call : unescapeFunctionCall);
96
- if (functionCalls.length === 0) {
117
+ .map(enableVertexUnescape ? unescapeFunctionCall : (call) => call); // Apply unescaping based on flag
118
+ // Prepare the result parts array
119
+ const resultParts = [];
120
+ // Add function calls to result parts if they exist
121
+ if (functionCalls.length > 0) {
122
+ functionCalls.forEach((call) => {
123
+ resultParts.push({
124
+ type: 'functionCall',
125
+ functionCall: call,
126
+ });
127
+ });
128
+ }
129
+ // Handle text response if no function calls were returned or if text is expected
130
+ if (functionCalls.length === 0 || expectedResponseType.text) {
97
131
  const textResponse = result.response.candidates
98
- .map((candidate) => candidate.content.parts?.map((part) => part.text))
99
- .flat()
100
- .filter((text) => !!text)[0] ??
101
- result.response.candidates.map((candidate) =>
102
- // @ts-expect-error: FinishReason type does not have this error
103
- candidate.finishReason === 'MALFORMED_FUNCTION_CALL' ? candidate.finishMessage : '')[0];
104
- const recoveredFunctionCall = textResponse &&
105
- (await recoverFunctionCall(textResponse, functionCalls, functionDefs.find((def) => def.name === requiredFunctionName)));
106
- if (!recoveredFunctionCall) {
107
- console.log('No function calls, output text response if it exists:', textResponse);
108
- }
109
- else {
110
- console.log('Recovered function call.');
132
+ ?.flatMap((candidate) => candidate.content.parts?.filter((part) => part.text))
133
+ .map((part) => part.text)
134
+ .filter((text) => !!text)
135
+ .join('\n') ?? // Join multiple text parts if they exist
136
+ result.response.candidates?.map((candidate) =>
137
+ // @ts-expect-error: finishReason might not be typed correctly in SDK
138
+ candidate.finishReason === 'MALFORMED_FUNCTION_CALL' ? candidate.finishMessage : '')[0] ??
139
+ ''; // Default to empty string
140
+ if (textResponse) {
141
+ if (expectedResponseType.text) {
142
+ resultParts.push({
143
+ type: 'text',
144
+ text: textResponse,
145
+ });
146
+ }
147
+ // Try to recover function call from text if required function name is provided and no calls were found initially
148
+ const functionDef = functionDefs.find((def) => def.name === requiredFunctionName);
149
+ if (expectedResponseType.functionCall && functionDef && functionCalls.length === 0) {
150
+ try {
151
+ const recoveredCall = await recoverFunctionCall(textResponse, functionDef);
152
+ if (recoveredCall) {
153
+ console.log('Recovered function call.');
154
+ resultParts.push({
155
+ type: 'functionCall',
156
+ functionCall: recoveredCall,
157
+ });
158
+ }
159
+ }
160
+ catch (error) {
161
+ console.log('Failed to recover function call:', error);
162
+ }
163
+ }
111
164
  }
112
165
  }
113
- return processFunctionCalls(functionCalls, functionDefs);
166
+ // Note: Vertex AI SDK might not return media parts directly in the same way as AI Studio.
167
+ // If media generation is needed, a separate API call (e.g., Imagen) might be required.
168
+ return resultParts;
114
169
  }
115
170
  catch (error) {
116
171
  if (error instanceof Error && error.message.includes('Project ID not configured')) {
@@ -119,69 +174,93 @@ export const generateContent = async function generateContent(prompt, functionDe
119
174
  throw error;
120
175
  }
121
176
  };
122
- // A function to get the generative model
123
- // Modified to accept temperature parameter and cheap flag
124
- function getGenModel(systemPrompt, temperature, functionDefs, geminiBlockNone, requiredFunctionName, modelType = ModelType.DEFAULT) {
177
+ // A function to get the generative model instance
178
+ async function getGenModel(params) {
179
+ const { systemPromptText, temperature, functionDefs, geminiBlockNone, requiredFunctionName, modelType, expectedResponseType, } = params;
125
180
  try {
126
- console.log('Recovering function call');
127
181
  const serviceConfig = getServiceConfig('vertex-ai');
182
+ assert(serviceConfig?.googleCloudProjectId, 'Google Cloud Project ID not configured.');
128
183
  // Initialize Vertex with your Cloud project and location
129
- const vertex_ai = new VertexAI({ project: serviceConfig?.googleCloudProjectId });
130
- const defaultModel = modelType === ModelType.CHEAP ? 'gemini-2.0-flash' : 'gemini-1.5-pro-002';
184
+ const vertex_ai = new VertexAI({ project: serviceConfig.googleCloudProjectId });
185
+ // Determine model name
186
+ const defaultModelName = modelType === ModelType.CHEAP ? 'gemini-2.0-flash' : 'gemini-1.5-pro-002';
131
187
  const modelOverrides = serviceConfig?.modelOverrides;
132
- const model = modelType === ModelType.CHEAP
133
- ? (modelOverrides?.cheap ?? defaultModel)
134
- : (modelOverrides?.default ?? defaultModel);
135
- console.log(`Using Vertex AI model: ${model}`);
136
- // Instantiate the models
137
- return vertex_ai.preview.getGenerativeModel({
138
- model: model,
139
- generationConfig: {
140
- maxOutputTokens: 8192,
141
- temperature: temperature,
142
- topP: 0.95,
188
+ const modelName = (modelType === ModelType.CHEAP
189
+ ? modelOverrides?.cheap
190
+ : modelType === ModelType.REASONING
191
+ ? modelOverrides?.reasoning // Use reasoning override if specified
192
+ : modelOverrides?.default) ?? defaultModelName;
193
+ console.log(`Using Vertex AI model: ${modelName}`);
194
+ // Get model-specific settings
195
+ const { systemInstruction: modelSystemInstruction, outputTokenLimit } = getModelSettings('vertex-ai', modelName);
196
+ // Combine base system prompt with model-specific instructions
197
+ let effectiveSystemPrompt = systemPromptText ?? '';
198
+ if (modelSystemInstruction?.length) {
199
+ effectiveSystemPrompt += `\n${modelSystemInstruction.join('\n')}`;
200
+ }
201
+ // Configure generation
202
+ const generationConfig = {
203
+ maxOutputTokens: outputTokenLimit, // Use the potentially model-specific limit
204
+ temperature: temperature,
205
+ topP: 0.95,
206
+ };
207
+ // Configure safety settings
208
+ const safetySettings = [
209
+ {
210
+ category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
211
+ threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
143
212
  },
144
- safetySettings: [
145
- {
146
- category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
147
- threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
148
- },
213
+ {
214
+ category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
215
+ threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
216
+ },
217
+ {
218
+ category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
219
+ threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
220
+ },
221
+ {
222
+ category: HarmCategory.HARM_CATEGORY_HARASSMENT,
223
+ threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
224
+ },
225
+ ];
226
+ // Configure tools and tool config
227
+ let tools = undefined;
228
+ let toolConfig = undefined;
229
+ if (functionDefs.length > 0 && expectedResponseType.functionCall) {
230
+ tools = [
149
231
  {
150
- category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
151
- threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
232
+ functionDeclarations: functionDefs,
152
233
  },
153
- {
154
- category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
155
- threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
234
+ ];
235
+ toolConfig = {
236
+ functionCallingConfig: {
237
+ mode: FunctionCallingMode.ANY,
238
+ ...(requiredFunctionName ? { allowedFunctionNames: [requiredFunctionName] } : {}),
156
239
  },
157
- {
158
- category: HarmCategory.HARM_CATEGORY_HARASSMENT,
159
- threshold: geminiBlockNone ? HarmBlockThreshold.BLOCK_NONE : HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
240
+ };
241
+ }
242
+ else if (!expectedResponseType.functionCall) {
243
+ toolConfig = {
244
+ functionCallingConfig: {
245
+ mode: FunctionCallingMode.NONE,
160
246
  },
161
- ],
162
- systemInstruction: {
163
- role: 'system',
164
- parts: [
165
- {
166
- text: systemPrompt,
167
- },
168
- ],
169
- },
170
- ...((functionDefs?.length ?? 0) > 0
247
+ };
248
+ }
249
+ // Instantiate the model
250
+ return vertex_ai.preview.getGenerativeModel({
251
+ model: modelName,
252
+ generationConfig,
253
+ safetySettings,
254
+ ...(effectiveSystemPrompt
171
255
  ? {
172
- tools: [
173
- {
174
- functionDeclarations: functionDefs,
175
- },
176
- ],
177
- toolConfig: {
178
- functionCallingConfig: {
179
- mode: FunctionCallingMode.ANY,
180
- ...(requiredFunctionName ? { allowedFunctionNames: [requiredFunctionName] } : {}),
181
- },
256
+ systemInstruction: {
257
+ role: 'system', // Role should be 'system'
258
+ parts: [{ text: effectiveSystemPrompt }],
182
259
  },
183
260
  }
184
261
  : {}),
262
+ ...(tools ? { tools } : {}),
263
+ ...(toolConfig ? { toolConfig } : {}),
185
264
  });
186
265
  }
187
266
  catch (error) {
@@ -191,38 +270,65 @@ function getGenModel(systemPrompt, temperature, functionDefs, geminiBlockNone, r
191
270
  throw error;
192
271
  }
193
272
  }
194
- async function recoverFunctionCall(textResponse, functionCalls, functionDef) {
195
- // @ts-expect-error: "object" !== "OBJECT"
196
- const schema = functionDef.parameters;
197
- const result = await getGenModel('Your role is read the text below and if possible, return it in the desired format.', 0.2, undefined, undefined, null, ModelType.DEFAULT).generateContent({
198
- contents: [
199
- {
200
- role: 'user',
201
- parts: [
202
- {
203
- text: textResponse,
204
- },
205
- ],
206
- },
207
- ],
208
- generationConfig: {
209
- responseMimeType: 'application/json',
210
- responseSchema: schema,
211
- },
212
- });
273
+ // Function to attempt recovery of a function call from text response using JSON mode
274
+ async function recoverFunctionCall(textResponse, functionDef) {
275
+ console.log('Attempting to recover function call:', functionDef.name);
213
276
  try {
214
- const text = result.response.candidates?.[0].content.parts[0].text;
215
- if (!text) {
216
- return false;
277
+ // @ts-expect-error: functionDef.parameters might not be typed correctly in SDK
278
+ const schema = { ...functionDef.parameters, type: SchemaType.OBJECT };
279
+ // Use a cheap model for recovery
280
+ const recoveryModel = await getGenModel({
281
+ systemPromptText: 'Your role is read the text below and extract the parameters for the function call based on the provided schema. Output ONLY the JSON object representing the arguments.',
282
+ temperature: 0.1, // Low temperature for deterministic extraction
283
+ functionDefs: [], // No function calling needed for recovery itself
284
+ geminiBlockNone: undefined,
285
+ requiredFunctionName: null,
286
+ modelType: ModelType.CHEAP, // Always use cheap model for recovery
287
+ expectedResponseType: { text: true, functionCall: false, media: false }, // Expect only text
288
+ });
289
+ // Get specific settings for the recovery model
290
+ const recoveryModelName = getServiceConfig('vertex-ai').modelOverrides?.cheap ?? 'gemini-2.0-flash';
291
+ const { outputTokenLimit: recoveryOutputLimit } = getModelSettings('vertex-ai', recoveryModelName);
292
+ const recoveryReq = {
293
+ contents: [
294
+ {
295
+ role: 'user',
296
+ parts: [
297
+ { text: `Function Name: ${functionDef.name}` },
298
+ { text: `Function Description: ${functionDef.description}` },
299
+ { text: `Input Text:\n${textResponse}` },
300
+ ],
301
+ },
302
+ ],
303
+ // generationConfig modification for JSON output
304
+ generationConfig: {
305
+ responseMimeType: 'application/json',
306
+ responseSchema: schema,
307
+ temperature: 0.1,
308
+ maxOutputTokens: recoveryOutputLimit, // Use limit for the recovery model
309
+ },
310
+ };
311
+ const result = await recoveryModel.generateContent(recoveryReq);
312
+ const recoveredText = result.response.candidates?.[0]?.content?.parts?.[0]?.text;
313
+ if (!recoveredText) {
314
+ console.log('Recovery failed: No text content in response.');
315
+ return null;
316
+ }
317
+ try {
318
+ const parsedArgs = JSON.parse(recoveredText);
319
+ const recoveredCall = { name: functionDef.name, args: parsedArgs };
320
+ console.log('Recovery successful.');
321
+ // Apply unescaping if needed
322
+ return enableVertexUnescape ? unescapeFunctionCall(recoveredCall) : recoveredCall;
323
+ }
324
+ catch (parseError) {
325
+ console.log('Recovery failed: Could not parse JSON response.', parseError, 'Response text:', recoveredText);
326
+ return null;
217
327
  }
218
- const parsed = JSON.parse(text);
219
- functionCalls.push(enableVertexUnescape
220
- ? unescapeFunctionCall({ name: functionDef.name, args: parsed })
221
- : { name: functionDef.name, args: parsed });
222
- return true;
223
328
  }
224
- catch {
225
- return false;
329
+ catch (error) {
330
+ console.error('Error during function call recovery:', error);
331
+ return null;
226
332
  }
227
333
  }
228
334
  //# sourceMappingURL=vertex-ai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-ai.js","sourceRoot":"","sources":["../../src/ai-service/vertex-ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vertex-ai.js","sourceRoot":"","sources":["../../src/ai-service/vertex-ai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,QAAQ,EAIR,YAAY,EACZ,kBAAkB,EAElB,mBAAmB,EAMnB,UAAU,GAEX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAOL,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4B,KAAK,UAAU,eAAe,CACpF,MAAoB,EACpB,MAUC,EACD,UAKI,EAAE;IAEN,IAAI,CAAC;QACH,uEAAuE;QACvE,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;QAEzC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/C,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC;QACjE,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAE9G,MAAM,QAAQ,GAAc,MAAM;aAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;aACnE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAW,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAC3C,gBAAgB,EAAE;4BAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;yBAC7D;qBACF,CAAC,CAAC,CACJ,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC7B,UAAU,EAAE;4BACV,QAAQ,EAAE,KAAK,CAAC,SAAS;4BACzB,IAAI,EAAE,KAAK,CAAC,SAAS;yBACtB;qBACF,CAAC,CAAC,CACJ,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACnC,YAAY,EAAE;4BACZ,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;yBACtB;qBACF,CAAC,CAAC,CACJ,CAAC;gBACJ,CAAC;gBACD,yFAAyF;gBACzF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC7B,UAAU,EAAE;4BACV,QAAQ,EAAE,KAAK,CAAC,SAAS;4BACzB,IAAI,EAAE,KAAK,CAAC,SAAS;yBACtB;qBACF,CAAC,CAAC,CACJ,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,GAAG,GAA2B;YAClC,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC;YACtC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,YAAY;YACnF,WAAW;YACX,YAAY;YACZ,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,oBAAoB;YACpB,SAAS;YACT,oBAAoB;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAExD,oBAAoB;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG;gBACZ,WAAW,EAAE,aAAa,CAAC,gBAAgB;gBAC3C,YAAY,EAAE,aAAa,CAAC,oBAAoB;gBAChD,WAAW,EAAE,aAAa,CAAC,eAAe;aAC3C,CAAC;YACF,sBAAsB,CAAC;gBACrB,SAAS,EAAE,WAAW;gBACtB,KAAK;gBACL,iBAAiB,EAAE,QAAQ,GAAG,IAAI,EAAE,iCAAiC;gBACrE,kBAAkB,EAAE,QAAQ,GAAG,IAAI,EAAE,iCAAiC;gBACtE,SAAS;aACV,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU;aAC7C,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACpF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;aAChC,MAAM,CAAC,CAAC,YAAY,EAAoD,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;aAC1F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAA+B,EAAE,CAAC,CAAC;aAChF,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC;QAEvG,iCAAiC;QACjC,MAAM,WAAW,GAAgC,EAAE,CAAC;QAEpD,mDAAmD;QACnD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC7B,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,cAAc;oBACpB,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,iFAAiF;QACjF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC;YAC5D,MAAM,YAAY,GAChB,MAAM,CAAC,QAAQ,CAAC,UAAU;gBACxB,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;iBACxB,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBACxC,IAAI,CAAC,IAAI,CAAC,IAAI,yCAAyC;gBAC1D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC5C,qEAAqE;gBACrE,SAAS,CAAC,YAAY,KAAK,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CACpF,CAAC,CAAC,CAAC;gBACJ,EAAE,CAAC,CAAC,0BAA0B;YAEhC,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC;oBAC9B,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,YAAY;qBACnB,CAAC,CAAC;gBACL,CAAC;gBAED,iHAAiH;gBACjH,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;gBAClF,IAAI,oBAAoB,CAAC,YAAY,IAAI,WAAW,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnF,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;wBAC3E,IAAI,aAAa,EAAE,CAAC;4BAClB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;4BACxC,WAAW,CAAC,IAAI,CAAC;gCACf,IAAI,EAAE,cAAc;gCACpB,YAAY,EAAE,aAAa;6BAC5B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0FAA0F;QAC1F,uFAAuF;QAEvF,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAgBF,kDAAkD;AAClD,KAAK,UAAU,WAAW,CAAC,MAAyB;IAClD,MAAM,EACJ,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,oBAAoB,GACrB,GAAG,MAAM,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,EAAE,oBAAoB,EAAE,yCAAyC,CAAC,CAAC;QAEvF,yDAAyD;QACzD,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAEhF,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACnG,MAAM,cAAc,GAAG,aAAa,EAAE,cAAc,CAAC;QACrD,MAAM,SAAS,GACb,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK;YAC5B,CAAC,CAAC,cAAc,EAAE,KAAK;YACvB,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;gBACjC,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,sCAAsC;gBAClE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,IAAI,gBAAgB,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAEnD,8BAA8B;QAC9B,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEjH,8DAA8D;QAC9D,IAAI,qBAAqB,GAAG,gBAAgB,IAAI,EAAE,CAAC;QACnD,IAAI,sBAAsB,EAAE,MAAM,EAAE,CAAC;YACnC,qBAAqB,IAAI,KAAK,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,CAAC;QAED,uBAAuB;QACvB,MAAM,gBAAgB,GAAqB;YACzC,eAAe,EAAE,gBAAgB,EAAE,2CAA2C;YAC9E,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;QAEF,4BAA4B;QAC5B,MAAM,cAAc,GAAoB;YACtC;gBACE,QAAQ,EAAE,YAAY,CAAC,yBAAyB;gBAChD,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;aACpG;YACD;gBACE,QAAQ,EAAE,YAAY,CAAC,+BAA+B;gBACtD,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;aACpG;YACD;gBACE,QAAQ,EAAE,YAAY,CAAC,+BAA+B;gBACtD,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;aACpG;YACD;gBACE,QAAQ,EAAE,YAAY,CAAC,wBAAwB;gBAC/C,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;aACpG;SACF,CAAC;QAEF,kCAAkC;QAClC,IAAI,KAAK,GAAuB,SAAS,CAAC;QAC1C,IAAI,UAAU,GAA2B,SAAS,CAAC;QAEnD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,YAAY,EAAE,CAAC;YACjE,KAAK,GAAG;gBACN;oBACE,oBAAoB,EAAE,YAAgD;iBACvE;aACF,CAAC;YACF,UAAU,GAAG;gBACX,qBAAqB,EAAE;oBACrB,IAAI,EAAE,mBAAmB,CAAC,GAAG;oBAC7B,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClF;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;YAC9C,UAAU,GAAG;gBACX,qBAAqB,EAAE;oBACrB,IAAI,EAAE,mBAAmB,CAAC,IAAI;iBAC/B;aACF,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,OAAO,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAC1C,KAAK,EAAE,SAAS;YAChB,gBAAgB;YAChB,cAAc;YACd,GAAG,CAAC,qBAAqB;gBACvB,CAAC,CAAC;oBACE,iBAAiB,EAAE;wBACjB,IAAI,EAAE,QAAQ,EAAE,0BAA0B;wBAC1C,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;qBACzC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,mBAAmB,CAAC,YAAoB,EAAE,WAAwB;IAC/E,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,+EAA+E;QAC/E,MAAM,MAAM,GAAW,EAAE,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;QAE9E,iCAAiC;QACjC,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC;YACtC,gBAAgB,EACd,yKAAyK;YAC3K,WAAW,EAAE,GAAG,EAAE,+CAA+C;YACjE,YAAY,EAAE,EAAE,EAAE,iDAAiD;YACnE,eAAe,EAAE,SAAS;YAC1B,oBAAoB,EAAE,IAAI;YAC1B,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,sCAAsC;YAClE,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,mBAAmB;SAC7F,CAAC,CAAC;QAEH,+CAA+C;QAC/C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,KAAK,IAAI,kBAAkB,CAAC;QACpG,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAEnG,MAAM,WAAW,GAA2B;YAC1C,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,kBAAkB,WAAW,CAAC,IAAI,EAAE,EAAE;wBAC9C,EAAE,IAAI,EAAE,yBAAyB,WAAW,CAAC,WAAW,EAAE,EAAE;wBAC5D,EAAE,IAAI,EAAE,gBAAgB,YAAY,EAAE,EAAE;qBACzC;iBACF;aACF;YACD,gDAAgD;YAChD,gBAAgB,EAAE;gBAChB,gBAAgB,EAAE,kBAAkB;gBACpC,cAAc,EAAE,MAAM;gBACtB,WAAW,EAAE,GAAG;gBAChB,eAAe,EAAE,mBAAmB,EAAE,mCAAmC;aAC1E;SACF,CAAC;QAEF,MAAM,MAAM,GAAgC,MAAM,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE7F,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACjF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,aAAa,GAAiB,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAEjF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,6BAA6B;YAC7B,OAAO,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QACpF,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAC5G,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -25,7 +25,7 @@ const cliOptions = [
25
25
  },
26
26
  {
27
27
  name: '--ai-service=<service>',
28
- description: 'Specify the AI service to use for code generation. Available options include vertex-ai, ai-studio, openai, anthropic, vertex-ai-claude, and any additional services loaded from plugins.',
28
+ description: 'Specify the AI service to use for code generation. Available options include vertex-ai, ai-studio, openai, anthropic, vertex-ai-claude, local-llm, and any additional services loaded from plugins.',
29
29
  },
30
30
  {
31
31
  name: '--explicit-prompt=<prompt>',
@@ -1 +1 @@
1
- {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../../src/cli/cli-options.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,GAAgB;IAC9B;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,wFAAwF;KACtG;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,2FAA2F;KACzG;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,0LAA0L;KAC7L;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+DAA+D;KAC7E;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,yEAAyE;KACvF;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,sFAAsF;KACpG;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,gEAAgE;KAC9E;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,8KAA8K;KACjL;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,wGAAwG;KAC3G;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2EAA2E;KACzF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,oJAAoJ;KACvJ;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,+EAA+E;KAC7F;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sCAAsC;KACpD;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,wIAAwI;KAC3I;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,yDAAyD;KACvE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sEAAsE;KACpF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE1B,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC;AACvH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../../src/cli/cli-options.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,GAAgB;IAC9B;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,0DAA0D;KACxE;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,wFAAwF;KACtG;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,2FAA2F;KACzG;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,qMAAqM;KACxM;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+DAA+D;KAC7E;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,yEAAyE;KACvF;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,sFAAsF;KACpG;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,oFAAoF;KAClG;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,gEAAgE;KAC9E;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,8KAA8K;KACjL;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,wGAAwG;KAC3G;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2EAA2E;KACzF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EACT,oJAAoJ;KACvJ;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,+EAA+E;KAC7F;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sCAAsC;KACpD;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,wIAAwI;KAC3I;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,sEAAsE;KACpF;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,yDAAyD;KACvE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sEAAsE;KACpF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAE1B,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC;AACvH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -75,7 +75,7 @@ export function validateCliParams() {
75
75
  const aiServiceParam = providedParameters.find((param) => param.startsWith('--ai-service='));
76
76
  if (aiServiceParam) {
77
77
  const aiServiceValue = aiServiceParam.split('=')[1];
78
- if (!['vertex-ai', 'openai', 'anthropic', 'ai-studio', 'vertex-ai-claude'].includes(aiServiceValue) &&
78
+ if (!['vertex-ai', 'openai', 'anthropic', 'ai-studio', 'vertex-ai-claude', 'local-llm'].includes(aiServiceValue) &&
79
79
  !aiServiceValue.startsWith('plugin:')) {
80
80
  throw new Error(`Invalid --ai-service value "${aiServiceValue}"`);
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate-cli-params.js","sourceRoot":"","sources":["../../src/cli/validate-cli-params.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-cli-params.js","sourceRoot":"","sources":["../../src/cli/validate-cli-params.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const GENAICODE_HELP_DOCUMENT = "# GenAIcode Help Documentation\n\n## Overview\n\nGenAIcode is an AI-powered code generation and management tool designed to streamline software development. It leverages various AI services (Vertex AI, AI Studio, OpenAI, Anthropic) to generate, modify, and analyze code. The tool supports both interactive CLI and web UI modes, offering features like code generation, image processing, and context optimization.\n\n## Quick Start\n\n1. Installation:\n ```bash\n npm install -g genaicode\n ```\n\n2. Basic Usage:\n ```bash\n genaicode \"Your prompt here\"\n ```\n\n3. UI Mode:\n ```bash\n genaicode --ui\n ```\n\n## Core Features\n\n### AI Services Integration\n\n- **Supported Services**:\n - Vertex AI (with Gemini Pro)\n - OpenAI (GPT-4)\n - Anthropic (Claude)\n - AI Studio\n - Custom Plugin Services\n\n- **Service Auto-detection**: Automatically detects available AI services based on environment configuration\n- **Fallback Mechanism**: Handles service failures with automatic fallback options\n- **Model Configuration**: Supports per-service model configuration via .genaicoderc\n\n### Interaction Modes\n\n1. **UI Mode**:\n - Web-based interface\n - Real-time updates\n - Visual diff viewing\n - Progress tracking\n - File operation preview\n\n2. **Interactive CLI**:\n - Command-line interface\n - Step-by-step guidance\n - Task file support\n - Operation control\n\n### File Operations\n\n- Create/Update/Delete files\n- Move files\n- Create directories\n- Patch files\n- Context-aware operations\n- Safety checks and validation\n\n### Image Processing\n\n- **Generation**: Create images using AI services\n- **Analysis**: Vision model support for image context\n- **Manipulation**:\n - Background removal\n - Image splitting\n - Resizing\n - Format conversion\n\n### Context Management\n\n- Smart context optimization\n- History tracking and summarization\n- Token usage optimization\n- Conversation continuation\n- Cache management\n\n## Configuration\n\n### .genaicoderc Options\n\n```json\n{\n \"rootDir\": \".\",\n \"ignorePaths\": [\"node_modules\", \"dist\"],\n \"lintCommand\": \"npm run lint\",\n \"importantContext\": {\n \"systemPrompt\": [],\n \"files\": []\n },\n \"plugins\": [],\n \"modelOverrides\": {\n \"aiStudio\": {\n \"default\": \"gemini-pro\",\n \"cheap\": \"gemini-pro-vision\"\n }\n }\n}\n```\n\n### CLI Options\n\n- `--verbose-prompt`: Enable detailed prompt logging\n- `--dry-run`: Simulate operations without making changes\n- `--temperature`: Control AI response randomness\n- `--vision`: Enable image analysis\n- `--imagen`: Enable image generation\n- `--cheap`: Use cost-optimized models\n- `--ui`: Launch web interface\n- `--ui-port`: Specify UI port\n- `--content-mask`: Filter context\n- `--disable-cache`: Disable caching\n- `--disable-history`: Disable history tracking\n\n## Plugin System\n\n### Types of Plugins\n\n1. **AI Service Plugins**:\n - Custom AI service integration\n - Model configuration\n - Response handling\n\n2. **Action Handlers**:\n - Custom operations\n - User interaction\n - File processing\n\n3. **Operation Extensions**:\n - File operations\n - Image processing\n - Analysis tools\n\n### Creating Plugins\n\nBasic plugin structure:\n```typescript\nexport default {\n name: \"my-plugin\",\n aiServices?: {\n [key: string]: {\n generateContent: GenerateContentFunction;\n serviceConfig: ServiceConfig;\n }\n },\n operations?: {\n [key: string]: Operation;\n },\n actionHandlers?: {\n [key: string]: {\n handler: ActionHandler;\n description: string;\n }\n }\n}\n```\n\n## Best Practices\n\n1. **Code Generation**:\n - Provide clear, specific prompts\n - Review generated code before applying\n - Use appropriate temperature settings\n - Leverage context optimization\n\n2. **File Management**:\n - Use absolute paths\n - Verify file operations\n - Handle dependencies properly\n - Maintain consistent structure\n\n3. **Context Optimization**:\n - Keep relevant files in context\n - Remove unnecessary content\n - Use content masking when needed\n - Monitor token usage\n\n4. **Error Handling**:\n - Check operation results\n - Handle service failures\n - Validate generated code\n - Use appropriate fallback options\n\n## Troubleshooting\n\n### Common Issues\n\n1. **AI Service Connection**:\n - Verify API keys\n - Check service availability\n - Confirm network connection\n - Review rate limits\n\n2. **File Operations**:\n - Check file permissions\n - Verify paths\n - Review operation logs\n - Confirm file existence\n\n3. **Context Problems**:\n - Monitor token usage\n - Review context optimization\n - Check file inclusion\n - Verify content masks\n\n4. **Plugin Issues**:\n - Validate plugin structure\n - Check compatibility\n - Review error logs\n - Update dependencies\n\n### Getting Help\n\n- Use the `--help` command\n- Check documentation\n- Review error messages\n- Contact support\n\n## Advanced Topics\n\n### Custom Actions\n\nCreating custom actions:\n```typescript\nexport const myCustomAction: ActionHandler = async (props) => {\n // Implementation\n};\n```\n\n### Hook System\n\nAvailable hooks:\n- Pre/post operation\n- Generate content\n- Planning\n- Context optimization\n\n### Project Profiles\n\nSupported frameworks:\n- JavaScript/TypeScript\n- Python\n- Java\n- Go\n- React\n\n## Security Considerations\n\n1. **API Keys**:\n - Secure storage\n - Regular rotation\n - Access control\n - Environment variables\n\n2. **File Operations**:\n - Permission checks\n - Path validation\n - Content verification\n - Operation logging\n\n3. **Plugin Security**:\n - Source verification\n - Dependency scanning\n - Permission management\n - Code review\n\n## Updates and Maintenance\n\n- Regular updates\n- Security patches\n- Feature additions\n- Bug fixes\n- Documentation updates\n\n## Support\n\nFor additional help:\n- GitHub Issues\n- Documentation\n- Community Forums\n- Support Channels\n";
1
+ export declare const GENAICODE_HELP_DOCUMENT = "# GenAIcode Help Documentation\n\n## Overview\n\nGenAIcode is an AI-powered code generation and management tool designed to streamline software development. It leverages various AI services (Vertex AI, AI Studio, OpenAI, Anthropic) to generate, modify, and analyze code. The tool supports both interactive CLI and web UI modes, offering features like code generation, image processing, and context optimization.\n\n## Quick Start\n\n1. Installation:\n ```bash\n npm install -g genaicode\n ```\n\n2. Basic Usage:\n ```bash\n genaicode \"Your prompt here\"\n ```\n\n3. UI Mode:\n ```bash\n genaicode --ui\n ```\n\n## Core Features\n\n### AI Services Integration\n\n- **Supported Services**:\n - Vertex AI (with Gemini Pro)\n - OpenAI (GPT-4)\n - Anthropic (Claude)\n - AI Studio\n - Custom Plugin Services\n\n- **Service Auto-detection**: Automatically detects available AI services based on environment configuration\n- **Fallback Mechanism**: Handles service failures with automatic fallback options\n- **Model Configuration**: Supports per-service model configuration via .genaicoderc\n\n### Interaction Modes\n\n1. **UI Mode**:\n - Web-based interface\n - Real-time updates\n - Visual diff viewing\n - Progress tracking\n - File operation preview\n\n2. **Interactive CLI**:\n - Command-line interface\n - Step-by-step guidance\n - Task file support\n - Operation control\n\n### File Operations\n\n- Create/Update/Delete files\n- Move files\n- Create directories\n- Patch files\n- Context-aware operations\n- Safety checks and validation\n\n### Image Processing\n\n- **Generation**: Create images using AI services\n- **Analysis**: Vision model support for image context\n- **Manipulation**:\n - Background removal\n - Image splitting\n - Resizing\n - Format conversion\n\n### Context Management\n\n- Smart context optimization\n- History tracking and summarization\n- Token usage optimization\n- Conversation continuation\n- Cache management\n\n## Configuration\n\n### .genaicoderc Options\n\n```json\n{\n \"rootDir\": \".\",\n \"ignorePaths\": [\"node_modules\", \"dist\"],\n \"lintCommand\": \"npm run lint\",\n \"importantContext\": {\n \"systemPrompt\": [],\n \"files\": []\n },\n \"plugins\": [],\n \"modelOverrides\": {\n \"aiStudio\": {\n \"default\": \"gemini-pro\",\n \"cheap\": \"gemini-pro-vision\"\n }\n }\n}\n```\n\n### CLI Options\n\n- `--verbose-prompt`: Enable detailed prompt logging\n- `--dry-run`: Simulate operations without making changes\n- `--temperature`: Control AI response randomness\n- `--vision`: Enable image analysis\n- `--imagen`: Enable image generation\n- `--cheap`: Use cost-optimized models\n- `--ui`: Launch web interface\n- `--ui-port`: Specify UI port\n- `--content-mask`: Filter context\n- `--disable-cache`: Disable caching\n- `--disable-history`: Disable history tracking\n\n## Plugin System\n\n### Types of Plugins\n\n1. **AI Service Plugins**:\n - Custom AI service integration\n - Model configuration\n - Response handling\n\n2. **Action Handlers**:\n - Custom operations\n - User interaction\n - File processing\n - Git context retrieval (`requestGitContext` for commits, file changes, blame)\n\n3. **Operation Extensions**:\n - File operations\n - Image processing\n - Analysis tools\n\n### Creating Plugins\n\nBasic plugin structure:\n```typescript\nexport default {\n name: \"my-plugin\",\n aiServices?: {\n [key: string]: {\n generateContent: GenerateContentFunction;\n serviceConfig: ServiceConfig;\n }\n },\n operations?: {\n [key: string]: Operation;\n },\n actionHandlers?: {\n [key: string]: {\n handler: ActionHandler;\n description: string;\n }\n }\n}\n```\n\n## Best Practices\n\n1. **Code Generation**:\n - Provide clear, specific prompts\n - Review generated code before applying\n - Use appropriate temperature settings\n - Leverage context optimization\n\n2. **File Management**:\n - Use absolute paths\n - Verify file operations\n - Handle dependencies properly\n - Maintain consistent structure\n\n3. **Context Optimization**:\n - Keep relevant files in context\n - Remove unnecessary content\n - Use content masking when needed\n - Monitor token usage\n\n4. **Error Handling**:\n - Check operation results\n - Handle service failures\n - Validate generated code\n - Use appropriate fallback options\n\n## Troubleshooting\n\n### Common Issues\n\n1. **AI Service Connection**:\n - Verify API keys\n - Check service availability\n - Confirm network connection\n - Review rate limits\n\n2. **File Operations**:\n - Check file permissions\n - Verify paths\n - Review operation logs\n - Confirm file existence\n\n3. **Context Problems**:\n - Monitor token usage\n - Review context optimization\n - Check file inclusion\n - Verify content masks\n\n4. **Plugin Issues**:\n - Validate plugin structure\n - Check compatibility\n - Review error logs\n - Update dependencies\n\n### Getting Help\n\n- Use the `--help` command\n- Check documentation\n- Review error messages\n- Contact support\n\n## Advanced Topics\n\n### Custom Actions\n\nCreating custom actions:\n```typescript\nexport const myCustomAction: ActionHandler = async (props) => {\n // Implementation\n};\n```\n\n### Hook System\n\nAvailable hooks:\n- Pre/post operation\n- Generate content\n- Planning\n- Context optimization\n\n### Project Profiles\n\nSupported frameworks:\n- JavaScript/TypeScript\n- Python\n- Java\n- Go\n- React\n\n## Security Considerations\n\n1. **API Keys**:\n - Secure storage\n - Regular rotation\n - Access control\n - Environment variables\n\n2. **File Operations**:\n - Permission checks\n - Path validation\n - Content verification\n - Operation logging\n\n3. **Plugin Security**:\n - Source verification\n - Dependency scanning\n - Permission management\n - Code review\n\n## Updates and Maintenance\n\n- Regular updates\n- Security patches\n- Feature additions\n- Bug fixes\n- Documentation updates\n\n## Support\n\nFor additional help:\n- GitHub Issues\n- Documentation\n- Community Forums\n- Support Channels\n";
@@ -128,6 +128,7 @@ GenAIcode is an AI-powered code generation and management tool designed to strea
128
128
  - Custom operations
129
129
  - User interaction
130
130
  - File processing
131
+ - Git context retrieval (\`requestGitContext\` for commits, file changes, blame)
131
132
 
132
133
  3. **Operation Extensions**:
133
134
  - File operations