@ai-coders/context 0.1.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/LICENSE +21 -0
- package/README.md +658 -0
- package/dist/generators/agentGenerator.d.ts +23 -0
- package/dist/generators/agentGenerator.d.ts.map +1 -0
- package/dist/generators/agentGenerator.js +357 -0
- package/dist/generators/agentGenerator.js.map +1 -0
- package/dist/generators/documentationGenerator.d.ts +40 -0
- package/dist/generators/documentationGenerator.d.ts.map +1 -0
- package/dist/generators/documentationGenerator.js +786 -0
- package/dist/generators/documentationGenerator.js.map +1 -0
- package/dist/generators/incrementalDocumentationGenerator.d.ts +33 -0
- package/dist/generators/incrementalDocumentationGenerator.d.ts.map +1 -0
- package/dist/generators/incrementalDocumentationGenerator.js +400 -0
- package/dist/generators/incrementalDocumentationGenerator.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +559 -0
- package/dist/index.js.map +1 -0
- package/dist/services/anthropicClient.d.ts +12 -0
- package/dist/services/anthropicClient.d.ts.map +1 -0
- package/dist/services/anthropicClient.js +98 -0
- package/dist/services/anthropicClient.js.map +1 -0
- package/dist/services/baseLLMClient.d.ts +12 -0
- package/dist/services/baseLLMClient.d.ts.map +1 -0
- package/dist/services/baseLLMClient.js +41 -0
- package/dist/services/baseLLMClient.js.map +1 -0
- package/dist/services/changeAnalyzer.d.ts +44 -0
- package/dist/services/changeAnalyzer.d.ts.map +1 -0
- package/dist/services/changeAnalyzer.js +344 -0
- package/dist/services/changeAnalyzer.js.map +1 -0
- package/dist/services/geminiClient.d.ts +12 -0
- package/dist/services/geminiClient.d.ts.map +1 -0
- package/dist/services/geminiClient.js +96 -0
- package/dist/services/geminiClient.js.map +1 -0
- package/dist/services/grokClient.d.ts +12 -0
- package/dist/services/grokClient.d.ts.map +1 -0
- package/dist/services/grokClient.js +101 -0
- package/dist/services/grokClient.js.map +1 -0
- package/dist/services/llmClientFactory.d.ts +14 -0
- package/dist/services/llmClientFactory.d.ts.map +1 -0
- package/dist/services/llmClientFactory.js +109 -0
- package/dist/services/llmClientFactory.js.map +1 -0
- package/dist/services/openRouterClient.d.ts +12 -0
- package/dist/services/openRouterClient.d.ts.map +1 -0
- package/dist/services/openRouterClient.js +96 -0
- package/dist/services/openRouterClient.js.map +1 -0
- package/dist/services/openaiClient.d.ts +12 -0
- package/dist/services/openaiClient.d.ts.map +1 -0
- package/dist/services/openaiClient.js +98 -0
- package/dist/services/openaiClient.js.map +1 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cliUI.d.ts +25 -0
- package/dist/utils/cliUI.d.ts.map +1 -0
- package/dist/utils/cliUI.js +236 -0
- package/dist/utils/cliUI.js.map +1 -0
- package/dist/utils/fileMapper.d.ts +11 -0
- package/dist/utils/fileMapper.d.ts.map +1 -0
- package/dist/utils/fileMapper.js +125 -0
- package/dist/utils/fileMapper.js.map +1 -0
- package/dist/utils/gitService.d.ts +50 -0
- package/dist/utils/gitService.d.ts.map +1 -0
- package/dist/utils/gitService.js +470 -0
- package/dist/utils/gitService.js.map +1 -0
- package/dist/utils/interactiveMode.d.ts +16 -0
- package/dist/utils/interactiveMode.d.ts.map +1 -0
- package/dist/utils/interactiveMode.js +432 -0
- package/dist/utils/interactiveMode.js.map +1 -0
- package/dist/utils/pricing.d.ts +14 -0
- package/dist/utils/pricing.d.ts.map +1 -0
- package/dist/utils/pricing.js +115 -0
- package/dist/utils/pricing.js.map +1 -0
- package/dist/utils/tokenEstimator.d.ts +27 -0
- package/dist/utils/tokenEstimator.d.ts.map +1 -0
- package/dist/utils/tokenEstimator.js +198 -0
- package/dist/utils/tokenEstimator.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AnthropicClient = void 0;
|
|
7
|
+
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
8
|
+
const baseLLMClient_1 = require("./baseLLMClient");
|
|
9
|
+
class AnthropicClient extends baseLLMClient_1.BaseLLMClient {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
super(config.model);
|
|
12
|
+
this.model = config.model;
|
|
13
|
+
this.client = new sdk_1.default({
|
|
14
|
+
apiKey: config.apiKey,
|
|
15
|
+
baseURL: config.baseUrl
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async generateText(prompt, systemPrompt) {
|
|
19
|
+
try {
|
|
20
|
+
const response = await this.client.messages.create({
|
|
21
|
+
model: this.model,
|
|
22
|
+
max_tokens: 4000,
|
|
23
|
+
temperature: 0.7,
|
|
24
|
+
system: systemPrompt,
|
|
25
|
+
messages: [
|
|
26
|
+
{
|
|
27
|
+
role: 'user',
|
|
28
|
+
content: prompt
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
// Track usage statistics
|
|
33
|
+
this.trackUsage(response.usage, this.calculateAnthropicCost.bind(this));
|
|
34
|
+
return response.content[0]?.type === 'text' ? response.content[0].text : '';
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Anthropic API error: ${error instanceof Error ? error.message : String(error)}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
calculateAnthropicCost(promptTokens, completionTokens) {
|
|
41
|
+
// Anthropic pricing (as of 2024)
|
|
42
|
+
const prices = {
|
|
43
|
+
'claude-3-haiku-20240307': { input: 0.25, output: 1.25 },
|
|
44
|
+
'claude-3-sonnet-20240229': { input: 3.0, output: 15.0 },
|
|
45
|
+
'claude-3-opus-20240229': { input: 15.0, output: 75.0 },
|
|
46
|
+
'claude-3-5-sonnet-20241022': { input: 3.0, output: 15.0 }
|
|
47
|
+
};
|
|
48
|
+
const pricing = prices[this.model] || prices['claude-3-haiku-20240307']; // fallback
|
|
49
|
+
const inputCost = (promptTokens / 1000000) * pricing.input;
|
|
50
|
+
const outputCost = (completionTokens / 1000000) * pricing.output;
|
|
51
|
+
return inputCost + outputCost;
|
|
52
|
+
}
|
|
53
|
+
async generateDocumentation(codeContent, filePath, context) {
|
|
54
|
+
const systemPrompt = `You are a technical documentation expert. Generate clear, comprehensive documentation for the provided code file. Include:
|
|
55
|
+
1. Purpose and overview
|
|
56
|
+
2. Key components/functions
|
|
57
|
+
3. Dependencies and relationships
|
|
58
|
+
4. Usage examples where applicable
|
|
59
|
+
5. Important notes or gotchas
|
|
60
|
+
|
|
61
|
+
Focus on being practical and helpful for developers working with this codebase.`;
|
|
62
|
+
const prompt = `File: ${filePath}
|
|
63
|
+
|
|
64
|
+
Context: ${context}
|
|
65
|
+
|
|
66
|
+
Code:
|
|
67
|
+
\`\`\`
|
|
68
|
+
${codeContent}
|
|
69
|
+
\`\`\`
|
|
70
|
+
|
|
71
|
+
Generate comprehensive documentation for this file.`;
|
|
72
|
+
return this.generateText(prompt, systemPrompt);
|
|
73
|
+
}
|
|
74
|
+
async generateAgentPrompt(repoStructure, fileContext, agentType) {
|
|
75
|
+
const systemPrompt = `You are an expert at creating AI agent prompts for software development. Create a specialized prompt that would help an AI assistant understand and work effectively with this specific codebase.
|
|
76
|
+
|
|
77
|
+
The prompt should include:
|
|
78
|
+
1. Clear understanding of the codebase structure and patterns
|
|
79
|
+
2. Key conventions and best practices used in this project
|
|
80
|
+
3. Important files and their purposes
|
|
81
|
+
4. Common tasks and workflows
|
|
82
|
+
5. Specific guidance for the agent type requested
|
|
83
|
+
|
|
84
|
+
Make the prompt practical and actionable.`;
|
|
85
|
+
const prompt = `Codebase Structure:
|
|
86
|
+
${repoStructure}
|
|
87
|
+
|
|
88
|
+
File Context:
|
|
89
|
+
${fileContext}
|
|
90
|
+
|
|
91
|
+
Agent Type: ${agentType}
|
|
92
|
+
|
|
93
|
+
Generate a comprehensive agent prompt that would help an AI assistant work effectively with this codebase for ${agentType} tasks.`;
|
|
94
|
+
return this.generateText(prompt, systemPrompt);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.AnthropicClient = AnthropicClient;
|
|
98
|
+
//# sourceMappingURL=anthropicClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropicClient.js","sourceRoot":"","sources":["../../src/services/anthropicClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { UsageStats } from '../types';
|
|
2
|
+
export declare abstract class BaseLLMClient {
|
|
3
|
+
protected usageStats: UsageStats;
|
|
4
|
+
constructor(model: string);
|
|
5
|
+
abstract generateText(prompt: string, systemPrompt?: string): Promise<string>;
|
|
6
|
+
abstract generateDocumentation(codeContent: string, filePath: string, context: string): Promise<string>;
|
|
7
|
+
abstract generateAgentPrompt(repoStructure: string, fileContext: string, agentType: string): Promise<string>;
|
|
8
|
+
getUsageStats(): UsageStats;
|
|
9
|
+
resetUsageStats(): void;
|
|
10
|
+
protected trackUsage(usage: any, calculateCostFn: (promptTokens: number, completionTokens: number) => number): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=baseLLMClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseLLMClient.d.ts","sourceRoot":"","sources":["../../src/services/baseLLMClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,8BAAsB,aAAa;IACjC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;gBAErB,KAAK,EAAE,MAAM;IAWzB,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE7E,QAAQ,CAAC,qBAAqB,CAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAElB,QAAQ,CAAC,mBAAmB,CAC1B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IAElB,aAAa,IAAI,UAAU;IAI3B,eAAe,IAAI,IAAI;IAYvB,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;CAcpH"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseLLMClient = void 0;
|
|
4
|
+
class BaseLLMClient {
|
|
5
|
+
constructor(model) {
|
|
6
|
+
this.usageStats = {
|
|
7
|
+
totalCalls: 0,
|
|
8
|
+
totalPromptTokens: 0,
|
|
9
|
+
totalCompletionTokens: 0,
|
|
10
|
+
totalTokens: 0,
|
|
11
|
+
estimatedCost: 0,
|
|
12
|
+
model
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
getUsageStats() {
|
|
16
|
+
return { ...this.usageStats };
|
|
17
|
+
}
|
|
18
|
+
resetUsageStats() {
|
|
19
|
+
const model = this.usageStats.model;
|
|
20
|
+
this.usageStats = {
|
|
21
|
+
totalCalls: 0,
|
|
22
|
+
totalPromptTokens: 0,
|
|
23
|
+
totalCompletionTokens: 0,
|
|
24
|
+
totalTokens: 0,
|
|
25
|
+
estimatedCost: 0,
|
|
26
|
+
model
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
trackUsage(usage, calculateCostFn) {
|
|
30
|
+
if (usage) {
|
|
31
|
+
this.usageStats.totalCalls++;
|
|
32
|
+
this.usageStats.totalPromptTokens += usage.prompt_tokens || usage.input_tokens || 0;
|
|
33
|
+
this.usageStats.totalCompletionTokens += usage.completion_tokens || usage.output_tokens || 0;
|
|
34
|
+
this.usageStats.totalTokens += usage.total_tokens || (usage.prompt_tokens + usage.completion_tokens) || 0;
|
|
35
|
+
const requestCost = calculateCostFn(usage.prompt_tokens || usage.input_tokens || 0, usage.completion_tokens || usage.output_tokens || 0);
|
|
36
|
+
this.usageStats.estimatedCost += requestCost;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.BaseLLMClient = BaseLLMClient;
|
|
41
|
+
//# sourceMappingURL=baseLLMClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseLLMClient.js","sourceRoot":"","sources":["../../src/services/baseLLMClient.ts"],"names":[],"mappings":";;;AAEA,MAAsB,aAAa;IAGjC,YAAY,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG;YAChB,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,qBAAqB,EAAE,CAAC;YACxB,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;YAChB,KAAK;SACN,CAAC;IACJ,CAAC;IAgBD,aAAa;QACX,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,eAAe;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG;YAChB,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,qBAAqB,EAAE,CAAC;YACxB,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;YAChB,KAAK;SACN,CAAC;IACJ,CAAC;IAES,UAAU,CAAC,KAAU,EAAE,eAA2E;QAC1G,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;YACpF,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;YAC7F,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE1G,MAAM,WAAW,GAAG,eAAe,CACjC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,EAC9C,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,CACpD,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,WAAW,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AA1DD,sCA0DC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RepoStructure } from '../types';
|
|
2
|
+
import { GitService, GitChanges } from '../utils/gitService';
|
|
3
|
+
import { FileMapper } from '../utils/fileMapper';
|
|
4
|
+
export interface ModuleImpact {
|
|
5
|
+
moduleName: string;
|
|
6
|
+
affectedFiles: string[];
|
|
7
|
+
changeTypes: {
|
|
8
|
+
added: string[];
|
|
9
|
+
modified: string[];
|
|
10
|
+
deleted: string[];
|
|
11
|
+
renamed: Array<{
|
|
12
|
+
from: string;
|
|
13
|
+
to: string;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
impactLevel: 'low' | 'medium' | 'high';
|
|
17
|
+
description: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ChangeAnalysis {
|
|
20
|
+
totalChanges: number;
|
|
21
|
+
trackedChanges: number;
|
|
22
|
+
untrackedChanges: number;
|
|
23
|
+
affectedModules: ModuleImpact[];
|
|
24
|
+
overviewUpdateNeeded: boolean;
|
|
25
|
+
estimatedProcessingTime: string;
|
|
26
|
+
recommendations: string[];
|
|
27
|
+
gitChanges?: GitChanges;
|
|
28
|
+
}
|
|
29
|
+
export declare class ChangeAnalyzer {
|
|
30
|
+
private gitService;
|
|
31
|
+
private fileMapper;
|
|
32
|
+
constructor(gitService: GitService, fileMapper: FileMapper);
|
|
33
|
+
analyzeChanges(repoStructure: RepoStructure, changes?: GitChanges): Promise<ChangeAnalysis>;
|
|
34
|
+
displayAnalysis(analysis: ChangeAnalysis, verbose?: boolean): void;
|
|
35
|
+
private analyzeModuleImpacts;
|
|
36
|
+
private getModuleNameForFile;
|
|
37
|
+
private formatModuleName;
|
|
38
|
+
private getModuleDescription;
|
|
39
|
+
private calculateImpactLevel;
|
|
40
|
+
private shouldUpdateOverview;
|
|
41
|
+
private estimateProcessingTime;
|
|
42
|
+
private generateRecommendations;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=changeAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeAnalyzer.d.ts","sourceRoot":"","sources":["../../src/services/changeAnalyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE;QACX,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;IACF,WAAW,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,UAAU;gBADV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU;IAG1B,cAAc,CAClB,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,cAAc,CAAC;IAiD1B,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE,OAAe,GAAG,IAAI;IAyEzE,OAAO,CAAC,oBAAoB;IAkG5B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,sBAAsB;IAkC9B,OAAO,CAAC,uBAAuB;CA8BhC"}
|
|
@@ -0,0 +1,344 @@
|
|
|
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.ChangeAnalyzer = void 0;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
class ChangeAnalyzer {
|
|
43
|
+
constructor(gitService, fileMapper) {
|
|
44
|
+
this.gitService = gitService;
|
|
45
|
+
this.fileMapper = fileMapper;
|
|
46
|
+
}
|
|
47
|
+
async analyzeChanges(repoStructure, changes) {
|
|
48
|
+
// Get changes if not provided
|
|
49
|
+
const gitChanges = changes || this.gitService.getChangedFiles();
|
|
50
|
+
// Calculate total unique changes
|
|
51
|
+
const totalChanges = gitChanges.added.length +
|
|
52
|
+
gitChanges.modified.length +
|
|
53
|
+
gitChanges.deleted.length +
|
|
54
|
+
gitChanges.renamed.length; // Count renames as single changes
|
|
55
|
+
// Get all unique changed files for filtering
|
|
56
|
+
const allChangedFiles = [
|
|
57
|
+
...gitChanges.added,
|
|
58
|
+
...gitChanges.modified,
|
|
59
|
+
...gitChanges.deleted,
|
|
60
|
+
...gitChanges.renamed.map(r => r.to) // Only count the target file for filtering
|
|
61
|
+
];
|
|
62
|
+
// Filter for tracked files only
|
|
63
|
+
const trackedChangedFiles = this.gitService.filterTrackedFiles(allChangedFiles);
|
|
64
|
+
const relevantChangedFiles = trackedChangedFiles.filter(file => {
|
|
65
|
+
const fullPath = path.join(repoStructure.rootPath, file);
|
|
66
|
+
return this.fileMapper.isTextFile(fullPath);
|
|
67
|
+
});
|
|
68
|
+
// Analyze module impacts
|
|
69
|
+
const moduleImpacts = this.analyzeModuleImpacts(relevantChangedFiles, gitChanges, repoStructure);
|
|
70
|
+
// Determine if overview update is needed
|
|
71
|
+
const overviewUpdateNeeded = this.shouldUpdateOverview(moduleImpacts, gitChanges);
|
|
72
|
+
// Estimate processing time
|
|
73
|
+
const estimatedTime = this.estimateProcessingTime(moduleImpacts);
|
|
74
|
+
// Generate recommendations
|
|
75
|
+
const recommendations = this.generateRecommendations(moduleImpacts, gitChanges);
|
|
76
|
+
return {
|
|
77
|
+
totalChanges: totalChanges,
|
|
78
|
+
trackedChanges: trackedChangedFiles.length,
|
|
79
|
+
untrackedChanges: totalChanges - trackedChangedFiles.length,
|
|
80
|
+
affectedModules: moduleImpacts,
|
|
81
|
+
overviewUpdateNeeded,
|
|
82
|
+
estimatedProcessingTime: estimatedTime,
|
|
83
|
+
recommendations,
|
|
84
|
+
gitChanges // Add this for detailed breakdown in verbose mode
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
displayAnalysis(analysis, verbose = false) {
|
|
88
|
+
console.log(chalk_1.default.bold.blue('\n🔍 Documentation Update Analysis'));
|
|
89
|
+
console.log(chalk_1.default.gray('═'.repeat(60)));
|
|
90
|
+
// Summary
|
|
91
|
+
console.log(chalk_1.default.bold('\n📊 Change Summary:'));
|
|
92
|
+
console.log(` Total file changes: ${analysis.totalChanges}`);
|
|
93
|
+
// Show breakdown in verbose mode
|
|
94
|
+
if (verbose && analysis.gitChanges) {
|
|
95
|
+
const gc = analysis.gitChanges;
|
|
96
|
+
console.log(` ${chalk_1.default.green('Added:')} ${gc.added.length} files`);
|
|
97
|
+
console.log(` ${chalk_1.default.yellow('Modified:')} ${gc.modified.length} files`);
|
|
98
|
+
console.log(` ${chalk_1.default.red('Deleted:')} ${gc.deleted.length} files`);
|
|
99
|
+
console.log(` ${chalk_1.default.blue('Renamed:')} ${gc.renamed.length} files`);
|
|
100
|
+
}
|
|
101
|
+
console.log(` Tracked changes: ${chalk_1.default.green(analysis.trackedChanges)}`);
|
|
102
|
+
if (analysis.untrackedChanges > 0) {
|
|
103
|
+
console.log(` Untracked changes: ${chalk_1.default.gray(analysis.untrackedChanges)} (will be skipped)`);
|
|
104
|
+
}
|
|
105
|
+
// Affected modules
|
|
106
|
+
if (analysis.affectedModules.length > 0) {
|
|
107
|
+
console.log(chalk_1.default.bold('\n📦 Affected Modules:'));
|
|
108
|
+
analysis.affectedModules.forEach(module => {
|
|
109
|
+
const impactColor = module.impactLevel === 'high' ? chalk_1.default.red :
|
|
110
|
+
module.impactLevel === 'medium' ? chalk_1.default.yellow : chalk_1.default.green;
|
|
111
|
+
console.log(` ${impactColor('●')} ${chalk_1.default.bold(module.moduleName)} (${module.impactLevel} impact)`);
|
|
112
|
+
console.log(` ${chalk_1.default.gray(module.description)}`);
|
|
113
|
+
console.log(` Files affected: ${module.affectedFiles.length}`);
|
|
114
|
+
if (verbose) {
|
|
115
|
+
if (module.changeTypes.added.length > 0) {
|
|
116
|
+
console.log(` ${chalk_1.default.green('Added:')} ${module.changeTypes.added.join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
if (module.changeTypes.modified.length > 0) {
|
|
119
|
+
console.log(` ${chalk_1.default.yellow('Modified:')} ${module.changeTypes.modified.join(', ')}`);
|
|
120
|
+
}
|
|
121
|
+
if (module.changeTypes.deleted.length > 0) {
|
|
122
|
+
console.log(` ${chalk_1.default.red('Deleted:')} ${module.changeTypes.deleted.join(', ')}`);
|
|
123
|
+
}
|
|
124
|
+
if (module.changeTypes.renamed.length > 0) {
|
|
125
|
+
module.changeTypes.renamed.forEach(rename => {
|
|
126
|
+
console.log(` ${chalk_1.default.blue('Renamed:')} ${rename.from} → ${rename.to}`);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
console.log();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(chalk_1.default.yellow('\n📦 No modules affected by tracked file changes'));
|
|
135
|
+
}
|
|
136
|
+
// Processing info
|
|
137
|
+
console.log(chalk_1.default.bold('⏱️ Estimated Processing Time:'), analysis.estimatedProcessingTime);
|
|
138
|
+
if (analysis.overviewUpdateNeeded) {
|
|
139
|
+
console.log(chalk_1.default.yellow('📋 Overview documents will be updated'));
|
|
140
|
+
}
|
|
141
|
+
// Recommendations
|
|
142
|
+
if (analysis.recommendations.length > 0) {
|
|
143
|
+
console.log(chalk_1.default.bold('\n💡 Recommendations:'));
|
|
144
|
+
analysis.recommendations.forEach(rec => {
|
|
145
|
+
console.log(` • ${rec}`);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
console.log(chalk_1.default.gray('═'.repeat(60)));
|
|
149
|
+
}
|
|
150
|
+
analyzeModuleImpacts(changedFiles, gitChanges, repoStructure) {
|
|
151
|
+
const moduleMap = new Map();
|
|
152
|
+
const processedFiles = new Set();
|
|
153
|
+
// Helper function to initialize module if needed
|
|
154
|
+
const ensureModule = (moduleName) => {
|
|
155
|
+
if (!moduleMap.has(moduleName)) {
|
|
156
|
+
moduleMap.set(moduleName, {
|
|
157
|
+
moduleName: this.formatModuleName(moduleName),
|
|
158
|
+
affectedFiles: [],
|
|
159
|
+
changeTypes: {
|
|
160
|
+
added: [],
|
|
161
|
+
modified: [],
|
|
162
|
+
deleted: [],
|
|
163
|
+
renamed: []
|
|
164
|
+
},
|
|
165
|
+
impactLevel: 'low',
|
|
166
|
+
description: this.getModuleDescription(moduleName, repoStructure)
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return moduleMap.get(moduleName);
|
|
170
|
+
};
|
|
171
|
+
// Process added files
|
|
172
|
+
gitChanges.added.forEach(file => {
|
|
173
|
+
if (processedFiles.has(file))
|
|
174
|
+
return;
|
|
175
|
+
processedFiles.add(file);
|
|
176
|
+
const moduleName = this.getModuleNameForFile(file);
|
|
177
|
+
const moduleImpact = ensureModule(moduleName);
|
|
178
|
+
moduleImpact.affectedFiles.push(file);
|
|
179
|
+
moduleImpact.changeTypes.added.push(file);
|
|
180
|
+
});
|
|
181
|
+
// Process modified files
|
|
182
|
+
gitChanges.modified.forEach(file => {
|
|
183
|
+
if (processedFiles.has(file))
|
|
184
|
+
return;
|
|
185
|
+
processedFiles.add(file);
|
|
186
|
+
const moduleName = this.getModuleNameForFile(file);
|
|
187
|
+
const moduleImpact = ensureModule(moduleName);
|
|
188
|
+
moduleImpact.affectedFiles.push(file);
|
|
189
|
+
moduleImpact.changeTypes.modified.push(file);
|
|
190
|
+
});
|
|
191
|
+
// Process deleted files
|
|
192
|
+
gitChanges.deleted.forEach(file => {
|
|
193
|
+
if (processedFiles.has(file))
|
|
194
|
+
return;
|
|
195
|
+
processedFiles.add(file);
|
|
196
|
+
const moduleName = this.getModuleNameForFile(file);
|
|
197
|
+
const moduleImpact = ensureModule(moduleName);
|
|
198
|
+
moduleImpact.affectedFiles.push(file);
|
|
199
|
+
moduleImpact.changeTypes.deleted.push(file);
|
|
200
|
+
});
|
|
201
|
+
// Process renamed files
|
|
202
|
+
gitChanges.renamed.forEach(rename => {
|
|
203
|
+
const fromModule = this.getModuleNameForFile(rename.from);
|
|
204
|
+
const toModule = this.getModuleNameForFile(rename.to);
|
|
205
|
+
// Add to source module if different from target
|
|
206
|
+
if (fromModule !== toModule && !processedFiles.has(rename.from)) {
|
|
207
|
+
const fromModuleImpact = ensureModule(fromModule);
|
|
208
|
+
fromModuleImpact.affectedFiles.push(rename.from);
|
|
209
|
+
if (!fromModuleImpact.changeTypes.renamed.some(r => r.from === rename.from)) {
|
|
210
|
+
fromModuleImpact.changeTypes.renamed.push(rename);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Add to target module
|
|
214
|
+
if (!processedFiles.has(rename.to)) {
|
|
215
|
+
const toModuleImpact = ensureModule(toModule);
|
|
216
|
+
toModuleImpact.affectedFiles.push(rename.to);
|
|
217
|
+
if (!toModuleImpact.changeTypes.renamed.some(r => r.to === rename.to)) {
|
|
218
|
+
toModuleImpact.changeTypes.renamed.push(rename);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
processedFiles.add(rename.from);
|
|
222
|
+
processedFiles.add(rename.to);
|
|
223
|
+
});
|
|
224
|
+
// Calculate impact levels
|
|
225
|
+
moduleMap.forEach(impact => {
|
|
226
|
+
impact.impactLevel = this.calculateImpactLevel(impact);
|
|
227
|
+
});
|
|
228
|
+
return Array.from(moduleMap.values()).sort((a, b) => {
|
|
229
|
+
const levelOrder = { high: 3, medium: 2, low: 1 };
|
|
230
|
+
return levelOrder[b.impactLevel] - levelOrder[a.impactLevel];
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
getModuleNameForFile(relativePath) {
|
|
234
|
+
const parts = relativePath.split(path.sep);
|
|
235
|
+
let groupName = 'Root Files';
|
|
236
|
+
if (parts.length > 1) {
|
|
237
|
+
groupName = parts[0];
|
|
238
|
+
// Special handling for src files
|
|
239
|
+
if (groupName === 'src' && parts.length > 2) {
|
|
240
|
+
groupName = parts[1];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return groupName;
|
|
244
|
+
}
|
|
245
|
+
formatModuleName(name) {
|
|
246
|
+
return name
|
|
247
|
+
.split(/[-_]/)
|
|
248
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
249
|
+
.join(' ');
|
|
250
|
+
}
|
|
251
|
+
getModuleDescription(name, repoStructure) {
|
|
252
|
+
const descriptions = {
|
|
253
|
+
'generators': 'Code generation utilities for documentation and agents',
|
|
254
|
+
'services': 'External service integrations and API clients',
|
|
255
|
+
'utils': 'Utility functions and helper modules',
|
|
256
|
+
'types': 'TypeScript type definitions and interfaces',
|
|
257
|
+
'Root Files': 'Main configuration and entry point files'
|
|
258
|
+
};
|
|
259
|
+
const moduleFiles = repoStructure.files.filter(file => this.getModuleNameForFile(file.relativePath) === name);
|
|
260
|
+
return descriptions[name] || `${this.formatModuleName(name)} module with ${moduleFiles.length} files`;
|
|
261
|
+
}
|
|
262
|
+
calculateImpactLevel(impact) {
|
|
263
|
+
const totalChanges = impact.affectedFiles.length;
|
|
264
|
+
const hasDeletes = impact.changeTypes.deleted.length > 0;
|
|
265
|
+
const hasRenames = impact.changeTypes.renamed.length > 0;
|
|
266
|
+
// High impact: many changes, deletes, or renames
|
|
267
|
+
if (totalChanges >= 5 || hasDeletes || hasRenames) {
|
|
268
|
+
return 'high';
|
|
269
|
+
}
|
|
270
|
+
// Medium impact: moderate number of changes
|
|
271
|
+
if (totalChanges >= 2) {
|
|
272
|
+
return 'medium';
|
|
273
|
+
}
|
|
274
|
+
// Low impact: single file change
|
|
275
|
+
return 'low';
|
|
276
|
+
}
|
|
277
|
+
shouldUpdateOverview(moduleImpacts, gitChanges) {
|
|
278
|
+
// Update overview if:
|
|
279
|
+
// 1. Any module has high impact
|
|
280
|
+
// 2. Multiple modules are affected
|
|
281
|
+
// 3. There are structural changes (adds/deletes)
|
|
282
|
+
return moduleImpacts.some(m => m.impactLevel === 'high') ||
|
|
283
|
+
moduleImpacts.length > 1 ||
|
|
284
|
+
gitChanges.added.length > 0 ||
|
|
285
|
+
gitChanges.deleted.length > 0;
|
|
286
|
+
}
|
|
287
|
+
estimateProcessingTime(moduleImpacts) {
|
|
288
|
+
// Base time per module (in seconds)
|
|
289
|
+
const baseTimePerModule = 15;
|
|
290
|
+
let totalTime = 0;
|
|
291
|
+
moduleImpacts.forEach(impact => {
|
|
292
|
+
let moduleTime = baseTimePerModule;
|
|
293
|
+
// Adjust based on impact level
|
|
294
|
+
if (impact.impactLevel === 'high') {
|
|
295
|
+
moduleTime *= 1.5;
|
|
296
|
+
}
|
|
297
|
+
else if (impact.impactLevel === 'low') {
|
|
298
|
+
moduleTime *= 0.7;
|
|
299
|
+
}
|
|
300
|
+
totalTime += moduleTime;
|
|
301
|
+
});
|
|
302
|
+
// Add time for overview updates
|
|
303
|
+
if (this.shouldUpdateOverview(moduleImpacts, { added: [], modified: [], deleted: [], renamed: [] })) {
|
|
304
|
+
totalTime += 10;
|
|
305
|
+
}
|
|
306
|
+
if (totalTime < 30) {
|
|
307
|
+
return '< 30 seconds';
|
|
308
|
+
}
|
|
309
|
+
else if (totalTime < 60) {
|
|
310
|
+
return '< 1 minute';
|
|
311
|
+
}
|
|
312
|
+
else if (totalTime < 120) {
|
|
313
|
+
return '1-2 minutes';
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
return `~${Math.ceil(totalTime / 60)} minutes`;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
generateRecommendations(moduleImpacts, gitChanges) {
|
|
320
|
+
const recommendations = [];
|
|
321
|
+
if (moduleImpacts.length === 0) {
|
|
322
|
+
recommendations.push('No documentation updates needed - no relevant tracked file changes detected');
|
|
323
|
+
return recommendations;
|
|
324
|
+
}
|
|
325
|
+
if (moduleImpacts.some(m => m.impactLevel === 'high')) {
|
|
326
|
+
recommendations.push('High-impact changes detected - review generated documentation carefully');
|
|
327
|
+
}
|
|
328
|
+
if (gitChanges.deleted.length > 0) {
|
|
329
|
+
recommendations.push('Files were deleted - ensure corresponding documentation is properly cleaned up');
|
|
330
|
+
}
|
|
331
|
+
if (gitChanges.renamed.length > 0) {
|
|
332
|
+
recommendations.push('Files were renamed - check that documentation references are updated');
|
|
333
|
+
}
|
|
334
|
+
if (moduleImpacts.length > 3) {
|
|
335
|
+
recommendations.push('Many modules affected - consider running in stages or during low-activity periods');
|
|
336
|
+
}
|
|
337
|
+
if (moduleImpacts.some(m => m.moduleName === 'Types')) {
|
|
338
|
+
recommendations.push('Type definitions changed - API reference documentation may need updates');
|
|
339
|
+
}
|
|
340
|
+
return recommendations;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.ChangeAnalyzer = ChangeAnalyzer;
|
|
344
|
+
//# sourceMappingURL=changeAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeAnalyzer.js","sourceRoot":"","sources":["../../src/services/changeAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LLMConfig } from '../types';
|
|
2
|
+
import { BaseLLMClient } from './baseLLMClient';
|
|
3
|
+
export declare class GeminiClient extends BaseLLMClient {
|
|
4
|
+
private client;
|
|
5
|
+
private model;
|
|
6
|
+
constructor(config: LLMConfig);
|
|
7
|
+
generateText(prompt: string, systemPrompt?: string): Promise<string>;
|
|
8
|
+
private calculateGeminiCost;
|
|
9
|
+
generateDocumentation(codeContent: string, filePath: string, context: string): Promise<string>;
|
|
10
|
+
generateAgentPrompt(repoStructure: string, fileContext: string, agentType: string): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=geminiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geminiClient.d.ts","sourceRoot":"","sources":["../../src/services/geminiClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,SAAS;IAMvB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B1E,OAAO,CAAC,mBAAmB;IAiBrB,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAwBZ,mBAAmB,CACvB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;CAwBnB"}
|