@ai-coders/context 0.2.1 ā 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/agentGenerator.d.ts +6 -9
- package/dist/generators/agents/agentGenerator.d.ts.map +1 -1
- package/dist/generators/agents/agentGenerator.js +89 -32
- package/dist/generators/agents/agentGenerator.js.map +1 -1
- package/dist/generators/agents/index.d.ts +0 -2
- package/dist/generators/agents/index.d.ts.map +1 -1
- package/dist/generators/agents/index.js +1 -5
- package/dist/generators/agents/index.js.map +1 -1
- 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/documentation/documentationGenerator.d.ts +9 -15
- package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -1
- package/dist/generators/documentation/documentationGenerator.js +65 -77
- package/dist/generators/documentation/documentationGenerator.js.map +1 -1
- 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/documentation/index.d.ts +0 -6
- package/dist/generators/documentation/index.d.ts.map +1 -1
- package/dist/generators/documentation/index.js +1 -17
- package/dist/generators/documentation/index.js.map +1 -1
- 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/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/shared/contextGenerator.d.ts +2 -7
- package/dist/generators/shared/contextGenerator.d.ts.map +1 -1
- package/dist/generators/shared/contextGenerator.js +2 -98
- package/dist/generators/shared/contextGenerator.js.map +1 -1
- 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/index.d.ts +1 -0
- package/dist/generators/shared/index.d.ts.map +1 -1
- package/dist/generators/shared/index.js +3 -1
- package/dist/generators/shared/index.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1300 -609
- 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/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/documentation/enhancedDocumentationGenerator.d.ts +0 -21
- package/dist/generators/documentation/enhancedDocumentationGenerator.d.ts.map +0 -1
- package/dist/generators/documentation/enhancedDocumentationGenerator.js +0 -216
- package/dist/generators/documentation/enhancedDocumentationGenerator.js.map +0 -1
- package/dist/generators/documentation/newDocumentationTemplates.d.ts +0 -19
- package/dist/generators/documentation/newDocumentationTemplates.d.ts.map +0 -1
- package/dist/generators/documentation/newDocumentationTemplates.js +0 -307
- package/dist/generators/documentation/newDocumentationTemplates.js.map +0 -1
- package/dist/generators/documentationGenerator.d.ts +0 -22
- package/dist/generators/documentationGenerator.d.ts.map +0 -1
- package/dist/generators/documentationGenerator.js +0 -235
- package/dist/generators/documentationGenerator.js.map +0 -1
- package/dist/generators/documentationTemplates.d.ts +0 -16
- package/dist/generators/documentationTemplates.d.ts.map +0 -1
- package/dist/generators/documentationTemplates.js +0 -326
- package/dist/generators/documentationTemplates.js.map +0 -1
- package/dist/generators/documentationUtils.d.ts +0 -7
- package/dist/generators/documentationUtils.d.ts.map +0 -1
- package/dist/generators/documentationUtils.js +0 -38
- package/dist/generators/documentationUtils.js.map +0 -1
- package/dist/generators/incrementalDocumentationGenerator.d.ts +0 -33
- package/dist/generators/incrementalDocumentationGenerator.d.ts.map +0 -1
- package/dist/generators/incrementalDocumentationGenerator.js +0 -400
- package/dist/generators/incrementalDocumentationGenerator.js.map +0 -1
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { RepoStructure } from '../types';
|
|
2
|
-
import { FileMapper } from '../utils/fileMapper';
|
|
3
|
-
import { BaseLLMClient } from '../services/baseLLMClient';
|
|
4
|
-
import { GitService, GitChanges } from '../utils/gitService';
|
|
5
|
-
export declare class IncrementalDocumentationGenerator {
|
|
6
|
-
private fileMapper;
|
|
7
|
-
private llmClient;
|
|
8
|
-
private gitService;
|
|
9
|
-
constructor(fileMapper: FileMapper, llmClient: BaseLLMClient, gitService: GitService);
|
|
10
|
-
updateDocumentation(repoStructure: RepoStructure, outputDir: string, changes: GitChanges, verbose?: boolean): Promise<{
|
|
11
|
-
updated: number;
|
|
12
|
-
removed: number;
|
|
13
|
-
updatedFiles: string[];
|
|
14
|
-
removedFiles: string[];
|
|
15
|
-
overviewUpdated: boolean;
|
|
16
|
-
}>;
|
|
17
|
-
private getAffectedModules;
|
|
18
|
-
private getModuleNameForFile;
|
|
19
|
-
private getModuleKey;
|
|
20
|
-
private getModuleGroups;
|
|
21
|
-
private formatModuleName;
|
|
22
|
-
private getModuleDescription;
|
|
23
|
-
private updateModuleDocumentation;
|
|
24
|
-
private createModuleDocumentation;
|
|
25
|
-
private cleanupEmptyModules;
|
|
26
|
-
private updateOverviewDocuments;
|
|
27
|
-
private displayChangeSummary;
|
|
28
|
-
private createEnhancedProjectOverview;
|
|
29
|
-
private createDocumentationIndex;
|
|
30
|
-
private slugify;
|
|
31
|
-
private formatBytes;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=incrementalDocumentationGenerator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"incrementalDocumentationGenerator.d.ts","sourceRoot":"","sources":["../../src/generators/incrementalDocumentationGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,aAAa,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAS7D,qBAAa,iCAAiC;IAE1C,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;gBAFV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,UAAU;IAG1B,mBAAmB,CACvB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IA+FF,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;YAYd,yBAAyB;YAyBzB,yBAAyB;YA2DzB,mBAAmB;YA6BnB,uBAAuB;IAkCrC,OAAO,CAAC,oBAAoB;YAad,6BAA6B;IAoC3C,OAAO,CAAC,wBAAwB;IAmChC,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -1,400 +0,0 @@
|
|
|
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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.IncrementalDocumentationGenerator = void 0;
|
|
40
|
-
const fs = __importStar(require("fs-extra"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
-
class IncrementalDocumentationGenerator {
|
|
44
|
-
constructor(fileMapper, llmClient, gitService) {
|
|
45
|
-
this.fileMapper = fileMapper;
|
|
46
|
-
this.llmClient = llmClient;
|
|
47
|
-
this.gitService = gitService;
|
|
48
|
-
}
|
|
49
|
-
async updateDocumentation(repoStructure, outputDir, changes, verbose = false) {
|
|
50
|
-
const docsDir = path.join(outputDir, 'docs');
|
|
51
|
-
await fs.ensureDir(docsDir);
|
|
52
|
-
if (verbose) {
|
|
53
|
-
console.log(chalk_1.default.blue(`š Updating documentation in: ${docsDir}`));
|
|
54
|
-
this.displayChangeSummary(changes);
|
|
55
|
-
}
|
|
56
|
-
let updated = 0;
|
|
57
|
-
let removed = 0;
|
|
58
|
-
const updatedFiles = [];
|
|
59
|
-
const removedFiles = [];
|
|
60
|
-
let overviewUpdated = false;
|
|
61
|
-
// Get all changed files
|
|
62
|
-
const allChangedFiles = [
|
|
63
|
-
...changes.added,
|
|
64
|
-
...changes.modified,
|
|
65
|
-
...changes.deleted,
|
|
66
|
-
...changes.renamed.map(r => r.from),
|
|
67
|
-
...changes.renamed.map(r => r.to)
|
|
68
|
-
];
|
|
69
|
-
// Filter for tracked and relevant files only
|
|
70
|
-
const trackedChangedFiles = this.gitService.filterTrackedFiles(allChangedFiles);
|
|
71
|
-
const relevantChangedFiles = trackedChangedFiles.filter(file => {
|
|
72
|
-
const fullPath = path.join(repoStructure.rootPath, file);
|
|
73
|
-
return this.fileMapper.isTextFile(fullPath);
|
|
74
|
-
});
|
|
75
|
-
if (verbose) {
|
|
76
|
-
const untrackedFiles = allChangedFiles.filter(file => !trackedChangedFiles.includes(file));
|
|
77
|
-
if (untrackedFiles.length > 0) {
|
|
78
|
-
console.log(chalk_1.default.gray(`š Skipping ${untrackedFiles.length} untracked files`));
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (relevantChangedFiles.length === 0) {
|
|
82
|
-
if (verbose) {
|
|
83
|
-
console.log(chalk_1.default.yellow('š No relevant tracked file changes detected'));
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
updated: 0,
|
|
87
|
-
removed: 0,
|
|
88
|
-
updatedFiles: [],
|
|
89
|
-
removedFiles: [],
|
|
90
|
-
overviewUpdated: false
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
// Determine which modules are affected by the changes
|
|
94
|
-
const affectedModules = this.getAffectedModules(relevantChangedFiles, repoStructure);
|
|
95
|
-
if (verbose) {
|
|
96
|
-
console.log(chalk_1.default.yellow(`š¦ Updating ${affectedModules.length} affected modules...`));
|
|
97
|
-
affectedModules.forEach(module => {
|
|
98
|
-
console.log(chalk_1.default.gray(` - ${module.name} (${module.files.length} files)`));
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
// Update affected modules
|
|
102
|
-
for (const module of affectedModules) {
|
|
103
|
-
try {
|
|
104
|
-
const updatedFile = await this.updateModuleDocumentation(module, repoStructure, docsDir, verbose);
|
|
105
|
-
updatedFiles.push(updatedFile);
|
|
106
|
-
updated++;
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
if (verbose) {
|
|
110
|
-
console.log(chalk_1.default.red(`ā Error updating module ${module.name}: ${error}`));
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Handle deleted files by checking if any modules became empty
|
|
115
|
-
const cleanedUpFiles = await this.cleanupEmptyModules(docsDir, repoStructure, verbose);
|
|
116
|
-
removedFiles.push(...cleanedUpFiles);
|
|
117
|
-
removed += cleanedUpFiles.length;
|
|
118
|
-
// Update overview documents if there were significant changes
|
|
119
|
-
if (updated > 0 || removed > 0) {
|
|
120
|
-
await this.updateOverviewDocuments(repoStructure, docsDir, verbose);
|
|
121
|
-
overviewUpdated = true;
|
|
122
|
-
updatedFiles.push('README.md', 'overview.md');
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
updated,
|
|
126
|
-
removed,
|
|
127
|
-
updatedFiles,
|
|
128
|
-
removedFiles,
|
|
129
|
-
overviewUpdated
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
getAffectedModules(changedFiles, repoStructure) {
|
|
133
|
-
// Get all modules
|
|
134
|
-
const allModules = this.getModuleGroups(repoStructure);
|
|
135
|
-
// Find which modules contain changed files
|
|
136
|
-
const affectedModuleNames = new Set();
|
|
137
|
-
changedFiles.forEach(changedFile => {
|
|
138
|
-
const moduleName = this.getModuleNameForFile(changedFile);
|
|
139
|
-
affectedModuleNames.add(moduleName);
|
|
140
|
-
});
|
|
141
|
-
// Return only the affected modules
|
|
142
|
-
return allModules.filter(module => affectedModuleNames.has(this.getModuleKey(module.name)));
|
|
143
|
-
}
|
|
144
|
-
getModuleNameForFile(relativePath) {
|
|
145
|
-
const parts = relativePath.split(path.sep);
|
|
146
|
-
let groupName = 'Root Files';
|
|
147
|
-
if (parts.length > 1) {
|
|
148
|
-
groupName = parts[0];
|
|
149
|
-
// Special handling for src files
|
|
150
|
-
if (groupName === 'src' && parts.length > 2) {
|
|
151
|
-
groupName = parts[1];
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return groupName;
|
|
155
|
-
}
|
|
156
|
-
getModuleKey(moduleName) {
|
|
157
|
-
return moduleName.toLowerCase().replace(/\s+/g, '-');
|
|
158
|
-
}
|
|
159
|
-
getModuleGroups(repoStructure) {
|
|
160
|
-
const groups = new Map();
|
|
161
|
-
// Group files by their top-level directory or logical module
|
|
162
|
-
repoStructure.files.forEach(file => {
|
|
163
|
-
if (!this.fileMapper.isTextFile(file.path))
|
|
164
|
-
return;
|
|
165
|
-
const parts = file.relativePath.split(path.sep);
|
|
166
|
-
let groupName = 'Root Files';
|
|
167
|
-
if (parts.length > 1) {
|
|
168
|
-
groupName = parts[0];
|
|
169
|
-
// Special handling for src files
|
|
170
|
-
if (groupName === 'src' && parts.length > 2) {
|
|
171
|
-
groupName = parts[1];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
if (!groups.has(groupName)) {
|
|
175
|
-
groups.set(groupName, []);
|
|
176
|
-
}
|
|
177
|
-
groups.get(groupName).push(file);
|
|
178
|
-
});
|
|
179
|
-
// Convert to ModuleGroup array with descriptions
|
|
180
|
-
return Array.from(groups.entries()).map(([name, files]) => ({
|
|
181
|
-
name: this.formatModuleName(name),
|
|
182
|
-
description: this.getModuleDescription(name, files),
|
|
183
|
-
files
|
|
184
|
-
})).sort((a, b) => a.name.localeCompare(b.name));
|
|
185
|
-
}
|
|
186
|
-
formatModuleName(name) {
|
|
187
|
-
return name
|
|
188
|
-
.split(/[-_]/)
|
|
189
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
190
|
-
.join(' ');
|
|
191
|
-
}
|
|
192
|
-
getModuleDescription(name, files) {
|
|
193
|
-
const descriptions = {
|
|
194
|
-
'generators': 'Code generation utilities for documentation and agents',
|
|
195
|
-
'services': 'External service integrations and API clients',
|
|
196
|
-
'utils': 'Utility functions and helper modules',
|
|
197
|
-
'types': 'TypeScript type definitions and interfaces',
|
|
198
|
-
'Root Files': 'Main configuration and entry point files'
|
|
199
|
-
};
|
|
200
|
-
return descriptions[name] || `${this.formatModuleName(name)} module with ${files.length} files`;
|
|
201
|
-
}
|
|
202
|
-
async updateModuleDocumentation(module, repoStructure, docsDir, verbose) {
|
|
203
|
-
const modulesDir = path.join(docsDir, 'modules');
|
|
204
|
-
await fs.ensureDir(modulesDir);
|
|
205
|
-
const fileName = `${this.slugify(module.name)}.md`;
|
|
206
|
-
if (verbose) {
|
|
207
|
-
console.log(chalk_1.default.blue(`š Updating modules/${fileName}...`));
|
|
208
|
-
}
|
|
209
|
-
const moduleDoc = await this.createModuleDocumentation(module, repoStructure);
|
|
210
|
-
const modulePath = path.join(modulesDir, fileName);
|
|
211
|
-
await fs.writeFile(modulePath, moduleDoc);
|
|
212
|
-
if (verbose) {
|
|
213
|
-
console.log(chalk_1.default.green(`ā
Updated modules/${fileName}`));
|
|
214
|
-
}
|
|
215
|
-
return path.relative(docsDir, modulePath);
|
|
216
|
-
}
|
|
217
|
-
async createModuleDocumentation(module, _repoStructure) {
|
|
218
|
-
const fileContents = [];
|
|
219
|
-
for (const file of module.files.slice(0, 10)) { // Limit to prevent too large requests
|
|
220
|
-
try {
|
|
221
|
-
const content = await this.fileMapper.readFileContent(file.path);
|
|
222
|
-
fileContents.push(`File: ${file.relativePath}\n${content.substring(0, 1000)}...`);
|
|
223
|
-
}
|
|
224
|
-
catch (error) {
|
|
225
|
-
fileContents.push(`File: ${file.relativePath}\n[Error reading file: ${error}]`);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
const moduleContext = `Module: ${module.name}
|
|
229
|
-
Description: ${module.description}
|
|
230
|
-
Files: ${module.files.map(f => f.relativePath).join(', ')}
|
|
231
|
-
|
|
232
|
-
Sample content from module files:
|
|
233
|
-
${fileContents.join('\n\n---\n\n')}`;
|
|
234
|
-
const documentation = await this.llmClient.generateText(`Generate comprehensive documentation for this module. Include:
|
|
235
|
-
1. Module overview and purpose
|
|
236
|
-
2. Key components and their responsibilities
|
|
237
|
-
3. Public APIs and interfaces
|
|
238
|
-
4. Usage examples
|
|
239
|
-
5. Dependencies and relationships
|
|
240
|
-
|
|
241
|
-
Module context:
|
|
242
|
-
${moduleContext}`, 'You are a technical documentation expert. Create clear, well-structured module documentation.');
|
|
243
|
-
// Add metadata header
|
|
244
|
-
const history = this.gitService.getFileHistory(module.files[0]?.relativePath || '', 1);
|
|
245
|
-
const lastModified = history[0]?.date || new Date().toISOString();
|
|
246
|
-
return `---
|
|
247
|
-
module: ${module.name}
|
|
248
|
-
files: ${module.files.length}
|
|
249
|
-
last_modified: ${lastModified}
|
|
250
|
-
generated: ${new Date().toISOString()}
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
# ${module.name}
|
|
254
|
-
|
|
255
|
-
${documentation}
|
|
256
|
-
|
|
257
|
-
## Files in this module
|
|
258
|
-
|
|
259
|
-
${module.files.map(file => `- \`${file.relativePath}\` - ${this.formatBytes(file.size)}`).join('\n')}
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
*Generated by AI Coders Context*
|
|
263
|
-
`;
|
|
264
|
-
}
|
|
265
|
-
async cleanupEmptyModules(docsDir, repoStructure, verbose) {
|
|
266
|
-
const modulesDir = path.join(docsDir, 'modules');
|
|
267
|
-
if (!await fs.pathExists(modulesDir))
|
|
268
|
-
return [];
|
|
269
|
-
const existingModuleFiles = await fs.readdir(modulesDir);
|
|
270
|
-
const currentModules = new Set(this.getModuleGroups(repoStructure).map(m => `${this.slugify(m.name)}.md`));
|
|
271
|
-
const removedFiles = [];
|
|
272
|
-
for (const moduleFile of existingModuleFiles) {
|
|
273
|
-
if (!currentModules.has(moduleFile)) {
|
|
274
|
-
const modulePath = path.join(modulesDir, moduleFile);
|
|
275
|
-
await fs.remove(modulePath);
|
|
276
|
-
removedFiles.push(path.join('modules', moduleFile));
|
|
277
|
-
if (verbose) {
|
|
278
|
-
console.log(chalk_1.default.red(`šļø Removed empty module: ${moduleFile}`));
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return removedFiles;
|
|
283
|
-
}
|
|
284
|
-
async updateOverviewDocuments(repoStructure, docsDir, verbose) {
|
|
285
|
-
// Update project overview
|
|
286
|
-
const overviewFileName = 'overview.md';
|
|
287
|
-
if (verbose) {
|
|
288
|
-
console.log(chalk_1.default.blue(`š Updating ${overviewFileName}...`));
|
|
289
|
-
}
|
|
290
|
-
const overview = await this.createEnhancedProjectOverview(repoStructure);
|
|
291
|
-
const overviewPath = path.join(docsDir, overviewFileName);
|
|
292
|
-
await fs.writeFile(overviewPath, overview);
|
|
293
|
-
if (verbose) {
|
|
294
|
-
console.log(chalk_1.default.green(`ā
Updated ${overviewFileName}`));
|
|
295
|
-
}
|
|
296
|
-
// Update main README
|
|
297
|
-
const indexFileName = 'README.md';
|
|
298
|
-
if (verbose) {
|
|
299
|
-
console.log(chalk_1.default.blue(`š Updating ${indexFileName}...`));
|
|
300
|
-
}
|
|
301
|
-
const indexContent = this.createDocumentationIndex(repoStructure);
|
|
302
|
-
const indexPath = path.join(docsDir, indexFileName);
|
|
303
|
-
await fs.writeFile(indexPath, indexContent);
|
|
304
|
-
if (verbose) {
|
|
305
|
-
console.log(chalk_1.default.green(`ā
Updated ${indexFileName}`));
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
displayChangeSummary(changes) {
|
|
309
|
-
const total = changes.added.length + changes.modified.length + changes.deleted.length + changes.renamed.length;
|
|
310
|
-
console.log(chalk_1.default.bold('\nš Change Summary:'));
|
|
311
|
-
console.log(chalk_1.default.gray('ā'.repeat(50)));
|
|
312
|
-
console.log(`${chalk_1.default.green('Added:')} ${changes.added.length} files`);
|
|
313
|
-
console.log(`${chalk_1.default.yellow('Modified:')} ${changes.modified.length} files`);
|
|
314
|
-
console.log(`${chalk_1.default.red('Deleted:')} ${changes.deleted.length} files`);
|
|
315
|
-
console.log(`${chalk_1.default.blue('Renamed:')} ${changes.renamed.length} files`);
|
|
316
|
-
console.log(`${chalk_1.default.bold('Total:')} ${total} changes`);
|
|
317
|
-
console.log(chalk_1.default.gray('ā'.repeat(50)) + '\n');
|
|
318
|
-
}
|
|
319
|
-
async createEnhancedProjectOverview(repoStructure) {
|
|
320
|
-
const { files, directories, totalFiles, totalSize } = repoStructure;
|
|
321
|
-
const branch = this.gitService.getBranchName();
|
|
322
|
-
const lastCommit = this.gitService.getCurrentCommit().substring(0, 7);
|
|
323
|
-
const extensions = new Map();
|
|
324
|
-
files.forEach(file => {
|
|
325
|
-
const ext = file.extension || 'no-extension';
|
|
326
|
-
extensions.set(ext, (extensions.get(ext) || 0) + 1);
|
|
327
|
-
});
|
|
328
|
-
const topExtensions = Array.from(extensions.entries())
|
|
329
|
-
.sort((a, b) => b[1] - a[1])
|
|
330
|
-
.slice(0, 10);
|
|
331
|
-
return `# Project Overview
|
|
332
|
-
|
|
333
|
-
## Git Information
|
|
334
|
-
- **Branch**: ${branch}
|
|
335
|
-
- **Last Commit**: ${lastCommit}
|
|
336
|
-
- **Last Updated**: ${new Date().toISOString()}
|
|
337
|
-
|
|
338
|
-
## Project Statistics
|
|
339
|
-
- **Total Files**: ${totalFiles}
|
|
340
|
-
- **Total Directories**: ${directories.length}
|
|
341
|
-
- **Total Size**: ${this.formatBytes(totalSize)}
|
|
342
|
-
|
|
343
|
-
## File Distribution
|
|
344
|
-
${topExtensions.map(([ext, count]) => `- **${ext}**: ${count} files (${((count / totalFiles) * 100).toFixed(1)}%)`).join('\n')}
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
*Generated by AI Coders Context*
|
|
348
|
-
*Incremental update: ${new Date().toISOString()}*
|
|
349
|
-
`;
|
|
350
|
-
}
|
|
351
|
-
createDocumentationIndex(_repoStructure) {
|
|
352
|
-
const state = this.gitService.getState();
|
|
353
|
-
const branch = this.gitService.getBranchName();
|
|
354
|
-
return `# Documentation Index
|
|
355
|
-
|
|
356
|
-
This documentation was generated automatically from the codebase.
|
|
357
|
-
|
|
358
|
-
## Documentation Structure
|
|
359
|
-
|
|
360
|
-
### [Overview](./overview.md)
|
|
361
|
-
High-level project overview, statistics, and git information.
|
|
362
|
-
|
|
363
|
-
### [Architecture](./architecture.md)
|
|
364
|
-
System architecture, design patterns, and technical decisions.
|
|
365
|
-
|
|
366
|
-
### [Modules](./modules/)
|
|
367
|
-
Detailed documentation organized by module and directory structure.
|
|
368
|
-
|
|
369
|
-
### [API Reference](./api-reference.md)
|
|
370
|
-
Complete API documentation for all public interfaces.
|
|
371
|
-
|
|
372
|
-
### [Configuration](./configuration.md)
|
|
373
|
-
Configuration options, environment variables, and setup guides.
|
|
374
|
-
|
|
375
|
-
## Generation Info
|
|
376
|
-
- **Branch**: ${branch}
|
|
377
|
-
- **Generated**: ${new Date().toISOString()}
|
|
378
|
-
- **Last Processed Commit**: ${state?.lastCommit ? state.lastCommit.substring(0, 7) : 'None'}
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
*Generated by AI Coders Context*
|
|
382
|
-
`;
|
|
383
|
-
}
|
|
384
|
-
slugify(text) {
|
|
385
|
-
return text
|
|
386
|
-
.toLowerCase()
|
|
387
|
-
.replace(/\s+/g, '-')
|
|
388
|
-
.replace(/[^\w-]/g, '');
|
|
389
|
-
}
|
|
390
|
-
formatBytes(bytes) {
|
|
391
|
-
if (bytes === 0)
|
|
392
|
-
return '0 Bytes';
|
|
393
|
-
const k = 1024;
|
|
394
|
-
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
|
|
395
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
396
|
-
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
exports.IncrementalDocumentationGenerator = IncrementalDocumentationGenerator;
|
|
400
|
-
//# sourceMappingURL=incrementalDocumentationGenerator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"incrementalDocumentationGenerator.js","sourceRoot":"","sources":["../../src/generators/incrementalDocumentationGenerator.ts"],"names":[],"mappings":"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"}
|