genaicode 0.12.0 → 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.
- package/README.md +1 -1
- package/dist/ai-service/service-configurations-types.d.ts +15 -1
- package/dist/ai-service/service-configurations-types.js +4 -0
- package/dist/ai-service/service-configurations-types.js.map +1 -1
- package/dist/cli/cli-params.d.ts +1 -0
- package/dist/cli/cli-params.js +1 -0
- package/dist/cli/cli-params.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main/codegen-types.d.ts +2 -1
- package/dist/main/codegen.js +1 -0
- package/dist/main/codegen.js.map +1 -1
- package/dist/main/common/user-actions.d.ts +5 -2
- package/dist/main/common/user-actions.js +2 -2
- package/dist/main/common/user-actions.js.map +1 -1
- package/dist/main/config-lib.d.ts +12 -3
- package/dist/main/config-lib.js +61 -44
- package/dist/main/config-lib.js.map +1 -1
- package/dist/main/config-schema.d.ts +2 -1
- package/dist/main/config-schema.js +153 -19
- package/dist/main/config-schema.js.map +1 -1
- package/dist/main/config-types.d.ts +43 -16
- package/dist/main/config-types.js +3 -1
- package/dist/main/config-types.js.map +1 -1
- package/dist/main/config.d.ts +8 -2
- package/dist/main/config.js +59 -11
- package/dist/main/config.js.map +1 -1
- package/dist/main/plugin-loader.d.ts +1 -0
- package/dist/main/plugin-loader.js +28 -6
- package/dist/main/plugin-loader.js.map +1 -1
- package/dist/main/ui/backend/api.js +2 -0
- package/dist/main/ui/backend/api.js.map +1 -1
- package/dist/main/ui/backend/endpoints/config-endpoint.js +12 -0
- package/dist/main/ui/backend/endpoints/config-endpoint.js.map +1 -1
- package/dist/main/ui/backend/endpoints/question-endpoint.js +5 -4
- package/dist/main/ui/backend/endpoints/question-endpoint.js.map +1 -1
- package/dist/main/ui/backend/service.d.ts +3 -1
- package/dist/main/ui/backend/service.js +4 -3
- package/dist/main/ui/backend/service.js.map +1 -1
- package/dist/main/ui/common/api-types.d.ts +1 -0
- package/dist/main/ui/common/api-types.js.map +1 -1
- package/dist/main/ui/frontend/assets/{index-BbIYZZub.js → index-C2MB0Z2i.js} +290 -260
- package/dist/main/ui/frontend/index.html +1 -1
- package/dist/main/ui/user-action-handlers.js +3 -1
- package/dist/main/ui/user-action-handlers.js.map +1 -1
- package/dist/prompt/function-calling-validate.js +1 -0
- package/dist/prompt/function-calling-validate.js.map +1 -1
- package/dist/prompt/function-calling.js +7 -4
- package/dist/prompt/function-calling.js.map +1 -1
- package/dist/prompt/function-defs/ask-question.d.ts +2 -2
- package/dist/prompt/function-defs/ask-question.js +60 -52
- package/dist/prompt/function-defs/ask-question.js.map +1 -1
- package/dist/prompt/function-defs/conversation-graph.d.ts +1 -1
- package/dist/prompt/function-defs/conversation-graph.js +4 -4
- package/dist/prompt/function-defs/conversation-graph.js.map +1 -1
- package/dist/prompt/function-defs/run-bash-command.d.ts +2 -0
- package/dist/prompt/function-defs/run-bash-command.js +29 -0
- package/dist/prompt/function-defs/run-bash-command.js.map +1 -0
- package/dist/prompt/function-defs/run-project-command.d.ts +2 -0
- package/dist/prompt/function-defs/run-project-command.js +37 -0
- package/dist/prompt/function-defs/run-project-command.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-lint.d.ts +2 -2
- package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js +31 -69
- package/dist/prompt/steps/step-ask-question/handlers/handle-lint.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-project-command.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-project-command.js +282 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-project-command.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.d.ts +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js +70 -3
- package/dist/prompt/steps/step-ask-question/handlers/handle-request-git-context.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-run-bash-command.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-run-bash-command.js +185 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-run-bash-command.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +2 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +31 -12
- package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +16 -2
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/systemprompt.js +2 -2
- package/package.json +4 -3
|
@@ -14,14 +14,46 @@ export const GENAICODERC_SCHEMA = {
|
|
|
14
14
|
properties: {
|
|
15
15
|
rootDir: {
|
|
16
16
|
type: 'string',
|
|
17
|
-
description: `Root directory of the project. All file paths will be relative to this directory.
|
|
18
|
-
Default value is '.'.
|
|
19
|
-
Examples: '.', 'src', './project'`,
|
|
17
|
+
description: `Root directory of the project. All file paths will be relative to this directory.\\nDefault value is '.'.\\nExamples: '.', 'src', './project'`,
|
|
20
18
|
},
|
|
21
19
|
lintCommand: {
|
|
22
20
|
type: 'string',
|
|
23
|
-
description: `Command to run for linting the code
|
|
24
|
-
|
|
21
|
+
description: `Command to run for linting the code. Deprecated in favor of 'projectCommands.lint', but kept for backward compatibility. The command should return appropriate exit codes for success/failure.\\nExamples: 'npm run lint', 'eslint .', 'npm run type-check && npm run lint'`,
|
|
22
|
+
},
|
|
23
|
+
projectCommands: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
description: 'A map of named project-specific commands that can be executed by the AI, such as tests, builds, or formatters.',
|
|
26
|
+
additionalProperties: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
command: { type: 'string', description: 'The command string to execute. Can include shell operators.' },
|
|
30
|
+
description: { type: 'string', description: 'A brief description of what the command does.' },
|
|
31
|
+
defaultArgs: {
|
|
32
|
+
type: 'array',
|
|
33
|
+
items: { type: 'string' },
|
|
34
|
+
description: 'Default arguments to pass to the command.',
|
|
35
|
+
},
|
|
36
|
+
env: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
additionalProperties: { type: 'string' },
|
|
39
|
+
description: 'Environment variables to set for the command execution.',
|
|
40
|
+
},
|
|
41
|
+
workingDir: {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'The working directory to run the command in. Defaults to rootDir.',
|
|
44
|
+
},
|
|
45
|
+
aliases: { type: 'array', items: { type: 'string' }, description: 'Optional aliases for the command name.' },
|
|
46
|
+
autoApprove: {
|
|
47
|
+
type: ['boolean', 'string'],
|
|
48
|
+
description: `Determines if the command should be executed without user confirmation.
|
|
49
|
+
- If 'true', the command is always executed without a prompt.
|
|
50
|
+
- If a 'string', it's a natural language condition evaluated by the AI against the command's context (name, arguments, etc.). If the AI determines the condition is met, the command runs without a prompt.
|
|
51
|
+
- If 'false' or not provided, the user will always be prompted for confirmation.`,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
required: ['command'],
|
|
55
|
+
additionalProperties: false,
|
|
56
|
+
},
|
|
25
57
|
},
|
|
26
58
|
extensions: {
|
|
27
59
|
type: 'array',
|
|
@@ -29,16 +61,14 @@ Examples: 'npm run lint', 'eslint .', 'npm run type-check && npm run lint'`,
|
|
|
29
61
|
type: 'string',
|
|
30
62
|
pattern: '^\\.[a-z0-9\\.]+$',
|
|
31
63
|
},
|
|
32
|
-
description: `File extensions that the tool should consider for code generation and analysis.
|
|
33
|
-
Examples: ['.js', '.ts', '.tsx', '.md'], ['.py', '.go', '.java'], ['.c', '.h', '.cpp']`,
|
|
64
|
+
description: `File extensions that the tool should consider for code generation and analysis.\\nExamples: ['.js', '.ts', '.tsx', '.md'], ['.py', '.go', '.java'], ['.c', '.h', '.cpp']`,
|
|
34
65
|
},
|
|
35
66
|
ignorePaths: {
|
|
36
67
|
type: 'array',
|
|
37
68
|
items: {
|
|
38
69
|
type: 'string',
|
|
39
70
|
},
|
|
40
|
-
description: `Directories and files that should be excluded from code analysis and generation:
|
|
41
|
-
Examples: ['node_modules', 'dist', 'build'], ['coverage', '.vscode', '.github']`,
|
|
71
|
+
description: `Directories and files that should be excluded from code analysis and generation:\\nExamples: ['node_modules', 'dist', 'build'], ['coverage', '.vscode', '.github']`,
|
|
42
72
|
},
|
|
43
73
|
popularDependencies: {
|
|
44
74
|
type: 'object',
|
|
@@ -84,8 +114,7 @@ Examples: ['node_modules', 'dist', 'build'], ['coverage', '.vscode', '.github']`
|
|
|
84
114
|
properties: {
|
|
85
115
|
cheap: {
|
|
86
116
|
type: 'string',
|
|
87
|
-
description: `Model to use when cheap flag is enabled for OpenAI compatible service
|
|
88
|
-
Example: ['gpt-4o-mini']`,
|
|
117
|
+
description: `Model to use when cheap flag is enabled for OpenAI compatible service.\\nExample: ['gpt-4o-mini']`,
|
|
89
118
|
},
|
|
90
119
|
default: {
|
|
91
120
|
type: 'string',
|
|
@@ -93,7 +122,7 @@ Example: ['gpt-4o-mini']`,
|
|
|
93
122
|
},
|
|
94
123
|
outputTokenLimit: {
|
|
95
124
|
type: 'number',
|
|
96
|
-
description: `Maximum number of tokens to generate in the output for OpenAI compatible service
|
|
125
|
+
description: `Maximum number of tokens to generate in the output for OpenAI compatible service.\\nDefaults vary by service (e.g., 8192).`,
|
|
97
126
|
},
|
|
98
127
|
},
|
|
99
128
|
},
|
|
@@ -110,7 +139,7 @@ Example: ['gpt-4o-mini']`,
|
|
|
110
139
|
},
|
|
111
140
|
outputTokenLimit: {
|
|
112
141
|
type: 'number',
|
|
113
|
-
description: `Maximum number of tokens to generate in the output for Anthropic service
|
|
142
|
+
description: `Maximum number of tokens to generate in the output for Anthropic service.\\nDefaults vary by service (e.g., 8192).`,
|
|
114
143
|
},
|
|
115
144
|
},
|
|
116
145
|
},
|
|
@@ -129,7 +158,7 @@ Example: ['gpt-4o-mini']`,
|
|
|
129
158
|
},
|
|
130
159
|
outputTokenLimit: {
|
|
131
160
|
type: 'number',
|
|
132
|
-
description: `Maximum number of tokens to generate in the output for Vertex AI service
|
|
161
|
+
description: `Maximum number of tokens to generate in the output for Vertex AI service.\\nDefaults vary by service (e.g., 8192).`,
|
|
133
162
|
},
|
|
134
163
|
aiStudio: {
|
|
135
164
|
type: 'object',
|
|
@@ -144,7 +173,7 @@ Example: ['gpt-4o-mini']`,
|
|
|
144
173
|
},
|
|
145
174
|
outputTokenLimit: {
|
|
146
175
|
type: 'number',
|
|
147
|
-
description: `Maximum number of tokens to generate in the output for AI Studio service
|
|
176
|
+
description: `Maximum number of tokens to generate in the output for AI Studio service.\\nDefaults vary by service (e.g., 8192).`,
|
|
148
177
|
},
|
|
149
178
|
},
|
|
150
179
|
},
|
|
@@ -152,11 +181,116 @@ Example: ['gpt-4o-mini']`,
|
|
|
152
181
|
},
|
|
153
182
|
plugins: {
|
|
154
183
|
type: 'array',
|
|
184
|
+
description: 'Plugins to load. Each item can be a string path to a plugin module or an inline object. Inline plugin objects are supported only in JavaScript/TypeScript config files (genaicode.config.{js,ts,mjs,mts}). For .genaicoderc (JSON), use string paths.',
|
|
155
185
|
items: {
|
|
156
|
-
|
|
186
|
+
oneOf: [
|
|
187
|
+
{
|
|
188
|
+
type: 'string',
|
|
189
|
+
description: 'A file path to a plugin module (e.g., "./plugins/my-plugin.js").',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'object',
|
|
193
|
+
description: 'Inline plugin object (JS/TS config only). Resembles the Plugin type.',
|
|
194
|
+
properties: {
|
|
195
|
+
name: { type: 'string', description: 'Plugin name.' },
|
|
196
|
+
aiServices: {
|
|
197
|
+
type: 'object',
|
|
198
|
+
description: 'Map of AI services exposed by the plugin.',
|
|
199
|
+
additionalProperties: {
|
|
200
|
+
type: 'object',
|
|
201
|
+
properties: {
|
|
202
|
+
generateContent: {
|
|
203
|
+
description: 'Function (JS/TS only): generateContent(prompt, config, options) => Promise<GenerateContentResult>',
|
|
204
|
+
},
|
|
205
|
+
serviceConfig: {
|
|
206
|
+
type: 'object',
|
|
207
|
+
description: 'Service configuration object.',
|
|
208
|
+
additionalProperties: true,
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
required: ['serviceConfig'],
|
|
212
|
+
additionalProperties: false,
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
operations: {
|
|
216
|
+
type: 'object',
|
|
217
|
+
description: 'Map of operations contributed by the plugin.',
|
|
218
|
+
additionalProperties: {
|
|
219
|
+
type: 'object',
|
|
220
|
+
properties: {
|
|
221
|
+
executor: { description: 'Function (JS/TS only): executor(args, options) => Promise<void>' },
|
|
222
|
+
def: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
description: 'Function definition describing the operation.',
|
|
225
|
+
properties: {
|
|
226
|
+
name: { type: 'string' },
|
|
227
|
+
description: { type: 'string' },
|
|
228
|
+
parameters: {
|
|
229
|
+
type: 'object',
|
|
230
|
+
description: 'JSON schema-like parameters definition.',
|
|
231
|
+
properties: {
|
|
232
|
+
type: { type: 'string', enum: ['object'] },
|
|
233
|
+
properties: { type: 'object', additionalProperties: true },
|
|
234
|
+
required: { type: 'array', items: { type: 'string' } },
|
|
235
|
+
},
|
|
236
|
+
required: ['type', 'properties', 'required'],
|
|
237
|
+
additionalProperties: false,
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
required: ['name', 'description', 'parameters'],
|
|
241
|
+
additionalProperties: false,
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
required: ['def'],
|
|
245
|
+
additionalProperties: false,
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
actionHandlers: {
|
|
249
|
+
type: 'object',
|
|
250
|
+
description: 'Map of action handlers added by the plugin.',
|
|
251
|
+
additionalProperties: {
|
|
252
|
+
type: 'object',
|
|
253
|
+
properties: {
|
|
254
|
+
handler: { description: 'Function (JS/TS only): handler(...)' },
|
|
255
|
+
description: { type: 'string' },
|
|
256
|
+
},
|
|
257
|
+
required: ['description'],
|
|
258
|
+
additionalProperties: false,
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
generateContentHook: {
|
|
262
|
+
description: 'Function (JS/TS only): hook executed on each generateContent call.',
|
|
263
|
+
},
|
|
264
|
+
planningPreHook: {
|
|
265
|
+
description: 'Function (JS/TS only): hook to modify the planning prompt before execution.',
|
|
266
|
+
},
|
|
267
|
+
planningPostHook: {
|
|
268
|
+
description: 'Function (JS/TS only): hook to post-process the planning result.',
|
|
269
|
+
},
|
|
270
|
+
profiles: {
|
|
271
|
+
type: 'array',
|
|
272
|
+
description: 'Project profiles contributed by the plugin (optional).',
|
|
273
|
+
items: {
|
|
274
|
+
type: 'object',
|
|
275
|
+
properties: {
|
|
276
|
+
id: { type: 'string' },
|
|
277
|
+
name: { type: 'string' },
|
|
278
|
+
extensions: { type: 'array', items: { type: 'string' } },
|
|
279
|
+
ignorePaths: { type: 'array', items: { type: 'string' } },
|
|
280
|
+
detectionWeight: { type: 'number' },
|
|
281
|
+
detect: { description: 'Function (JS/TS only): async detect(rootDir) => Promise<boolean>' },
|
|
282
|
+
initialize: { description: 'Function (JS/TS only): async initialize(rootDir) => Promise<void>' },
|
|
283
|
+
},
|
|
284
|
+
required: ['id', 'name', 'extensions', 'ignorePaths', 'detectionWeight'],
|
|
285
|
+
additionalProperties: false,
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
additionalProperties: false,
|
|
290
|
+
required: ['name'],
|
|
291
|
+
},
|
|
292
|
+
],
|
|
157
293
|
},
|
|
158
|
-
description: `Paths to plugin files that should be loaded by GenAIcode. Plugins can extend functionality by adding custom operations, AI services, or action handlers.
|
|
159
|
-
Example: ['./plugins/custom-plugin.js', './examples/genaicode_plugins/genaicode_tracker.js', './examples/genaicode_plugins/nonsense_operation.js']`,
|
|
160
294
|
},
|
|
161
295
|
featuresEnabled: {
|
|
162
296
|
type: 'object',
|
|
@@ -180,7 +314,7 @@ export function validateRcConfig(rcConfig) {
|
|
|
180
314
|
const validator = new Validator();
|
|
181
315
|
const result = validator.validate(rcConfig, GENAICODERC_SCHEMA);
|
|
182
316
|
if (!result.valid) {
|
|
183
|
-
throw new Error(`Invalid .genaicoderc configuration: ${result.errors.map((e) => e.stack).join('
|
|
317
|
+
throw new Error(`Invalid .genaicoderc configuration: ${result.errors.map((e) => e.stack).join('\\n')}`);
|
|
184
318
|
}
|
|
185
319
|
}
|
|
186
320
|
//# sourceMappingURL=config-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/main/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/main/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,9 @@
|
|
|
1
|
+
import { ModelSpecificSettings } from '../ai-service/service-configurations-types.js';
|
|
2
|
+
import { Plugin } from './codegen-types.js';
|
|
1
3
|
export interface ImportantContext {
|
|
2
4
|
systemPrompt?: string[];
|
|
3
5
|
files?: string[];
|
|
4
6
|
}
|
|
5
|
-
/**
|
|
6
|
-
* Configuration for specific model settings within a service.
|
|
7
|
-
*/
|
|
8
|
-
export interface ModelSpecificSettings {
|
|
9
|
-
/** System instructions specific to this model */
|
|
10
|
-
systemInstruction?: string[];
|
|
11
|
-
/** Maximum number of tokens to generate in the output specific to this model */
|
|
12
|
-
outputTokenLimit?: number;
|
|
13
|
-
/** Whether the model should use 'thinking' mode if available */
|
|
14
|
-
thinkingEnabled?: boolean;
|
|
15
|
-
/** The token budget for 'thinking' mode */
|
|
16
|
-
thinkingBudget?: number;
|
|
17
|
-
/** Temperature unsupported */
|
|
18
|
-
temperatureUnsupported?: boolean;
|
|
19
|
-
}
|
|
20
7
|
/**
|
|
21
8
|
* Model configuration for each supported AI service
|
|
22
9
|
* Each service can have different model types:
|
|
@@ -47,6 +34,30 @@ export interface ModelOverrides {
|
|
|
47
34
|
localLlm?: ServiceModelConfig;
|
|
48
35
|
githubModels?: ServiceModelConfig;
|
|
49
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Defines a project-specific command that can be executed by the AI.
|
|
39
|
+
*/
|
|
40
|
+
export interface ProjectCommand {
|
|
41
|
+
/** The command string to execute. Can include shell operators. */
|
|
42
|
+
command: string;
|
|
43
|
+
/** A brief description of what the command does. */
|
|
44
|
+
description?: string;
|
|
45
|
+
/** Default arguments to pass to the command. */
|
|
46
|
+
defaultArgs?: string[];
|
|
47
|
+
/** Environment variables to set for the command execution. */
|
|
48
|
+
env?: Record<string, string>;
|
|
49
|
+
/** The working directory to run the command in. Defaults to rootDir. */
|
|
50
|
+
workingDir?: string;
|
|
51
|
+
/** Optional aliases for the command name. */
|
|
52
|
+
aliases?: string[];
|
|
53
|
+
/**
|
|
54
|
+
* Determines if the command should be executed without user confirmation.
|
|
55
|
+
* - If `true`, the command is always executed.
|
|
56
|
+
* - If a `string`, it's a natural language condition evaluated by the AI.
|
|
57
|
+
* If the condition is met, the command is executed without a prompt.
|
|
58
|
+
*/
|
|
59
|
+
autoApprove?: boolean | string;
|
|
60
|
+
}
|
|
50
61
|
/**
|
|
51
62
|
* Configuration for the project codegen
|
|
52
63
|
*
|
|
@@ -63,10 +74,26 @@ export interface RcConfig {
|
|
|
63
74
|
};
|
|
64
75
|
importantContext?: ImportantContext;
|
|
65
76
|
modelOverrides?: ModelOverrides;
|
|
66
|
-
|
|
77
|
+
/**
|
|
78
|
+
* An array of plugins to load. Each item can be:
|
|
79
|
+
* - A `string` representing a file path to a plugin.
|
|
80
|
+
* - A `PluginSpec` object for importing a plugin from a module.
|
|
81
|
+
* - An inline `Plugin` object (only in JS/TS config files).
|
|
82
|
+
*/
|
|
83
|
+
plugins?: (string | Plugin)[];
|
|
84
|
+
/**
|
|
85
|
+
* A map of named project-specific commands that can be executed.
|
|
86
|
+
* @example
|
|
87
|
+
* "projectCommands": {
|
|
88
|
+
* "test": { "command": "npm run test", "description": "Run unit tests" },
|
|
89
|
+
* "lint:fix": { "command": "npm run lint -- --fix" }
|
|
90
|
+
* }
|
|
91
|
+
*/
|
|
92
|
+
projectCommands?: Record<string, ProjectCommand>;
|
|
67
93
|
featuresEnabled?: {
|
|
68
94
|
appContext?: boolean;
|
|
69
95
|
gitContext?: boolean;
|
|
70
96
|
containerTask?: boolean;
|
|
71
97
|
};
|
|
72
98
|
}
|
|
99
|
+
export declare function defineConfig(config: RcConfig): RcConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-types.js","sourceRoot":"","sources":["../../src/main/config-types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"config-types.js","sourceRoot":"","sources":["../../src/main/config-types.ts"],"names":[],"mappings":"AAwGA,MAAM,UAAU,YAAY,CAAC,MAAgB;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/main/config.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ImportantContext, ModelOverrides, ProjectCommand } from './config-types.js';
|
|
2
|
+
declare const rcConfig: import("./config-types.js").RcConfig, configFilePath: string;
|
|
3
3
|
export declare const rcConfigSchemaFilePath: string;
|
|
4
4
|
export declare const sourceExtensions: string[];
|
|
5
5
|
export declare const IMAGE_ASSET_EXTENSIONS: string[];
|
|
6
6
|
export declare const ignorePaths: string[];
|
|
7
7
|
export declare const importantContext: ImportantContext;
|
|
8
8
|
export declare const modelOverrides: ModelOverrides;
|
|
9
|
+
type ResolvedProjectCommand = ProjectCommand & {
|
|
10
|
+
name: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const getProjectCommands: () => Map<string, ResolvedProjectCommand>;
|
|
13
|
+
export declare const getProjectCommand: (name: string) => ResolvedProjectCommand | undefined;
|
|
14
|
+
export { rcConfig, configFilePath };
|
package/dist/main/config.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
1
2
|
import path from 'path';
|
|
2
3
|
import simpleGit from 'simple-git';
|
|
3
|
-
import {
|
|
4
|
+
import { loadConfiguration } from './config-lib.js';
|
|
4
5
|
import { loadPlugins } from './plugin-loader.js';
|
|
5
6
|
import { DEFAULT_EXTENSIONS, DEFAULT_IGNORE_PATHS } from '../project-profiles/index.js';
|
|
6
7
|
import { SCHEMA_VIRTUAL_FILE_NAME } from './config-schema.js';
|
|
7
8
|
import { checkDockerAvailability } from '../prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js';
|
|
8
9
|
// Read and parse the configuration
|
|
9
|
-
const
|
|
10
|
-
export const rcConfig = parseRcFile(rcFilePath);
|
|
10
|
+
const { rcConfig, configFilePath } = await loadConfiguration();
|
|
11
11
|
// Initialize popularDependencies with defaults if not present
|
|
12
12
|
if (rcConfig.popularDependencies === undefined) {
|
|
13
13
|
rcConfig.popularDependencies = { enabled: true, threshold: 20 };
|
|
@@ -38,25 +38,73 @@ export const sourceExtensions = rcConfig.extensions ?? [...DEFAULT_EXTENSIONS.JS
|
|
|
38
38
|
// Image extensions (driven by ai service limitations, so not configurable)
|
|
39
39
|
export const IMAGE_ASSET_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp'];
|
|
40
40
|
export const ignorePaths = rcConfig.ignorePaths ?? [...DEFAULT_IGNORE_PATHS.JS];
|
|
41
|
-
export const importantContext = processImportantContext(rcConfig.importantContext);
|
|
41
|
+
export const importantContext = processImportantContext(rcConfig.importantContext, configFilePath);
|
|
42
42
|
// modelOverrides is directly assigned. Downstream code in service-configurations.ts handles the structure.
|
|
43
43
|
export const modelOverrides = rcConfig.modelOverrides ?? {};
|
|
44
|
-
|
|
44
|
+
const projectCommandsMap = new Map();
|
|
45
|
+
// 1. Populate from rcConfig.projectCommands
|
|
46
|
+
if (rcConfig.projectCommands) {
|
|
47
|
+
for (const [name, command] of Object.entries(rcConfig.projectCommands)) {
|
|
48
|
+
const resolvedCommand = { ...command, name };
|
|
49
|
+
projectCommandsMap.set(name, resolvedCommand);
|
|
50
|
+
// Add aliases
|
|
51
|
+
if (command.aliases) {
|
|
52
|
+
for (const alias of command.aliases) {
|
|
53
|
+
projectCommandsMap.set(alias, resolvedCommand);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// 2. Synthesize from legacy lintCommand for backward compatibility
|
|
59
|
+
if (rcConfig.lintCommand && !projectCommandsMap.has('lint')) {
|
|
60
|
+
projectCommandsMap.set('lint', {
|
|
61
|
+
name: 'lint',
|
|
62
|
+
command: rcConfig.lintCommand,
|
|
63
|
+
description: 'Legacy lint command (from lintCommand)',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// 3. Auto-discover from package.json scripts
|
|
67
|
+
try {
|
|
68
|
+
const packageJsonPath = path.join(rcConfig.rootDir, 'package.json');
|
|
69
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
70
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
71
|
+
if (packageJson.scripts) {
|
|
72
|
+
for (const scriptName in packageJson.scripts) {
|
|
73
|
+
if (!projectCommandsMap.has(scriptName)) {
|
|
74
|
+
projectCommandsMap.set(scriptName, {
|
|
75
|
+
name: scriptName,
|
|
76
|
+
command: `npm run ${scriptName}`,
|
|
77
|
+
description: `package.json script: ${scriptName}`,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.warn('Could not read or parse package.json for script discovery:', error);
|
|
86
|
+
}
|
|
87
|
+
export const getProjectCommands = () => projectCommandsMap;
|
|
88
|
+
export const getProjectCommand = (name) => projectCommandsMap.get(name);
|
|
89
|
+
function processImportantContext(context, configFilePath) {
|
|
45
90
|
if (!context) {
|
|
46
|
-
return { systemPrompt: [], files: [] };
|
|
91
|
+
return { systemPrompt: [], files: [configFilePath] };
|
|
47
92
|
}
|
|
48
|
-
//
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
93
|
+
// Resolve user-defined important files relative to the rootDir
|
|
94
|
+
const resolvedUserFiles = (context.files || []).map((file) => path.resolve(rcConfig.rootDir, file));
|
|
95
|
+
// Ensure the absolute path to the config file is included
|
|
96
|
+
if (!resolvedUserFiles.includes(configFilePath)) {
|
|
97
|
+
resolvedUserFiles.push(configFilePath);
|
|
52
98
|
}
|
|
53
99
|
return {
|
|
54
100
|
systemPrompt: context.systemPrompt || [],
|
|
55
|
-
files:
|
|
101
|
+
files: resolvedUserFiles,
|
|
56
102
|
};
|
|
57
103
|
}
|
|
58
104
|
console.log('Detected codegen configuration', rcConfig);
|
|
59
105
|
console.log('Root dir:', rcConfig.rootDir);
|
|
60
106
|
console.log('Important context:', importantContext);
|
|
61
107
|
console.log('Model overrides:', modelOverrides);
|
|
108
|
+
console.log('Project commands:', projectCommandsMap);
|
|
109
|
+
export { rcConfig, configFilePath };
|
|
62
110
|
//# sourceMappingURL=config.js.map
|
package/dist/main/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { ServiceConfig } from '../ai-service/service-configurations-types.js';
|
|
|
10
10
|
* @throws {Error} If plugin registration fails
|
|
11
11
|
*/
|
|
12
12
|
export declare function registerPlugin(plugin: Plugin, pluginPath?: string): Promise<void>;
|
|
13
|
+
export declare function isPluginObject(entry: unknown): entry is Plugin;
|
|
13
14
|
/**
|
|
14
15
|
* Loads plugins from configuration with idempotency checks
|
|
15
16
|
*/
|
|
@@ -137,6 +137,9 @@ export async function registerPlugin(plugin, pluginPath) {
|
|
|
137
137
|
throw new Error(`${errorMessage}: ${error instanceof Error ? error.message : String(error)}`);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
+
export function isPluginObject(entry) {
|
|
141
|
+
return !!entry && typeof entry === 'object' && 'name' in entry;
|
|
142
|
+
}
|
|
140
143
|
/**
|
|
141
144
|
* Loads plugins from configuration with idempotency checks
|
|
142
145
|
*/
|
|
@@ -145,15 +148,34 @@ export async function loadPlugins(rcConfig) {
|
|
|
145
148
|
console.log('No plugins specified in the configuration.');
|
|
146
149
|
return;
|
|
147
150
|
}
|
|
148
|
-
for (
|
|
151
|
+
for (const item of rcConfig.plugins) {
|
|
149
152
|
try {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
153
|
+
// Case 1: string path/module
|
|
154
|
+
if (typeof item === 'string') {
|
|
155
|
+
let pluginPath = item;
|
|
156
|
+
// Resolve relative paths against project root
|
|
157
|
+
if (!path.isAbsolute(pluginPath) && (pluginPath.startsWith('./') || pluginPath.startsWith('../'))) {
|
|
158
|
+
pluginPath = path.join(rcConfig.rootDir, pluginPath);
|
|
159
|
+
}
|
|
160
|
+
console.log('Loading plugin:', pluginPath);
|
|
161
|
+
const mod = await import(pluginPath);
|
|
162
|
+
const plugin = (mod?.default ?? mod);
|
|
163
|
+
await registerPlugin(plugin, pluginPath);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// Case 2: direct inline plugin object
|
|
167
|
+
if (isPluginObject(item)) {
|
|
168
|
+
console.log('Registering inline plugin (direct object):', item.name ?? '<unnamed>');
|
|
169
|
+
await registerPlugin(item, '<inline-plugin>');
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// Unknown entry type
|
|
173
|
+
console.error('Unsupported plugin entry format:', item);
|
|
174
|
+
throw new Error('Unsupported plugin entry in configuration.');
|
|
154
175
|
}
|
|
155
176
|
catch (error) {
|
|
156
|
-
console.error(
|
|
177
|
+
console.error('Failed to load plugin entry:', item);
|
|
178
|
+
console.error(error);
|
|
157
179
|
throw error; // Re-throw to handle the error at a higher level
|
|
158
180
|
}
|
|
159
181
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/main/plugin-loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/main/plugin-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ export function createRouter(service) {
|
|
|
14
14
|
}
|
|
15
15
|
next();
|
|
16
16
|
});
|
|
17
|
+
// Middleware to parse JSON bodies, needed for answer-question with actionType
|
|
18
|
+
router.use(express.json());
|
|
17
19
|
// Register all endpoints
|
|
18
20
|
for (const handler of handlers) {
|
|
19
21
|
handler(router, service);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/main/ui/backend/api.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,sBAAsB,CAAC;AAE9B,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEhC,kDAAkD;IAClD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/main/ui/backend/api.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,sBAAsB,CAAC;AAE9B,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEhC,kDAAkD;IAClD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3B,yBAAyB;IACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|