@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,198 @@
|
|
|
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.TokenEstimator = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
// Model pricing per 1M tokens (as of 2024)
|
|
9
|
+
// Update this constant when new models arrive or prices change
|
|
10
|
+
const MODEL_PRICING = {
|
|
11
|
+
// OpenRouter - Popular models
|
|
12
|
+
'openrouter-claude-3-haiku': {
|
|
13
|
+
provider: 'OpenRouter',
|
|
14
|
+
modelName: 'Claude 3 Haiku',
|
|
15
|
+
input: 0.25,
|
|
16
|
+
output: 1.25
|
|
17
|
+
},
|
|
18
|
+
'openrouter-claude-3-sonnet': {
|
|
19
|
+
provider: 'OpenRouter',
|
|
20
|
+
modelName: 'Claude 3.5 Sonnet',
|
|
21
|
+
input: 3.00,
|
|
22
|
+
output: 15.00
|
|
23
|
+
},
|
|
24
|
+
'openrouter-gpt-4o-mini': {
|
|
25
|
+
provider: 'OpenRouter',
|
|
26
|
+
modelName: 'GPT-4o Mini',
|
|
27
|
+
input: 0.15,
|
|
28
|
+
output: 0.60
|
|
29
|
+
},
|
|
30
|
+
'openrouter-llama-3.1-8b': {
|
|
31
|
+
provider: 'OpenRouter',
|
|
32
|
+
modelName: 'Llama 3.1 8B',
|
|
33
|
+
input: 0.05,
|
|
34
|
+
output: 0.05
|
|
35
|
+
},
|
|
36
|
+
// OpenAI Direct
|
|
37
|
+
'openai-gpt-4o': {
|
|
38
|
+
provider: 'OpenAI',
|
|
39
|
+
modelName: 'GPT-4o',
|
|
40
|
+
input: 2.50,
|
|
41
|
+
output: 10.00
|
|
42
|
+
},
|
|
43
|
+
'openai-gpt-4o-mini': {
|
|
44
|
+
provider: 'OpenAI',
|
|
45
|
+
modelName: 'GPT-4o Mini',
|
|
46
|
+
input: 0.15,
|
|
47
|
+
output: 0.60
|
|
48
|
+
},
|
|
49
|
+
'openai-gpt-4-turbo': {
|
|
50
|
+
provider: 'OpenAI',
|
|
51
|
+
modelName: 'GPT-4 Turbo',
|
|
52
|
+
input: 10.00,
|
|
53
|
+
output: 30.00
|
|
54
|
+
},
|
|
55
|
+
// Anthropic Direct
|
|
56
|
+
'anthropic-claude-3-haiku': {
|
|
57
|
+
provider: 'Anthropic',
|
|
58
|
+
modelName: 'Claude 3 Haiku',
|
|
59
|
+
input: 0.25,
|
|
60
|
+
output: 1.25
|
|
61
|
+
},
|
|
62
|
+
'anthropic-claude-3-sonnet': {
|
|
63
|
+
provider: 'Anthropic',
|
|
64
|
+
modelName: 'Claude 3.5 Sonnet',
|
|
65
|
+
input: 3.00,
|
|
66
|
+
output: 15.00
|
|
67
|
+
},
|
|
68
|
+
// Google AI
|
|
69
|
+
'gemini-1.5-flash': {
|
|
70
|
+
provider: 'Google AI',
|
|
71
|
+
modelName: 'Gemini 1.5 Flash',
|
|
72
|
+
input: 0.075,
|
|
73
|
+
output: 0.30
|
|
74
|
+
},
|
|
75
|
+
'gemini-1.5-pro': {
|
|
76
|
+
provider: 'Google AI',
|
|
77
|
+
modelName: 'Gemini 1.5 Pro',
|
|
78
|
+
input: 1.25,
|
|
79
|
+
output: 5.00
|
|
80
|
+
},
|
|
81
|
+
// Grok (X.AI)
|
|
82
|
+
'grok-beta': {
|
|
83
|
+
provider: 'Grok (X.AI)',
|
|
84
|
+
modelName: 'Grok Beta',
|
|
85
|
+
input: 5.00,
|
|
86
|
+
output: 15.00
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
class TokenEstimator {
|
|
90
|
+
constructor(fileMapper) {
|
|
91
|
+
this.fileMapper = fileMapper;
|
|
92
|
+
}
|
|
93
|
+
async estimateTokensForFullGeneration(repoStructure) {
|
|
94
|
+
const relevantFiles = repoStructure.files.filter(file => this.fileMapper.isTextFile(file.path));
|
|
95
|
+
let totalInputTokens = 0;
|
|
96
|
+
let processedFiles = 0;
|
|
97
|
+
// Sample a subset of files to estimate average tokens per file
|
|
98
|
+
const sampleSize = Math.min(relevantFiles.length, 10);
|
|
99
|
+
const sampleFiles = this.selectSampleFiles(relevantFiles, sampleSize);
|
|
100
|
+
for (const file of sampleFiles) {
|
|
101
|
+
try {
|
|
102
|
+
const content = await this.fileMapper.readFileContent(file.path);
|
|
103
|
+
const tokens = this.estimateTokensFromText(content);
|
|
104
|
+
totalInputTokens += tokens;
|
|
105
|
+
processedFiles++;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
// Skip files that can't be read
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Calculate average and extrapolate
|
|
113
|
+
const averageTokensPerFile = processedFiles > 0 ? totalInputTokens / processedFiles : 0;
|
|
114
|
+
const estimatedInputTokens = Math.ceil(averageTokensPerFile * relevantFiles.length);
|
|
115
|
+
// Add overhead for system prompts, context, and instructions
|
|
116
|
+
const systemPromptOverhead = relevantFiles.length * 500; // ~500 tokens per file for prompts
|
|
117
|
+
const totalInputWithOverhead = estimatedInputTokens + systemPromptOverhead;
|
|
118
|
+
// Estimate output tokens (documentation is typically 30-50% of input size)
|
|
119
|
+
const estimatedOutputTokens = Math.ceil(totalInputWithOverhead * 0.4);
|
|
120
|
+
const estimatedTotalTokens = totalInputWithOverhead + estimatedOutputTokens;
|
|
121
|
+
return {
|
|
122
|
+
totalFiles: relevantFiles.length,
|
|
123
|
+
estimatedInputTokens: totalInputWithOverhead,
|
|
124
|
+
estimatedOutputTokens,
|
|
125
|
+
estimatedTotalTokens,
|
|
126
|
+
costEstimates: this.calculateCostEstimates(totalInputWithOverhead, estimatedOutputTokens)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
selectSampleFiles(files, sampleSize) {
|
|
130
|
+
if (files.length <= sampleSize) {
|
|
131
|
+
return files;
|
|
132
|
+
}
|
|
133
|
+
// Select a diverse sample: some small, medium, and large files
|
|
134
|
+
const sorted = [...files].sort((a, b) => a.size - b.size);
|
|
135
|
+
const sample = [];
|
|
136
|
+
const step = Math.floor(sorted.length / sampleSize);
|
|
137
|
+
for (let i = 0; i < sampleSize; i++) {
|
|
138
|
+
const index = Math.min(i * step, sorted.length - 1);
|
|
139
|
+
sample.push(sorted[index]);
|
|
140
|
+
}
|
|
141
|
+
return sample;
|
|
142
|
+
}
|
|
143
|
+
estimateTokensFromText(text) {
|
|
144
|
+
// Rough estimation: 1 token â 4 characters for most languages
|
|
145
|
+
// This is a conservative estimate that works reasonably well for code
|
|
146
|
+
return Math.ceil(text.length / 4);
|
|
147
|
+
}
|
|
148
|
+
calculateCostEstimates(inputTokens, outputTokens) {
|
|
149
|
+
const costEstimates = {};
|
|
150
|
+
for (const [modelKey, model] of Object.entries(MODEL_PRICING)) {
|
|
151
|
+
const inputCost = (inputTokens / 1000000) * model.input;
|
|
152
|
+
const outputCost = (outputTokens / 1000000) * model.output;
|
|
153
|
+
const totalCost = inputCost + outputCost;
|
|
154
|
+
costEstimates[modelKey] = {
|
|
155
|
+
provider: model.provider,
|
|
156
|
+
modelName: model.modelName,
|
|
157
|
+
inputCost: Math.round(inputCost * 100) / 100, // Round to 2 decimal places
|
|
158
|
+
outputCost: Math.round(outputCost * 100) / 100,
|
|
159
|
+
totalCost: Math.round(totalCost * 100) / 100
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return costEstimates;
|
|
163
|
+
}
|
|
164
|
+
formatTokenEstimate(estimate) {
|
|
165
|
+
const formatNumber = (num) => num.toLocaleString();
|
|
166
|
+
const formatCost = (cost) => cost < 0.01 ? '<$0.01' : `$${cost.toFixed(2)}`;
|
|
167
|
+
let output = `\n${chalk_1.default.bold.blue('đ Token Usage Estimate for Full Documentation Generation:')}
|
|
168
|
+
${chalk_1.default.gray('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ')}
|
|
169
|
+
|
|
170
|
+
${chalk_1.default.bold('đ Files to Process:')} ${chalk_1.default.cyan(formatNumber(estimate.totalFiles))}
|
|
171
|
+
${chalk_1.default.bold('đ¤ Estimated Input Tokens:')} ${chalk_1.default.cyan(formatNumber(estimate.estimatedInputTokens))}
|
|
172
|
+
${chalk_1.default.bold('đ Estimated Output Tokens:')} ${chalk_1.default.cyan(formatNumber(estimate.estimatedOutputTokens))}
|
|
173
|
+
${chalk_1.default.bold('đ¯ Total Estimated Tokens:')} ${chalk_1.default.cyan(formatNumber(estimate.estimatedTotalTokens))}
|
|
174
|
+
|
|
175
|
+
${chalk_1.default.bold.yellow('đ° Cost Estimates by Model:')}
|
|
176
|
+
`;
|
|
177
|
+
// Sort models by total cost
|
|
178
|
+
const sortedModels = Object.entries(estimate.costEstimates)
|
|
179
|
+
.sort(([, a], [, b]) => a.totalCost - b.totalCost);
|
|
180
|
+
for (const [, costs] of sortedModels) {
|
|
181
|
+
const modelDisplay = `${costs.modelName} (${costs.provider})`;
|
|
182
|
+
const totalColor = costs.totalCost < 0.10 ? chalk_1.default.green : costs.totalCost < 0.50 ? chalk_1.default.yellow : chalk_1.default.red;
|
|
183
|
+
output += ` ${chalk_1.default.bold(modelDisplay.padEnd(30))} | Input: ${chalk_1.default.gray(formatCost(costs.inputCost).padStart(6))} | Output: ${chalk_1.default.gray(formatCost(costs.outputCost).padStart(6))} | Total: ${totalColor(formatCost(costs.totalCost).padStart(6))}\n`;
|
|
184
|
+
}
|
|
185
|
+
output += `
|
|
186
|
+
${chalk_1.default.bold.blue('âšī¸ Notes:')}
|
|
187
|
+
${chalk_1.default.gray('âĸ Token estimates are based on sampling ' + Math.min(estimate.totalFiles, 10) + ' files')}
|
|
188
|
+
${chalk_1.default.gray('âĸ Costs include system prompts and context overhead')}
|
|
189
|
+
${chalk_1.default.gray('âĸ Output tokens estimated at ~40% of input + overhead')}
|
|
190
|
+
${chalk_1.default.gray('âĸ Actual costs may vary based on model choice and content complexity')}
|
|
191
|
+
${chalk_1.default.gray('âĸ Prices are approximate and may change')}
|
|
192
|
+
|
|
193
|
+
${chalk_1.default.gray('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ')}`;
|
|
194
|
+
return output;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
exports.TokenEstimator = TokenEstimator;
|
|
198
|
+
//# sourceMappingURL=tokenEstimator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ai-coders/context",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI tool for generating codebase documentation and AI agent prompts",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ai-context": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/**/*",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"dev": "tsx src/index.ts",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"test": "jest",
|
|
19
|
+
"prepublishOnly": "npm run build",
|
|
20
|
+
"version": "npm run build",
|
|
21
|
+
"release": "npm version patch && npm publish --access public",
|
|
22
|
+
"release:minor": "npm version minor && npm publish --access public",
|
|
23
|
+
"release:major": "npm version major && npm publish --access public"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public",
|
|
27
|
+
"registry": "https://registry.npmjs.org/"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/vinilana/ai-coders-context.git"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/vinilana/ai-coders-context#readme",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/vinilana/ai-coders-context/issues"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"cli",
|
|
39
|
+
"ai",
|
|
40
|
+
"documentation",
|
|
41
|
+
"openrouter",
|
|
42
|
+
"llm"
|
|
43
|
+
],
|
|
44
|
+
"author": "",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@anthropic-ai/sdk": "^0.30.0",
|
|
48
|
+
"@google/genai": "^0.8.0",
|
|
49
|
+
"@types/inquirer": "^9.0.8",
|
|
50
|
+
"axios": "^1.7.0",
|
|
51
|
+
"boxen": "^5.1.2",
|
|
52
|
+
"chalk": "^4.1.2",
|
|
53
|
+
"cli-progress": "^3.12.0",
|
|
54
|
+
"commander": "^12.0.0",
|
|
55
|
+
"dotenv": "^16.4.0",
|
|
56
|
+
"figures": "^3.2.0",
|
|
57
|
+
"fs-extra": "^11.2.0",
|
|
58
|
+
"glob": "^10.4.0",
|
|
59
|
+
"inquirer": "^12.6.3",
|
|
60
|
+
"openai": "^4.70.0",
|
|
61
|
+
"ora": "^5.4.1"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@types/cli-progress": "^3.11.0",
|
|
65
|
+
"@types/fs-extra": "^11.0.4",
|
|
66
|
+
"@types/jest": "^29.5.0",
|
|
67
|
+
"@types/node": "^22.0.0",
|
|
68
|
+
"jest": "^29.7.0",
|
|
69
|
+
"ts-jest": "^29.2.0",
|
|
70
|
+
"tsx": "^4.19.0",
|
|
71
|
+
"typescript": "^5.6.0"
|
|
72
|
+
}
|
|
73
|
+
}
|