genaicode 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/cli-params.d.ts +1 -1
- package/dist/cli/cli-params.js +1 -1
- package/dist/cli/cli-params.js.map +1 -1
- package/dist/eval/codegen-summary.test.js +3 -1
- package/dist/eval/codegen-summary.test.js.map +1 -1
- package/dist/eval/data/current-prompt.d.ts +0 -17
- package/dist/eval/data/current-prompt.js +23 -23
- package/dist/eval/data/current-prompt.js.map +1 -1
- package/dist/eval/prompt-debug.test.js +6 -1
- package/dist/eval/prompt-debug.test.js.map +1 -1
- package/dist/files/read-files.d.ts +27 -4
- package/dist/files/read-files.js +20 -5
- package/dist/files/read-files.js.map +1 -1
- package/dist/files/read-files.test.js +4 -4
- package/dist/files/read-files.test.js.map +1 -1
- package/dist/files/source-code-tree.d.ts +11 -6
- package/dist/files/source-code-tree.js +45 -2
- package/dist/files/source-code-tree.js.map +1 -1
- package/dist/main/codegen-types.d.ts +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.test.js +1 -1
- package/dist/main/interactive/codegen-interactive.test.js.map +1 -1
- package/dist/main/plugin-loader.d.ts +5 -0
- package/dist/main/plugin-loader.js +53 -0
- package/dist/main/plugin-loader.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/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-defs/set-summaries.js +20 -1
- package/dist/prompt/function-defs/set-summaries.js.map +1 -1
- package/dist/prompt/prompt-codegen.test.js +5 -4
- package/dist/prompt/prompt-codegen.test.js.map +1 -1
- package/dist/prompt/prompt-service-ask-question.test.js +2 -0
- package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
- package/dist/prompt/prompt-service.js +13 -106
- package/dist/prompt/prompt-service.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js +0 -2
- 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.js +1 -3
- 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 +0 -2
- 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 +0 -2
- package/dist/prompt/steps/step-ask-question/handlers/default-action.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js +0 -6
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +0 -2
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +0 -3
- 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.js +2 -5
- 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.js +0 -3
- package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +4 -3
- package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -3
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +20 -6
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/steps/step-codegen-planning.js +1 -1
- package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
- 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 +159 -71
- package/dist/prompt/steps/step-context-optimization.js.map +1 -1
- package/dist/prompt/steps/step-context-optimization.test.js +24 -5
- package/dist/prompt/steps/step-context-optimization.test.js.map +1 -1
- 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-summarization.d.ts +2 -1
- package/dist/prompt/steps/step-summarization.js +44 -11
- package/dist/prompt/steps/step-summarization.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.test.js +2 -2
- package/dist/prompt/systemprompt.test.js.map +1 -1
- package/package.json +6 -2
- package/dist/main/ui/frontend/assets/index-5e3ykhy6.js +0 -808
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-prompt.js","sourceRoot":"","sources":["../../../src/eval/data/current-prompt.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC;QACE,MAAM,EAAE,cAAc;QACtB,cAAc,EAAE,k1KAAk1K;KACn2K;IACD;QACE,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,mBAAmB;KAC5B;IACD;QACE,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,+QAA+Q;QACvR,eAAe,EAAE;YACf;gBACE,MAAM,EAAE,eAAe;aACxB;YACD;gBACE,MAAM,EAAE,gBAAgB;aACzB;YACD;gBACE,MAAM,EAAE,aAAa;aACtB;SACF;KACF;IACD;QACE,MAAM,EAAE,MAAM;QACd,mBAAmB,EAAE;YACnB;gBACE,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"current-prompt.js","sourceRoot":"","sources":["../../../src/eval/data/current-prompt.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC;QACE,MAAM,EAAE,cAAc;QACtB,cAAc,EAAE,k1KAAk1K;KACn2K;IACD;QACE,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,mBAAmB;KAC5B;IACD;QACE,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,+QAA+Q;QACvR,eAAe,EAAE;YACf;gBACE,MAAM,EAAE,eAAe;aACxB;YACD;gBACE,MAAM,EAAE,gBAAgB;aACzB;YACD;gBACE,MAAM,EAAE,aAAa;aACtB;SACF;KACF;IACD;QACE,MAAM,EAAE,MAAM;QACd,mBAAmB,EAAE;YACnB;gBACE,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,oqbAAoqb;aAChrb;YACD;gBACE,MAAM,EAAE,gBAAgB;gBACxB,SAAS,EAAE,mWAAmW;aAC/W;YACD;gBACE,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,g9BAAg9B;aAC59B;SACF;QACD,MAAM,EAAE,2EAA2E;QACnF,OAAO,EAAE,IAAI;KACd;IACD;QACE,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,uDAAuD;KAChE;IACD;QACE,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,OAAO;KAChB;IACD;QACE,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE;YACf;gBACE,MAAM,EAAE,qBAAqB;gBAC7B,MAAM,EAAE;oBACN,WAAW,EAAE;wBACX,yEAAyE;wBACzE,kEAAkE;wBAClE,2DAA2D;wBAC3D,uDAAuD;wBACvD,0DAA0D;wBAC1D,gFAAgF;wBAChF,2EAA2E;wBAC3E,6DAA6D;wBAC7D,2DAA2D;qBAC5D;iBACF;aACF;YACD;gBACE,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE;oBACN,WAAW,EAAE;wBACX,yEAAyE;wBACzE,kEAAkE;wBAClE,2DAA2D;wBAC3D,uDAAuD;wBACvD,0DAA0D;wBAC1D,gFAAgF;wBAChF,2EAA2E;wBAC3E,6DAA6D;wBAC7D,2DAA2D;qBAC5D;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,MAAM;QACd,mBAAmB,EAAE;YACnB;gBACE,MAAM,EAAE,qBAAqB;gBAC7B,SAAS,EAAE,wnBAAwnB;aACpoB;YACD;gBACE,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,g0hDAAg0hD;aAC50hD;SACF;QACD,OAAO,EAAE,IAAI;KACd;CACF,CAAC"}
|
|
@@ -17,6 +17,7 @@ describe('prompt-debug', () => {
|
|
|
17
17
|
it('Gemini Flash', async () => {
|
|
18
18
|
const geminiArgs = (await generateContentGemini(prompt, getFunctionDefs(), requiredFunctionName, temperature, true, {
|
|
19
19
|
aiService: 'vertex-ai',
|
|
20
|
+
askQuestion: false,
|
|
20
21
|
}))[0].args;
|
|
21
22
|
console.log('GEMINI', JSON.stringify(geminiArgs, null, 4));
|
|
22
23
|
});
|
|
@@ -28,12 +29,13 @@ describe('prompt-debug', () => {
|
|
|
28
29
|
{
|
|
29
30
|
aiService: 'chat-gpt',
|
|
30
31
|
disableCache: false,
|
|
32
|
+
askQuestion: false,
|
|
31
33
|
},
|
|
32
34
|
], result, generateContentGPT);
|
|
33
35
|
console.log('GPT', JSON.stringify(result, null, 4));
|
|
34
36
|
});
|
|
35
37
|
it('Claude Haikku', async () => {
|
|
36
|
-
const defs = getFunctionDefs();
|
|
38
|
+
const defs = getFunctionDefs(); //.filter((fd) => fd.name === 'askQuestion');
|
|
37
39
|
const req = [
|
|
38
40
|
prompt,
|
|
39
41
|
defs,
|
|
@@ -43,6 +45,7 @@ describe('prompt-debug', () => {
|
|
|
43
45
|
{
|
|
44
46
|
aiService: 'anthropic',
|
|
45
47
|
disableCache: false,
|
|
48
|
+
askQuestion: false,
|
|
46
49
|
},
|
|
47
50
|
];
|
|
48
51
|
let result = await generateContentClaude(...req);
|
|
@@ -52,6 +55,7 @@ describe('prompt-debug', () => {
|
|
|
52
55
|
it('Gemini Pro', async () => {
|
|
53
56
|
const geminiArgs = (await generateContentGemini(prompt, getFunctionDefs(), requiredFunctionName, temperature, false, {
|
|
54
57
|
aiService: 'vertex-ai',
|
|
58
|
+
askQuestion: false,
|
|
55
59
|
}))[0].args;
|
|
56
60
|
console.log('GEMINI', JSON.stringify(geminiArgs, null, 4));
|
|
57
61
|
});
|
|
@@ -64,6 +68,7 @@ describe('prompt-debug', () => {
|
|
|
64
68
|
const claudeArgs = (await generateContentClaude(prompt, getFunctionDefs(), requiredFunctionName, temperature, false, {
|
|
65
69
|
aiService: 'anthropic',
|
|
66
70
|
disableCache: false,
|
|
71
|
+
askQuestion: false,
|
|
67
72
|
}))[0].args;
|
|
68
73
|
console.log('CLAUDE', JSON.stringify(claudeArgs, null, 4));
|
|
69
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-debug.test.js","sourceRoot":"","sources":["../../src/eval/prompt-debug.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACnF,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,qDAAqD;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,EAAE,CAAC,SAAS,CAAC;IACX,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,MAAM,GAAG,oBAAoC,CAAC;IACpD,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC;IAExB,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,UAAU,GAAG,CACjB,MAAM,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9F,SAAS,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"prompt-debug.test.js","sourceRoot":"","sources":["../../src/eval/prompt-debug.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACnF,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,qDAAqD;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,EAAE,CAAC,SAAS,CAAC;IACX,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,MAAM,GAAG,oBAAoC,CAAC;IACpD,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC;IAExB,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,UAAU,GAAG,CACjB,MAAM,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE;YAC9F,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC,CACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACxB,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,oBAAoB,EAAE,WAAW,EAAE,IAAI,CAAU,CAAC;QAC1F,IAAI,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9C,MAAM,GAAG,MAAM,8BAA8B,CAC3C;YACE,GAAG,GAAG;YACN;gBACE,SAAS,EAAE,UAAU;gBACrB,YAAY,EAAE,KAAK;gBACnB,WAAW,EAAE,KAAK;aACnB;SACF,EACD,MAAM,EACN,kBAAkB,CACnB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC,CAAC,6CAA6C;QAC7E,MAAM,GAAG,GAAG;YACV,MAAM;YACN,IAAI;YACJ,oBAAoB;YACpB,WAAW;YACX,IAAI;YACJ;gBACE,SAAS,EAAE,WAAW;gBACtB,YAAY,EAAE,KAAK;gBACnB,WAAW,EAAE,KAAK;aACnB;SACO,CAAC;QACX,IAAI,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,GAAG,CAAC,CAAC;QACjD,MAAM,GAAG,MAAM,8BAA8B,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAEvF,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC1B,MAAM,UAAU,GAAG,CACjB,MAAM,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE;YAC/F,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,KAAK;SACnB,CAAC,CACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,CAAC,MAAM,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/G,IAAI,CAAC;QAER,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,UAAU,GAAG,CACjB,MAAM,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE;YAC/F,SAAS,EAAE,WAAW;YACtB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK;SACnB,CAAC,CACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
import { CodegenOptions } from '../main/codegen-types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Represents a dependency in the source code
|
|
4
|
+
*/
|
|
5
|
+
export interface DependencyInfo {
|
|
6
|
+
/** Path of the dependeny */
|
|
7
|
+
path: string;
|
|
8
|
+
/** Type of dependency */
|
|
9
|
+
type: 'local' | 'external';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Represents file content with optional dependencies
|
|
13
|
+
*/
|
|
14
|
+
export interface FileContent {
|
|
15
|
+
/** The actual content of the file */
|
|
3
16
|
content: string | null;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
17
|
+
/** Optional list of dependencies */
|
|
18
|
+
dependencies?: DependencyInfo[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Represents a file summary with optional dependencies
|
|
22
|
+
*/
|
|
23
|
+
export interface FileSummary {
|
|
24
|
+
/** Summary of the file content */
|
|
25
|
+
summary?: string;
|
|
26
|
+
/** Optional list of dependencies */
|
|
27
|
+
dependencies?: DependencyInfo[];
|
|
28
|
+
}
|
|
29
|
+
export type SourceCodeMap = Record<string, FileContent | FileSummary>;
|
|
7
30
|
type ImageAssetsMap = Record<string, {
|
|
8
31
|
mimeType: string | false;
|
|
9
32
|
width: number;
|
package/dist/files/read-files.js
CHANGED
|
@@ -18,29 +18,44 @@ function readSourceFiles({ contentMask, ignorePatterns }, filterPaths, forceAll
|
|
|
18
18
|
continue;
|
|
19
19
|
}
|
|
20
20
|
if (!filterPaths || filterPaths.includes(file) || importantFiles.has(file)) {
|
|
21
|
+
const summary = getSummary(file);
|
|
21
22
|
// Always include important files
|
|
22
23
|
if (importantFiles.has(file)) {
|
|
23
|
-
|
|
24
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
25
|
+
sourceCode[file] = {
|
|
26
|
+
content,
|
|
27
|
+
dependencies: summary?.dependencies,
|
|
28
|
+
};
|
|
24
29
|
continue;
|
|
25
30
|
}
|
|
26
|
-
const summary = getSummary(file);
|
|
27
31
|
// Apply content mask filter if it's set
|
|
28
32
|
if (!filterPaths && contentMask && !forceAll) {
|
|
29
33
|
const relativePath = path.relative(rcConfig.rootDir, file);
|
|
30
34
|
if (!relativePath.startsWith(contentMask)) {
|
|
31
|
-
sourceCode[file] = summary
|
|
35
|
+
sourceCode[file] = summary
|
|
36
|
+
? {
|
|
37
|
+
summary: summary.summary,
|
|
38
|
+
...(summary.dependencies?.length ? { dependencies: summary.dependencies } : {}),
|
|
39
|
+
}
|
|
40
|
+
: { content: null };
|
|
32
41
|
continue;
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
44
|
if (!forceAll) {
|
|
36
45
|
sourceCode[file] =
|
|
37
46
|
!ignorePatterns?.some((pattern) => globRegex(pattern).test(file)) && summary
|
|
38
|
-
? {
|
|
47
|
+
? {
|
|
48
|
+
summary: summary.summary,
|
|
49
|
+
...(summary.dependencies?.length ? { dependencies: summary.dependencies } : {}),
|
|
50
|
+
}
|
|
39
51
|
: { content: null };
|
|
40
52
|
}
|
|
41
53
|
else {
|
|
42
54
|
const content = fs.readFileSync(file, 'utf-8');
|
|
43
|
-
sourceCode[file] = {
|
|
55
|
+
sourceCode[file] = {
|
|
56
|
+
content,
|
|
57
|
+
dependencies: summary?.dependencies,
|
|
58
|
+
};
|
|
44
59
|
}
|
|
45
60
|
}
|
|
46
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-files.js","sourceRoot":"","sources":["../../src/files/read-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"read-files.js","sourceRoot":"","sources":["../../src/files/read-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ describe('read-files', () => {
|
|
|
31
31
|
beforeEach(() => {
|
|
32
32
|
vi.resetAllMocks();
|
|
33
33
|
vi.mocked(cliParams).contentMask = undefined;
|
|
34
|
-
vi.mocked(getSummary).mockImplementation((file) => ({ summary: `Summary of ${file}
|
|
34
|
+
vi.mocked(getSummary).mockImplementation((file) => ({ summary: `Summary of ${file}`, dependencies: [] }));
|
|
35
35
|
});
|
|
36
36
|
afterEach(() => {
|
|
37
37
|
vi.clearAllMocks();
|
|
@@ -43,7 +43,7 @@ describe('read-files', () => {
|
|
|
43
43
|
vi.mocked(fs).existsSync.mockReturnValue(true);
|
|
44
44
|
vi.mocked(fs).readFileSync.mockImplementation((file) => `Content of ${file}`);
|
|
45
45
|
rcConfig.rootDir = '/home/project';
|
|
46
|
-
const result = getSourceCode({ taskFile: undefined }, { aiService: 'vertex-ai' });
|
|
46
|
+
const result = getSourceCode({ taskFile: undefined }, { aiService: 'vertex-ai', askQuestion: false });
|
|
47
47
|
expect(result).toEqual({
|
|
48
48
|
'/home/project/file1.js': { summary: 'Summary of /home/project/file1.js' },
|
|
49
49
|
'/home/project/file2.js': { summary: 'Summary of /home/project/file2.js' },
|
|
@@ -56,7 +56,7 @@ describe('read-files', () => {
|
|
|
56
56
|
vi.mocked(fs).existsSync.mockReturnValue(true);
|
|
57
57
|
vi.mocked(fs).readFileSync.mockImplementation((file) => `Content of ${file}`);
|
|
58
58
|
rcConfig.rootDir = '/home/project';
|
|
59
|
-
const result = getSourceCode({ taskFile: undefined }, { aiService: 'vertex-ai', contentMask: 'subfolder' });
|
|
59
|
+
const result = getSourceCode({ taskFile: undefined }, { aiService: 'vertex-ai', contentMask: 'subfolder', askQuestion: false });
|
|
60
60
|
expect(result).toEqual({
|
|
61
61
|
'/home/project/file1.js': { summary: 'Summary of /home/project/file1.js' },
|
|
62
62
|
'/home/project/subfolder/file2.js': {
|
|
@@ -70,7 +70,7 @@ describe('read-files', () => {
|
|
|
70
70
|
vi.mocked(fs).existsSync.mockReturnValue(true);
|
|
71
71
|
vi.mocked(fs).readFileSync.mockImplementation((file) => `Content of ${file}`);
|
|
72
72
|
rcConfig.rootDir = '/home/project';
|
|
73
|
-
const result = getSourceCode({ taskFile: '/home/project/task.md' }, { aiService: 'vertex-ai' });
|
|
73
|
+
const result = getSourceCode({ taskFile: '/home/project/task.md' }, { aiService: 'vertex-ai', askQuestion: false });
|
|
74
74
|
expect(result).toEqual({
|
|
75
75
|
'/home/project/file1.js': { summary: 'Summary of /home/project/file1.js' },
|
|
76
76
|
'/home/project/task.md': { content: 'Content of /home/project/task.md' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-files.test.js","sourceRoot":"","sources":["../../src/files/read-files.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtB,EAAE,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;AACjD,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/B,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,mBAAmB,EAAE,IAAI;IACzB,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,QAAQ,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;IACtC,gBAAgB,EAAE,EAAE;CACrB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7C,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"read-files.test.js","sourceRoot":"","sources":["../../src/files/read-files.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { SourceCodeMap } from '../files/read-files.js';
|
|
1
|
+
import { SourceCodeMap, FileContent, FileSummary } from '../files/read-files.js';
|
|
2
|
+
/**
|
|
3
|
+
* Directory structure representing source code files with their content or summaries and dependencies
|
|
4
|
+
*/
|
|
2
5
|
export type SourceCodeTree = {
|
|
3
6
|
[directoryPath: string]: {
|
|
4
|
-
[filePath: string]:
|
|
5
|
-
content: string | null;
|
|
6
|
-
} | {
|
|
7
|
-
summary: string;
|
|
8
|
-
};
|
|
7
|
+
[filePath: string]: FileContent | FileSummary;
|
|
9
8
|
};
|
|
10
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Converts flat SourceCodeMap into a directory tree structure
|
|
12
|
+
*/
|
|
11
13
|
export declare function getSourceCodeTree(sourceCode: SourceCodeMap): SourceCodeTree;
|
|
14
|
+
/**
|
|
15
|
+
* Converts directory tree structure back into flat SourceCodeMap
|
|
16
|
+
*/
|
|
12
17
|
export declare function parseSourceCodeTree(sourceCodeTree: SourceCodeTree): SourceCodeMap;
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { rcConfig } from '../main/config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type guard to check if an object is a FileContent with dependencies
|
|
5
|
+
*/
|
|
6
|
+
function hasContent(obj) {
|
|
7
|
+
return 'content' in obj;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Type guard to check if an object is a FileSummary with dependencies
|
|
11
|
+
*/
|
|
12
|
+
function hasSummary(obj) {
|
|
13
|
+
return 'summary' in obj;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Converts flat SourceCodeMap into a directory tree structure
|
|
17
|
+
*/
|
|
3
18
|
export function getSourceCodeTree(sourceCode) {
|
|
4
19
|
const result = {};
|
|
5
20
|
for (const [filePath, fileData] of Object.entries(sourceCode)) {
|
|
@@ -11,15 +26,43 @@ export function getSourceCodeTree(sourceCode) {
|
|
|
11
26
|
if (!result[dirPath]) {
|
|
12
27
|
result[dirPath] = {};
|
|
13
28
|
}
|
|
14
|
-
|
|
29
|
+
// Handle both content and summary cases while preserving dependencies
|
|
30
|
+
if (hasContent(fileData)) {
|
|
31
|
+
result[dirPath][fileName] = {
|
|
32
|
+
content: fileData.content,
|
|
33
|
+
...(fileData.dependencies && { dependencies: fileData.dependencies }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
else if (hasSummary(fileData)) {
|
|
37
|
+
result[dirPath][fileName] = {
|
|
38
|
+
summary: fileData.summary,
|
|
39
|
+
...(fileData.dependencies && { dependencies: fileData.dependencies }),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
15
42
|
}
|
|
16
43
|
return result;
|
|
17
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Converts directory tree structure back into flat SourceCodeMap
|
|
47
|
+
*/
|
|
18
48
|
export function parseSourceCodeTree(sourceCodeTree) {
|
|
19
49
|
const result = {};
|
|
20
50
|
for (const [dirPath, files] of Object.entries(sourceCodeTree)) {
|
|
21
51
|
for (const [filePath, fileData] of Object.entries(files)) {
|
|
22
|
-
|
|
52
|
+
const fullPath = `${dirPath}/${filePath}`;
|
|
53
|
+
// Handle both content and summary cases while preserving dependencies
|
|
54
|
+
if (hasContent(fileData)) {
|
|
55
|
+
result[fullPath] = {
|
|
56
|
+
content: fileData.content,
|
|
57
|
+
...(fileData.dependencies && { dependencies: fileData.dependencies }),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else if (hasSummary(fileData)) {
|
|
61
|
+
result[fullPath] = {
|
|
62
|
+
summary: fileData.summary,
|
|
63
|
+
...(fileData.dependencies && { dependencies: fileData.dependencies }),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
23
66
|
}
|
|
24
67
|
}
|
|
25
68
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-code-tree.js","sourceRoot":"","sources":["../../src/files/source-code-tree.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"source-code-tree.js","sourceRoot":"","sources":["../../src/files/source-code-tree.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,SAAS,UAAU,CAAC,GAA8B;IAChD,OAAO,SAAS,IAAI,GAAG,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,GAA8B;IAChD,OAAO,SAAS,IAAI,GAAG,CAAC;AAC1B,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAyB;IACzD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACvB,CAAC;QAED,sEAAsE;QACtE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG;gBAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;aAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG;gBAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,cAA8B;IAChE,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;YAE1C,sEAAsE;YACtE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,QAAQ,CAAC,GAAG;oBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;iBACtE,CAAC;YACJ,CAAC;iBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,QAAQ,CAAC,GAAG;oBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;iBACtE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/main/config-lib.js
CHANGED
|
@@ -3,8 +3,25 @@ import path from 'path';
|
|
|
3
3
|
import assert from 'node:assert';
|
|
4
4
|
import { confirm } from '@inquirer/prompts';
|
|
5
5
|
import { isAncestorDirectory } from '../files/file-utils.js';
|
|
6
|
+
import { detectAndConfigureProfile, npmProfile } from '../project-profiles/index.js';
|
|
6
7
|
// This file contains project codegen configuration
|
|
7
8
|
const CODEGENRC_FILENAME = '.genaicoderc';
|
|
9
|
+
/**
|
|
10
|
+
* Create initial .genaicoderc content with profile detection
|
|
11
|
+
*/
|
|
12
|
+
async function createInitialConfig(rcFilePath) {
|
|
13
|
+
const rootDir = path.dirname(rcFilePath);
|
|
14
|
+
const detectionResult = await detectAndConfigureProfile(rootDir);
|
|
15
|
+
const profile = detectionResult.profile ?? npmProfile;
|
|
16
|
+
// Create config using detected profile or npm profile as fallback
|
|
17
|
+
const config = {
|
|
18
|
+
rootDir: '.',
|
|
19
|
+
extensions: profile.extensions,
|
|
20
|
+
ignorePaths: profile.ignorePaths,
|
|
21
|
+
...(profile.lintCommand ? { lintCommand: profile.lintCommand } : {}),
|
|
22
|
+
};
|
|
23
|
+
return config;
|
|
24
|
+
}
|
|
8
25
|
// Find .genaicoderc file
|
|
9
26
|
export async function findRcFile() {
|
|
10
27
|
let rcFilePath = process.cwd();
|
|
@@ -21,8 +38,9 @@ export async function findRcFile() {
|
|
|
21
38
|
default: false,
|
|
22
39
|
});
|
|
23
40
|
if (createRcFile) {
|
|
24
|
-
|
|
25
|
-
|
|
41
|
+
const config = await createInitialConfig(path.join(rcFilePath, CODEGENRC_FILENAME));
|
|
42
|
+
fs.writeFileSync(path.join(rcFilePath, CODEGENRC_FILENAME), JSON.stringify(config, null, 2));
|
|
43
|
+
console.log(`Created ${CODEGENRC_FILENAME} in ${rcFilePath} with detected project profile`);
|
|
26
44
|
return path.join(rcFilePath, CODEGENRC_FILENAME);
|
|
27
45
|
}
|
|
28
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-lib.js","sourceRoot":"","sources":["../../src/main/config-lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-lib.js","sourceRoot":"","sources":["../../src/main/config-lib.ts"],"names":[],"mappings":"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"}
|
package/dist/main/config.js
CHANGED
|
@@ -1,40 +1,16 @@
|
|
|
1
1
|
import { findRcFile, parseRcFile } from './config-lib.js';
|
|
2
2
|
import { loadPlugins } from './plugin-loader.js';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
|
|
5
|
-
const DEFAULT_EXTENSIONS = [
|
|
6
|
-
'.md',
|
|
7
|
-
'.js',
|
|
8
|
-
'.ts',
|
|
9
|
-
'.tsx',
|
|
10
|
-
'.css',
|
|
11
|
-
'.scss',
|
|
12
|
-
'.py',
|
|
13
|
-
'.go',
|
|
14
|
-
'.c',
|
|
15
|
-
'.h',
|
|
16
|
-
'.cpp',
|
|
17
|
-
'.txt',
|
|
18
|
-
'.html',
|
|
19
|
-
'.txt',
|
|
20
|
-
'.json',
|
|
21
|
-
];
|
|
22
|
-
// A list of paths that are ignored by default
|
|
23
|
-
const DEFAULT_IGNORE_PATHS = ['node_modules', 'build', 'dist', 'package-lock.json', 'coverage'];
|
|
4
|
+
import { DEFAULT_EXTENSIONS, DEFAULT_IGNORE_PATHS } from '../project-profiles/index.js';
|
|
24
5
|
// Read and parse the configuration
|
|
25
6
|
const rcFilePath = await findRcFile();
|
|
26
7
|
export const rcConfig = parseRcFile(rcFilePath);
|
|
27
|
-
// Load plugins
|
|
28
8
|
await loadPlugins(rcConfig);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// Image extensions (driven by ai service limitations)
|
|
9
|
+
export const sourceExtensions = rcConfig.extensions ?? [...DEFAULT_EXTENSIONS.JS];
|
|
10
|
+
// Image extensions (driven by ai service limitations, so not configurable)
|
|
32
11
|
export const IMAGE_ASSET_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.gif', '.webp'];
|
|
33
|
-
|
|
34
|
-
export const ignorePaths = rcConfig.ignorePaths ?? DEFAULT_IGNORE_PATHS;
|
|
35
|
-
// Process and export important context
|
|
12
|
+
export const ignorePaths = rcConfig.ignorePaths ?? [...DEFAULT_IGNORE_PATHS.JS];
|
|
36
13
|
export const importantContext = processImportantContext(rcConfig.importantContext);
|
|
37
|
-
// Export model overrides
|
|
38
14
|
export const modelOverrides = rcConfig.modelOverrides ?? {};
|
|
39
15
|
function processImportantContext(context) {
|
|
40
16
|
if (!context)
|
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,EAAE,UAAU,EAAE,WAAW,EAA8C,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/main/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAA8C,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF,mCAAmC;AACnC,MAAM,UAAU,GAAW,MAAM,UAAU,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAa,WAAW,CAAC,UAAU,CAAC,CAAC;AAE1D,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,gBAAgB,GAAa,QAAQ,CAAC,UAAU,IAAI,CAAC,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAE5F,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,WAAW,GAAa,QAAQ,CAAC,WAAW,IAAI,CAAC,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,gBAAgB,GAAqB,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,cAAc,GAAmB,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AAE5E,SAAS,uBAAuB,CAAC,OAAqC;IACpE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEpD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;AACxD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -28,7 +28,7 @@ vi.mock('./configure');
|
|
|
28
28
|
vi.mock('../../cli/cli-options');
|
|
29
29
|
vi.mock('./codegen-worker.js');
|
|
30
30
|
describe('runInteractiveMode', () => {
|
|
31
|
-
const mockOptions = { aiService: 'vertex-ai' };
|
|
31
|
+
const mockOptions = { aiService: 'vertex-ai', askQuestion: false };
|
|
32
32
|
beforeEach(() => {
|
|
33
33
|
vi.resetAllMocks();
|
|
34
34
|
// Mock console.log to prevent output during tests
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen-interactive.test.js","sourceRoot":"","sources":["../../../src/main/interactive/codegen-interactive.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,yBAAyB,CAAC;AACjC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,4BAA4B;AAC5B,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,mBAAmB,EAAE,IAAI;CAC1B,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACrC,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACzB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvB,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC9B,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/B,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACjC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAE/B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,WAAW,EAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"codegen-interactive.test.js","sourceRoot":"","sources":["../../../src/main/interactive/codegen-interactive.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,14 @@ import { Operation, PluginActionType, PluginAiServiceType, GenerateContentHook }
|
|
|
2
2
|
import { GenerateContentFunction } from '../ai-service/common.js';
|
|
3
3
|
import { ActionHandler } from '../prompt/steps/step-ask-question/step-ask-question-types.js';
|
|
4
4
|
import { RcConfig } from './config-lib.js';
|
|
5
|
+
import { ProjectProfilePlugin } from '../project-profiles/types.js';
|
|
5
6
|
export declare function loadPlugins(rcConfig: RcConfig): Promise<void>;
|
|
6
7
|
export declare function getRegisteredAiServices(): Map<PluginAiServiceType, GenerateContentFunction>;
|
|
7
8
|
export declare function getRegisteredOperations(): Operation[];
|
|
8
9
|
export declare function getRegisteredActionHandlers(): Map<PluginActionType, ActionHandler>;
|
|
9
10
|
export declare function getRegisteredActionHandlerDescriptions(): Map<PluginActionType, string>;
|
|
10
11
|
export declare function getRegisteredGenerateContentHooks(): GenerateContentHook[];
|
|
12
|
+
/**
|
|
13
|
+
* Get all registered project profile plugins
|
|
14
|
+
*/
|
|
15
|
+
export declare function getRegisteredProfilePlugins(): ProjectProfilePlugin[];
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
+
import { registerProfile } from '../project-profiles/index.js';
|
|
2
3
|
// Global storage for registered AI services and operations
|
|
3
4
|
const registeredAiServices = new Map();
|
|
4
5
|
const registeredOperations = {};
|
|
5
6
|
const registeredActionHandlerDescriptions = new Map();
|
|
6
7
|
const registeredActionHandlers = new Map();
|
|
7
8
|
const registeredGenerateContentHooks = [];
|
|
9
|
+
// Project profile plugin storage
|
|
10
|
+
const registeredProfilePlugins = [];
|
|
8
11
|
export async function loadPlugins(rcConfig) {
|
|
9
12
|
if (!rcConfig.plugins || rcConfig.plugins.length === 0) {
|
|
10
13
|
console.log('No plugins specified in the configuration.');
|
|
@@ -15,18 +18,21 @@ export async function loadPlugins(rcConfig) {
|
|
|
15
18
|
pluginPath = path.isAbsolute(pluginPath) ? pluginPath : path.join(rcConfig.rootDir, pluginPath);
|
|
16
19
|
console.log('Loading plugin:', pluginPath);
|
|
17
20
|
const plugin = (await import(pluginPath)).default;
|
|
21
|
+
// Handle AI services
|
|
18
22
|
if (plugin.aiServices) {
|
|
19
23
|
Object.entries(plugin.aiServices).forEach(([name, service]) => {
|
|
20
24
|
registeredAiServices.set(`plugin:${name}`, service);
|
|
21
25
|
console.log(`Registered AI service: ${name}`);
|
|
22
26
|
});
|
|
23
27
|
}
|
|
28
|
+
// Handle operations
|
|
24
29
|
if (plugin.operations) {
|
|
25
30
|
Object.entries(plugin.operations).forEach(([name, operation]) => {
|
|
26
31
|
registeredOperations[name] = operation;
|
|
27
32
|
console.log(`Registered operation: ${name}`);
|
|
28
33
|
});
|
|
29
34
|
}
|
|
35
|
+
// Handle action handlers
|
|
30
36
|
if (plugin.actionHandlers) {
|
|
31
37
|
Object.entries(plugin.actionHandlers).forEach(([name, { handler, description }]) => {
|
|
32
38
|
registeredActionHandlers.set(`plugin:${name}`, handler);
|
|
@@ -34,10 +40,25 @@ export async function loadPlugins(rcConfig) {
|
|
|
34
40
|
console.log(`Registered action handler: ${name}`);
|
|
35
41
|
});
|
|
36
42
|
}
|
|
43
|
+
// Handle generateContent hooks
|
|
37
44
|
if (plugin.generateContentHook) {
|
|
38
45
|
registeredGenerateContentHooks.push(plugin.generateContentHook);
|
|
39
46
|
console.log('Registered generateContent hook');
|
|
40
47
|
}
|
|
48
|
+
// Handle project profile plugins
|
|
49
|
+
if ('profiles' in plugin) {
|
|
50
|
+
const profilePlugin = plugin;
|
|
51
|
+
// Register project profiles
|
|
52
|
+
if (profilePlugin.profiles) {
|
|
53
|
+
profilePlugin.profiles.forEach((profile) => {
|
|
54
|
+
// Validate profile
|
|
55
|
+
validateProfile(profile);
|
|
56
|
+
// Register profile
|
|
57
|
+
registerProfile(profile);
|
|
58
|
+
console.log(`Registered project profile: ${profile.name} (${profile.id})`);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
41
62
|
console.log(`Successfully loaded plugin: ${pluginPath}`);
|
|
42
63
|
}
|
|
43
64
|
catch (error) {
|
|
@@ -45,6 +66,32 @@ export async function loadPlugins(rcConfig) {
|
|
|
45
66
|
}
|
|
46
67
|
}
|
|
47
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Validate project profile structure
|
|
71
|
+
*/
|
|
72
|
+
function validateProfile(profile) {
|
|
73
|
+
if (!profile.id || typeof profile.id !== 'string') {
|
|
74
|
+
throw new Error('Profile must have a string id');
|
|
75
|
+
}
|
|
76
|
+
if (!profile.name || typeof profile.name !== 'string') {
|
|
77
|
+
throw new Error('Profile must have a string name');
|
|
78
|
+
}
|
|
79
|
+
if (!Array.isArray(profile.extensions)) {
|
|
80
|
+
throw new Error('Profile must have an array of extensions');
|
|
81
|
+
}
|
|
82
|
+
if (!Array.isArray(profile.ignorePaths)) {
|
|
83
|
+
throw new Error('Profile must have an array of ignore paths');
|
|
84
|
+
}
|
|
85
|
+
if (!profile.detect || typeof profile.detect !== 'function') {
|
|
86
|
+
throw new Error('Profile must have a detect function');
|
|
87
|
+
}
|
|
88
|
+
if (typeof profile.detectionWeight !== 'number') {
|
|
89
|
+
throw new Error('Profile must have a numeric detectionWeight');
|
|
90
|
+
}
|
|
91
|
+
if (profile.initialize && typeof profile.initialize !== 'function') {
|
|
92
|
+
throw new Error('Profile initialize must be a function if provided');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
48
95
|
export function getRegisteredAiServices() {
|
|
49
96
|
return registeredAiServices;
|
|
50
97
|
}
|
|
@@ -60,4 +107,10 @@ export function getRegisteredActionHandlerDescriptions() {
|
|
|
60
107
|
export function getRegisteredGenerateContentHooks() {
|
|
61
108
|
return registeredGenerateContentHooks;
|
|
62
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Get all registered project profile plugins
|
|
112
|
+
*/
|
|
113
|
+
export function getRegisteredProfilePlugins() {
|
|
114
|
+
return registeredProfilePlugins;
|
|
115
|
+
}
|
|
63
116
|
//# sourceMappingURL=plugin-loader.js.map
|