genaicode 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/cli/cli-params.d.ts +1 -1
  2. package/dist/cli/cli-params.js +1 -1
  3. package/dist/cli/cli-params.js.map +1 -1
  4. package/dist/eval/codegen-summary.test.js +3 -1
  5. package/dist/eval/codegen-summary.test.js.map +1 -1
  6. package/dist/eval/data/current-prompt.d.ts +0 -39
  7. package/dist/eval/data/current-prompt.js +34 -79
  8. package/dist/eval/data/current-prompt.js.map +1 -1
  9. package/dist/eval/prompt-debug.test.js +6 -1
  10. package/dist/eval/prompt-debug.test.js.map +1 -1
  11. package/dist/files/read-files.d.ts +27 -4
  12. package/dist/files/read-files.js +20 -5
  13. package/dist/files/read-files.js.map +1 -1
  14. package/dist/files/read-files.test.js +4 -4
  15. package/dist/files/read-files.test.js.map +1 -1
  16. package/dist/files/source-code-tree.d.ts +11 -6
  17. package/dist/files/source-code-tree.js +45 -2
  18. package/dist/files/source-code-tree.js.map +1 -1
  19. package/dist/main/codegen-types.d.ts +1 -1
  20. package/dist/main/config-lib.js +20 -2
  21. package/dist/main/config-lib.js.map +1 -1
  22. package/dist/main/config.js +4 -28
  23. package/dist/main/config.js.map +1 -1
  24. package/dist/main/interactive/codegen-interactive.test.js +1 -1
  25. package/dist/main/interactive/codegen-interactive.test.js.map +1 -1
  26. package/dist/main/plugin-loader.d.ts +5 -0
  27. package/dist/main/plugin-loader.js +53 -0
  28. package/dist/main/plugin-loader.js.map +1 -1
  29. package/dist/main/ui/frontend/assets/index-QOcNx5ac.js +812 -0
  30. package/dist/main/ui/frontend/index.html +1 -1
  31. package/dist/project-profiles/detection.d.ts +40 -0
  32. package/dist/project-profiles/detection.js +131 -0
  33. package/dist/project-profiles/detection.js.map +1 -0
  34. package/dist/project-profiles/index.d.ts +35 -0
  35. package/dist/project-profiles/index.js +72 -0
  36. package/dist/project-profiles/index.js.map +1 -0
  37. package/dist/project-profiles/profiles/golang.d.ts +65 -0
  38. package/dist/project-profiles/profiles/golang.js +208 -0
  39. package/dist/project-profiles/profiles/golang.js.map +1 -0
  40. package/dist/project-profiles/profiles/java-maven.d.ts +80 -0
  41. package/dist/project-profiles/profiles/java-maven.js +165 -0
  42. package/dist/project-profiles/profiles/java-maven.js.map +1 -0
  43. package/dist/project-profiles/profiles/javascript-npm.d.ts +40 -0
  44. package/dist/project-profiles/profiles/javascript-npm.js +118 -0
  45. package/dist/project-profiles/profiles/javascript-npm.js.map +1 -0
  46. package/dist/project-profiles/profiles/javascript-react.d.ts +46 -0
  47. package/dist/project-profiles/profiles/javascript-react.js +147 -0
  48. package/dist/project-profiles/profiles/javascript-react.js.map +1 -0
  49. package/dist/project-profiles/profiles/python-django.d.ts +58 -0
  50. package/dist/project-profiles/profiles/python-django.js +200 -0
  51. package/dist/project-profiles/profiles/python-django.js.map +1 -0
  52. package/dist/project-profiles/types.d.ts +122 -0
  53. package/dist/project-profiles/types.js +77 -0
  54. package/dist/project-profiles/types.js.map +1 -0
  55. package/dist/prompt/function-defs/set-summaries.js +20 -1
  56. package/dist/prompt/function-defs/set-summaries.js.map +1 -1
  57. package/dist/prompt/prompt-codegen.test.js +5 -4
  58. package/dist/prompt/prompt-codegen.test.js.map +1 -1
  59. package/dist/prompt/prompt-service-ask-question.test.js +2 -0
  60. package/dist/prompt/prompt-service-ask-question.test.js.map +1 -1
  61. package/dist/prompt/prompt-service.js +13 -106
  62. package/dist/prompt/prompt-service.js.map +1 -1
  63. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js +0 -2
  64. package/dist/prompt/steps/step-ask-question/handlers/cancel-code-generation.js.map +1 -1
  65. package/dist/prompt/steps/step-ask-question/handlers/code-generation.d.ts +2 -0
  66. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js +58 -0
  67. package/dist/prompt/steps/step-ask-question/handlers/code-generation.js.map +1 -0
  68. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js +1 -3
  69. package/dist/prompt/steps/step-ask-question/handlers/confirm-code-generation.js.map +1 -1
  70. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js +0 -2
  71. package/dist/prompt/steps/step-ask-question/handlers/context-optimization.js.map +1 -1
  72. package/dist/prompt/steps/step-ask-question/handlers/default-action.js +0 -2
  73. package/dist/prompt/steps/step-ask-question/handlers/default-action.js.map +1 -1
  74. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js +0 -6
  75. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message-with-image.js.map +1 -1
  76. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +0 -2
  77. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  78. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js +0 -3
  79. package/dist/prompt/steps/step-ask-question/handlers/remove-files-from-context.js.map +1 -1
  80. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js +2 -5
  81. package/dist/prompt/steps/step-ask-question/handlers/request-files-content.js.map +1 -1
  82. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js +0 -3
  83. package/dist/prompt/steps/step-ask-question/handlers/request-permissions.js.map +1 -1
  84. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +4 -3
  85. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -3
  86. package/dist/prompt/steps/step-ask-question/step-ask-question.js +20 -6
  87. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  88. package/dist/prompt/steps/step-codegen-planning.js +1 -1
  89. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  90. package/dist/prompt/steps/step-codegen-summary.d.ts +7 -0
  91. package/dist/prompt/steps/step-codegen-summary.js +106 -0
  92. package/dist/prompt/steps/step-codegen-summary.js.map +1 -0
  93. package/dist/prompt/steps/step-codegen-summary.test.d.ts +1 -0
  94. package/dist/prompt/steps/step-codegen-summary.test.js +136 -0
  95. package/dist/prompt/steps/step-codegen-summary.test.js.map +1 -0
  96. package/dist/prompt/steps/step-context-optimization.js +153 -66
  97. package/dist/prompt/steps/step-context-optimization.js.map +1 -1
  98. package/dist/prompt/steps/step-context-optimization.test.js +24 -5
  99. package/dist/prompt/steps/step-context-optimization.test.js.map +1 -1
  100. package/dist/prompt/steps/step-ensure-context.d.ts +15 -0
  101. package/dist/prompt/steps/step-ensure-context.js +102 -0
  102. package/dist/prompt/steps/step-ensure-context.js.map +1 -0
  103. package/dist/prompt/steps/step-ensure-context.test.d.ts +1 -0
  104. package/dist/prompt/steps/step-ensure-context.test.js +242 -0
  105. package/dist/prompt/steps/step-ensure-context.test.js.map +1 -0
  106. package/dist/prompt/steps/step-summarization.d.ts +2 -1
  107. package/dist/prompt/steps/step-summarization.js +44 -11
  108. package/dist/prompt/steps/step-summarization.js.map +1 -1
  109. package/dist/prompt/steps/steps-types.d.ts +2 -0
  110. package/dist/prompt/steps/steps-types.js.map +1 -1
  111. package/dist/prompt/systemprompt.test.js +2 -2
  112. package/dist/prompt/systemprompt.test.js.map +1 -1
  113. package/package.json +6 -2
  114. 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,gkyBAAgkyB;aAC5kyB;YACD;gBACE,MAAM,EAAE,gBAAgB;gBACxB,SAAS,EAAE,mWAAmW;aAC/W;YACD;gBACE,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,ozBAAozB;aACh0B;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,iBAAiB;QACzB,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,0txxCAA0txxC;gBACvuxxC,WAAW,EAAE,WAAW;aACzB;SACF;KACF;IACD;QACE,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE;YACf;gBACE,MAAM,EAAE,qBAAqB;gBAC7B,MAAM,EAAE;oBACN,WAAW,EAAE;wBACX,gFAAgF;wBAChF,iGAAiG;wBACjG,2FAA2F;wBAC3F,qFAAqF;wBACrF,mFAAmF;wBACnF,qEAAqE;qBACtE;iBACF;aACF;YACD;gBACE,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE;oBACN,WAAW,EAAE;wBACX,gFAAgF;wBAChF,iGAAiG;wBACjG,2FAA2F;wBAC3F,qFAAqF;wBACrF,mFAAmF;wBACnF,qEAAqE;qBACtE;iBACF;aACF;SACF;KACF;IACD;QACE,MAAM,EAAE,MAAM;QACd,mBAAmB,EAAE;YACnB;gBACE,MAAM,EAAE,qBAAqB;gBAC7B,SAAS,EAAE,8hBAA8hB;aAC1iB;YACD;gBACE,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,y6kBAAy6kB;aACr7kB;SACF;QACD,OAAO,EAAE,IAAI;KACd;CACF,CAAC"}
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,IAAI,EAAE,cAAc;QACpB,YAAY,EACV,s1KAAs1K;KACz1K;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,mBAAmB;KAC1B;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,+QAA+Q;QACrR,aAAa,EAAE;YACb;gBACE,IAAI,EAAE,eAAe;aACtB;YACD;gBACE,IAAI,EAAE,gBAAgB;aACvB;YACD;gBACE,IAAI,EAAE,aAAa;aACpB;SACF;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,iBAAiB,EAAE;YACjB;gBACE,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtB,iCAAiC,EAAE;wBACjC,QAAQ,EAAE;4BACR,OAAO,EAAE,iCAAiC;yBAC3C;qBACF;iBACF,CAAC;aACH;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,IAAI;aACd;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,EAAE;aACZ;SACF;QACD,IAAI,EAAE,2EAA2E;QACjF,KAAK,EAAE,IAAI;KACZ;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,uDAAuD;KAC9D;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,0BAA0B;KACjC;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":"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"}
1
+ {"version":3,"file":"prompt-debug.test.js","sourceRoot":"","sources":["../../src/eval/prompt-debug.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,32 @@
1
1
  import { CodegenOptions } from '../main/codegen-types.js';
2
- export type SourceCodeMap = Record<string, {
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
- summary: string;
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;
@@ -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
- sourceCode[file] = { content: fs.readFileSync(file, 'utf-8') };
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 ? { ...summary } : { content: null };
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
- ? { ...summary }
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] = { content };
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":"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"}
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":"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"}
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
- result[dirPath][fileName] = 'content' in fileData ? { content: fileData.content } : { summary: fileData.summary };
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
- result[`${dirPath}/${filePath}`] = fileData;
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;AAQ7C,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,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,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,CAAC,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,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"}
@@ -31,7 +31,7 @@ export interface CodegenOptions {
31
31
  disableInitialLint?: boolean;
32
32
  contentMask?: string;
33
33
  ignorePatterns?: string[];
34
- askQuestion?: boolean;
34
+ askQuestion: boolean;
35
35
  interactive?: boolean;
36
36
  ui?: boolean;
37
37
  uiPort?: number;
@@ -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
- fs.writeFileSync(path.join(rcFilePath, CODEGENRC_FILENAME), JSON.stringify({ rootDir: '.' }, null, 2));
25
- console.log(`Created ${CODEGENRC_FILENAME} in ${rcFilePath}`);
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":"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"}
1
+ {"version":3,"file":"config-lib.js","sourceRoot":"","sources":["../../src/main/config-lib.ts"],"names":[],"mappings":"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"}
@@ -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
- // Default extensions if not specified in .genaicoderc
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
- // Use extensions from .genaicoderc if available, otherwise use default
30
- export const sourceExtensions = rcConfig.extensions || DEFAULT_EXTENSIONS;
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
- // Export ignore paths
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)
@@ -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;AAExB,sDAAsD;AACtD,MAAM,kBAAkB,GAAa;IACnC,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;CACR,CAAC;AAEF,8CAA8C;AAC9C,MAAM,oBAAoB,GAAa,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAE1G,mCAAmC;AACnC,MAAM,UAAU,GAAW,MAAM,UAAU,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAa,WAAW,CAAC,UAAU,CAAC,CAAC;AAE1D,eAAe;AACf,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AAE5B,uEAAuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAa,QAAQ,CAAC,UAAU,IAAI,kBAAkB,CAAC;AAEpF,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3F,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAa,QAAQ,CAAC,WAAW,IAAI,oBAAoB,CAAC;AAElF,uCAAuC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAqB,uBAAuB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAErG,yBAAyB;AACzB,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"}
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":"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"}
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