genaicode 0.6.1 → 0.8.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.
- package/README.md +0 -2
- package/dist/ai-service/ai-studio.js +7 -1
- package/dist/ai-service/ai-studio.js.map +1 -1
- package/dist/ai-service/anthropic.js +49 -19
- package/dist/ai-service/anthropic.js.map +1 -1
- package/dist/ai-service/chat-gpt.js +28 -11
- package/dist/ai-service/chat-gpt.js.map +1 -1
- package/dist/ai-service/common.d.ts +5 -4
- package/dist/ai-service/common.js +3 -4
- package/dist/ai-service/common.js.map +1 -1
- package/dist/ai-service/common.test.js +1 -1
- package/dist/ai-service/vertex-ai-claude.js +1 -1
- package/dist/ai-service/vertex-ai-claude.js.map +1 -1
- package/dist/ai-service/vertex-ai.js +7 -1
- package/dist/ai-service/vertex-ai.js.map +1 -1
- package/dist/cli/cli-options.js +0 -12
- package/dist/cli/cli-options.js.map +1 -1
- package/dist/cli/cli-params.d.ts +1 -4
- package/dist/cli/cli-params.js +1 -10
- package/dist/cli/cli-params.js.map +1 -1
- package/dist/cli/validate-cli-params.js +1 -7
- package/dist/cli/validate-cli-params.js.map +1 -1
- package/dist/cli/validate-cli-params.test.js +1 -1
- package/dist/cli/validate-cli-params.test.js.map +1 -1
- package/dist/eval/codegen-summary.test.d.ts +1 -0
- package/dist/eval/codegen-summary.test.js +93 -0
- package/dist/eval/codegen-summary.test.js.map +1 -0
- package/dist/eval/current-prompt-plugin.d.ts +3 -0
- package/dist/eval/current-prompt-plugin.js +10 -0
- package/dist/eval/current-prompt-plugin.js.map +1 -0
- package/dist/eval/data/current-prompt.d.ts +34 -0
- package/dist/eval/data/current-prompt.js +59 -0
- package/dist/eval/data/current-prompt.js.map +1 -0
- package/dist/eval/data/prompt-assistant-image.d.ts +49 -0
- package/dist/eval/data/prompt-assistant-image.js +67 -0
- package/dist/eval/data/prompt-assistant-image.js.map +1 -0
- package/dist/eval/data/prompt3.d.ts +34 -0
- package/dist/eval/data/prompt3.js +71 -0
- package/dist/eval/data/prompt3.js.map +1 -0
- package/dist/eval/prompt-debug.test.d.ts +1 -0
- package/dist/eval/prompt-debug.test.js +76 -0
- package/dist/eval/prompt-debug.test.js.map +1 -0
- package/dist/eval/prompt2.d.ts +34 -0
- package/dist/eval/prompt2.js +125 -0
- package/dist/eval/prompt2.js.map +1 -0
- package/dist/files/read-files.d.ts +29 -6
- package/dist/files/read-files.js +31 -10
- package/dist/files/read-files.js.map +1 -1
- package/dist/files/read-files.test.js +15 -9
- package/dist/files/read-files.test.js.map +1 -1
- package/dist/files/source-code-tree.d.ts +17 -0
- package/dist/files/source-code-tree.js +70 -0
- package/dist/files/source-code-tree.js.map +1 -0
- package/dist/main/codegen-types.d.ts +8 -5
- package/dist/main/codegen.ai-services.test.d.ts +3 -0
- package/dist/main/codegen.ai-services.test.js +198 -0
- package/dist/main/codegen.ai-services.test.js.map +1 -0
- package/dist/main/codegen.cli-options.test.d.ts +3 -0
- package/dist/main/codegen.cli-options.test.js +171 -0
- package/dist/main/codegen.cli-options.test.js.map +1 -0
- package/dist/main/codegen.image-generation.test.d.ts +3 -0
- package/dist/main/codegen.image-generation.test.js +187 -0
- package/dist/main/codegen.image-generation.test.js.map +1 -0
- package/dist/main/codegen.js +2 -5
- package/dist/main/codegen.js.map +1 -1
- package/dist/main/codegen.test-utils.d.ts +81 -0
- package/dist/main/codegen.test-utils.js +88 -0
- package/dist/main/codegen.test-utils.js.map +1 -0
- package/dist/main/codegen.test.js +47 -28
- package/dist/main/codegen.test.js.map +1 -1
- package/dist/main/common/content-bus-types.d.ts +6 -0
- package/dist/main/common/content-bus.d.ts +2 -2
- package/dist/main/common/content-bus.js +3 -1
- package/dist/main/common/content-bus.js.map +1 -1
- package/dist/main/common/user-actions.d.ts +8 -2
- package/dist/main/common/user-actions.js.map +1 -1
- package/dist/main/config-lib.js +20 -2
- package/dist/main/config-lib.js.map +1 -1
- package/dist/main/config.js +4 -28
- package/dist/main/config.js.map +1 -1
- package/dist/main/interactive/codegen-interactive.js +0 -4
- package/dist/main/interactive/codegen-interactive.js.map +1 -1
- package/dist/main/interactive/codegen-interactive.test.js +1 -7
- package/dist/main/interactive/codegen-interactive.test.js.map +1 -1
- package/dist/main/interactive/common.d.ts +1 -1
- package/dist/main/interactive/common.js +0 -2
- package/dist/main/interactive/common.js.map +1 -1
- package/dist/main/interactive/configure.js +0 -2
- package/dist/main/interactive/configure.js.map +1 -1
- package/dist/main/interactive/help.js +0 -2
- package/dist/main/interactive/help.js.map +1 -1
- package/dist/main/interactive/task-file.js +1 -1
- package/dist/main/interactive/task-file.js.map +1 -1
- package/dist/main/interactive/text-prompt.js +1 -1
- package/dist/main/interactive/text-prompt.js.map +1 -1
- package/dist/main/interactive/user-action-handlers.js +4 -2
- package/dist/main/interactive/user-action-handlers.js.map +1 -1
- package/dist/main/plugin-loader.d.ts +7 -1
- package/dist/main/plugin-loader.js +61 -0
- package/dist/main/plugin-loader.js.map +1 -1
- package/dist/main/ui/backend/api.js +9 -3
- package/dist/main/ui/backend/api.js.map +1 -1
- package/dist/main/ui/backend/service.d.ts +2 -1
- package/dist/main/ui/backend/service.js +6 -3
- package/dist/main/ui/backend/service.js.map +1 -1
- package/dist/main/ui/frontend/assets/index-QOcNx5ac.js +812 -0
- package/dist/main/ui/frontend/index.html +1 -1
- package/dist/main/ui/user-action-handlers.js +1 -1
- package/dist/main/ui/user-action-handlers.js.map +1 -1
- package/dist/project-profiles/detection.d.ts +40 -0
- package/dist/project-profiles/detection.js +131 -0
- package/dist/project-profiles/detection.js.map +1 -0
- package/dist/project-profiles/index.d.ts +35 -0
- package/dist/project-profiles/index.js +72 -0
- package/dist/project-profiles/index.js.map +1 -0
- package/dist/project-profiles/profiles/golang.d.ts +65 -0
- package/dist/project-profiles/profiles/golang.js +208 -0
- package/dist/project-profiles/profiles/golang.js.map +1 -0
- package/dist/project-profiles/profiles/java-maven.d.ts +80 -0
- package/dist/project-profiles/profiles/java-maven.js +165 -0
- package/dist/project-profiles/profiles/java-maven.js.map +1 -0
- package/dist/project-profiles/profiles/javascript-npm.d.ts +40 -0
- package/dist/project-profiles/profiles/javascript-npm.js +118 -0
- package/dist/project-profiles/profiles/javascript-npm.js.map +1 -0
- package/dist/project-profiles/profiles/javascript-react.d.ts +46 -0
- package/dist/project-profiles/profiles/javascript-react.js +147 -0
- package/dist/project-profiles/profiles/javascript-react.js.map +1 -0
- package/dist/project-profiles/profiles/python-django.d.ts +58 -0
- package/dist/project-profiles/profiles/python-django.js +200 -0
- package/dist/project-profiles/profiles/python-django.js.map +1 -0
- package/dist/project-profiles/types.d.ts +122 -0
- package/dist/project-profiles/types.js +77 -0
- package/dist/project-profiles/types.js.map +1 -0
- package/dist/prompt/function-calling.js +8 -3
- package/dist/prompt/function-calling.js.map +1 -1
- package/dist/prompt/function-defs/ask-question.d.ts +5 -0
- package/dist/prompt/function-defs/ask-question.js +140 -60
- package/dist/prompt/function-defs/ask-question.js.map +1 -1
- package/dist/prompt/function-defs/codegen-planning.d.ts +8 -0
- package/dist/prompt/function-defs/codegen-planning.js +50 -0
- package/dist/prompt/function-defs/codegen-planning.js.map +1 -0
- package/dist/prompt/function-defs/codegen-summary.js +2 -2
- package/dist/prompt/function-defs/codegen-summary.js.map +1 -1
- package/dist/prompt/function-defs/get-source-code.js +32 -2
- package/dist/prompt/function-defs/get-source-code.js.map +1 -1
- package/dist/prompt/function-defs/optimize-context.js +35 -12
- package/dist/prompt/function-defs/optimize-context.js.map +1 -1
- package/dist/prompt/function-defs/set-summaries.js +20 -1
- package/dist/prompt/function-defs/set-summaries.js.map +1 -1
- package/dist/prompt/limits.js +2 -2
- package/dist/prompt/limits.js.map +1 -1
- package/dist/prompt/limits.test.js +3 -3
- package/dist/prompt/limits.test.js.map +1 -1
- package/dist/prompt/prompt-codegen.js +7 -79
- package/dist/prompt/prompt-codegen.js.map +1 -1
- package/dist/prompt/prompt-codegen.test.js +8 -14
- package/dist/prompt/prompt-codegen.test.js.map +1 -1
- package/dist/prompt/prompt-service-ask-question.test.js +27 -80
- package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
- package/dist/prompt/prompt-service.ai-services.test.d.ts +1 -0
- package/dist/prompt/prompt-service.ai-services.test.js +149 -0
- package/dist/prompt/prompt-service.ai-services.test.js.map +1 -0
- package/dist/prompt/prompt-service.context-optimization.test.d.ts +1 -0
- package/dist/prompt/prompt-service.context-optimization.test.js +212 -0
- package/dist/prompt/prompt-service.context-optimization.test.js.map +1 -0
- package/dist/prompt/prompt-service.image-handling.test.d.ts +1 -0
- package/dist/prompt/prompt-service.image-handling.test.js +212 -0
- package/dist/prompt/prompt-service.image-handling.test.js.map +1 -0
- package/dist/prompt/prompt-service.js +41 -127
- package/dist/prompt/prompt-service.js.map +1 -1
- package/dist/prompt/prompt-service.test-utils.d.ts +66 -0
- package/dist/prompt/prompt-service.test-utils.js +169 -0
- package/dist/prompt/prompt-service.test-utils.js.map +1 -0
- package/dist/prompt/prompt-service.test.js +96 -20
- package/dist/prompt/prompt-service.test.js.map +1 -1
- package/dist/prompt/prompt-service.validation-recovery.test.d.ts +1 -0
- package/dist/prompt/prompt-service.validation-recovery.test.js +263 -0
- package/dist/prompt/prompt-service.validation-recovery.test.js.map +1 -0
- package/dist/prompt/static-prompts.d.ts +16 -0
- package/dist/prompt/static-prompts.js +22 -0
- package/dist/prompt/static-prompts.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js +1 -3
- package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/code-generation.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +58 -0
- package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.d.ts +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js +8 -7
- package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js +6 -6
- package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/default-action.js +1 -4
- package/dist/prompt/steps/step-ask-question/handlers/default-action.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.js +86 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js +97 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +20 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handler-utils.d.ts +0 -0
- package/dist/prompt/steps/step-ask-question/handlers/handler-utils.js +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handler-utils.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.d.ts +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +57 -15
- package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/request-files-content.d.ts +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +109 -12
- package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/request-permissions.d.ts +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js +48 -26
- package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/start-code-generation.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/start-code-generation.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question-reflect.js +1 -0
- package/dist/prompt/steps/step-ask-question/step-ask-question-reflect.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +25 -21
- package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -5
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +36 -33
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/steps/step-codegen-planning.d.ts +10 -0
- package/dist/prompt/steps/step-codegen-planning.js +69 -0
- package/dist/prompt/steps/step-codegen-planning.js.map +1 -0
- package/dist/prompt/steps/step-codegen-summary.d.ts +7 -0
- package/dist/prompt/steps/step-codegen-summary.js +106 -0
- package/dist/prompt/steps/step-codegen-summary.js.map +1 -0
- package/dist/prompt/steps/step-codegen-summary.test.d.ts +1 -0
- package/dist/prompt/steps/step-codegen-summary.test.js +136 -0
- package/dist/prompt/steps/step-codegen-summary.test.js.map +1 -0
- package/dist/prompt/steps/step-context-optimization.js +243 -126
- package/dist/prompt/steps/step-context-optimization.js.map +1 -1
- package/dist/prompt/steps/step-context-optimization.test.d.ts +2 -0
- package/dist/prompt/steps/step-context-optimization.test.js +475 -0
- package/dist/prompt/steps/step-context-optimization.test.js.map +1 -0
- package/dist/prompt/steps/step-ensure-context.d.ts +15 -0
- package/dist/prompt/steps/step-ensure-context.js +102 -0
- package/dist/prompt/steps/step-ensure-context.js.map +1 -0
- package/dist/prompt/steps/step-ensure-context.test.d.ts +1 -0
- package/dist/prompt/steps/step-ensure-context.test.js +242 -0
- package/dist/prompt/steps/step-ensure-context.test.js.map +1 -0
- package/dist/prompt/steps/step-generate-image.d.ts +8 -1
- package/dist/prompt/steps/step-generate-image.js +1 -0
- package/dist/prompt/steps/step-generate-image.js.map +1 -1
- package/dist/prompt/steps/step-summarization.d.ts +2 -2
- package/dist/prompt/steps/step-summarization.js +45 -9
- package/dist/prompt/steps/step-summarization.js.map +1 -1
- package/dist/prompt/steps/step-validate-recover.js +24 -15
- package/dist/prompt/steps/step-validate-recover.js.map +1 -1
- package/dist/prompt/steps/steps-types.d.ts +2 -0
- package/dist/prompt/steps/steps-types.js.map +1 -1
- package/dist/prompt/systemprompt.d.ts +2 -2
- package/dist/prompt/systemprompt.js +74 -176
- package/dist/prompt/systemprompt.js.map +1 -1
- package/dist/prompt/systemprompt.test.js +4 -5
- package/dist/prompt/systemprompt.test.js.map +1 -1
- package/dist/vite-genaicode/vite-genaicode-plugin.js +0 -2
- package/dist/vite-genaicode/vite-genaicode-plugin.js.map +1 -1
- package/package.json +6 -2
- package/dist/main/ui/frontend/assets/index-Dk_qaEQg.js +0 -782
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static prompts used in the prompt-service module.
|
|
3
|
+
* These prompts are used in the initial conversation with the AI service.
|
|
4
|
+
*/
|
|
5
|
+
/** Initial greeting from the user */
|
|
6
|
+
export declare const INITIAL_GREETING = "Hello, GenAIcode!";
|
|
7
|
+
/** Assistant's response asking for source code and other assets */
|
|
8
|
+
export declare const REQUEST_SOURCE_CODE = "Hello there! I guess you have a task for me today. Before we start, could you please provide me with: \n - the current source code of your application\n - the image assets (if available)\n - and conversational history (if available)\n \n Thanks";
|
|
9
|
+
/** User's response when providing source code and assets */
|
|
10
|
+
export declare const SOURCE_CODE_RESPONSE = "Sure, here is the application source code, image assets, and the history.";
|
|
11
|
+
/** Assistant's acknowledgment after receiving source code */
|
|
12
|
+
export declare const READY_TO_ASSIST = "Thank you, I'm ready to assist you with your request.";
|
|
13
|
+
/** Assistant's response when generating code */
|
|
14
|
+
export declare const CODEGEN_SUMMARY_PROMPT = "Planning phase completed. Now please create the code generation summary.";
|
|
15
|
+
/** Template for partial prompt when requesting changes for a specific file */
|
|
16
|
+
export declare const getPartialPromptTemplate: (path: string) => string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static prompts used in the prompt-service module.
|
|
3
|
+
* These prompts are used in the initial conversation with the AI service.
|
|
4
|
+
*/
|
|
5
|
+
/** Initial greeting from the user */
|
|
6
|
+
export const INITIAL_GREETING = 'Hello, GenAIcode!';
|
|
7
|
+
/** Assistant's response asking for source code and other assets */
|
|
8
|
+
export const REQUEST_SOURCE_CODE = `Hello there! I guess you have a task for me today. Before we start, could you please provide me with:
|
|
9
|
+
- the current source code of your application
|
|
10
|
+
- the image assets (if available)
|
|
11
|
+
- and conversational history (if available)
|
|
12
|
+
|
|
13
|
+
Thanks`;
|
|
14
|
+
/** User's response when providing source code and assets */
|
|
15
|
+
export const SOURCE_CODE_RESPONSE = 'Sure, here is the application source code, image assets, and the history.';
|
|
16
|
+
/** Assistant's acknowledgment after receiving source code */
|
|
17
|
+
export const READY_TO_ASSIST = "Thank you, I'm ready to assist you with your request.";
|
|
18
|
+
/** Assistant's response when generating code */
|
|
19
|
+
export const CODEGEN_SUMMARY_PROMPT = 'Planning phase completed. Now please create the code generation summary.';
|
|
20
|
+
/** Template for partial prompt when requesting changes for a specific file */
|
|
21
|
+
export const getPartialPromptTemplate = (path) => `Please now generate update for the \`${path}\` file using appropriate tools according to code generation summary.`;
|
|
22
|
+
//# sourceMappingURL=static-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-prompts.js","sourceRoot":"","sources":["../../src/prompt/static-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;aAKtB,CAAC;AAEd,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,2EAA2E,CAAC;AAEhH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,uDAAuD,CAAC;AAEvF,gDAAgD;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0EAA0E,CAAC;AAEjH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAU,EAAE,CAC/D,wCAAwC,IAAI,uEAAuE,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
2
|
-
import { StepResult } from '../../steps-types.js';
|
|
3
2
|
export async function handleCancelCodeGeneration({ askQuestionCall }) {
|
|
4
3
|
putSystemMessage('Assistant requested to stop code generation. Exiting...');
|
|
5
4
|
return {
|
|
6
5
|
breakLoop: true,
|
|
7
|
-
stepResult: StepResult.BREAK,
|
|
8
6
|
items: [
|
|
9
7
|
{
|
|
10
|
-
assistant: { type: 'assistant', text: askQuestionCall.args?.
|
|
8
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '' },
|
|
11
9
|
user: { type: 'user', text: 'Code generation cancelled.' },
|
|
12
10
|
},
|
|
13
11
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel-code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/cancel-code-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"cancel-code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/cancel-code-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAG1E,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAAE,eAAe,EAAsB;IACtF,gBAAgB,CAAC,yDAAyD,CAAC,CAAC;IAC5E,OAAO;QACL,SAAS,EAAE,IAAI;QACf,KAAK,EAAE;YACL;gBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;gBAC3E,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE;aAC3D;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { putAssistantMessage, putUserMessage } from '../../../../main/common/content-bus.js';
|
|
2
|
+
import { askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
|
|
3
|
+
import { getFunctionDefs } from '../../../function-calling.js';
|
|
4
|
+
import { executeStepCodegenPlanning } from '../../step-codegen-planning.js';
|
|
5
|
+
import { executeStepCodegenSummary } from '../../step-codegen-summary.js';
|
|
6
|
+
import { StepResult } from '../../steps-types.js';
|
|
7
|
+
export async function handleCodeGeneration({ generateContentFn, generateImageFn, waitIfPaused, prompt, options, }) {
|
|
8
|
+
const planningResult = await executeStepCodegenPlanning(generateContentFn, prompt, options);
|
|
9
|
+
if (planningResult === StepResult.BREAK) {
|
|
10
|
+
return {
|
|
11
|
+
breakLoop: true,
|
|
12
|
+
items: [],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
// Ask user to confirm the planning result
|
|
16
|
+
const planningConfirmation = await askUserForConfirmationWithAnswer('Planning phase completed. Would you like to proceed with the planned changes?', 'Accept planning and continue', 'Reject planning and return to conversation', true);
|
|
17
|
+
if (!planningConfirmation.confirmed) {
|
|
18
|
+
// User rejected the planning, return to conversation
|
|
19
|
+
return {
|
|
20
|
+
breakLoop: false,
|
|
21
|
+
items: [
|
|
22
|
+
{
|
|
23
|
+
assistant: {
|
|
24
|
+
type: 'assistant',
|
|
25
|
+
text: 'Planning phase completed. Would you like to proceed with the planned changes?',
|
|
26
|
+
functionCalls: [],
|
|
27
|
+
},
|
|
28
|
+
user: {
|
|
29
|
+
type: 'user',
|
|
30
|
+
text: planningConfirmation.answer || 'Planning rejected. Returning to conversation.',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
putAssistantMessage('Planning phase completed. Would you like to proceed with the planned changes?');
|
|
37
|
+
putUserMessage('Accept planning and continue');
|
|
38
|
+
// Execute the codegen summary step
|
|
39
|
+
const result = await executeStepCodegenSummary(generateContentFn, prompt, getFunctionDefs(), options, waitIfPaused, generateImageFn);
|
|
40
|
+
const confirmed = await askUserForConfirmationWithAnswer('Code changes are generated, now what?', 'Apply code changes', 'Continue conversation', true);
|
|
41
|
+
return {
|
|
42
|
+
breakLoop: confirmed.confirmed ?? true,
|
|
43
|
+
stepResult: result,
|
|
44
|
+
items: [
|
|
45
|
+
{
|
|
46
|
+
assistant: {
|
|
47
|
+
type: 'assistant',
|
|
48
|
+
text: 'Code changes are generated, now what?',
|
|
49
|
+
},
|
|
50
|
+
user: {
|
|
51
|
+
type: 'user',
|
|
52
|
+
text: confirmed.answer || 'Apply code changes.',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=code-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/code-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,OAAO,GACY;IACnB,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5F,IAAI,cAAc,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QACxC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,MAAM,oBAAoB,GAAG,MAAM,gCAAgC,CACjE,+EAA+E,EAC/E,8BAA8B,EAC9B,4CAA4C,EAC5C,IAAI,CACL,CAAC;IAEF,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;QACpC,qDAAqD;QACrD,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL;oBACE,SAAS,EAAE;wBACT,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,+EAA+E;wBACrF,aAAa,EAAE,EAAE;qBAClB;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oBAAoB,CAAC,MAAM,IAAI,+CAA+C;qBACrF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,+EAA+E,CAAC,CAAC;IACrG,cAAc,CAAC,8BAA8B,CAAC,CAAC;IAE/C,mCAAmC;IACnC,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,iBAAiB,EACjB,MAAM,EACN,eAAe,EAAE,EACjB,OAAO,EACP,YAAY,EACZ,eAAe,CAChB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,gCAAgC,CACtD,uCAAuC,EACvC,oBAAoB,EACpB,uBAAuB,EACvB,IAAI,CACL,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,IAAI;QACtC,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE;YACL;gBACE,SAAS,EAAE;oBACT,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,uCAAuC;iBAC9C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,CAAC,MAAM,IAAI,qBAAqB;iBAChD;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ActionHandlerProps, ActionResult } from '../step-ask-question-types.js';
|
|
2
|
-
export declare function handleConfirmCodeGeneration({ askQuestionCall }: ActionHandlerProps): Promise<ActionResult>;
|
|
2
|
+
export declare function handleConfirmCodeGeneration({ askQuestionCall, options, }: ActionHandlerProps): Promise<ActionResult>;
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
2
2
|
import { askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
|
|
3
|
-
|
|
4
|
-
export async function handleConfirmCodeGeneration({ askQuestionCall }) {
|
|
3
|
+
export async function handleConfirmCodeGeneration({ askQuestionCall, options, }) {
|
|
5
4
|
const userConfirmation = await askUserForConfirmationWithAnswer('The assistant is ready to start code generation. Do you want to proceed?', 'Start code generation', 'Continue conversation', true);
|
|
5
|
+
if (userConfirmation.options?.aiService) {
|
|
6
|
+
options.aiService = userConfirmation.options.aiService;
|
|
7
|
+
options.cheap = userConfirmation.options.cheap;
|
|
8
|
+
}
|
|
6
9
|
if (userConfirmation.confirmed) {
|
|
7
10
|
putSystemMessage('Proceeding with code generation.');
|
|
8
11
|
return {
|
|
9
12
|
breakLoop: true,
|
|
10
|
-
|
|
13
|
+
executeCodegen: true,
|
|
11
14
|
items: [
|
|
12
15
|
{
|
|
13
|
-
assistant: { type: 'assistant', text: askQuestionCall.args?.
|
|
16
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '', functionCalls: [] },
|
|
14
17
|
user: { type: 'user', text: userConfirmation.answer || 'Confirmed. Proceed with code generation.' },
|
|
15
18
|
},
|
|
16
19
|
],
|
|
@@ -20,14 +23,12 @@ export async function handleConfirmCodeGeneration({ askQuestionCall }) {
|
|
|
20
23
|
putSystemMessage('Declined. Continuing the conversation.');
|
|
21
24
|
return {
|
|
22
25
|
breakLoop: false,
|
|
23
|
-
stepResult: StepResult.CONTINUE,
|
|
24
26
|
items: [
|
|
25
27
|
{
|
|
26
|
-
assistant: { type: 'assistant', text: askQuestionCall.args?.
|
|
28
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '' },
|
|
27
29
|
user: {
|
|
28
30
|
type: 'user',
|
|
29
31
|
text: userConfirmation.answer || 'Declined. Please continue the conversation.',
|
|
30
|
-
functionResponses: [{ name: 'askQuestion', call_id: askQuestionCall.id ?? '', content: undefined }],
|
|
31
32
|
},
|
|
32
33
|
},
|
|
33
34
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/confirm-code-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm-code-generation.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/confirm-code-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAG3F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,EAChD,eAAe,EACf,OAAO,GACY;IACnB,MAAM,gBAAgB,GAAG,MAAM,gCAAgC,CAC7D,0EAA0E,EAC1E,uBAAuB,EACvB,uBAAuB,EACvB,IAAI,CACL,CAAC;IACF,IAAI,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;QACvD,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;IACjD,CAAC;IACD,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC/B,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QACrD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE;gBACL;oBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;oBAC9F,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,IAAI,0CAA0C,EAAE;iBACpG;aACF;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL;oBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;oBAC3E,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gBAAgB,CAAC,MAAM,IAAI,6CAA6C;qBAC/E;iBACF;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -2,20 +2,21 @@ import { refreshFiles } from '../../../../files/find-files.js';
|
|
|
2
2
|
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
3
|
import { askUserForConfirmation } from '../../../../main/common/user-actions.js';
|
|
4
4
|
import { executeStepContextOptimization } from '../../step-context-optimization.js';
|
|
5
|
-
import { StepResult } from '../../steps-types.js';
|
|
6
5
|
export async function handleContextOptimization({ askQuestionCall, prompt, options, generateContentFn, }) {
|
|
7
6
|
const userConfirmation = await askUserForConfirmation('The assistant suggests optimizing the context to reduce token usage, cost, and latency. Do you want to proceed?', false);
|
|
7
|
+
if (userConfirmation.options?.aiService) {
|
|
8
|
+
options.aiService = userConfirmation.options.aiService;
|
|
9
|
+
options.cheap = userConfirmation.options.cheap;
|
|
10
|
+
}
|
|
8
11
|
const user = {
|
|
9
12
|
type: 'user',
|
|
10
13
|
text: userConfirmation ? 'Context optimization applied.' : 'Context optimization not applied.',
|
|
11
|
-
functionResponses: [{ name: 'askQuestion', call_id: askQuestionCall.id ?? '', content: undefined }],
|
|
12
14
|
};
|
|
13
15
|
const assistant = {
|
|
14
16
|
type: 'assistant',
|
|
15
|
-
text: askQuestionCall.args?.
|
|
16
|
-
functionCalls: [askQuestionCall],
|
|
17
|
+
text: askQuestionCall.args?.message ?? '',
|
|
17
18
|
};
|
|
18
|
-
if (userConfirmation) {
|
|
19
|
+
if (userConfirmation.confirmed) {
|
|
19
20
|
// the request may be caused be an appearance of a new file, so lets refresh
|
|
20
21
|
refreshFiles();
|
|
21
22
|
// Execute context optimization step
|
|
@@ -24,7 +25,6 @@ export async function handleContextOptimization({ askQuestionCall, prompt, optio
|
|
|
24
25
|
}
|
|
25
26
|
return {
|
|
26
27
|
breakLoop: false,
|
|
27
|
-
stepResult: StepResult.CONTINUE,
|
|
28
28
|
items: [
|
|
29
29
|
{
|
|
30
30
|
assistant,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-optimization.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/context-optimization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"context-optimization.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/context-optimization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AAGpF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAC9C,eAAe,EACf,MAAM,EACN,OAAO,EACP,iBAAiB,GACE;IACnB,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CACnD,iHAAiH,EACjH,KAAK,CACN,CAAC;IAEF,IAAI,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;QACvD,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAa;QACrB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,mCAAmC;KAC/F,CAAC;IAEF,MAAM,SAAS,GAAkB;QAC/B,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;KAC1C,CAAC;IAEF,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC/B,4EAA4E;QAC5E,YAAY,EAAE,CAAC;QAEf,oCAAoC;QACpC,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;QACzD,MAAM,8BAA8B,CAAC,iBAAiB,EAAE,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACjG,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE;YACL;gBACE,SAAS;gBACT,IAAI;aACL;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import { StepResult } from '../../steps-types.js';
|
|
2
1
|
export async function handleDefaultAction({ askQuestionCall }) {
|
|
3
2
|
return {
|
|
4
3
|
breakLoop: false,
|
|
5
|
-
stepResult: StepResult.CONTINUE,
|
|
6
4
|
items: [
|
|
7
5
|
{
|
|
8
|
-
assistant: { type: 'assistant', text: askQuestionCall.args?.
|
|
6
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '' },
|
|
9
7
|
user: {
|
|
10
8
|
type: 'user',
|
|
11
9
|
text: "I don't want to start the code generation yet, let's talk a bit more.",
|
|
12
|
-
functionResponses: [{ name: 'askQuestion', call_id: askQuestionCall.id ?? '', content: undefined }],
|
|
13
10
|
},
|
|
14
11
|
},
|
|
15
12
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-action.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/default-action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-action.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/default-action.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAE,eAAe,EAAsB;IAC/E,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE;YACL;gBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;gBAC3E,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uEAAuE;iBAC9E;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { askUserForInput } from '../../../../main/common/user-actions.js';
|
|
2
|
+
import { putAssistantMessage, putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
|
+
import { StepResult } from '../../steps-types.js';
|
|
4
|
+
import { executeStepGenerateImage } from '../../step-generate-image.js';
|
|
5
|
+
export async function handleRequestAnswerWithImage({ askQuestionCall, options, generateImageFn, }) {
|
|
6
|
+
if (!options.imagen) {
|
|
7
|
+
putSystemMessage('Image generation is not enabled. Please enable it using --imagen parameter.');
|
|
8
|
+
return {
|
|
9
|
+
breakLoop: true,
|
|
10
|
+
stepResult: StepResult.BREAK,
|
|
11
|
+
items: [],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
// Get the image generation request from the args
|
|
15
|
+
const imageGenerationRequest = askQuestionCall.args?.imageGenerationRequest;
|
|
16
|
+
if (!imageGenerationRequest?.prompt) {
|
|
17
|
+
putSystemMessage('Image generation request with prompt is required for requestAnswerWithImage action.');
|
|
18
|
+
return {
|
|
19
|
+
breakLoop: true,
|
|
20
|
+
stepResult: StepResult.BREAK,
|
|
21
|
+
items: [],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Create a temporary file path for the generated image
|
|
25
|
+
const tempImagePath = `/tmp/question-image-${Date.now()}.png`;
|
|
26
|
+
// Generate the image using generateImage function call
|
|
27
|
+
const generateImageCall = {
|
|
28
|
+
name: 'generateImage',
|
|
29
|
+
args: {
|
|
30
|
+
prompt: imageGenerationRequest.prompt,
|
|
31
|
+
filePath: tempImagePath,
|
|
32
|
+
width: 1024,
|
|
33
|
+
height: 1024,
|
|
34
|
+
explanation: 'Generating image to support the question',
|
|
35
|
+
...(imageGenerationRequest.contextImage && { contextImagePath: imageGenerationRequest.contextImage }),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
// Execute image generation
|
|
39
|
+
const downloadFileCall = await executeStepGenerateImage(generateImageFn, generateImageCall);
|
|
40
|
+
// If image generation failed, the downloadFileCall will be an explanation
|
|
41
|
+
if (!downloadFileCall.args?.downloadUrl) {
|
|
42
|
+
putSystemMessage('Failed to generate image for the question.');
|
|
43
|
+
return {
|
|
44
|
+
breakLoop: true,
|
|
45
|
+
stepResult: StepResult.BREAK,
|
|
46
|
+
items: [],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const response = await fetch(downloadFileCall.args?.downloadUrl);
|
|
50
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
51
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
52
|
+
putAssistantMessage('Here is the image to support the question:', generateImageCall.args, [], [
|
|
53
|
+
{
|
|
54
|
+
base64url: buffer.toString('base64'),
|
|
55
|
+
mediaType: 'image/png',
|
|
56
|
+
},
|
|
57
|
+
]);
|
|
58
|
+
// Get user's response with the image displayed
|
|
59
|
+
const userText = await askUserForInput('Your answer', askQuestionCall.args?.content ?? '');
|
|
60
|
+
// Return the conversation items with the generated image
|
|
61
|
+
return {
|
|
62
|
+
breakLoop: false,
|
|
63
|
+
stepResult: StepResult.CONTINUE,
|
|
64
|
+
items: [
|
|
65
|
+
{
|
|
66
|
+
assistant: {
|
|
67
|
+
type: 'assistant',
|
|
68
|
+
text: askQuestionCall.args?.content ?? '',
|
|
69
|
+
functionCalls: [askQuestionCall, generateImageCall, downloadFileCall],
|
|
70
|
+
},
|
|
71
|
+
user: {
|
|
72
|
+
type: 'user',
|
|
73
|
+
text: userText,
|
|
74
|
+
functionResponses: [
|
|
75
|
+
{
|
|
76
|
+
name: 'askQuestion',
|
|
77
|
+
call_id: askQuestionCall.id ?? '',
|
|
78
|
+
content: undefined,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=handle-request-answer-with-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-request-answer-with-image.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-request-answer-with-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { askUserForInput } from '../../../../main/common/user-actions.js';
|
|
2
|
+
import { putAssistantMessage, putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
3
|
+
import { executeStepGenerateImage } from '../../step-generate-image.js';
|
|
4
|
+
import { getFunctionDefs } from '../../../function-calling.js';
|
|
5
|
+
export async function handleSendMessageWithImage({ askQuestionCall, options, generateContentFn, prompt, generateImageFn, }) {
|
|
6
|
+
if (!options.imagen) {
|
|
7
|
+
putSystemMessage('Image generation is not enabled. Please enable it using --imagen parameter.');
|
|
8
|
+
return {
|
|
9
|
+
breakLoop: true,
|
|
10
|
+
items: [],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const [sendMessageWithImageCall] = (await generateContentFn([
|
|
14
|
+
...prompt,
|
|
15
|
+
{
|
|
16
|
+
type: 'assistant',
|
|
17
|
+
text: askQuestionCall.args?.message ?? '',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'user',
|
|
21
|
+
text: 'Yes, you can generate an image.',
|
|
22
|
+
},
|
|
23
|
+
], getFunctionDefs(), 'sendMessageWithImage', 0.7, true, options));
|
|
24
|
+
if (!sendMessageWithImageCall) {
|
|
25
|
+
return {
|
|
26
|
+
breakLoop: true,
|
|
27
|
+
items: [],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Get the image generation request from the args
|
|
31
|
+
const imageGenerationRequest = sendMessageWithImageCall.args;
|
|
32
|
+
if (!imageGenerationRequest?.prompt) {
|
|
33
|
+
putSystemMessage('Image generation request with prompt is required for sendMessageWithImage action.');
|
|
34
|
+
return {
|
|
35
|
+
breakLoop: true,
|
|
36
|
+
items: [],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Create a temporary file path for the generated image
|
|
40
|
+
const tempImagePath = `/tmp/question-image-${Date.now()}.png`;
|
|
41
|
+
// Generate the image using generateImage function call
|
|
42
|
+
const generateImageCall = {
|
|
43
|
+
id: 'generate_image_' + sendMessageWithImageCall.id,
|
|
44
|
+
name: 'generateImage',
|
|
45
|
+
args: {
|
|
46
|
+
prompt: imageGenerationRequest.prompt,
|
|
47
|
+
filePath: tempImagePath,
|
|
48
|
+
width: 1024,
|
|
49
|
+
height: 1024,
|
|
50
|
+
explanation: 'Generating image to support the question',
|
|
51
|
+
...(imageGenerationRequest.contextImage && { contextImagePath: imageGenerationRequest.contextImage }),
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
// Execute image generation
|
|
55
|
+
const downloadFileCall = await executeStepGenerateImage(generateImageFn, generateImageCall);
|
|
56
|
+
// If image generation failed, the downloadFileCall will be an explanation
|
|
57
|
+
if (!downloadFileCall.args?.downloadUrl) {
|
|
58
|
+
putSystemMessage('Failed to generate image for the question.');
|
|
59
|
+
return {
|
|
60
|
+
breakLoop: true,
|
|
61
|
+
items: [],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const response = await fetch(downloadFileCall.args?.downloadUrl);
|
|
65
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
66
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
67
|
+
const imageData = {
|
|
68
|
+
base64url: buffer.toString('base64'),
|
|
69
|
+
mediaType: 'image/png',
|
|
70
|
+
};
|
|
71
|
+
putAssistantMessage('Here is the image to support the question:', generateImageCall.args, [], [imageData]);
|
|
72
|
+
// Get user's response with the image displayed
|
|
73
|
+
const inputResponse = await askUserForInput('Your answer', askQuestionCall.args?.message ?? '');
|
|
74
|
+
if (inputResponse.options?.aiService) {
|
|
75
|
+
options.aiService = inputResponse.options.aiService;
|
|
76
|
+
}
|
|
77
|
+
// Return the conversation items with the generated image included in the context
|
|
78
|
+
return {
|
|
79
|
+
breakLoop: false,
|
|
80
|
+
items: [
|
|
81
|
+
{
|
|
82
|
+
assistant: {
|
|
83
|
+
type: 'assistant',
|
|
84
|
+
text: askQuestionCall.args?.message ?? '',
|
|
85
|
+
functionCalls: [generateImageCall],
|
|
86
|
+
},
|
|
87
|
+
user: {
|
|
88
|
+
type: 'user',
|
|
89
|
+
text: inputResponse.answer,
|
|
90
|
+
images: [imageData],
|
|
91
|
+
functionResponses: [{ name: generateImageCall.name, call_id: generateImageCall.id, content: undefined }],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=handle-send-message-with-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-send-message-with-image.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { askUserForInput } from '../../../../main/common/user-actions.js';
|
|
2
|
+
export async function handleSendMessage({ askQuestionCall, options }) {
|
|
3
|
+
const response = await askUserForInput('Your answer', askQuestionCall.args?.message ?? '');
|
|
4
|
+
if (response.options?.aiService) {
|
|
5
|
+
options.aiService = response.options.aiService;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
breakLoop: false,
|
|
9
|
+
items: [
|
|
10
|
+
{
|
|
11
|
+
assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '' },
|
|
12
|
+
user: {
|
|
13
|
+
type: 'user',
|
|
14
|
+
text: response.answer,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=handle-send-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-send-message.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAG1E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAE,eAAe,EAAE,OAAO,EAAsB;IACtF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC3F,IAAI,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;IACjD,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE;YACL;gBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;gBAC3E,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ,CAAC,MAAM;iBACtB;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-utils.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handler-utils.ts"],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ActionHandlerProps, ActionResult } from '../step-ask-question-types.js';
|
|
2
|
-
export declare function handleRemoveFilesFromContext({ askQuestionCall, prompt, }: ActionHandlerProps): Promise<ActionResult>;
|
|
2
|
+
export declare function handleRemoveFilesFromContext({ askQuestionCall, generateContentFn, prompt, options, }: ActionHandlerProps): Promise<ActionResult>;
|
|
@@ -1,8 +1,25 @@
|
|
|
1
|
+
import { getSourceCodeTree, parseSourceCodeTree } from '../../../../files/source-code-tree.js';
|
|
1
2
|
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { getFunctionDefs } from '../../../function-calling.js';
|
|
4
|
+
export async function handleRemoveFilesFromContext({ askQuestionCall, generateContentFn, prompt, options, }) {
|
|
5
|
+
const [removeFilesFromContextCall] = (await generateContentFn([
|
|
6
|
+
...prompt,
|
|
7
|
+
{
|
|
8
|
+
type: 'assistant',
|
|
9
|
+
text: askQuestionCall.args?.message ?? '',
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
type: 'user',
|
|
13
|
+
text: 'Yes, you can request the removal of files from context.',
|
|
14
|
+
},
|
|
15
|
+
], getFunctionDefs(), 'removeFilesFromContext', 0.7, true, options));
|
|
16
|
+
if (!removeFilesFromContextCall) {
|
|
17
|
+
return {
|
|
18
|
+
breakLoop: true,
|
|
19
|
+
items: [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const filesToRemove = removeFilesFromContextCall.args?.filePaths ?? [];
|
|
6
23
|
let userText = '';
|
|
7
24
|
if (filesToRemove.length > 0) {
|
|
8
25
|
removeFileContentsFromPrompt(prompt, filesToRemove);
|
|
@@ -14,30 +31,55 @@ export async function handleRemoveFilesFromContext({ askQuestionCall, prompt, })
|
|
|
14
31
|
}
|
|
15
32
|
return {
|
|
16
33
|
breakLoop: false,
|
|
17
|
-
stepResult: StepResult.CONTINUE,
|
|
18
34
|
items: [
|
|
19
35
|
{
|
|
20
|
-
assistant: {
|
|
36
|
+
assistant: {
|
|
37
|
+
type: 'assistant',
|
|
38
|
+
text: askQuestionCall.args?.message ?? '',
|
|
39
|
+
functionCalls: [removeFilesFromContextCall],
|
|
40
|
+
},
|
|
21
41
|
user: {
|
|
22
42
|
type: 'user',
|
|
23
43
|
text: userText,
|
|
24
|
-
functionResponses: [
|
|
44
|
+
functionResponses: [
|
|
45
|
+
{ name: 'removeFilesFromContext', call_id: removeFilesFromContextCall.id, content: undefined },
|
|
46
|
+
],
|
|
25
47
|
},
|
|
26
48
|
},
|
|
27
49
|
],
|
|
28
50
|
};
|
|
29
51
|
}
|
|
30
52
|
function removeFileContentsFromPrompt(prompt, filesToRemove) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
// Find all source code responses in the prompt history
|
|
54
|
+
const sourceCodeResponses = prompt.filter((item) => item.type === 'user' && item.functionResponses?.some((fr) => fr.name === 'getSourceCode'));
|
|
55
|
+
if (sourceCodeResponses.length === 0) {
|
|
56
|
+
console.warn('No source code responses found in prompt history');
|
|
57
|
+
return;
|
|
34
58
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (
|
|
38
|
-
|
|
59
|
+
sourceCodeResponses.forEach((response) => {
|
|
60
|
+
const sourceCodeResponse = response.functionResponses?.find((fr) => fr.name === 'getSourceCode');
|
|
61
|
+
if (!sourceCodeResponse || !sourceCodeResponse.content) {
|
|
62
|
+
console.warn('Skipping invalid source code response');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const contentObj = parseSourceCodeTree(JSON.parse(sourceCodeResponse.content));
|
|
67
|
+
let modifiedFiles = 0;
|
|
68
|
+
filesToRemove.forEach((file) => {
|
|
69
|
+
if (contentObj[file] && 'content' in contentObj[file]) {
|
|
70
|
+
contentObj[file].content = null;
|
|
71
|
+
modifiedFiles++;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// Only update if files were actually modified
|
|
75
|
+
if (modifiedFiles > 0) {
|
|
76
|
+
sourceCodeResponse.content = JSON.stringify(getSourceCodeTree(contentObj));
|
|
77
|
+
console.log(`Removed content from ${modifiedFiles} files in source code response`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.error('Error processing source code response:', error);
|
|
39
82
|
}
|
|
40
83
|
});
|
|
41
|
-
response.content = JSON.stringify(contentObj);
|
|
42
84
|
}
|
|
43
85
|
//# sourceMappingURL=remove-files-from-context.js.map
|