genaicode 0.2.0 → 0.3.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 (174) hide show
  1. package/README.md +2 -0
  2. package/bin/genaicode-dev.js +2 -1
  3. package/bin/genaicode.cjs +4 -4
  4. package/dist/ai-service/ai-studio.js +8 -2
  5. package/dist/ai-service/ai-studio.js.map +1 -1
  6. package/dist/ai-service/anthropic.js +21 -8
  7. package/dist/ai-service/anthropic.js.map +1 -1
  8. package/dist/ai-service/chat-gpt.js +21 -10
  9. package/dist/ai-service/chat-gpt.js.map +1 -1
  10. package/dist/ai-service/common.d.ts +9 -5
  11. package/dist/ai-service/common.js +6 -4
  12. package/dist/ai-service/common.js.map +1 -1
  13. package/dist/ai-service/common.test.js +3 -3
  14. package/dist/ai-service/common.test.js.map +1 -1
  15. package/dist/ai-service/vertex-ai-claude.js +5 -4
  16. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  17. package/dist/ai-service/vertex-ai.js +11 -2
  18. package/dist/ai-service/vertex-ai.js.map +1 -1
  19. package/dist/cli/cli-params.d.ts +2 -0
  20. package/dist/cli/cli-params.js +14 -2
  21. package/dist/cli/cli-params.js.map +1 -1
  22. package/dist/cli/validate-cli-params.js +3 -1
  23. package/dist/cli/validate-cli-params.js.map +1 -1
  24. package/dist/files/find-files.d.ts +1 -0
  25. package/dist/files/find-files.js +7 -2
  26. package/dist/files/find-files.js.map +1 -1
  27. package/dist/files/read-files.d.ts +2 -2
  28. package/dist/files/read-files.js +2 -2
  29. package/dist/files/read-files.js.map +1 -1
  30. package/dist/files/read-files.test.js +1 -1
  31. package/dist/files/read-files.test.js.map +1 -1
  32. package/dist/main/codegen-types.d.ts +13 -0
  33. package/dist/main/codegen.d.ts +2 -2
  34. package/dist/main/codegen.js +86 -52
  35. package/dist/main/codegen.js.map +1 -1
  36. package/dist/main/codegen.test.js +7 -4
  37. package/dist/main/codegen.test.js.map +1 -1
  38. package/dist/main/common/content-bus-types.d.ts +16 -0
  39. package/dist/main/common/content-bus-types.js +7 -0
  40. package/dist/main/common/content-bus-types.js.map +1 -0
  41. package/dist/main/common/content-bus.d.ts +9 -0
  42. package/dist/main/common/content-bus.js +25 -0
  43. package/dist/main/common/content-bus.js.map +1 -0
  44. package/dist/main/common/cost-collector.d.ts +15 -0
  45. package/dist/main/common/cost-collector.js +24 -0
  46. package/dist/main/common/cost-collector.js.map +1 -0
  47. package/dist/main/common/user-actions.d.ts +7 -0
  48. package/dist/main/common/user-actions.js +15 -0
  49. package/dist/main/common/user-actions.js.map +1 -0
  50. package/dist/main/config-lib.d.ts +19 -0
  51. package/dist/main/config-lib.js.map +1 -1
  52. package/dist/main/config.d.ts +2 -1
  53. package/dist/main/config.js +3 -0
  54. package/dist/main/config.js.map +1 -1
  55. package/dist/main/interactive/codegen-interactive.js +8 -2
  56. package/dist/main/interactive/codegen-interactive.js.map +1 -1
  57. package/dist/main/interactive/codegen-worker.d.ts +1 -1
  58. package/dist/main/interactive/codegen-worker.js +5 -2
  59. package/dist/main/interactive/codegen-worker.js.map +1 -1
  60. package/dist/main/interactive/task-file.js +9 -2
  61. package/dist/main/interactive/task-file.js.map +1 -1
  62. package/dist/main/interactive/user-action-handlers.d.ts +1 -0
  63. package/dist/main/interactive/user-action-handlers.js +13 -0
  64. package/dist/main/interactive/user-action-handlers.js.map +1 -0
  65. package/dist/main/interactive/user-interrupt.js +1 -1
  66. package/dist/main/interactive/user-interrupt.js.map +1 -1
  67. package/dist/main/ui/backend/api-utils.d.ts +2 -0
  68. package/dist/main/ui/backend/api-utils.js +18 -0
  69. package/dist/main/ui/backend/api-utils.js.map +1 -0
  70. package/dist/main/ui/backend/api.d.ts +2 -0
  71. package/dist/main/ui/backend/api.js +186 -0
  72. package/dist/main/ui/backend/api.js.map +1 -0
  73. package/dist/main/ui/backend/server.d.ts +2 -0
  74. package/dist/main/ui/backend/server.js +81 -0
  75. package/dist/main/ui/backend/server.js.map +1 -0
  76. package/dist/main/ui/backend/service.d.ts +47 -0
  77. package/dist/main/ui/backend/service.js +161 -0
  78. package/dist/main/ui/backend/service.js.map +1 -0
  79. package/dist/main/ui/codegen-ui.d.ts +2 -0
  80. package/dist/main/ui/codegen-ui.js +13 -0
  81. package/dist/main/ui/codegen-ui.js.map +1 -0
  82. package/dist/main/ui/frontend/assets/index-D9wcaSJU.js +598 -0
  83. package/dist/main/ui/frontend/assets/index-S_ocA1xG.css +1 -0
  84. package/dist/main/ui/frontend/assets/logo-BGHkG1-J.png +0 -0
  85. package/dist/main/ui/frontend/assets/logo-dark-KAsU1C78.png +0 -0
  86. package/dist/main/ui/frontend/assets/press-start-2p-cyrillic-400-normal-oElOGqNf.woff2 +0 -0
  87. package/dist/main/ui/frontend/assets/press-start-2p-cyrillic-ext-400-normal-COIQET2s.woff2 +0 -0
  88. package/dist/main/ui/frontend/assets/press-start-2p-greek-400-normal-DUIT0YPZ.woff2 +0 -0
  89. package/dist/main/ui/frontend/assets/press-start-2p-latin-400-normal-BKfmdmKK.woff +0 -0
  90. package/dist/main/ui/frontend/assets/press-start-2p-latin-400-normal-xj9lRvVs.woff2 +0 -0
  91. package/dist/main/ui/frontend/assets/press-start-2p-latin-ext-400-normal-B18ub5-k.woff +0 -0
  92. package/dist/main/ui/frontend/assets/press-start-2p-latin-ext-400-normal-DDIa4im3.woff2 +0 -0
  93. package/dist/main/ui/frontend/index.html +16 -0
  94. package/dist/main/ui/user-action-handlers.d.ts +2 -0
  95. package/dist/main/ui/user-action-handlers.js +9 -0
  96. package/dist/main/ui/user-action-handlers.js.map +1 -0
  97. package/dist/prompt/ai-service-fallback.d.ts +3 -0
  98. package/dist/prompt/ai-service-fallback.js +79 -0
  99. package/dist/prompt/ai-service-fallback.js.map +1 -0
  100. package/dist/prompt/function-calling.js +3 -1
  101. package/dist/prompt/function-calling.js.map +1 -1
  102. package/dist/prompt/function-defs/ask-question.d.ts +16 -13
  103. package/dist/prompt/function-defs/ask-question.js +16 -14
  104. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  105. package/dist/prompt/function-defs/codegen-summary.d.ts +23 -21
  106. package/dist/prompt/function-defs/codegen-summary.js +28 -28
  107. package/dist/prompt/function-defs/codegen-summary.js.map +1 -1
  108. package/dist/prompt/function-defs/create-file.d.ts +4 -4
  109. package/dist/prompt/function-defs/create-file.js +4 -4
  110. package/dist/prompt/function-defs/create-file.js.map +1 -1
  111. package/dist/prompt/function-defs/delete-file.d.ts +4 -4
  112. package/dist/prompt/function-defs/delete-file.js +4 -4
  113. package/dist/prompt/function-defs/delete-file.js.map +1 -1
  114. package/dist/prompt/function-defs/generate-image.d.ts +4 -4
  115. package/dist/prompt/function-defs/generate-image.js +4 -4
  116. package/dist/prompt/function-defs/generate-image.js.map +1 -1
  117. package/dist/prompt/function-defs/get-source-code.d.ts +1 -1
  118. package/dist/prompt/function-defs/get-source-code.js +2 -1
  119. package/dist/prompt/function-defs/get-source-code.js.map +1 -1
  120. package/dist/prompt/function-defs/move-file.d.ts +4 -4
  121. package/dist/prompt/function-defs/move-file.js +4 -4
  122. package/dist/prompt/function-defs/move-file.js.map +1 -1
  123. package/dist/prompt/function-defs/optimize-context.d.ts +41 -0
  124. package/dist/prompt/function-defs/optimize-context.js +42 -0
  125. package/dist/prompt/function-defs/optimize-context.js.map +1 -0
  126. package/dist/prompt/function-defs/patch-file.d.ts +4 -4
  127. package/dist/prompt/function-defs/patch-file.js +4 -4
  128. package/dist/prompt/function-defs/patch-file.js.map +1 -1
  129. package/dist/prompt/function-defs/update-file.d.ts +4 -4
  130. package/dist/prompt/function-defs/update-file.js +4 -4
  131. package/dist/prompt/function-defs/update-file.js.map +1 -1
  132. package/dist/prompt/limits.d.ts +3 -3
  133. package/dist/prompt/limits.js +10 -8
  134. package/dist/prompt/limits.js.map +1 -1
  135. package/dist/prompt/limits.test.js +6 -6
  136. package/dist/prompt/limits.test.js.map +1 -1
  137. package/dist/prompt/prompt-codegen.js +38 -23
  138. package/dist/prompt/prompt-codegen.js.map +1 -1
  139. package/dist/prompt/prompt-codegen.test.js +2 -2
  140. package/dist/prompt/prompt-codegen.test.js.map +1 -1
  141. package/dist/prompt/prompt-service-ask-question.test.js +12 -5
  142. package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
  143. package/dist/prompt/prompt-service.d.ts +3 -9
  144. package/dist/prompt/prompt-service.js +37 -12
  145. package/dist/prompt/prompt-service.js.map +1 -1
  146. package/dist/prompt/prompt-service.test.js +40 -25
  147. package/dist/prompt/prompt-service.test.js.map +1 -1
  148. package/dist/prompt/steps/step-ask-question.d.ts +1 -1
  149. package/dist/prompt/steps/step-ask-question.js +35 -20
  150. package/dist/prompt/steps/step-ask-question.js.map +1 -1
  151. package/dist/prompt/steps/step-context-optimization.d.ts +6 -0
  152. package/dist/prompt/steps/step-context-optimization.js +146 -0
  153. package/dist/prompt/steps/step-context-optimization.js.map +1 -0
  154. package/dist/prompt/systemprompt.d.ts +1 -1
  155. package/dist/prompt/systemprompt.js +82 -32
  156. package/dist/prompt/systemprompt.js.map +1 -1
  157. package/dist/prompt/systemprompt.test.js +5 -8
  158. package/dist/prompt/systemprompt.test.js.map +1 -1
  159. package/dist/prompt/token-estimator.d.ts +8 -0
  160. package/dist/prompt/token-estimator.js +31 -0
  161. package/dist/prompt/token-estimator.js.map +1 -0
  162. package/package.json +24 -4
  163. package/dist/main/codegen-interactive-utils.d.ts +0 -8
  164. package/dist/main/codegen-interactive-utils.js +0 -148
  165. package/dist/main/codegen-interactive-utils.js.map +0 -1
  166. package/dist/main/codegen-interactive.d.ts +0 -2
  167. package/dist/main/codegen-interactive.js +0 -68
  168. package/dist/main/codegen-interactive.js.map +0 -1
  169. package/dist/main/interactive/worker-script.d.ts +0 -1
  170. package/dist/main/interactive/worker-script.js +0 -24
  171. package/dist/main/interactive/worker-script.js.map +0 -1
  172. package/dist/main/interactive/worker.d.ts +0 -2
  173. package/dist/main/interactive/worker.js +0 -55
  174. package/dist/main/interactive/worker.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-service.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-service.test.js","sourceRoot":"","sources":["../../src/prompt/prompt-service.test.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ import { FunctionCall, FunctionDef, PromptItem } from '../../ai-service/common.j
2
2
  import { StepResult } from './steps-types.js';
3
3
  import { CodegenOptions } from '../../main/codegen-types.js';
4
4
  export declare function executeStepAskQuestion(generateContentFn: (prompt: PromptItem[], functionDefs: FunctionDef[], requiredFunctionName: string, temperature: number, cheap: boolean, options: CodegenOptions) => Promise<FunctionCall[]>, prompt: PromptItem[], functionDefs: FunctionDef[], temperature: number, cheap: boolean, messages: {
5
- contextSourceCode: (paths: string[]) => string;
5
+ contextSourceCode: (paths: string[], pathsOnly: boolean) => string;
6
6
  }, options: CodegenOptions): Promise<StepResult>;
@@ -1,5 +1,7 @@
1
- import { input, confirm } from '@inquirer/prompts';
2
1
  import { StepResult } from './steps-types.js';
2
+ import { askUserForConfirmation, askUserForInput } from '../../main/common/user-actions.js';
3
+ import { putAssistantMessage, putSystemMessage, putUserMessage } from '../../main/common/content-bus.js';
4
+ import { abortController } from '../../main/interactive/codegen-worker.js';
3
5
  export async function executeStepAskQuestion(generateContentFn, prompt, functionDefs, temperature, cheap, messages, options) {
4
6
  console.log('Allowing the assistant to ask a question...');
5
7
  const questionAsked = false;
@@ -8,36 +10,32 @@ export async function executeStepAskQuestion(generateContentFn, prompt, function
8
10
  const askQuestionCall = askQuestionResult.find((call) => call.name === 'askQuestion');
9
11
  if (askQuestionCall) {
10
12
  console.log('Assistant asks:', askQuestionCall.args);
13
+ if (askQuestionCall.args?.content) {
14
+ putAssistantMessage(askQuestionCall.args?.content, askQuestionCall.args);
15
+ }
11
16
  if (askQuestionCall.args?.stopCodegen) {
12
- console.log('Assistant requested to stop code generation. Exiting...');
17
+ putSystemMessage('Assistant requested to stop code generation. Exiting...');
13
18
  return StepResult.BREAK;
14
19
  }
15
20
  else if (!askQuestionCall.args?.shouldPrompt) {
16
- console.log('Proceeding with code generation.');
21
+ putSystemMessage('Proceeding with code generation.');
17
22
  break;
18
23
  }
19
24
  const fileContentRequested = (askQuestionCall.args?.requestFilesContent?.length ?? 0) > 0;
20
25
  const permissionsRequested = Object.entries(askQuestionCall.args?.requestPermissions ?? {}).filter(([, enabled]) => enabled).length > 0;
21
26
  const userAnswer = askQuestionCall.args?.shouldPrompt
22
27
  ? fileContentRequested
23
- ? (await confirm({
24
- message: 'The assistant is requesting file contents. Do you want to provide them?',
25
- default: true,
26
- }))
28
+ ? (await askUserForConfirmation('The assistant is requesting file contents. Do you want to provide them?', true))
27
29
  ? 'Providing requested files content.'
28
30
  : 'Request for file contents denied.'
29
31
  : permissionsRequested
30
- ? (await confirm({
31
- message: 'The assistant is requesting additional permissions. Do you want to grant them?',
32
- default: false,
33
- }))
32
+ ? (await askUserForConfirmation('The assistant is requesting additional permissions. Do you want to grant them?', false))
34
33
  ? 'Permissions granted.'
35
34
  : 'Permission request denied.'
36
- : await input({ message: 'Your answer' })
35
+ : await askUserForInput('Your answer', askQuestionCall.args?.content)
37
36
  : "Let's proceed with code generation.";
38
- if (permissionsRequested &&
39
- askQuestionCall.args?.requestPermissions &&
40
- userAnswer === 'Permission request denied.') {
37
+ putUserMessage(userAnswer);
38
+ if (permissionsRequested && askQuestionCall.args?.requestPermissions && userAnswer === 'Permissions granted.') {
41
39
  if (askQuestionCall.args?.requestPermissions.enableImagen) {
42
40
  options.imagen = options.aiService === 'chat-gpt' ? 'dall-e' : 'vertex-ai';
43
41
  }
@@ -57,20 +55,37 @@ export async function executeStepAskQuestion(generateContentFn, prompt, function
57
55
  options.allowFileMove = true;
58
56
  }
59
57
  }
60
- prompt.push({ type: 'assistant', functionCalls: [askQuestionCall] }, {
58
+ const assistantItem = { type: 'assistant', functionCalls: [askQuestionCall] };
59
+ const userItem = {
61
60
  type: 'user',
62
61
  text: userAnswer,
63
62
  functionResponses: [
64
63
  {
65
64
  name: 'askQuestion',
66
65
  call_id: askQuestionCall.id,
67
- content: fileContentRequested && userAnswer === 'Providing requested files content.'
68
- ? messages.contextSourceCode(askQuestionCall.args.requestFilesContent)
69
- : undefined,
66
+ content: undefined,
70
67
  },
71
68
  ],
72
- });
69
+ };
70
+ prompt.push(assistantItem, userItem);
71
+ const fileContentProvided = fileContentRequested && userAnswer === 'Providing requested files content.';
72
+ if (fileContentProvided) {
73
+ assistantItem.functionCalls.push({
74
+ name: 'getSourceCode',
75
+ args: { filePaths: askQuestionCall.args.requestFilesContent },
76
+ id: askQuestionCall.id + '_src',
77
+ });
78
+ userItem.functionResponses.push({
79
+ name: 'getSourceCode',
80
+ content: messages.contextSourceCode(askQuestionCall.args.requestFilesContent, true),
81
+ call_id: askQuestionCall.id + '_src',
82
+ });
83
+ console.log('File content provided.');
84
+ }
73
85
  console.log('The question was answered', userAnswer);
86
+ if (abortController?.signal.aborted) {
87
+ return StepResult.BREAK;
88
+ }
74
89
  }
75
90
  else {
76
91
  console.log('Assistant did not ask a question. Proceeding with code generation.');
@@ -1 +1 @@
1
- {"version":3,"file":"step-ask-question.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-ask-question.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-ask-question.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-ask-question.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { GenerateContentFunction, PromptItem } from '../../ai-service/common.js';
2
+ import { CodegenOptions } from '../../main/codegen-types.js';
3
+ import { StepResult } from './steps-types.js';
4
+ export declare function executeStepContextOptimization(generateContentFn: GenerateContentFunction, prompt: PromptItem[], sourceCode: Record<string, {
5
+ content: string | null;
6
+ }>, options: CodegenOptions): Promise<StepResult>;
@@ -0,0 +1,146 @@
1
+ import { putSystemMessage } from '../../main/common/content-bus.js';
2
+ import { getSourceCode } from '../../files/read-files.js';
3
+ import { functionDefs } from '../function-calling.js';
4
+ import { StepResult } from './steps-types.js';
5
+ import { estimateTokenCount } from '../token-estimator.js';
6
+ const OPTIMIZATION_PROMPT = `You're correct, we need to optimize the context for code generation. Please perform the following tasks and respond by calling the \`optimizeContext\` function with the appropriate arguments:
7
+
8
+ 1. **Summarization**:
9
+ - For each file listed below, provide a **brief one-sentence summary** of its content.
10
+ - The summary should accurately reflect the main purpose or functionality of the file.
11
+ - **Use only the content provided**; do not infer or assume additional information.
12
+
13
+ 2. **Relevance Rating**:
14
+ - Rate the **relevance** of each file to the user's prompt on a scale from **0 to 1**, using the following guidelines:
15
+ - **0.0 – 0.2 (Not Relevant)**: The file has no apparent connection to the user's prompt.
16
+ - **0.3 – 0.5 (Somewhat Relevant)**: The file has minor or indirect relevance to the prompt.
17
+ - **0.6 – 0.8 (Moderately Relevant)**: The file is related and could contribute to addressing the prompt.
18
+ - **0.9 – 1.0 (Highly Relevant)**: The file is directly related and is important for addressing the prompt.
19
+ - **Evaluation Criteria**:
20
+ - **Keyword Matching**: Does the file contain keywords or topics mentioned in the user's prompt?
21
+ - **Functional Alignment**: Does the file implement features or functionalities requested by the user?
22
+ - **Dependency**: Is the file a dependency of other relevant modules?
23
+
24
+ 3. **Function Call Response**:
25
+ - Respond by **calling the \`optimizeContext\` function**.
26
+ - The function should have the following parameters:
27
+ - \`"userPrompt"\`: The user's original prompt.
28
+ - \`"optimizedContext"\`: An array of objects, each containing:
29
+ - \`"path"\`: The file path.
30
+ - \`"summary"\`: The one-sentence summary of the file.
31
+ - \`"relevance"\`: The relevance rating as a number between 0 and 1.
32
+
33
+ **Important Guidelines**:
34
+
35
+ - **Do not assign a relevance score of 1 to all files**; evaluate each file individually based on the criteria above.
36
+ - **Do not include** any information not present in the file content.
37
+ - **Avoid assumptions or hallucinations**; stick strictly to the provided data.
38
+ - Ensure the **function call is properly formatted** and **valid**.
39
+ - **Provide the response in valid JSON format**.
40
+ - **Do not include any extra text** outside of the function call.
41
+ - **Ensure the JSON is properly formatted** and **does not contain strings representing JSON** (i.e., do not stringify the JSON).
42
+
43
+ **Example Function Call**:
44
+
45
+ \`\`\`json
46
+ {
47
+ "function": "optimizeContext",
48
+ "arguments": {
49
+ "optimizedContext": [
50
+ {
51
+ "path": "src/utils/helpers.js",
52
+ "summary": "Provides utility functions for data manipulation.",
53
+ "relevance": 0.7
54
+ },
55
+ {
56
+ "path": "src/components/LoginForm.jsx",
57
+ "summary": "Defines the login form component for user authentication.",
58
+ "relevance": 0.9
59
+ }
60
+ ]
61
+ }
62
+ }
63
+ \`\`\`
64
+
65
+ **Files to Analyze**:\n`;
66
+ export async function executeStepContextOptimization(generateContentFn, prompt, sourceCode, options) {
67
+ const optimizationPrompt = [
68
+ ...prompt,
69
+ {
70
+ type: 'assistant',
71
+ text: 'Thank you for describing the task, I have noticed you have provided a very large context for your question. The amount of source code is very big in particular. Can we do something about it?',
72
+ },
73
+ {
74
+ type: 'user',
75
+ text: `${OPTIMIZATION_PROMPT}:\n${Object.entries(sourceCode)
76
+ .map(([path, { content }]) => `${path}: ${content ? content.substring(0, 200) + '...' : 'Content not available'}`)
77
+ .join('\n\n')}`,
78
+ },
79
+ ];
80
+ try {
81
+ putSystemMessage('Context optimization is starting');
82
+ const result = await generateContentFn(optimizationPrompt, functionDefs, 'optimizeContext', 0.2, true, options);
83
+ const fileRelevance = parseOptimizationResult(result);
84
+ if (!fileRelevance || fileRelevance.length === 0) {
85
+ putSystemMessage('Warning: Context optimization failed to produce useful summaries. Proceeding with full context.');
86
+ return StepResult.CONTINUE;
87
+ }
88
+ const tokensBefore = estimateTokenCount(JSON.stringify(sourceCode));
89
+ putSystemMessage('Context optimization in progress.', fileRelevance);
90
+ const optimizedSourceCode = optimizeSourceCode(sourceCode, getSourceCode({ forceAll: true }, options), fileRelevance);
91
+ const tokensAfter = estimateTokenCount(JSON.stringify(optimizedSourceCode));
92
+ const percentageReduced = ((tokensBefore - tokensAfter) / tokensBefore) * 100;
93
+ // Update the getSourceCode function response in the prompt
94
+ const getSourceCodeResponse = prompt.find((item) => item.type === 'user' && item.functionResponses?.some((resp) => resp.name === 'getSourceCode'));
95
+ if (getSourceCodeResponse && getSourceCodeResponse.functionResponses) {
96
+ const sourceCodeResponseIndex = getSourceCodeResponse.functionResponses.findIndex((resp) => resp.name === 'getSourceCode');
97
+ if (sourceCodeResponseIndex !== -1) {
98
+ getSourceCodeResponse.functionResponses[sourceCodeResponseIndex].content = JSON.stringify(optimizedSourceCode);
99
+ }
100
+ }
101
+ putSystemMessage('Context optimization completed successfully.', {
102
+ tokensBefore,
103
+ tokensAfter,
104
+ percentageReduced: percentageReduced.toFixed(2) + '%',
105
+ });
106
+ return StepResult.CONTINUE;
107
+ }
108
+ catch (error) {
109
+ putSystemMessage('Warning: Context optimization failed. Proceeding with full context.');
110
+ console.error('Context optimization error:', error);
111
+ return StepResult.CONTINUE;
112
+ }
113
+ }
114
+ function parseOptimizationResult(result) {
115
+ const explanationCall = result.find((call) => call.name === 'optimizeContext');
116
+ if (!explanationCall || !explanationCall.args || !explanationCall.args.optimizedContext) {
117
+ return null;
118
+ }
119
+ try {
120
+ return explanationCall.args.optimizedContext;
121
+ }
122
+ catch (error) {
123
+ console.error('Failed to parse optimization result:', error);
124
+ return null;
125
+ }
126
+ }
127
+ function optimizeSourceCode(sourceCode, fullSourceCode, fileRelevance) {
128
+ const optimizedSourceCode = {};
129
+ for (const [path, { content }] of Object.entries(sourceCode)) {
130
+ const relevanceInfo = fileRelevance.find((file) => file.path === path);
131
+ if (relevanceInfo && relevanceInfo.relevance > 0.6) {
132
+ optimizedSourceCode[path] = {
133
+ summary: relevanceInfo.summary,
134
+ content: content ?? fullSourceCode[path]?.content ?? null,
135
+ };
136
+ }
137
+ else {
138
+ optimizedSourceCode[path] = {
139
+ summary: relevanceInfo ? relevanceInfo.summary : undefined,
140
+ content: null,
141
+ };
142
+ }
143
+ }
144
+ return optimizedSourceCode;
145
+ }
146
+ //# sourceMappingURL=step-context-optimization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-context-optimization.js","sourceRoot":"","sources":["../../../src/prompt/steps/step-context-optimization.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { CodegenOptions } from '../main/codegen-types.js';
2
2
  /** Generates a system prompt */
3
- export declare function getSystemPrompt({ verbose, askQuestion, interactive }: CodegenOptions): string;
3
+ export declare function getSystemPrompt({ verbose, askQuestion, interactive, ui }: CodegenOptions): string;
@@ -2,40 +2,90 @@ import { CODEGEN_TRIGGER } from './prompt-consts.js';
2
2
  import { verifySystemPromptLimit } from './limits.js';
3
3
  import { rcConfig } from '../main/config.js';
4
4
  /** Generates a system prompt */
5
- export function getSystemPrompt({ verbose, askQuestion, interactive }) {
5
+ export function getSystemPrompt({ verbose, askQuestion, interactive, ui }) {
6
6
  console.log('Generate system prompt');
7
7
  let systemPrompt = `
8
- You are a code generation assistant. I want you to help me generate code for my ideas in my application source code.
9
-
10
- You can generate new code, or modify the existing one. You will receive instructions on what is the goal of requested code modification.
11
-
12
- Instructions will be passed to you either directly via message, with a file, or using the ${CODEGEN_TRIGGER} comment in the code.
13
-
14
- You should parse my application source code and then suggest changes using appropriate tools.
15
-
16
- The root directory of my application is \`${rcConfig.rootDir}\` and you should limit the changes only to this path.
17
-
18
- Additional suggestions, or corners cases to think about:
19
- - When suggesting changes always use absolute file paths, exactly as you have been provided. Modified paths will cause errors and we want to avoid that.
20
- - Always aim to return working code
21
- - Do not leave out commented out fragments like "// ... (keep other existing functions)"
22
- - For large files prefer to use \`patchFile\` function
23
- - Suggest user to split large files if it makes sense for current task
24
- - At the start of conversation the user will express what you are allowed to do (for example: create files, move files, generate images etc.). At the start of conversation you should ensure you have necessary allowances for the current task.
25
- - Consider failing the task with explanation if instructions are not clear enough, or something feels completely wrong.
26
- - Do not produce unnecessary code, ensure the code you generate will be used once all changes are done.
27
- - Always ask for sufficient context paths in codegen summary, ask for files in context that is needed to completed the task
28
-
29
- `;
30
- if (askQuestion && interactive) {
31
- systemPrompt +=
32
- '\nYou have the ability to ask the user a question at the beginning of the conversation if you need more information or clarification. ' +
33
- 'Use this feature wisely to gather any crucial information that would help you better understand the task or provide more accurate code generation.\n' +
34
- "To ask a question, use the 'askQuestion' function. This function allows you to:" +
35
- `- inform the user about your thoughts regarding the task
36
- - ask questions, and give suggestions to the user regarding the task
37
- - request access to content of files if they are not provided in the conversation so far, but are important for the task
38
- - request enablement of permissions for operations that were restricted on the start of conversation, but are important for completion of the task`;
8
+ You are a code generation assistant tasked with helping me implement my ideas into my application's source code.
9
+
10
+ You can generate new code or modify existing code based on the instructions I provide.
11
+
12
+ Instructions may be given directly via messages, through files, or using the ${CODEGEN_TRIGGER} comment in the code.
13
+
14
+ Your responsibilities include:
15
+
16
+ 1. **Analyzing the Task**: Understand the requirements based on the provided instructions and code.
17
+
18
+ 2. **Summarizing Proposed Updates**: Before making any code changes, summarize the proposed updates by calling the \`codegenSummary\` function with the appropriate arguments.
19
+
20
+ - Ensure that you include:
21
+ - **\`explanation\`**: A brief description of the planned changes or reasoning for no changes.
22
+ - **\`fileUpdates\`**: A list of proposed file updates, each with required properties:
23
+ - **\`path\`**: Absolute file path to be updated.
24
+ - **\`updateToolName\`**: The tool to be used for the update (e.g., \`createFile\`, \`updateFile\`).
25
+ - **\`prompt\`**: A detailed prompt summarizing the planned changes for this file.
26
+ - **\`contextPaths\`**: A list of file paths that should be used as context for the code generation requests.
27
+
28
+ 3. **Generating Code**: After the summary is approved, proceed to generate or modify code as needed.
29
+
30
+ Please limit any changes to the root directory of my application, which is \`${rcConfig.rootDir}\`.
31
+
32
+ ## Important Guidelines:
33
+
34
+ - **Use Absolute Paths**: Always use absolute file paths exactly as provided when suggesting changes. Do not modify the paths to avoid errors.
35
+
36
+ - **Return Working Code**: Aim to return fully functional code at all times.
37
+
38
+ - **Avoid Incomplete Code Snippets**: Do not include commented-out fragments like \`// ... (keep other existing functions)\`; ensure your code is complete and ready to use.
39
+
40
+ - **Handle Large Files Appropriately**: For large files, prefer to use the \`patchFile\` function to suggest modifications.
41
+
42
+ - **Suggest File Splitting When Relevant**: If it makes sense for the current task, suggest splitting large files to improve maintainability.
43
+
44
+ - **Verify Permissions**: At the start of the conversation, I will specify what actions you are allowed to perform (e.g., create files, move files, generate images). Ensure you have the necessary permissions before proceeding.
45
+
46
+ - **Error Handling**: If the instructions are unclear or something seems wrong, consider failing the task with an explanation rather than proceeding incorrectly.
47
+
48
+ - **Produce Necessary Code Only**: Do not generate unnecessary code. Ensure that all code you produce will be utilized once all changes are completed.
49
+
50
+ - **Request Context When Needed**: Always ask for sufficient context paths in the code generation summary. If additional files or information are needed to complete the task, request them explicitly.
51
+
52
+ - **Please remember:**
53
+
54
+ - When calling functions, provide the arguments as a JSON object without extra text.
55
+ - Do not include JSON strings within the JSON object; the data should be properly structured.
56
+ - Follow the provided function schemas exactly.
57
+ `;
58
+ if (askQuestion && (interactive || ui)) {
59
+ systemPrompt += `\nYou have the ability to ask me questions at the beginning of the conversation if you need more information or clarification.
60
+ Use this feature wisely to gather any crucial information that would help you better understand the task or provide more accurate code generation.
61
+
62
+ To ask a question, use the \`askQuestion\` function. This function allows you to:
63
+
64
+ - **Express Your Thoughts**: Inform me about your considerations or concerns regarding the task.
65
+
66
+ - **Seek Clarification**: Ask questions or provide suggestions to ensure you fully understand the requirements.
67
+
68
+ - **Request File Access**: If certain files are important for the task but haven't been provided, you can request access to their content. Please request only the files that are truly necessary.
69
+
70
+ - Use the \`requestFilesContent\` parameter in the \`askQuestion\` function call to specify a list of absolute file paths you need.
71
+
72
+ - **Request Additional Permissions**: If you need permissions for operations that were initially restricted but are important for completing the task, you may request them.
73
+
74
+ - **Proceeding After Receiving Information**:
75
+ - Once you have received the necessary information or permissions, **proceed with the task without asking additional questions**.
76
+ - **Do not repeatedly ask the same question** if I have already provided an answer. Move forward based on the information given.
77
+
78
+ - **Control Code Generation Flow**:
79
+
80
+ - To **start code generation**, first call the \`codegenSummary\` function to summarize the proposed changes.
81
+
82
+ - If you require more information before proceeding, set the \`shouldPrompt\` parameter to **\`true\`** in the \`askQuestion\` function.
83
+
84
+ - To **cancel code generation**, set the \`stopCodegen\` parameter to **\`true\`**.
85
+
86
+ - **Important**: Only set \`shouldPrompt\` to **\`true\`** if you genuinely need a response from me before you can proceed.
87
+
88
+ `;
39
89
  }
40
90
  if (verbose) {
41
91
  console.log('System prompt:');
@@ -1 +1 @@
1
- {"version":3,"file":"systemprompt.js","sourceRoot":"","sources":["../../src/prompt/systemprompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,gCAAgC;AAChC,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAkB;IACnF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,IAAI,YAAY,GAAG;;;;;8FAKyE,eAAe;;;;8CAI/D,QAAQ,CAAC,OAAO;;;;;;;;;;;;;GAa3D,CAAC;IAEF,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;QAC/B,YAAY;YACV,wIAAwI;gBACxI,sJAAsJ;gBACtJ,iFAAiF;gBACjF;;;yJAGmJ,CAAC;IACxJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAEtC,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"systemprompt.js","sourceRoot":"","sources":["../../src/prompt/systemprompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,gCAAgC;AAChC,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAkB;IACvF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,IAAI,YAAY,GAAG;;;;;+EAK0D,eAAe;;;;;;;;;;;;;;;;;;+EAkBf,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B9F,CAAC;IAEA,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QACvC,YAAY,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BnB,CAAC;IACA,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAEtC,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -27,19 +27,16 @@ describe('getSystemPrompt', () => {
27
27
  });
28
28
  it('generates correct system prompt', () => {
29
29
  const systemPrompt = getSystemPrompt({ aiService: 'vertex-ai' });
30
- expect(systemPrompt).toContain('You are a code generation assistant. I want you to help me generate code for my ideas in my application source code.');
31
- expect(systemPrompt).toContain('You can generate new code, or modify the existing one.');
32
- expect(systemPrompt).toContain('Instructions will be passed to you either directly via message, with a file, or using the ' +
33
- '@' +
34
- 'CODEGEN comment in the code.');
35
- expect(systemPrompt).toContain('The root directory of my application is `/mocked/root/dir` and you should limit the changes only to this path.');
36
- expect(systemPrompt).toContain('When suggesting changes always use absolute file paths');
30
+ expect(systemPrompt).toContain('You are a code generation assistant');
31
+ expect(systemPrompt).toContain('You can generate new code or modify existing');
32
+ expect(systemPrompt).toContain('Please limit any changes to the root directory of my application, which is `/mocked/root/dir`');
33
+ expect(systemPrompt).toContain('Always use absolute file paths exactly as provided');
37
34
  });
38
35
  it('verifies system prompt limit', () => {
39
36
  const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
40
37
  getSystemPrompt({ aiService: 'vertex-ai', verbose: true });
41
38
  expect(consoleSpy).toHaveBeenCalledWith('System prompt:');
42
- expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('You are a code generation assistant. I want you to help me generate code for my ideas'));
39
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('You are a code generation assistant'));
43
40
  consoleSpy.mockRestore();
44
41
  });
45
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"systemprompt.test.js","sourceRoot":"","sources":["../../src/prompt/systemprompt.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,sBAAsB,CAAC;AAC9B,OAAO,wBAAwB,CAAC;AAChC,OAAO,mBAAmB,CAAC;AAE3B,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,mBAAmB,EAAE,KAAK;IAC1B,gBAAgB,EAAE,KAAK;IACvB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;IACtB,oBAAoB,EAAE,KAAK;IAC3B,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,QAAQ,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;CAC1C,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAC5B,sHAAsH,CACvH,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,wDAAwD,CAAC,CAAC;QACzF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAC5B,4FAA4F;YAC1F,GAAG;YACH,8BAA8B,CACjC,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAC5B,gHAAgH,CACjH,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEzE,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CACrC,MAAM,CAAC,gBAAgB,CAAC,uFAAuF,CAAC,CACjH,CAAC;QAEF,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"systemprompt.test.js","sourceRoot":"","sources":["../../src/prompt/systemprompt.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,sBAAsB,CAAC;AAC9B,OAAO,wBAAwB,CAAC;AAChC,OAAO,mBAAmB,CAAC;AAE3B,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,mBAAmB,EAAE,KAAK;IAC1B,gBAAgB,EAAE,KAAK;IACvB,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;IACtB,oBAAoB,EAAE,KAAK;IAC3B,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,QAAQ,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;CAC1C,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QACtE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC/E,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAC5B,+FAA+F,CAChG,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEzE,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAExG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Estimates the token count of a given string.
3
+ * Uses average token-to-word ratios for plain text and code.
4
+ *
5
+ * @param input - The string to estimate token count for
6
+ * @returns The estimated token count
7
+ */
8
+ export declare function estimateTokenCount(input: string): number;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Estimates the token count of a given string.
3
+ * Uses average token-to-word ratios for plain text and code.
4
+ *
5
+ * @param input - The string to estimate token count for
6
+ * @returns The estimated token count
7
+ */
8
+ export function estimateTokenCount(input) {
9
+ // Trim and check for empty input
10
+ const trimmedInput = input.trim();
11
+ if (!trimmedInput)
12
+ return 0;
13
+ // Determine if the input is code or plain text
14
+ const isCode = containsCode(trimmedInput);
15
+ // Split the input into words
16
+ const words = trimmedInput.split(/\s+/);
17
+ // Use average tokens per word based on content type
18
+ const averageTokensPerWord = isCode ? 1.25 : 0.65;
19
+ // Estimate token count
20
+ const tokenCount = Math.ceil(words.length * averageTokensPerWord);
21
+ return tokenCount;
22
+ }
23
+ /**
24
+ * Heuristically determines if the text contains code.
25
+ */
26
+ function containsCode(text) {
27
+ // Check for code indicators
28
+ const codeIndicators = /[{}()[\];,.<>+\-*/%=&|^!~?:#@]|function|const|let|var|if|else|for|while|return|import|export/;
29
+ return codeIndicators.test(text);
30
+ }
31
+ //# sourceMappingURL=token-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/prompt/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,iCAAiC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,YAAY;QAAE,OAAO,CAAC,CAAC;IAE5B,+CAA+C;IAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE1C,6BAA6B;IAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,oDAAoD;IACpD,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAElD,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC;IAElE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,4BAA4B;IAC5B,MAAM,cAAc,GAAG,8FAA8F,CAAC;IACtH,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}