@ai-coders/context 0.1.0 â 0.2.1
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/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 +13 -0
- package/dist/generators/agents/agentGenerator.d.ts.map +1 -0
- package/dist/generators/agents/agentGenerator.js +80 -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 +6 -0
- package/dist/generators/agents/index.d.ts.map +1 -0
- package/dist/generators/agents/index.js +16 -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/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 +19 -0
- package/dist/generators/documentation/documentationGenerator.d.ts.map +1 -0
- package/dist/generators/documentation/documentationGenerator.js +127 -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/enhancedDocumentationGenerator.d.ts +21 -0
- package/dist/generators/documentation/enhancedDocumentationGenerator.d.ts.map +1 -0
- package/dist/generators/documentation/enhancedDocumentationGenerator.js +216 -0
- package/dist/generators/documentation/enhancedDocumentationGenerator.js.map +1 -0
- package/dist/generators/documentation/incrementalDocumentationGenerator.d.ts +33 -0
- package/dist/generators/documentation/incrementalDocumentationGenerator.d.ts.map +1 -0
- package/dist/generators/documentation/incrementalDocumentationGenerator.js +400 -0
- package/dist/generators/documentation/incrementalDocumentationGenerator.js.map +1 -0
- package/dist/generators/documentation/index.d.ts +8 -0
- package/dist/generators/documentation/index.d.ts.map +1 -0
- package/dist/generators/documentation/index.js +22 -0
- package/dist/generators/documentation/index.js.map +1 -0
- package/dist/generators/documentation/newDocumentationTemplates.d.ts +19 -0
- package/dist/generators/documentation/newDocumentationTemplates.d.ts.map +1 -0
- package/dist/generators/documentation/newDocumentationTemplates.js +307 -0
- package/dist/generators/documentation/newDocumentationTemplates.js.map +1 -0
- package/dist/generators/documentationGenerator.d.ts +3 -21
- package/dist/generators/documentationGenerator.d.ts.map +1 -1
- package/dist/generators/documentationGenerator.js +46 -597
- package/dist/generators/documentationGenerator.js.map +1 -1
- package/dist/generators/documentationTemplates.d.ts +16 -0
- package/dist/generators/documentationTemplates.d.ts.map +1 -0
- package/dist/generators/documentationTemplates.js +326 -0
- package/dist/generators/documentationTemplates.js.map +1 -0
- package/dist/generators/documentationUtils.d.ts +7 -0
- package/dist/generators/documentationUtils.d.ts.map +1 -0
- package/dist/generators/documentationUtils.js +38 -0
- package/dist/generators/documentationUtils.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/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 +12 -0
- package/dist/generators/shared/contextGenerator.d.ts.map +1 -0
- package/dist/generators/shared/contextGenerator.js +109 -0
- package/dist/generators/shared/contextGenerator.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 +3 -0
- package/dist/generators/shared/index.d.ts.map +1 -0
- package/dist/generators/shared/index.js +8 -0
- package/dist/generators/shared/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +230 -13
- package/dist/index.js.map +1 -1
- 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 +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenEstimator.d.ts","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenEstimator.d.ts","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO,CAAC;gBADR,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,YAAY,YAAA;IAG1B,+BAA+B,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoD3F,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,sBAAsB;IAgB9B,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM;CAoDrD"}
|
|
@@ -5,90 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TokenEstimator = void 0;
|
|
7
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
8
|
class TokenEstimator {
|
|
90
|
-
constructor(fileMapper) {
|
|
9
|
+
constructor(fileMapper, pricing) {
|
|
91
10
|
this.fileMapper = fileMapper;
|
|
11
|
+
this.pricing = pricing;
|
|
92
12
|
}
|
|
93
13
|
async estimateTokensForFullGeneration(repoStructure) {
|
|
94
14
|
const relevantFiles = repoStructure.files.filter(file => this.fileMapper.isTextFile(file.path));
|
|
@@ -118,13 +38,17 @@ class TokenEstimator {
|
|
|
118
38
|
// Estimate output tokens (documentation is typically 30-50% of input size)
|
|
119
39
|
const estimatedOutputTokens = Math.ceil(totalInputWithOverhead * 0.4);
|
|
120
40
|
const estimatedTotalTokens = totalInputWithOverhead + estimatedOutputTokens;
|
|
121
|
-
|
|
41
|
+
const result = {
|
|
122
42
|
totalFiles: relevantFiles.length,
|
|
123
43
|
estimatedInputTokens: totalInputWithOverhead,
|
|
124
44
|
estimatedOutputTokens,
|
|
125
|
-
estimatedTotalTokens
|
|
126
|
-
costEstimates: this.calculateCostEstimates(totalInputWithOverhead, estimatedOutputTokens)
|
|
45
|
+
estimatedTotalTokens
|
|
127
46
|
};
|
|
47
|
+
// Only calculate cost estimates if pricing is provided
|
|
48
|
+
if (this.pricing) {
|
|
49
|
+
result.costEstimates = this.calculateCostEstimates(totalInputWithOverhead, estimatedOutputTokens);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
128
52
|
}
|
|
129
53
|
selectSampleFiles(files, sampleSize) {
|
|
130
54
|
if (files.length <= sampleSize) {
|
|
@@ -146,20 +70,17 @@ class TokenEstimator {
|
|
|
146
70
|
return Math.ceil(text.length / 4);
|
|
147
71
|
}
|
|
148
72
|
calculateCostEstimates(inputTokens, outputTokens) {
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
};
|
|
73
|
+
if (!this.pricing) {
|
|
74
|
+
throw new Error('Pricing information is required for cost estimation');
|
|
161
75
|
}
|
|
162
|
-
|
|
76
|
+
const inputCost = (inputTokens / 1000000) * this.pricing.input;
|
|
77
|
+
const outputCost = (outputTokens / 1000000) * this.pricing.output;
|
|
78
|
+
const totalCost = inputCost + outputCost;
|
|
79
|
+
return {
|
|
80
|
+
inputCost: Math.round(inputCost * 100) / 100,
|
|
81
|
+
outputCost: Math.round(outputCost * 100) / 100,
|
|
82
|
+
totalCost: Math.round(totalCost * 100) / 100
|
|
83
|
+
};
|
|
163
84
|
}
|
|
164
85
|
formatTokenEstimate(estimate) {
|
|
165
86
|
const formatNumber = (num) => num.toLocaleString();
|
|
@@ -172,23 +93,38 @@ ${chalk_1.default.bold('đ¤ Estimated Input Tokens:')} ${chalk_1.default.cyan(f
|
|
|
172
93
|
${chalk_1.default.bold('đ Estimated Output Tokens:')} ${chalk_1.default.cyan(formatNumber(estimate.estimatedOutputTokens))}
|
|
173
94
|
${chalk_1.default.bold('đ¯ Total Estimated Tokens:')} ${chalk_1.default.cyan(formatNumber(estimate.estimatedTotalTokens))}
|
|
174
95
|
|
|
175
|
-
${chalk_1.default.bold.yellow('đ° Cost Estimates by Model:')}
|
|
176
96
|
`;
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
.sort(([, a], [, b]) => a.totalCost - b.totalCost);
|
|
180
|
-
for (const [, costs] of sortedModels) {
|
|
181
|
-
const modelDisplay = `${costs.modelName} (${costs.provider})`;
|
|
97
|
+
if (estimate.costEstimates) {
|
|
98
|
+
const costs = estimate.costEstimates;
|
|
182
99
|
const totalColor = costs.totalCost < 0.10 ? chalk_1.default.green : costs.totalCost < 0.50 ? chalk_1.default.yellow : chalk_1.default.red;
|
|
183
|
-
output +=
|
|
100
|
+
output += `${chalk_1.default.bold.yellow('đ° Cost Estimate:')}
|
|
101
|
+
Input Tokens Cost: ${chalk_1.default.gray(formatCost(costs.inputCost))}
|
|
102
|
+
Output Tokens Cost: ${chalk_1.default.gray(formatCost(costs.outputCost))}
|
|
103
|
+
${chalk_1.default.bold('Total Estimated Cost:')} ${totalColor(formatCost(costs.totalCost))}
|
|
104
|
+
|
|
105
|
+
`;
|
|
184
106
|
}
|
|
185
|
-
|
|
186
|
-
|
|
107
|
+
else {
|
|
108
|
+
output += `${chalk_1.default.bold.yellow('đ° Cost Estimation:')}
|
|
109
|
+
${chalk_1.default.gray('No pricing information provided - cost estimation unavailable')}
|
|
110
|
+
${chalk_1.default.gray('Use --input-price and --output-price to enable cost estimation')}
|
|
111
|
+
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
const notesSection = estimate.costEstimates
|
|
115
|
+
? `${chalk_1.default.bold.blue('âšī¸ Notes:')}
|
|
187
116
|
${chalk_1.default.gray('âĸ Token estimates are based on sampling ' + Math.min(estimate.totalFiles, 10) + ' files')}
|
|
188
117
|
${chalk_1.default.gray('âĸ Costs include system prompts and context overhead')}
|
|
189
118
|
${chalk_1.default.gray('âĸ Output tokens estimated at ~40% of input + overhead')}
|
|
190
|
-
${chalk_1.default.gray('âĸ Actual costs may vary based on
|
|
191
|
-
${chalk_1.default.gray('âĸ
|
|
119
|
+
${chalk_1.default.gray('âĸ Actual costs may vary based on content complexity')}
|
|
120
|
+
${chalk_1.default.gray('âĸ Pricing based on your provided model costs')}`
|
|
121
|
+
: `${chalk_1.default.bold.blue('âšī¸ Notes:')}
|
|
122
|
+
${chalk_1.default.gray('âĸ Token estimates are based on sampling ' + Math.min(estimate.totalFiles, 10) + ' files')}
|
|
123
|
+
${chalk_1.default.gray('âĸ Costs include system prompts and context overhead')}
|
|
124
|
+
${chalk_1.default.gray('âĸ Output tokens estimated at ~40% of input + overhead')}
|
|
125
|
+
${chalk_1.default.gray('âĸ Provide pricing information to see cost estimates')}`;
|
|
126
|
+
output += `
|
|
127
|
+
${notesSection}
|
|
192
128
|
|
|
193
129
|
${chalk_1.default.gray('âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ')}`;
|
|
194
130
|
return output;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;
|
|
1
|
+
{"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../src/utils/tokenEstimator.ts"],"names":[],"mappings":"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"}
|