@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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +658 -0
  3. package/dist/generators/agentGenerator.d.ts +23 -0
  4. package/dist/generators/agentGenerator.d.ts.map +1 -0
  5. package/dist/generators/agentGenerator.js +357 -0
  6. package/dist/generators/agentGenerator.js.map +1 -0
  7. package/dist/generators/documentationGenerator.d.ts +40 -0
  8. package/dist/generators/documentationGenerator.d.ts.map +1 -0
  9. package/dist/generators/documentationGenerator.js +786 -0
  10. package/dist/generators/documentationGenerator.js.map +1 -0
  11. package/dist/generators/incrementalDocumentationGenerator.d.ts +33 -0
  12. package/dist/generators/incrementalDocumentationGenerator.d.ts.map +1 -0
  13. package/dist/generators/incrementalDocumentationGenerator.js +400 -0
  14. package/dist/generators/incrementalDocumentationGenerator.js.map +1 -0
  15. package/dist/index.d.ts +6 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +559 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/services/anthropicClient.d.ts +12 -0
  20. package/dist/services/anthropicClient.d.ts.map +1 -0
  21. package/dist/services/anthropicClient.js +98 -0
  22. package/dist/services/anthropicClient.js.map +1 -0
  23. package/dist/services/baseLLMClient.d.ts +12 -0
  24. package/dist/services/baseLLMClient.d.ts.map +1 -0
  25. package/dist/services/baseLLMClient.js +41 -0
  26. package/dist/services/baseLLMClient.js.map +1 -0
  27. package/dist/services/changeAnalyzer.d.ts +44 -0
  28. package/dist/services/changeAnalyzer.d.ts.map +1 -0
  29. package/dist/services/changeAnalyzer.js +344 -0
  30. package/dist/services/changeAnalyzer.js.map +1 -0
  31. package/dist/services/geminiClient.d.ts +12 -0
  32. package/dist/services/geminiClient.d.ts.map +1 -0
  33. package/dist/services/geminiClient.js +96 -0
  34. package/dist/services/geminiClient.js.map +1 -0
  35. package/dist/services/grokClient.d.ts +12 -0
  36. package/dist/services/grokClient.d.ts.map +1 -0
  37. package/dist/services/grokClient.js +101 -0
  38. package/dist/services/grokClient.js.map +1 -0
  39. package/dist/services/llmClientFactory.d.ts +14 -0
  40. package/dist/services/llmClientFactory.d.ts.map +1 -0
  41. package/dist/services/llmClientFactory.js +109 -0
  42. package/dist/services/llmClientFactory.js.map +1 -0
  43. package/dist/services/openRouterClient.d.ts +12 -0
  44. package/dist/services/openRouterClient.d.ts.map +1 -0
  45. package/dist/services/openRouterClient.js +96 -0
  46. package/dist/services/openRouterClient.js.map +1 -0
  47. package/dist/services/openaiClient.d.ts +12 -0
  48. package/dist/services/openaiClient.d.ts.map +1 -0
  49. package/dist/services/openaiClient.js +98 -0
  50. package/dist/services/openaiClient.js.map +1 -0
  51. package/dist/types.d.ts +60 -0
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +3 -0
  54. package/dist/types.js.map +1 -0
  55. package/dist/utils/cliUI.d.ts +25 -0
  56. package/dist/utils/cliUI.d.ts.map +1 -0
  57. package/dist/utils/cliUI.js +236 -0
  58. package/dist/utils/cliUI.js.map +1 -0
  59. package/dist/utils/fileMapper.d.ts +11 -0
  60. package/dist/utils/fileMapper.d.ts.map +1 -0
  61. package/dist/utils/fileMapper.js +125 -0
  62. package/dist/utils/fileMapper.js.map +1 -0
  63. package/dist/utils/gitService.d.ts +50 -0
  64. package/dist/utils/gitService.d.ts.map +1 -0
  65. package/dist/utils/gitService.js +470 -0
  66. package/dist/utils/gitService.js.map +1 -0
  67. package/dist/utils/interactiveMode.d.ts +16 -0
  68. package/dist/utils/interactiveMode.d.ts.map +1 -0
  69. package/dist/utils/interactiveMode.js +432 -0
  70. package/dist/utils/interactiveMode.js.map +1 -0
  71. package/dist/utils/pricing.d.ts +14 -0
  72. package/dist/utils/pricing.d.ts.map +1 -0
  73. package/dist/utils/pricing.js +115 -0
  74. package/dist/utils/pricing.js.map +1 -0
  75. package/dist/utils/tokenEstimator.d.ts +27 -0
  76. package/dist/utils/tokenEstimator.d.ts.map +1 -0
  77. package/dist/utils/tokenEstimator.js +198 -0
  78. package/dist/utils/tokenEstimator.js.map +1 -0
  79. 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
+ }