@ai-coders/context 0.1.0 → 0.3.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 +113 -580
- package/dist/generators/agents/agentConfig.d.ts +4 -0
- package/dist/generators/agents/agentConfig.d.ts.map +1 -0
- package/dist/generators/agents/agentConfig.js +138 -0
- package/dist/generators/agents/agentConfig.js.map +1 -0
- package/dist/generators/agents/agentGenerator.d.ts +10 -0
- package/dist/generators/agents/agentGenerator.d.ts.map +1 -0
- package/dist/generators/agents/agentGenerator.js +137 -0
- package/dist/generators/agents/agentGenerator.js.map +1 -0
- package/dist/generators/agents/agentTypes.d.ts +4 -0
- package/dist/generators/agents/agentTypes.d.ts.map +1 -0
- package/dist/generators/agents/agentTypes.js +22 -0
- package/dist/generators/agents/agentTypes.js.map +1 -0
- package/dist/generators/agents/contextUtils.d.ts +8 -0
- package/dist/generators/agents/contextUtils.d.ts.map +1 -0
- package/dist/generators/agents/contextUtils.js +15 -0
- package/dist/generators/agents/contextUtils.js.map +1 -0
- package/dist/generators/agents/index.d.ts +4 -0
- package/dist/generators/agents/index.d.ts.map +1 -0
- package/dist/generators/agents/index.js +12 -0
- package/dist/generators/agents/index.js.map +1 -0
- package/dist/generators/agents/promptFormatter.d.ts +9 -0
- package/dist/generators/agents/promptFormatter.d.ts.map +1 -0
- package/dist/generators/agents/promptFormatter.js +84 -0
- package/dist/generators/agents/promptFormatter.js.map +1 -0
- package/dist/generators/agents/templates/index.d.ts +4 -0
- package/dist/generators/agents/templates/index.d.ts.map +1 -0
- package/dist/generators/agents/templates/index.js +8 -0
- package/dist/generators/agents/templates/index.js.map +1 -0
- package/dist/generators/agents/templates/indexTemplate.d.ts +3 -0
- package/dist/generators/agents/templates/indexTemplate.d.ts.map +1 -0
- package/dist/generators/agents/templates/indexTemplate.js +35 -0
- package/dist/generators/agents/templates/indexTemplate.js.map +1 -0
- package/dist/generators/agents/templates/playbookTemplate.d.ts +4 -0
- package/dist/generators/agents/templates/playbookTemplate.d.ts.map +1 -0
- package/dist/generators/agents/templates/playbookTemplate.js +63 -0
- package/dist/generators/agents/templates/playbookTemplate.js.map +1 -0
- package/dist/generators/agents/templates/types.d.ts +14 -0
- package/dist/generators/agents/templates/types.d.ts.map +1 -0
- package/dist/generators/agents/templates/types.js +3 -0
- package/dist/generators/agents/templates/types.js.map +1 -0
- package/dist/generators/analyzers/codebaseAnalyzer.d.ts +45 -0
- package/dist/generators/analyzers/codebaseAnalyzer.d.ts.map +1 -0
- package/dist/generators/analyzers/codebaseAnalyzer.js +293 -0
- package/dist/generators/analyzers/codebaseAnalyzer.js.map +1 -0
- package/dist/generators/analyzers/index.d.ts +3 -0
- package/dist/generators/analyzers/index.d.ts.map +1 -0
- package/dist/generators/analyzers/index.js +6 -0
- package/dist/generators/analyzers/index.js.map +1 -0
- package/dist/generators/documentation/documentationGenerator.d.ts +13 -0
- package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -0
- package/dist/generators/documentation/documentationGenerator.js +115 -0
- package/dist/generators/documentation/documentationGenerator.js.map +1 -0
- package/dist/generators/documentation/documentationTemplates.d.ts +21 -0
- package/dist/generators/documentation/documentationTemplates.d.ts.map +1 -0
- package/dist/generators/documentation/documentationTemplates.js +359 -0
- package/dist/generators/documentation/documentationTemplates.js.map +1 -0
- package/dist/generators/documentation/documentationTypes.d.ts +11 -0
- package/dist/generators/documentation/documentationTypes.d.ts.map +1 -0
- package/dist/generators/documentation/documentationTypes.js +22 -0
- package/dist/generators/documentation/documentationTypes.js.map +1 -0
- package/dist/generators/documentation/documentationUtils.d.ts +7 -0
- package/dist/generators/documentation/documentationUtils.d.ts.map +1 -0
- package/dist/generators/documentation/documentationUtils.js +28 -0
- package/dist/generators/documentation/documentationUtils.js.map +1 -0
- package/dist/generators/documentation/guideRegistry.d.ts +6 -0
- package/dist/generators/documentation/guideRegistry.d.ts.map +1 -0
- package/dist/generators/documentation/guideRegistry.js +82 -0
- package/dist/generators/documentation/guideRegistry.js.map +1 -0
- package/dist/generators/{incrementalDocumentationGenerator.d.ts → documentation/incrementalDocumentationGenerator.d.ts} +4 -4
- package/dist/generators/documentation/incrementalDocumentationGenerator.d.ts.map +1 -0
- package/dist/generators/documentation/incrementalDocumentationGenerator.js.map +1 -0
- package/dist/generators/documentation/index.d.ts +2 -0
- package/dist/generators/documentation/index.d.ts.map +1 -0
- package/dist/generators/documentation/index.js +6 -0
- package/dist/generators/documentation/index.js.map +1 -0
- package/dist/generators/documentation/templates/architectureTemplate.d.ts +3 -0
- package/dist/generators/documentation/templates/architectureTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/architectureTemplate.js +66 -0
- package/dist/generators/documentation/templates/architectureTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/common.d.ts +7 -0
- package/dist/generators/documentation/templates/common.d.ts.map +1 -0
- package/dist/generators/documentation/templates/common.js +58 -0
- package/dist/generators/documentation/templates/common.js.map +1 -0
- package/dist/generators/documentation/templates/dataFlowTemplate.d.ts +3 -0
- package/dist/generators/documentation/templates/dataFlowTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/dataFlowTemplate.js +55 -0
- package/dist/generators/documentation/templates/dataFlowTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts +2 -0
- package/dist/generators/documentation/templates/developmentWorkflowTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/developmentWorkflowTemplate.js +59 -0
- package/dist/generators/documentation/templates/developmentWorkflowTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/frontMatter.d.ts +11 -0
- package/dist/generators/documentation/templates/frontMatter.d.ts.map +1 -0
- package/dist/generators/documentation/templates/frontMatter.js +29 -0
- package/dist/generators/documentation/templates/frontMatter.js.map +1 -0
- package/dist/generators/documentation/templates/glossaryTemplate.d.ts +3 -0
- package/dist/generators/documentation/templates/glossaryTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/glossaryTemplate.js +55 -0
- package/dist/generators/documentation/templates/glossaryTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/index.d.ts +11 -0
- package/dist/generators/documentation/templates/index.d.ts.map +1 -0
- package/dist/generators/documentation/templates/index.js +22 -0
- package/dist/generators/documentation/templates/index.js.map +1 -0
- package/dist/generators/documentation/templates/indexTemplate.d.ts +3 -0
- package/dist/generators/documentation/templates/indexTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/indexTemplate.js +56 -0
- package/dist/generators/documentation/templates/indexTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts +3 -0
- package/dist/generators/documentation/templates/projectOverviewTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/projectOverviewTemplate.js +68 -0
- package/dist/generators/documentation/templates/projectOverviewTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/securityTemplate.d.ts +2 -0
- package/dist/generators/documentation/templates/securityTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/securityTemplate.js +53 -0
- package/dist/generators/documentation/templates/securityTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/testingTemplate.d.ts +2 -0
- package/dist/generators/documentation/templates/testingTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/testingTemplate.js +59 -0
- package/dist/generators/documentation/templates/testingTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/toolingTemplate.d.ts +2 -0
- package/dist/generators/documentation/templates/toolingTemplate.d.ts.map +1 -0
- package/dist/generators/documentation/templates/toolingTemplate.js +56 -0
- package/dist/generators/documentation/templates/toolingTemplate.js.map +1 -0
- package/dist/generators/documentation/templates/types.d.ts +23 -0
- package/dist/generators/documentation/templates/types.d.ts.map +1 -0
- package/dist/generators/documentation/templates/types.js +3 -0
- package/dist/generators/documentation/templates/types.js.map +1 -0
- package/dist/generators/documentation/templates.d.ts +31 -0
- package/dist/generators/documentation/templates.d.ts.map +1 -0
- package/dist/generators/documentation/templates.js +566 -0
- package/dist/generators/documentation/templates.js.map +1 -0
- package/dist/generators/guidelines/agentIntegration.d.ts +43 -0
- package/dist/generators/guidelines/agentIntegration.d.ts.map +1 -0
- package/dist/generators/guidelines/agentIntegration.js +157 -0
- package/dist/generators/guidelines/agentIntegration.js.map +1 -0
- package/dist/generators/guidelines/guidelineTypes.d.ts +40 -0
- package/dist/generators/guidelines/guidelineTypes.d.ts.map +1 -0
- package/dist/generators/guidelines/guidelineTypes.js +144 -0
- package/dist/generators/guidelines/guidelineTypes.js.map +1 -0
- package/dist/generators/guidelines/guidelinesAnalyzer.d.ts +30 -0
- package/dist/generators/guidelines/guidelinesAnalyzer.d.ts.map +1 -0
- package/dist/generators/guidelines/guidelinesAnalyzer.js +263 -0
- package/dist/generators/guidelines/guidelinesAnalyzer.js.map +1 -0
- package/dist/generators/guidelines/guidelinesGenerator.d.ts +30 -0
- package/dist/generators/guidelines/guidelinesGenerator.d.ts.map +1 -0
- package/dist/generators/guidelines/guidelinesGenerator.js +249 -0
- package/dist/generators/guidelines/guidelinesGenerator.js.map +1 -0
- package/dist/generators/guidelines/guidelinesTemplates.d.ts +23 -0
- package/dist/generators/guidelines/guidelinesTemplates.d.ts.map +1 -0
- package/dist/generators/guidelines/guidelinesTemplates.js +304 -0
- package/dist/generators/guidelines/guidelinesTemplates.js.map +1 -0
- package/dist/generators/guidelines/index.d.ts +6 -0
- package/dist/generators/guidelines/index.d.ts.map +1 -0
- package/dist/generators/guidelines/index.js +16 -0
- package/dist/generators/guidelines/index.js.map +1 -0
- package/dist/generators/moduleGrouper.d.ts +14 -0
- package/dist/generators/moduleGrouper.d.ts.map +1 -0
- package/dist/generators/moduleGrouper.js +82 -0
- package/dist/generators/moduleGrouper.js.map +1 -0
- package/dist/generators/plans/index.d.ts +2 -0
- package/dist/generators/plans/index.d.ts.map +1 -0
- package/dist/generators/plans/index.js +6 -0
- package/dist/generators/plans/index.js.map +1 -0
- package/dist/generators/plans/planGenerator.d.ts +22 -0
- package/dist/generators/plans/planGenerator.d.ts.map +1 -0
- package/dist/generators/plans/planGenerator.js +109 -0
- package/dist/generators/plans/planGenerator.js.map +1 -0
- package/dist/generators/plans/templates/indexTemplate.d.ts +3 -0
- package/dist/generators/plans/templates/indexTemplate.d.ts.map +1 -0
- package/dist/generators/plans/templates/indexTemplate.js +36 -0
- package/dist/generators/plans/templates/indexTemplate.js.map +1 -0
- package/dist/generators/plans/templates/planTemplate.d.ts +3 -0
- package/dist/generators/plans/templates/planTemplate.d.ts.map +1 -0
- package/dist/generators/plans/templates/planTemplate.js +83 -0
- package/dist/generators/plans/templates/planTemplate.js.map +1 -0
- package/dist/generators/plans/templates/types.d.ts +19 -0
- package/dist/generators/plans/templates/types.d.ts.map +1 -0
- package/dist/generators/plans/templates/types.js +3 -0
- package/dist/generators/plans/templates/types.js.map +1 -0
- package/dist/generators/projectAnalyzer.d.ts +14 -0
- package/dist/generators/projectAnalyzer.d.ts.map +1 -0
- package/dist/generators/projectAnalyzer.js +217 -0
- package/dist/generators/projectAnalyzer.js.map +1 -0
- package/dist/generators/shared/contextGenerator.d.ts +7 -0
- package/dist/generators/shared/contextGenerator.d.ts.map +1 -0
- package/dist/generators/shared/contextGenerator.js +13 -0
- package/dist/generators/shared/contextGenerator.js.map +1 -0
- package/dist/generators/shared/directoryTemplateHelpers.d.ts +2 -0
- package/dist/generators/shared/directoryTemplateHelpers.d.ts.map +1 -0
- package/dist/generators/shared/directoryTemplateHelpers.js +12 -0
- package/dist/generators/shared/directoryTemplateHelpers.js.map +1 -0
- package/dist/generators/shared/generatorUtils.d.ts +16 -0
- package/dist/generators/shared/generatorUtils.d.ts.map +1 -0
- package/dist/generators/shared/generatorUtils.js +119 -0
- package/dist/generators/shared/generatorUtils.js.map +1 -0
- package/dist/generators/shared/index.d.ts +4 -0
- package/dist/generators/shared/index.d.ts.map +1 -0
- package/dist/generators/shared/index.js +10 -0
- package/dist/generators/shared/index.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1327 -419
- package/dist/index.js.map +1 -1
- package/dist/utils/cliUI.d.ts +6 -4
- package/dist/utils/cliUI.d.ts.map +1 -1
- package/dist/utils/cliUI.js +71 -56
- package/dist/utils/cliUI.js.map +1 -1
- package/dist/utils/i18n.d.ts +181 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/i18n.js +401 -0
- package/dist/utils/i18n.js.map +1 -0
- package/dist/utils/interactiveMode.d.ts +6 -1
- package/dist/utils/interactiveMode.d.ts.map +1 -1
- package/dist/utils/interactiveMode.js +375 -70
- package/dist/utils/interactiveMode.js.map +1 -1
- package/dist/utils/tokenEstimator.d.ts +10 -9
- package/dist/utils/tokenEstimator.d.ts.map +1 -1
- package/dist/utils/tokenEstimator.js +45 -109
- package/dist/utils/tokenEstimator.js.map +1 -1
- package/package.json +26 -23
- package/prompts/update_plan_prompt.md +42 -0
- package/prompts/update_scaffold_prompt.md +48 -0
- package/dist/generators/agentGenerator.d.ts +0 -23
- package/dist/generators/agentGenerator.d.ts.map +0 -1
- package/dist/generators/agentGenerator.js +0 -357
- package/dist/generators/agentGenerator.js.map +0 -1
- package/dist/generators/documentationGenerator.d.ts +0 -40
- package/dist/generators/documentationGenerator.d.ts.map +0 -1
- package/dist/generators/documentationGenerator.js +0 -786
- package/dist/generators/documentationGenerator.js.map +0 -1
- package/dist/generators/incrementalDocumentationGenerator.d.ts.map +0 -1
- package/dist/generators/incrementalDocumentationGenerator.js.map +0 -1
- /package/dist/generators/{incrementalDocumentationGenerator.js → documentation/incrementalDocumentationGenerator.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelinesAnalyzer.js","sourceRoot":"","sources":["../../../src/generators/guidelines/guidelinesAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { RepoStructure } from '../../types';
|
|
2
|
+
import { FileMapper } from '../../utils/fileMapper';
|
|
3
|
+
import { BaseLLMClient } from '../../services/baseLLMClient';
|
|
4
|
+
import { ModuleGroup } from '../moduleGrouper';
|
|
5
|
+
import { GuidelineConfig, GuidelineCategory } from './guidelineTypes';
|
|
6
|
+
export declare class GuidelinesGenerator {
|
|
7
|
+
private fileMapper;
|
|
8
|
+
private llmClient;
|
|
9
|
+
private moduleGrouper;
|
|
10
|
+
private templates;
|
|
11
|
+
private analyzer;
|
|
12
|
+
constructor(fileMapper: FileMapper, llmClient: BaseLLMClient);
|
|
13
|
+
generateGuidelines(repoStructure: RepoStructure, outputDir: string, config?: Partial<GuidelineConfig>, verbose?: boolean): Promise<void>;
|
|
14
|
+
generateComprehensiveGuidelines(repoStructure: RepoStructure, moduleGroups: ModuleGroup[], guidelinesDir: string, config: GuidelineConfig, verbose: boolean): Promise<void>;
|
|
15
|
+
generateCategorySpecificGuidelines(repoStructure: RepoStructure, moduleGroups: ModuleGroup[], guidelinesDir: string, config: GuidelineConfig, verbose: boolean): Promise<void>;
|
|
16
|
+
generateGuidelinesIndex(guidelinesDir: string, config: GuidelineConfig, analysis: any, verbose: boolean): Promise<void>;
|
|
17
|
+
private createGuidelinesIndex;
|
|
18
|
+
private getTechnologyRelevantCategories;
|
|
19
|
+
generateTestingGuidelinesOnly(repoStructure: RepoStructure, outputDir: string, verbose?: boolean): Promise<void>;
|
|
20
|
+
generateFrontendGuidelinesOnly(repoStructure: RepoStructure, outputDir: string, verbose?: boolean): Promise<void>;
|
|
21
|
+
generateBackendGuidelinesOnly(repoStructure: RepoStructure, outputDir: string, verbose?: boolean): Promise<void>;
|
|
22
|
+
generateSecurityGuidelinesOnly(repoStructure: RepoStructure, outputDir: string, verbose?: boolean): Promise<void>;
|
|
23
|
+
analyzeCodebaseOnly(repoStructure: RepoStructure, verbose?: boolean): Promise<{
|
|
24
|
+
technologies: any[];
|
|
25
|
+
projectType: string;
|
|
26
|
+
complexity: string;
|
|
27
|
+
recommendedCategories: GuidelineCategory[];
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=guidelinesGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelinesGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/guidelines/guidelinesGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAiB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EACL,eAAe,EACf,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;IANnB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,QAAQ,CAAqB;gBAG3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,aAAa;IAO5B,kBAAkB,CACtB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,EACrC,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IAmCV,+BAA+B,CACnC,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,WAAW,EAAE,EAC3B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAoBV,kCAAkC,CACtC,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,WAAW,EAAE,EAC3B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IA2BV,uBAAuB,CAC3B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,qBAAqB;IAsG7B,OAAO,CAAC,+BAA+B;IAoBjC,6BAA6B,CACjC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IASV,8BAA8B,CAClC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IASV,6BAA6B,CACjC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IASV,8BAA8B,CAClC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IASV,mBAAmB,CACvB,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,YAAY,EAAE,GAAG,EAAE,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;KAC5C,CAAC;CAgBH"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.GuidelinesGenerator = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const moduleGrouper_1 = require("../moduleGrouper");
|
|
39
|
+
const shared_1 = require("../shared");
|
|
40
|
+
const guidelinesTemplates_1 = require("./guidelinesTemplates");
|
|
41
|
+
const guidelinesAnalyzer_1 = require("./guidelinesAnalyzer");
|
|
42
|
+
class GuidelinesGenerator {
|
|
43
|
+
constructor(fileMapper, llmClient) {
|
|
44
|
+
this.fileMapper = fileMapper;
|
|
45
|
+
this.llmClient = llmClient;
|
|
46
|
+
this.moduleGrouper = new moduleGrouper_1.ModuleGrouper(fileMapper);
|
|
47
|
+
this.templates = new guidelinesTemplates_1.GuidelinesTemplates(llmClient, fileMapper);
|
|
48
|
+
this.analyzer = new guidelinesAnalyzer_1.GuidelinesAnalyzer(fileMapper);
|
|
49
|
+
}
|
|
50
|
+
async generateGuidelines(repoStructure, outputDir, config = {}, verbose = false) {
|
|
51
|
+
const analysis = await this.analyzer.analyzeCodebase(repoStructure);
|
|
52
|
+
const fullConfig = {
|
|
53
|
+
categories: config.categories || analysis.recommendedCategories,
|
|
54
|
+
techStack: analysis.techStack,
|
|
55
|
+
projectType: analysis.projectType,
|
|
56
|
+
complexity: analysis.complexity,
|
|
57
|
+
teamSize: 'medium',
|
|
58
|
+
includeExamples: true,
|
|
59
|
+
includeTools: true,
|
|
60
|
+
...config
|
|
61
|
+
};
|
|
62
|
+
const guidelinesDir = path.join(outputDir, 'guidelines');
|
|
63
|
+
await shared_1.GeneratorUtils.ensureDirectoryAndLog(guidelinesDir, verbose, '📋 Generating software development guidelines');
|
|
64
|
+
const moduleGroups = this.moduleGrouper.getModuleGroups(repoStructure);
|
|
65
|
+
// Generate comprehensive guidelines document
|
|
66
|
+
await this.generateComprehensiveGuidelines(repoStructure, moduleGroups, guidelinesDir, fullConfig, verbose);
|
|
67
|
+
// Generate category-specific guidelines
|
|
68
|
+
await this.generateCategorySpecificGuidelines(repoStructure, moduleGroups, guidelinesDir, fullConfig, verbose);
|
|
69
|
+
// Generate guidelines index
|
|
70
|
+
await this.generateGuidelinesIndex(guidelinesDir, fullConfig, analysis, verbose);
|
|
71
|
+
if (verbose) {
|
|
72
|
+
console.log(`✅ Generated guidelines for: ${fullConfig.categories.join(', ')}`);
|
|
73
|
+
console.log(`📊 Analyzed ${analysis.technologies.length} technologies`);
|
|
74
|
+
console.log(`🎯 Project type: ${analysis.projectType}, Complexity: ${analysis.complexity}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async generateComprehensiveGuidelines(repoStructure, moduleGroups, guidelinesDir, config, verbose) {
|
|
78
|
+
try {
|
|
79
|
+
const content = await this.templates.generateSoftwareGuidelines(repoStructure, moduleGroups, config);
|
|
80
|
+
const filePath = path.join(guidelinesDir, 'comprehensive-guidelines.md');
|
|
81
|
+
await shared_1.GeneratorUtils.writeFileWithLogging(filePath, content, verbose, 'Generated Comprehensive Software Guidelines');
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
shared_1.GeneratorUtils.logError('Error generating comprehensive guidelines', error, verbose);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async generateCategorySpecificGuidelines(repoStructure, moduleGroups, guidelinesDir, config, verbose) {
|
|
88
|
+
shared_1.GeneratorUtils.logProgress('📝 Generating category-specific guidelines...', verbose);
|
|
89
|
+
for (const category of config.categories) {
|
|
90
|
+
try {
|
|
91
|
+
const content = await this.templates.generateCategorySpecificGuidelines(category, repoStructure, moduleGroups, config);
|
|
92
|
+
const fileName = `${category}-guidelines.md`;
|
|
93
|
+
const filePath = path.join(guidelinesDir, fileName);
|
|
94
|
+
await shared_1.GeneratorUtils.writeFileWithLogging(filePath, content, verbose, `Generated ${shared_1.GeneratorUtils.formatTitle(category)} Guidelines`);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
shared_1.GeneratorUtils.logError(`Error generating ${category} guidelines`, error, verbose);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async generateGuidelinesIndex(guidelinesDir, config, analysis, verbose) {
|
|
102
|
+
const indexContent = this.createGuidelinesIndex(config, analysis);
|
|
103
|
+
const indexPath = path.join(guidelinesDir, 'README.md');
|
|
104
|
+
await shared_1.GeneratorUtils.writeFileWithLogging(indexPath, indexContent, verbose, 'Generated Guidelines Index');
|
|
105
|
+
}
|
|
106
|
+
createGuidelinesIndex(config, analysis) {
|
|
107
|
+
const categoryDescriptions = {
|
|
108
|
+
'testing': 'Testing strategies, frameworks, and quality assurance practices',
|
|
109
|
+
'frontend': 'UI development, component architecture, and user experience guidelines',
|
|
110
|
+
'backend': 'Server-side development, API design, and service architecture',
|
|
111
|
+
'database': 'Data modeling, query optimization, and database management',
|
|
112
|
+
'security': 'Security best practices, authentication, and vulnerability prevention',
|
|
113
|
+
'performance': 'Performance optimization, monitoring, and efficiency guidelines',
|
|
114
|
+
'code-style': 'Coding standards, formatting, and maintainability practices',
|
|
115
|
+
'git-workflow': 'Version control, branching strategies, and collaboration workflows',
|
|
116
|
+
'deployment': 'CI/CD, release management, and production deployment',
|
|
117
|
+
'monitoring': 'Logging, metrics, alerting, and system observability',
|
|
118
|
+
'documentation': 'Code documentation, API docs, and knowledge management',
|
|
119
|
+
'architecture': 'System design, architectural patterns, and technical decisions'
|
|
120
|
+
};
|
|
121
|
+
const techStackSummary = analysis.technologies
|
|
122
|
+
.filter((t) => t.confidence > 0.5)
|
|
123
|
+
.map((t) => `${t.name} (${t.category})`)
|
|
124
|
+
.join(', ');
|
|
125
|
+
const sections = config.categories.map(category => {
|
|
126
|
+
const title = shared_1.GeneratorUtils.formatTitle(category);
|
|
127
|
+
const description = categoryDescriptions[category];
|
|
128
|
+
return `### [${title}](./${category}-guidelines.md)
|
|
129
|
+
${description}`;
|
|
130
|
+
}).join('\n\n');
|
|
131
|
+
return `# Software Development Guidelines
|
|
132
|
+
|
|
133
|
+
## Project Overview
|
|
134
|
+
- **Type**: ${config.projectType}
|
|
135
|
+
- **Complexity**: ${config.complexity}
|
|
136
|
+
- **Technology Stack**: ${techStackSummary}
|
|
137
|
+
- **Team Size**: ${config.teamSize}
|
|
138
|
+
|
|
139
|
+
## Quick Start
|
|
140
|
+
1. **Start with [Comprehensive Guidelines](./comprehensive-guidelines.md)** - Overview of all development practices
|
|
141
|
+
2. **Review category-specific guidelines** based on your current task
|
|
142
|
+
3. **Integrate guidelines into your development workflow**
|
|
143
|
+
4. **Use guidelines during code reviews and onboarding**
|
|
144
|
+
|
|
145
|
+
## Guidelines Categories
|
|
146
|
+
|
|
147
|
+
${sections}
|
|
148
|
+
|
|
149
|
+
## How to Use These Guidelines
|
|
150
|
+
|
|
151
|
+
### For New Team Members
|
|
152
|
+
1. Read the comprehensive guidelines first
|
|
153
|
+
2. Focus on code-style and git-workflow guidelines
|
|
154
|
+
3. Review testing and documentation guidelines
|
|
155
|
+
4. Gradually explore other categories as needed
|
|
156
|
+
|
|
157
|
+
### For Daily Development
|
|
158
|
+
- Reference relevant category guidelines for your current task
|
|
159
|
+
- Use guidelines during code reviews
|
|
160
|
+
- Validate decisions against architectural guidelines
|
|
161
|
+
- Follow security guidelines for any security-related changes
|
|
162
|
+
|
|
163
|
+
### For Code Reviews
|
|
164
|
+
- Check adherence to code-style guidelines
|
|
165
|
+
- Verify testing guidelines are followed
|
|
166
|
+
- Ensure security guidelines are respected
|
|
167
|
+
- Validate architectural decisions
|
|
168
|
+
|
|
169
|
+
### For Project Setup
|
|
170
|
+
- Follow deployment guidelines for environment setup
|
|
171
|
+
- Implement monitoring guidelines from the start
|
|
172
|
+
- Set up automated tools recommended in guidelines
|
|
173
|
+
- Establish workflows based on git-workflow guidelines
|
|
174
|
+
|
|
175
|
+
## Tools and Automation
|
|
176
|
+
|
|
177
|
+
Based on your technology stack, consider setting up:
|
|
178
|
+
${analysis.technologies
|
|
179
|
+
.filter((t) => t.confidence > 0.6)
|
|
180
|
+
.map((t) => `- **${t.name}**: See ${this.getTechnologyRelevantCategories(t.name, config.categories).join(', ')} guidelines`)
|
|
181
|
+
.join('\n')}
|
|
182
|
+
|
|
183
|
+
## Continuous Improvement
|
|
184
|
+
|
|
185
|
+
### Regular Reviews
|
|
186
|
+
- **Monthly**: Review and update guidelines based on team feedback
|
|
187
|
+
- **Quarterly**: Assess guideline effectiveness and project evolution
|
|
188
|
+
- **Major Changes**: Update guidelines when technology stack changes
|
|
189
|
+
|
|
190
|
+
### Feedback Collection
|
|
191
|
+
- Gather team feedback on guideline usefulness
|
|
192
|
+
- Track common code review comments to identify guideline gaps
|
|
193
|
+
- Monitor project metrics to validate guideline effectiveness
|
|
194
|
+
|
|
195
|
+
### Evolution
|
|
196
|
+
- Adapt guidelines as project complexity grows
|
|
197
|
+
- Update technology-specific guidelines when upgrading frameworks
|
|
198
|
+
- Refine processes based on team size changes
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
${shared_1.GeneratorUtils.createGeneratedByFooter('Software Development Guidelines Index', `Categories: ${config.categories.join(', ')}`)}`;
|
|
203
|
+
}
|
|
204
|
+
getTechnologyRelevantCategories(techName, categories) {
|
|
205
|
+
const techCategoryMap = {
|
|
206
|
+
'React': ['frontend', 'testing', 'performance'],
|
|
207
|
+
'Vue': ['frontend', 'testing', 'performance'],
|
|
208
|
+
'Angular': ['frontend', 'testing', 'performance'],
|
|
209
|
+
'Express': ['backend', 'security', 'performance'],
|
|
210
|
+
'NestJS': ['backend', 'testing', 'architecture'],
|
|
211
|
+
'Jest': ['testing'],
|
|
212
|
+
'Cypress': ['testing'],
|
|
213
|
+
'MongoDB': ['database', 'performance'],
|
|
214
|
+
'PostgreSQL': ['database', 'performance'],
|
|
215
|
+
'Docker': ['deployment', 'monitoring'],
|
|
216
|
+
'TypeScript': ['code-style', 'testing']
|
|
217
|
+
};
|
|
218
|
+
const relevantCategories = techCategoryMap[techName] || [];
|
|
219
|
+
return relevantCategories.filter(cat => categories.includes(cat));
|
|
220
|
+
}
|
|
221
|
+
// Convenience methods for specific guideline generation
|
|
222
|
+
async generateTestingGuidelinesOnly(repoStructure, outputDir, verbose = false) {
|
|
223
|
+
await this.generateGuidelines(repoStructure, outputDir, { categories: ['testing'] }, verbose);
|
|
224
|
+
}
|
|
225
|
+
async generateFrontendGuidelinesOnly(repoStructure, outputDir, verbose = false) {
|
|
226
|
+
await this.generateGuidelines(repoStructure, outputDir, { categories: ['frontend', 'performance', 'code-style'] }, verbose);
|
|
227
|
+
}
|
|
228
|
+
async generateBackendGuidelinesOnly(repoStructure, outputDir, verbose = false) {
|
|
229
|
+
await this.generateGuidelines(repoStructure, outputDir, { categories: ['backend', 'security', 'database', 'monitoring'] }, verbose);
|
|
230
|
+
}
|
|
231
|
+
async generateSecurityGuidelinesOnly(repoStructure, outputDir, verbose = false) {
|
|
232
|
+
await this.generateGuidelines(repoStructure, outputDir, { categories: ['security'] }, verbose);
|
|
233
|
+
}
|
|
234
|
+
async analyzeCodebaseOnly(repoStructure, verbose = false) {
|
|
235
|
+
if (verbose) {
|
|
236
|
+
shared_1.GeneratorUtils.logProgress('🔍 Analyzing codebase for guideline recommendations...', verbose);
|
|
237
|
+
}
|
|
238
|
+
const analysis = await this.analyzer.analyzeCodebase(repoStructure);
|
|
239
|
+
if (verbose) {
|
|
240
|
+
console.log(`📊 Found ${analysis.technologies.length} technologies`);
|
|
241
|
+
console.log(`🎯 Project type: ${analysis.projectType}`);
|
|
242
|
+
console.log(`📈 Complexity: ${analysis.complexity}`);
|
|
243
|
+
console.log(`💡 Recommended categories: ${analysis.recommendedCategories.join(', ')}`);
|
|
244
|
+
}
|
|
245
|
+
return analysis;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.GuidelinesGenerator = GuidelinesGenerator;
|
|
249
|
+
//# sourceMappingURL=guidelinesGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelinesGenerator.js","sourceRoot":"","sources":["../../../src/generators/guidelines/guidelinesGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RepoStructure } from '../../types';
|
|
2
|
+
import { BaseLLMClient } from '../../services/baseLLMClient';
|
|
3
|
+
import { ModuleGroup } from '../moduleGrouper';
|
|
4
|
+
import { GuidelineCategory, GuidelineConfig } from './guidelineTypes';
|
|
5
|
+
export declare class GuidelinesTemplates {
|
|
6
|
+
private llmClient;
|
|
7
|
+
private analyzer;
|
|
8
|
+
constructor(llmClient: BaseLLMClient, fileMapper?: any);
|
|
9
|
+
generateSoftwareGuidelines(repoStructure: RepoStructure, moduleGroups: ModuleGroup[], config?: Partial<GuidelineConfig>): Promise<string>;
|
|
10
|
+
generateCategorySpecificGuidelines(category: GuidelineCategory, repoStructure: RepoStructure, moduleGroups: ModuleGroup[], config?: Partial<GuidelineConfig>): Promise<string>;
|
|
11
|
+
private createGuidelinesPrompt;
|
|
12
|
+
private createCategorySpecificPrompt;
|
|
13
|
+
private formatGuidelinesDocument;
|
|
14
|
+
private formatCategoryDocument;
|
|
15
|
+
private buildGuidelinesContext;
|
|
16
|
+
private buildCategoryContext;
|
|
17
|
+
private getTestingContext;
|
|
18
|
+
private getFrontendContext;
|
|
19
|
+
private getBackendContext;
|
|
20
|
+
private getDatabaseContext;
|
|
21
|
+
private isTechnologyRelevantToCategory;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=guidelinesTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelinesTemplates.d.ts","sourceRoot":"","sources":["../../../src/generators/guidelines/guidelinesTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EACL,iBAAiB,EACjB,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAG1B,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,SAAS;IAHnB,OAAO,CAAC,QAAQ,CAAqB;gBAG3B,SAAS,EAAE,aAAa,EAChC,UAAU,CAAC,EAAE,GAAG;IAKZ,0BAA0B,CAC9B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,WAAW,EAAE,EAC3B,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACpC,OAAO,CAAC,MAAM,CAAC;IAwBZ,kCAAkC,CACtC,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,WAAW,EAAE,EAC3B,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACpC,OAAO,CAAC,MAAM,CAAC;IAwBlB,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,wBAAwB;IA+ChC,OAAO,CAAC,sBAAsB;IA4C9B,OAAO,CAAC,sBAAsB;IAyC9B,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,8BAA8B;CAmBvC"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GuidelinesTemplates = void 0;
|
|
4
|
+
const shared_1 = require("../shared");
|
|
5
|
+
const guidelinesAnalyzer_1 = require("./guidelinesAnalyzer");
|
|
6
|
+
class GuidelinesTemplates {
|
|
7
|
+
constructor(llmClient, fileMapper) {
|
|
8
|
+
this.llmClient = llmClient;
|
|
9
|
+
this.analyzer = new guidelinesAnalyzer_1.GuidelinesAnalyzer(fileMapper);
|
|
10
|
+
}
|
|
11
|
+
async generateSoftwareGuidelines(repoStructure, moduleGroups, config = {}) {
|
|
12
|
+
const analysis = await this.analyzer.analyzeCodebase(repoStructure);
|
|
13
|
+
const fullConfig = {
|
|
14
|
+
categories: config.categories || analysis.recommendedCategories,
|
|
15
|
+
techStack: analysis.techStack,
|
|
16
|
+
projectType: analysis.projectType,
|
|
17
|
+
complexity: analysis.complexity,
|
|
18
|
+
teamSize: 'medium',
|
|
19
|
+
includeExamples: true,
|
|
20
|
+
includeTools: true,
|
|
21
|
+
...config
|
|
22
|
+
};
|
|
23
|
+
const context = this.buildGuidelinesContext(repoStructure, moduleGroups, analysis, fullConfig);
|
|
24
|
+
const content = await this.llmClient.generateText(this.createGuidelinesPrompt(fullConfig), context);
|
|
25
|
+
return this.formatGuidelinesDocument(content, fullConfig, analysis);
|
|
26
|
+
}
|
|
27
|
+
async generateCategorySpecificGuidelines(category, repoStructure, moduleGroups, config = {}) {
|
|
28
|
+
const analysis = await this.analyzer.analyzeCodebase(repoStructure);
|
|
29
|
+
const fullConfig = {
|
|
30
|
+
categories: [category],
|
|
31
|
+
techStack: analysis.techStack,
|
|
32
|
+
projectType: analysis.projectType,
|
|
33
|
+
complexity: analysis.complexity,
|
|
34
|
+
teamSize: 'medium',
|
|
35
|
+
includeExamples: true,
|
|
36
|
+
includeTools: true,
|
|
37
|
+
...config
|
|
38
|
+
};
|
|
39
|
+
const context = this.buildCategoryContext(category, repoStructure, moduleGroups, analysis, fullConfig);
|
|
40
|
+
const content = await this.llmClient.generateText(this.createCategorySpecificPrompt(category, fullConfig), context);
|
|
41
|
+
return this.formatCategoryDocument(category, content, fullConfig, analysis);
|
|
42
|
+
}
|
|
43
|
+
createGuidelinesPrompt(config) {
|
|
44
|
+
return `Create comprehensive software development guidelines for this ${config.projectType} project.
|
|
45
|
+
|
|
46
|
+
Generate guidelines for the following categories: ${config.categories.join(', ')}
|
|
47
|
+
|
|
48
|
+
Requirements:
|
|
49
|
+
- **Specificity**: Make guidelines specific to the detected technology stack and project patterns
|
|
50
|
+
- **Actionability**: Provide clear, actionable rules that developers can follow
|
|
51
|
+
- **Context-Awareness**: Base guidelines on the actual codebase structure and conventions
|
|
52
|
+
- **Practical Examples**: Include concrete examples using the project's technology stack
|
|
53
|
+
- **Team Size**: Consider guidelines appropriate for a ${config.teamSize} team
|
|
54
|
+
- **Complexity**: Adapt guidelines for a ${config.complexity} complexity project
|
|
55
|
+
|
|
56
|
+
For each category, provide:
|
|
57
|
+
1. **Overview**: Brief explanation of why this category matters for this project
|
|
58
|
+
2. **Core Principles**: 3-5 fundamental principles to follow
|
|
59
|
+
3. **Specific Rules**: Detailed, actionable guidelines with rationale
|
|
60
|
+
4. **Examples**: Code examples using the detected technologies
|
|
61
|
+
5. **Tools & Automation**: Recommended tools and automation for this category
|
|
62
|
+
6. **Common Pitfalls**: What to avoid and why
|
|
63
|
+
7. **Quality Gates**: How to measure adherence to these guidelines
|
|
64
|
+
|
|
65
|
+
Structure the guidelines to be:
|
|
66
|
+
- Easy to onboard new team members
|
|
67
|
+
- Enforceable through tooling where possible
|
|
68
|
+
- Adaptable as the project evolves
|
|
69
|
+
- Consistent with industry best practices for the detected tech stack
|
|
70
|
+
|
|
71
|
+
Focus on practical, day-to-day development guidance rather than theoretical concepts.`;
|
|
72
|
+
}
|
|
73
|
+
createCategorySpecificPrompt(category, config) {
|
|
74
|
+
const categoryDescriptions = {
|
|
75
|
+
'testing': 'testing strategies, test types, coverage, and quality assurance',
|
|
76
|
+
'frontend': 'UI/UX development, component architecture, state management, and performance',
|
|
77
|
+
'backend': 'API design, service architecture, data processing, and scalability',
|
|
78
|
+
'database': 'data modeling, query optimization, migrations, and data integrity',
|
|
79
|
+
'security': 'authentication, authorization, data protection, and vulnerability prevention',
|
|
80
|
+
'performance': 'optimization strategies, monitoring, and performance budgets',
|
|
81
|
+
'code-style': 'coding standards, formatting, naming conventions, and maintainability',
|
|
82
|
+
'git-workflow': 'version control, branching strategies, and collaboration workflows',
|
|
83
|
+
'deployment': 'CI/CD, release management, and production deployment strategies',
|
|
84
|
+
'monitoring': 'logging, metrics, alerting, and observability',
|
|
85
|
+
'documentation': 'code documentation, API docs, and knowledge management',
|
|
86
|
+
'architecture': 'system design, architectural patterns, and technical decisions'
|
|
87
|
+
};
|
|
88
|
+
return `Create detailed software development guidelines specifically for ${categoryDescriptions[category]} in this ${config.projectType} project.
|
|
89
|
+
|
|
90
|
+
Focus on: ${category.toUpperCase()} Guidelines
|
|
91
|
+
|
|
92
|
+
Requirements:
|
|
93
|
+
- **Deep Dive**: Provide comprehensive coverage of ${category} practices
|
|
94
|
+
- **Technology-Specific**: Tailor guidelines to the detected technology stack
|
|
95
|
+
- **Practical Rules**: Include specific, actionable guidelines with clear rationale
|
|
96
|
+
- **Implementation Details**: Show how to implement these guidelines in this project
|
|
97
|
+
- **Tool Integration**: Recommend specific tools and configurations
|
|
98
|
+
- **Quality Metrics**: Define measurable success criteria
|
|
99
|
+
- **Common Scenarios**: Address typical challenges in ${category} for this project type
|
|
100
|
+
|
|
101
|
+
Structure:
|
|
102
|
+
1. **Introduction**: Why ${category} matters for this specific project
|
|
103
|
+
2. **Fundamental Principles**: Core concepts and philosophies
|
|
104
|
+
3. **Detailed Guidelines**: Comprehensive rules with examples
|
|
105
|
+
4. **Implementation Strategy**: How to adopt these guidelines
|
|
106
|
+
5. **Tools & Automation**: Specific tool recommendations and configurations
|
|
107
|
+
6. **Quality Assurance**: How to measure and maintain quality
|
|
108
|
+
7. **Troubleshooting**: Common issues and solutions
|
|
109
|
+
8. **Evolution**: How to adapt guidelines as the project grows
|
|
110
|
+
|
|
111
|
+
Make it a definitive guide that team members can reference daily for ${category}-related decisions.`;
|
|
112
|
+
}
|
|
113
|
+
formatGuidelinesDocument(content, config, analysis) {
|
|
114
|
+
const techStackSummary = analysis.technologies
|
|
115
|
+
.filter(t => t.confidence > 0.5)
|
|
116
|
+
.map(t => `${t.name} (${t.category})`)
|
|
117
|
+
.join(', ');
|
|
118
|
+
return `# Software Development Guidelines
|
|
119
|
+
|
|
120
|
+
## Project Overview
|
|
121
|
+
- **Type**: ${config.projectType}
|
|
122
|
+
- **Complexity**: ${config.complexity}
|
|
123
|
+
- **Technology Stack**: ${techStackSummary}
|
|
124
|
+
- **Team Size**: ${config.teamSize}
|
|
125
|
+
|
|
126
|
+
## Scope
|
|
127
|
+
These guidelines cover: ${config.categories.map(c => c.replace('-', ' ')).join(', ')}
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
${content}
|
|
132
|
+
|
|
133
|
+
## Guidelines Maintenance
|
|
134
|
+
|
|
135
|
+
### Updating Guidelines
|
|
136
|
+
- Review quarterly or when major technology changes occur
|
|
137
|
+
- Update based on team feedback and project evolution
|
|
138
|
+
- Validate guidelines against actual project needs
|
|
139
|
+
|
|
140
|
+
### Enforcement
|
|
141
|
+
- Integrate guidelines into code review process
|
|
142
|
+
- Use automated tools where possible for consistency
|
|
143
|
+
- Provide training and documentation for new team members
|
|
144
|
+
|
|
145
|
+
### Metrics
|
|
146
|
+
- Track adherence through code review feedback
|
|
147
|
+
- Monitor quality metrics related to each guideline category
|
|
148
|
+
- Gather team feedback on guideline effectiveness
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
${shared_1.GeneratorUtils.createGeneratedByFooter('Software Development Guidelines', `Categories: ${config.categories.join(', ')}`)}`;
|
|
153
|
+
}
|
|
154
|
+
formatCategoryDocument(category, content, config, analysis) {
|
|
155
|
+
const categoryTitle = shared_1.GeneratorUtils.formatTitle(category);
|
|
156
|
+
return `# ${categoryTitle} Guidelines
|
|
157
|
+
|
|
158
|
+
## Context
|
|
159
|
+
- **Project Type**: ${config.projectType}
|
|
160
|
+
- **Complexity**: ${config.complexity}
|
|
161
|
+
- **Relevant Technologies**: ${analysis.technologies
|
|
162
|
+
.filter(t => this.isTechnologyRelevantToCategory(t, category))
|
|
163
|
+
.map(t => t.name)
|
|
164
|
+
.join(', ') || 'General practices'}
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
${content}
|
|
169
|
+
|
|
170
|
+
## Implementation Checklist
|
|
171
|
+
|
|
172
|
+
### Immediate Actions
|
|
173
|
+
- [ ] Review current ${category} practices against these guidelines
|
|
174
|
+
- [ ] Identify gaps and create improvement plan
|
|
175
|
+
- [ ] Set up recommended tools and automation
|
|
176
|
+
|
|
177
|
+
### Ongoing Practices
|
|
178
|
+
- [ ] Incorporate guidelines into daily development workflow
|
|
179
|
+
- [ ] Include ${category} review in code review process
|
|
180
|
+
- [ ] Monitor and measure adherence to guidelines
|
|
181
|
+
|
|
182
|
+
### Continuous Improvement
|
|
183
|
+
- [ ] Regularly review and update guidelines
|
|
184
|
+
- [ ] Gather team feedback on guideline effectiveness
|
|
185
|
+
- [ ] Adapt guidelines based on project evolution
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
${shared_1.GeneratorUtils.createGeneratedByFooter(`${categoryTitle} Guidelines`)}`;
|
|
190
|
+
}
|
|
191
|
+
buildGuidelinesContext(repoStructure, moduleGroups, analysis, config) {
|
|
192
|
+
const topExtensions = shared_1.GeneratorUtils.getTopFileExtensions(repoStructure, 5);
|
|
193
|
+
return `Project Analysis:
|
|
194
|
+
- Root Path: ${repoStructure.rootPath}
|
|
195
|
+
- Total Files: ${repoStructure.totalFiles}
|
|
196
|
+
- Project Type: ${analysis.projectType}
|
|
197
|
+
- Complexity: ${analysis.complexity}
|
|
198
|
+
- Primary Languages: ${topExtensions.map(([ext, count]) => `${ext} (${count} files)`).join(', ')}
|
|
199
|
+
|
|
200
|
+
Detected Technologies:
|
|
201
|
+
${analysis.technologies.map((t) => `- ${t.name} (${t.category}): ${(t.confidence * 100).toFixed(0)}% confidence`).join('\n')}
|
|
202
|
+
|
|
203
|
+
Module Structure:
|
|
204
|
+
${moduleGroups.slice(0, 10).map(m => `- ${m.name}: ${m.description} (${m.files.length} files)`).join('\n')}
|
|
205
|
+
|
|
206
|
+
Key Directories:
|
|
207
|
+
${[...new Set(repoStructure.files.map(f => f.relativePath.split('/')[0]))]
|
|
208
|
+
.filter(dir => !dir.includes('.'))
|
|
209
|
+
.slice(0, 10)
|
|
210
|
+
.map(dir => `- ${dir}/`)
|
|
211
|
+
.join('\n')}
|
|
212
|
+
|
|
213
|
+
Configuration Files:
|
|
214
|
+
${repoStructure.files
|
|
215
|
+
.filter(f => ['package.json', 'tsconfig.json', '.env', 'jest.config.js', 'webpack.config.js'].some(config => f.relativePath.includes(config)))
|
|
216
|
+
.map(f => `- ${f.relativePath}`)
|
|
217
|
+
.join('\n')}
|
|
218
|
+
|
|
219
|
+
Guideline Categories to Cover: ${config.categories.join(', ')}`;
|
|
220
|
+
}
|
|
221
|
+
buildCategoryContext(category, repoStructure, moduleGroups, analysis, config) {
|
|
222
|
+
const baseContext = this.buildGuidelinesContext(repoStructure, moduleGroups, analysis, config);
|
|
223
|
+
// Add category-specific context
|
|
224
|
+
let categorySpecificContext = '';
|
|
225
|
+
if (category === 'testing') {
|
|
226
|
+
categorySpecificContext = this.getTestingContext(repoStructure, analysis);
|
|
227
|
+
}
|
|
228
|
+
else if (category === 'frontend') {
|
|
229
|
+
categorySpecificContext = this.getFrontendContext(repoStructure, analysis);
|
|
230
|
+
}
|
|
231
|
+
else if (category === 'backend') {
|
|
232
|
+
categorySpecificContext = this.getBackendContext(repoStructure, analysis);
|
|
233
|
+
}
|
|
234
|
+
else if (category === 'database') {
|
|
235
|
+
categorySpecificContext = this.getDatabaseContext(repoStructure, analysis);
|
|
236
|
+
}
|
|
237
|
+
return `${baseContext}
|
|
238
|
+
|
|
239
|
+
Category-Specific Context for ${category.toUpperCase()}:
|
|
240
|
+
${categorySpecificContext}`;
|
|
241
|
+
}
|
|
242
|
+
getTestingContext(repoStructure, analysis) {
|
|
243
|
+
const testFiles = repoStructure.files.filter(f => f.relativePath.includes('test') ||
|
|
244
|
+
f.relativePath.includes('spec') ||
|
|
245
|
+
f.relativePath.includes('__tests__'));
|
|
246
|
+
return `Testing Context:
|
|
247
|
+
- Test Files Found: ${testFiles.length}
|
|
248
|
+
- Testing Frameworks Detected: ${analysis.technologies
|
|
249
|
+
.filter((t) => ['Jest', 'Cypress', 'Vitest', 'Mocha'].includes(t.name))
|
|
250
|
+
.map((t) => t.name)
|
|
251
|
+
.join(', ') || 'None detected'}
|
|
252
|
+
- Test File Patterns: ${testFiles.slice(0, 5).map(f => f.relativePath).join(', ')}`;
|
|
253
|
+
}
|
|
254
|
+
getFrontendContext(repoStructure, analysis) {
|
|
255
|
+
const frontendTech = analysis.technologies.filter((t) => ['React', 'Vue', 'Angular', 'Next.js'].includes(t.name));
|
|
256
|
+
return `Frontend Context:
|
|
257
|
+
- Frontend Frameworks: ${frontendTech.map((t) => t.name).join(', ') || 'None detected'}
|
|
258
|
+
- Component Files: ${repoStructure.files.filter(f => f.relativePath.includes('component') ||
|
|
259
|
+
f.relativePath.endsWith('.jsx') ||
|
|
260
|
+
f.relativePath.endsWith('.vue')).length}
|
|
261
|
+
- Asset Files: ${repoStructure.files.filter(f => f.relativePath.includes('assets') ||
|
|
262
|
+
f.relativePath.includes('public') ||
|
|
263
|
+
f.relativePath.includes('static')).length}`;
|
|
264
|
+
}
|
|
265
|
+
getBackendContext(repoStructure, analysis) {
|
|
266
|
+
const backendTech = analysis.technologies.filter((t) => ['Express', 'Fastify', 'NestJS'].includes(t.name));
|
|
267
|
+
return `Backend Context:
|
|
268
|
+
- Backend Frameworks: ${backendTech.map((t) => t.name).join(', ') || 'None detected'}
|
|
269
|
+
- API Files: ${repoStructure.files.filter(f => f.relativePath.includes('api') ||
|
|
270
|
+
f.relativePath.includes('route') ||
|
|
271
|
+
f.relativePath.includes('controller')).length}
|
|
272
|
+
- Service Files: ${repoStructure.files.filter(f => f.relativePath.includes('service') ||
|
|
273
|
+
f.relativePath.includes('handler')).length}`;
|
|
274
|
+
}
|
|
275
|
+
getDatabaseContext(repoStructure, analysis) {
|
|
276
|
+
const dbTech = analysis.technologies.filter((t) => t.category === 'database');
|
|
277
|
+
return `Database Context:
|
|
278
|
+
- Database Technologies: ${dbTech.map((t) => t.name).join(', ') || 'None detected'}
|
|
279
|
+
- Migration Files: ${repoStructure.files.filter(f => f.relativePath.includes('migration') ||
|
|
280
|
+
f.relativePath.includes('schema')).length}
|
|
281
|
+
- Model Files: ${repoStructure.files.filter(f => f.relativePath.includes('model') ||
|
|
282
|
+
f.relativePath.includes('entity')).length}`;
|
|
283
|
+
}
|
|
284
|
+
isTechnologyRelevantToCategory(tech, category) {
|
|
285
|
+
const relevanceMap = {
|
|
286
|
+
'testing': ['Jest', 'Cypress', 'Vitest', 'Mocha'],
|
|
287
|
+
'frontend': ['React', 'Vue', 'Angular', 'Next.js'],
|
|
288
|
+
'backend': ['Express', 'Fastify', 'NestJS'],
|
|
289
|
+
'database': ['MongoDB', 'PostgreSQL', 'Redis'],
|
|
290
|
+
'security': ['all'],
|
|
291
|
+
'performance': ['all'],
|
|
292
|
+
'code-style': ['TypeScript', 'JavaScript'],
|
|
293
|
+
'git-workflow': ['all'],
|
|
294
|
+
'deployment': ['Docker', 'Kubernetes'],
|
|
295
|
+
'monitoring': ['all'],
|
|
296
|
+
'documentation': ['all'],
|
|
297
|
+
'architecture': ['all']
|
|
298
|
+
};
|
|
299
|
+
const relevantTechs = relevanceMap[category];
|
|
300
|
+
return relevantTechs.includes('all') || relevantTechs.includes(tech.name);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
exports.GuidelinesTemplates = GuidelinesTemplates;
|
|
304
|
+
//# sourceMappingURL=guidelinesTemplates.js.map
|