genaicode 0.12.1 → 0.13.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 (85) hide show
  1. package/README.md +1 -1
  2. package/dist/ai-service/service-configurations-types.d.ts +15 -1
  3. package/dist/ai-service/service-configurations-types.js +4 -0
  4. package/dist/ai-service/service-configurations-types.js.map +1 -1
  5. package/dist/cli/cli-params.d.ts +1 -0
  6. package/dist/cli/cli-params.js +1 -0
  7. package/dist/cli/cli-params.js.map +1 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/main/codegen-types.d.ts +2 -1
  12. package/dist/main/codegen.js +1 -0
  13. package/dist/main/codegen.js.map +1 -1
  14. package/dist/main/common/user-actions.d.ts +5 -2
  15. package/dist/main/common/user-actions.js +2 -2
  16. package/dist/main/common/user-actions.js.map +1 -1
  17. package/dist/main/config-lib.d.ts +12 -3
  18. package/dist/main/config-lib.js +61 -44
  19. package/dist/main/config-lib.js.map +1 -1
  20. package/dist/main/config-schema.d.ts +2 -1
  21. package/dist/main/config-schema.js +153 -19
  22. package/dist/main/config-schema.js.map +1 -1
  23. package/dist/main/config-types.d.ts +43 -16
  24. package/dist/main/config-types.js +3 -1
  25. package/dist/main/config-types.js.map +1 -1
  26. package/dist/main/config.d.ts +8 -2
  27. package/dist/main/config.js +59 -11
  28. package/dist/main/config.js.map +1 -1
  29. package/dist/main/plugin-loader.d.ts +1 -0
  30. package/dist/main/plugin-loader.js +28 -6
  31. package/dist/main/plugin-loader.js.map +1 -1
  32. package/dist/main/ui/backend/api.js +2 -0
  33. package/dist/main/ui/backend/api.js.map +1 -1
  34. package/dist/main/ui/backend/endpoints/config-endpoint.js +12 -0
  35. package/dist/main/ui/backend/endpoints/config-endpoint.js.map +1 -1
  36. package/dist/main/ui/backend/endpoints/question-endpoint.js +5 -4
  37. package/dist/main/ui/backend/endpoints/question-endpoint.js.map +1 -1
  38. package/dist/main/ui/backend/service.d.ts +3 -1
  39. package/dist/main/ui/backend/service.js +4 -3
  40. package/dist/main/ui/backend/service.js.map +1 -1
  41. package/dist/main/ui/common/api-types.d.ts +1 -0
  42. package/dist/main/ui/common/api-types.js.map +1 -1
  43. package/dist/main/ui/frontend/assets/index-C2MB0Z2i.js +2665 -0
  44. package/dist/main/ui/frontend/index.html +1 -1
  45. package/dist/main/ui/user-action-handlers.js +3 -1
  46. package/dist/main/ui/user-action-handlers.js.map +1 -1
  47. package/dist/prompt/function-calling-validate.js +1 -0
  48. package/dist/prompt/function-calling-validate.js.map +1 -1
  49. package/dist/prompt/function-calling.js +7 -4
  50. package/dist/prompt/function-calling.js.map +1 -1
  51. package/dist/prompt/function-defs/ask-question.d.ts +2 -2
  52. package/dist/prompt/function-defs/ask-question.js +60 -52
  53. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  54. package/dist/prompt/function-defs/conversation-graph.d.ts +1 -1
  55. package/dist/prompt/function-defs/conversation-graph.js +4 -4
  56. package/dist/prompt/function-defs/conversation-graph.js.map +1 -1
  57. package/dist/prompt/function-defs/run-bash-command.d.ts +2 -0
  58. package/dist/prompt/function-defs/run-bash-command.js +29 -0
  59. package/dist/prompt/function-defs/run-bash-command.js.map +1 -0
  60. package/dist/prompt/function-defs/run-project-command.d.ts +2 -0
  61. package/dist/prompt/function-defs/run-project-command.js +37 -0
  62. package/dist/prompt/function-defs/run-project-command.js.map +1 -0
  63. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js +1 -1
  64. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js.map +1 -1
  65. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.d.ts +2 -2
  66. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js +31 -69
  67. package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js.map +1 -1
  68. package/dist/prompt/steps/step-ask-question/handlers/handle-project-command.d.ts +2 -0
  69. package/dist/prompt/steps/step-ask-question/handlers/handle-project-command.js +282 -0
  70. package/dist/prompt/steps/step-ask-question/handlers/handle-project-command.js.map +1 -0
  71. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.d.ts +1 -1
  72. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js +70 -3
  73. package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js.map +1 -1
  74. package/dist/prompt/steps/step-ask-question/handlers/handle-run-bash-command.d.ts +2 -0
  75. package/dist/prompt/steps/step-ask-question/handlers/handle-run-bash-command.js +185 -0
  76. package/dist/prompt/steps/step-ask-question/handlers/handle-run-bash-command.js.map +1 -0
  77. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +2 -1
  78. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  79. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +31 -12
  80. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -1
  81. package/dist/prompt/steps/step-ask-question/step-ask-question.js +16 -2
  82. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  83. package/dist/prompt/systemprompt.js +2 -2
  84. package/package.json +4 -3
  85. package/dist/main/ui/frontend/assets/index-j9Oi9iiP.js +0 -2635
@@ -0,0 +1,185 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import { putSystemMessage, putUserMessage } from '../../../../main/common/content-bus.js';
4
+ import { rcConfig } from '../../../../main/config.js';
5
+ import { registerActionHandler } from '../step-ask-question-handlers.js';
6
+ import { ModelType } from '../../../../ai-service/common-types.js';
7
+ import { getFunctionDefs } from '../../../function-calling.js';
8
+ import { askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
9
+ const execPromise = promisify(exec);
10
+ export async function handleRunBashCommand({ generateContentFn, askQuestionCall, prompt, options, }) {
11
+ const runBashCommandRequest = [
12
+ [
13
+ ...prompt,
14
+ {
15
+ type: 'assistant',
16
+ text: askQuestionCall.args?.message ?? '',
17
+ },
18
+ ],
19
+ {
20
+ functionDefs: getFunctionDefs(),
21
+ requiredFunctionName: 'runBashCommand',
22
+ modelType: ModelType.CHEAP,
23
+ temperature: 0.7,
24
+ expectedResponseType: { text: false, functionCall: true, media: false },
25
+ },
26
+ options,
27
+ ];
28
+ const runBashCommandResult = await generateContentFn(...runBashCommandRequest);
29
+ const runBashCommandCall = runBashCommandResult
30
+ .filter((item) => item.type === 'functionCall')
31
+ .map((item) => item.functionCall)
32
+ .find((call) => call.name === 'runBashCommand');
33
+ if (!runBashCommandCall?.args) {
34
+ putSystemMessage('No runBashCommand call found in the assistant response.');
35
+ prompt.push({
36
+ type: 'assistant',
37
+ text: askQuestionCall.args.message,
38
+ }, {
39
+ type: 'user',
40
+ text: 'No runBashCommand call found in the assistant response.',
41
+ });
42
+ return { breakLoop: true, items: [] };
43
+ }
44
+ const { command, env: envOverride, workingDirOverride, truncMode = 'summarize' } = runBashCommandCall.args;
45
+ const confirmation = await askUserForConfirmationWithAnswer(`Do you want to run the bash command "${command}"?`, 'Run command', 'Reject', true, options);
46
+ if (confirmation.answer) {
47
+ putUserMessage(confirmation.answer);
48
+ }
49
+ if (!confirmation.confirmed) {
50
+ putSystemMessage(`Bash command "${command}" cancelled by user.`);
51
+ prompt.push({
52
+ type: 'assistant',
53
+ text: askQuestionCall.args.message,
54
+ functionCalls: [{ name: 'runBashCommand', id: askQuestionCall.id + '_runBashCommand', args: { command } }],
55
+ }, {
56
+ type: 'user',
57
+ text: `I reject running the bash command "${command}".` + (confirmation.answer ? ` ${confirmation.answer}` : ''),
58
+ functionResponses: [
59
+ {
60
+ name: 'runBashCommand',
61
+ call_id: askQuestionCall.id + '_runBashCommand',
62
+ content: JSON.stringify({ error: 'User rejected command execution.' }),
63
+ isError: true,
64
+ },
65
+ ],
66
+ });
67
+ return { breakLoop: true, items: [] };
68
+ }
69
+ const cwd = workingDirOverride || rcConfig.rootDir;
70
+ const env = { ...process.env, ...envOverride };
71
+ putSystemMessage(`Executing bash command: ${command}`, {
72
+ cwd,
73
+ envOverride,
74
+ truncMode,
75
+ workingDirOverride,
76
+ });
77
+ let result;
78
+ try {
79
+ const { stdout, stderr } = await execPromise(command, { cwd, env });
80
+ result = { success: true, exitCode: 0, stdout, stderr };
81
+ putSystemMessage(`Bash command executed successfully.`, { stdout, stderr });
82
+ }
83
+ catch (error) {
84
+ const { code, stdout, stderr } = error;
85
+ result = {
86
+ success: false,
87
+ exitCode: code ?? 1,
88
+ stdout,
89
+ stderr,
90
+ };
91
+ putSystemMessage(`Bash command failed with exit code ${result.exitCode}.`, {
92
+ stdout: result.stdout,
93
+ stderr: result.stderr,
94
+ });
95
+ }
96
+ // Handle output truncation
97
+ if (truncMode === 'first') {
98
+ result.stdout = truncateOutput(result.stdout, 'first');
99
+ result.stderr = truncateOutput(result.stderr, 'first');
100
+ }
101
+ else if (truncMode === 'last') {
102
+ result.stdout = truncateOutput(result.stdout, 'last');
103
+ result.stderr = truncateOutput(result.stderr, 'last');
104
+ }
105
+ else if (truncMode === 'summarize') {
106
+ if (result.stdout.length > 0) {
107
+ result.stdout = await summarizeOutput(result.stdout, generateContentFn, options);
108
+ }
109
+ if (result.stderr.length > 0) {
110
+ result.stderr = await summarizeOutput(result.stderr, generateContentFn, options);
111
+ }
112
+ }
113
+ putSystemMessage(`Command output sent to AI`, {
114
+ truncMode,
115
+ stdout: result.stdout,
116
+ stderr: result.stderr,
117
+ });
118
+ prompt.push({
119
+ type: 'assistant',
120
+ functionCalls: [{ name: 'runBashCommand', id: askQuestionCall.id + '_runBashCommand', args: { command } }],
121
+ }, {
122
+ type: 'user',
123
+ text: `Command "${command}" finished with exit code ${result.exitCode}. Please analyze the output.`,
124
+ functionResponses: [
125
+ {
126
+ name: 'runBashCommand',
127
+ call_id: askQuestionCall.id + '_runBashCommand',
128
+ content: JSON.stringify(result),
129
+ },
130
+ ],
131
+ });
132
+ return {
133
+ breakLoop: false,
134
+ items: [],
135
+ };
136
+ }
137
+ const MAX_OUTPUT_LENGTH = 2000;
138
+ const TRUNCATE_LINES = 200;
139
+ const TRUNCATE_CHARS = 1000;
140
+ function truncateOutput(output, mode) {
141
+ if (output.length <= MAX_OUTPUT_LENGTH) {
142
+ return output;
143
+ }
144
+ const lines = output.split('\\n');
145
+ if (mode === 'first') {
146
+ const truncatedLines = lines.slice(0, TRUNCATE_LINES).join('\\n');
147
+ return truncatedLines.length > TRUNCATE_CHARS ? truncatedLines.substring(0, TRUNCATE_CHARS) : truncatedLines;
148
+ }
149
+ else {
150
+ // mode === 'last'
151
+ const truncatedLines = lines.slice(-TRUNCATE_LINES).join('\\n');
152
+ return truncatedLines.length > TRUNCATE_CHARS
153
+ ? truncatedLines.substring(truncatedLines.length - TRUNCATE_CHARS)
154
+ : truncatedLines;
155
+ }
156
+ }
157
+ async function summarizeOutput(output, generateContentFn, options) {
158
+ if (output.length <= MAX_OUTPUT_LENGTH) {
159
+ return output;
160
+ }
161
+ putSystemMessage('Summarizing command output...');
162
+ const summaryPrompt = [
163
+ {
164
+ type: 'user',
165
+ text: `Please summarize the following command output:\\n\\n---\\n\\n${output}`,
166
+ },
167
+ ];
168
+ const summaryRequest = [
169
+ summaryPrompt,
170
+ {
171
+ modelType: ModelType.LITE,
172
+ expectedResponseType: { text: true, functionCall: false, media: false },
173
+ },
174
+ options,
175
+ ];
176
+ const summaryResult = await generateContentFn(...summaryRequest);
177
+ const summaryText = summaryResult.find((part) => part.type === 'text')?.text;
178
+ if (!summaryText) {
179
+ putSystemMessage('Failed to summarize output, returning truncated version.');
180
+ return truncateOutput(output, 'first');
181
+ }
182
+ return summaryText;
183
+ }
184
+ registerActionHandler('runBashCommand', handleRunBashCommand);
185
+ //# sourceMappingURL=handle-run-bash-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-run-bash-command.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-ask-question/handlers/handle-run-bash-command.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@ import { askUserForInput } from '../../../../main/common/user-actions.js';
2
2
  import { registerActionHandler } from '../step-ask-question-handlers.js';
3
3
  registerActionHandler('sendMessage', handleSendMessage);
4
4
  export async function handleSendMessage({ askQuestionCall, options }) {
5
- const response = await askUserForInput('Your answer', '', options);
5
+ const response = await askUserForInput('Your answer', '', options, true);
6
6
  return {
7
7
  breakLoop: false,
8
+ forceActionType: response.selectedActionType,
8
9
  items: [
9
10
  {
10
11
  assistant: { type: 'assistant', text: askQuestionCall.args?.message ?? '' },
@@ -1 +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;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAE,eAAe,EAAE,OAAO,EAAsB;IACtF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACnE,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;oBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
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;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAE,eAAe,EAAE,OAAO,EAAsB;IACtF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,QAAQ,CAAC,kBAAkB;QAC5C,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;oBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -5,11 +5,12 @@ import { PromptItemImage } from '../../../ai-service/common-types.js';
5
5
  import { FunctionCall } from '../../../ai-service/common-types.js';
6
6
  import { CodegenOptions } from '../../../main/codegen-types.js';
7
7
  import { PluginActionType } from '../../../ai-service/service-configurations-types.js';
8
- export type ActionType = 'codeGeneration' | 'sendMessage' | 'generateImage' | 'requestPermissions' | 'readExternalFiles' | 'requestFilesContent' | 'removeFilesFromContext' | 'exploreExternalDirectories' | 'confirmCodeGeneration' | 'endConversation' | 'contextOptimization' | 'contextCompression' | 'searchCode' | 'lint' | 'updateFile' | 'performAnalysis' | 'createFile' | 'pullAppContext' | 'genaicodeHelp' | 'pushAppContext' | 'reasoningInference' | 'requestFilesFragments' | 'requestGitContext' | 'conversationGraph' | 'runContainerTask' | 'compoundAction' | 'webSearch' | PluginActionType;
9
- type AskQuestionArgs = {
10
- actionType: ActionType;
11
- message: string;
8
+ export type ActionType = 'codeGeneration' | 'sendMessage' | 'generateImage' | 'requestPermissions' | 'readExternalFiles' | 'requestFilesContent' | 'removeFilesFromContext' | 'exploreExternalDirectories' | 'confirmCodeGeneration' | 'endConversation' | 'contextOptimization' | 'contextCompression' | 'searchCode' | 'updateFile' | 'performAnalysis' | 'createFile' | 'pullAppContext' | 'genaicodeHelp' | 'pushAppContext' | 'reasoningInference' | 'requestFilesFragments' | 'requestGitContext' | 'conversationGraph' | 'runContainerTask' | 'compoundAction' | 'runProjectCommand' | 'runBashCommand' | 'webSearch' | PluginActionType;
9
+ export type AskQuestionArgs = {
10
+ actionType?: ActionType;
11
+ message?: string;
12
12
  decisionMakingProcess?: string;
13
+ [key: string]: unknown;
13
14
  };
14
15
  /**
15
16
  * Arguments for sendMessage action
@@ -125,15 +126,14 @@ export type ReasoningInferenceResponseArgs = {
125
126
  reasoning: string;
126
127
  };
127
128
  export type RequestGitContextArgs = {
128
- requestType: 'commits' | 'fileChanges' | 'blame' | 'fileDiff';
129
+ requestType: 'commits' | 'fileChanges' | 'blame' | 'fileDiff' | 'workingChanges' | 'workingDiff';
129
130
  filePath?: string;
130
131
  commitHash?: string;
131
132
  count?: number;
132
- };
133
- export type LintResult = {
134
- success: boolean;
135
- stdout?: string;
136
- stderr?: string;
133
+ includeUntracked?: boolean;
134
+ stagedOnly?: boolean;
135
+ unstagedOnly?: boolean;
136
+ staged?: boolean;
137
137
  };
138
138
  /**
139
139
  * Represents a single action within a compound action batch.
@@ -153,6 +153,25 @@ export type CompoundActionListArgs = {
153
153
  /** Summary of the actions to be performed. */
154
154
  summary?: string;
155
155
  };
156
+ export type RunProjectCommandArgs = {
157
+ name: string;
158
+ args?: string[];
159
+ env?: Record<string, string>;
160
+ workingDirOverride?: string;
161
+ truncMode?: 'first' | 'last' | 'summarize' | 'full';
162
+ };
163
+ export type RunBashCommandArgs = {
164
+ command: string;
165
+ env?: Record<string, string>;
166
+ workingDirOverride?: string;
167
+ truncMode?: 'first' | 'last' | 'summarize' | 'full';
168
+ };
169
+ export type ProjectCommandResult = {
170
+ success: boolean;
171
+ exitCode: number;
172
+ stdout: string;
173
+ stderr: string;
174
+ };
156
175
  export type AskQuestionCall = FunctionCall<AskQuestionArgs>;
157
176
  export type PerformAnalysisCall = FunctionCall<PerformAnalysisArgs>;
158
177
  export type AnalysisResultCall = FunctionCall<AnalysisResultArgs>;
@@ -172,18 +191,19 @@ export interface UserItem {
172
191
  name: string;
173
192
  call_id: string | undefined;
174
193
  content: string | undefined;
194
+ isError?: boolean;
175
195
  }>;
176
196
  images?: PromptItemImage[];
177
197
  cache?: true;
178
198
  }
179
199
  export interface ActionResult {
180
200
  breakLoop: boolean;
201
+ forceActionType?: ActionType;
181
202
  stepResult?: FunctionCall[];
182
203
  items: Array<{
183
204
  assistant: AssistantItem;
184
205
  user: UserItem;
185
206
  }>;
186
- lintResult?: LintResult;
187
207
  }
188
208
  export type ActionHandlerProps = {
189
209
  askQuestionCall: AskQuestionCall;
@@ -194,4 +214,3 @@ export type ActionHandlerProps = {
194
214
  waitIfPaused: () => Promise<void>;
195
215
  };
196
216
  export type ActionHandler = (props: ActionHandlerProps) => Promise<ActionResult>;
197
- export {};
@@ -13,7 +13,6 @@ import './handlers/handle-create-file.js';
13
13
  import './handlers/handle-end-conversation.js';
14
14
  import './handlers/handle-genaicode-help.js';
15
15
  import './handlers/handle-generate-image.js';
16
- import './handlers/handle-lint.js';
17
16
  import './handlers/handle-perform-analysis.js';
18
17
  import './handlers/handle-pull-app-context.js';
19
18
  import './handlers/handle-push-app-context.js';
@@ -31,4 +30,6 @@ import './handlers/handle-explore-external-directories.js';
31
30
  import './handlers/handle-request-git-context.js';
32
31
  import './handlers/handle-web-search.js';
33
32
  import './handlers/handle-compound-action.js';
33
+ import './handlers/handle-project-command.js';
34
+ import './handlers/handle-run-bash-command.js';
34
35
  export declare function executeStepAskQuestion(generateContentFn: GenerateContentFunction, generateImageFn: GenerateImageFunction, prompt: PromptItem[], functionDefs: FunctionDef[], waitIfPaused: () => Promise<void>, temperature: number, options: CodegenOptions): Promise<FunctionCall[]>;
@@ -13,7 +13,6 @@ import './handlers/handle-create-file.js';
13
13
  import './handlers/handle-end-conversation.js';
14
14
  import './handlers/handle-genaicode-help.js';
15
15
  import './handlers/handle-generate-image.js';
16
- import './handlers/handle-lint.js';
17
16
  import './handlers/handle-perform-analysis.js';
18
17
  import './handlers/handle-pull-app-context.js';
19
18
  import './handlers/handle-push-app-context.js';
@@ -31,6 +30,8 @@ import './handlers/handle-explore-external-directories.js';
31
30
  import './handlers/handle-request-git-context.js';
32
31
  import './handlers/handle-web-search.js';
33
32
  import './handlers/handle-compound-action.js';
33
+ import './handlers/handle-project-command.js';
34
+ import './handlers/handle-run-bash-command.js';
34
35
  export async function executeStepAskQuestion(generateContentFn, generateImageFn, prompt, functionDefs, waitIfPaused, temperature, options) {
35
36
  putSystemMessage('Allowing the assistant to ask a question...');
36
37
  let filesState = getFilesState();
@@ -38,11 +39,23 @@ export async function executeStepAskQuestion(generateContentFn, generateImageFn,
38
39
  abortController?.signal.addEventListener('abort', () => {
39
40
  aborted = true;
40
41
  });
42
+ let forcedActionType = options.initialActionType;
41
43
  while (!aborted) {
42
44
  try {
43
45
  // Calculate context size using the total tokens per day (this is not a perfect metric, but it's a good approximation)
44
46
  const lastTokenCount = getUsageMetrics().total.tpd;
45
- const askQuestionCall = await getAskQuestionCall(generateContentFn, prompt, functionDefs, temperature, options);
47
+ if (forcedActionType) {
48
+ putSystemMessage(`Forcing action type: ${forcedActionType}`);
49
+ }
50
+ const askQuestionCall = forcedActionType
51
+ ? {
52
+ name: 'askQuestion',
53
+ id: 'forced-action',
54
+ args: {
55
+ actionType: forcedActionType,
56
+ },
57
+ }
58
+ : await getAskQuestionCall(generateContentFn, prompt, functionDefs, temperature, options);
46
59
  const totalTokens = getUsageMetrics().total.tpd - lastTokenCount;
47
60
  if (!askQuestionCall) {
48
61
  break;
@@ -61,6 +74,7 @@ export async function executeStepAskQuestion(generateContentFn, generateImageFn,
61
74
  generateImageFn,
62
75
  waitIfPaused,
63
76
  });
77
+ forcedActionType = result.forceActionType;
64
78
  if (aborted) {
65
79
  putSystemMessage('Iteration aborted.');
66
80
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"step-ask-question.js","sourceRoot":"","sources":["../../../../src/prompt/steps/step-ask-question/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/step-ask-question.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ To have conversation with me use the \`askQuestion\` function. This function all
58
58
  - **Generate an image**: If you want to express your thoughts through an image, you can request image generation.
59
59
  - **Perform Code Generation**: Once you have all the necessary information, you can propose code changes.
60
60
  - **Update Files**: If you need to make small changes to a file, you can request to update it.
61
- - **Lint Code**: If you want to check the code for errors, you can request linting
61
+ - **Run project commands**: If you need to run a project command (like tests, build, or custom scripts), you can request to run it.
62
62
  - **Use Context Compression**: Autonomously initiate context compression when the conversation history becomes large or complex, or the topic of conversation changes. Always inform the user before compressing and explain the benefits.
63
63
  - **Handle Conversation Summaries**: When you encounter a message starting with "This is summary of our conversation:", treat it as a compressed context representing key points and decisions from previous conversation. Use this summary as a foundation for understanding the conversation's history, technical decisions made, and current implementation status. The summary maintains the most important aspects of the conversation while reducing token usage.
64
64
 
@@ -88,7 +88,7 @@ Example use cases of action types:
88
88
  - Need to reorganize the context of the conversation, or reduce its size -> **contextOptimization**
89
89
  - Generate an image -> **generateImage**
90
90
  - Search for a keyword/phrase over the codebase of the project -> **searchCode**
91
- - Need to perform a linting of the code -> **lint**
91
+ - Run project commands (lint, test, build, or custom) with parameters -> **runProjectCommand**
92
92
  - End the conversation -> **endConversation**
93
93
  - The user needs help with GenAIcode itself, encountered a problem, or needs guidance -> **genaicodeHelp**
94
94
  - Perform inference on a AI model with reasoning capabilities -> **reasoningInference**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genaicode",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "author": "Grzegorz Tańczyk",
5
5
  "repository": {
6
6
  "type": "git",
@@ -90,7 +90,7 @@
90
90
  "styled-components": "^6.1.13",
91
91
  "ts-node": "^10.9.2",
92
92
  "typescript": "^5.0.0",
93
- "vite": "^6.3.4",
93
+ "vite": "^6.3.6",
94
94
  "vite-plugin-checker": "^0.8.0",
95
95
  "vitest": "^3.0.7"
96
96
  },
@@ -107,7 +107,8 @@
107
107
  "@types/mime-types": "^2.1.4",
108
108
  "@types/node": "^18.0.0",
109
109
  "@types/styled-components": "^5.1.34",
110
- "axios": "^1.8.2",
110
+ "axios": "^1.12.0",
111
+ "c12": "^1.11.1",
111
112
  "cors": "^2.8.5",
112
113
  "diff": "^5.2.0",
113
114
  "dockerode": "^4.0.7",