@git.zone/tsdoc 1.11.1 → 1.11.2

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 (62) hide show
  1. package/dist_ts/aidocs_classes/commit.js +27 -34
  2. package/dist_ts/aidocs_classes/description.js +68 -29
  3. package/dist_ts/aidocs_classes/projectcontext.d.ts +5 -5
  4. package/dist_ts/aidocs_classes/projectcontext.js +8 -16
  5. package/dist_ts/aidocs_classes/readme.js +156 -88
  6. package/dist_ts/classes.aidoc.d.ts +10 -6
  7. package/dist_ts/classes.aidoc.js +17 -11
  8. package/dist_ts/classes.diffprocessor.js +284 -0
  9. package/dist_ts/cli.js +21 -92
  10. package/dist_ts/plugins.d.ts +1 -2
  11. package/dist_ts/plugins.js +2 -3
  12. package/package.json +2 -3
  13. package/ts/aidocs_classes/commit.ts +26 -41
  14. package/ts/aidocs_classes/description.ts +72 -34
  15. package/ts/aidocs_classes/projectcontext.ts +7 -14
  16. package/ts/aidocs_classes/readme.ts +168 -93
  17. package/ts/classes.aidoc.ts +18 -11
  18. package/ts/cli.ts +20 -100
  19. package/ts/plugins.ts +1 -2
  20. package/dist_ts/context/config-manager.d.ts +0 -83
  21. package/dist_ts/context/config-manager.js +0 -318
  22. package/dist_ts/context/context-analyzer.d.ts +0 -73
  23. package/dist_ts/context/context-analyzer.js +0 -311
  24. package/dist_ts/context/context-cache.d.ts +0 -73
  25. package/dist_ts/context/context-cache.js +0 -239
  26. package/dist_ts/context/context-trimmer.d.ts +0 -60
  27. package/dist_ts/context/context-trimmer.js +0 -258
  28. package/dist_ts/context/diff-processor.js +0 -284
  29. package/dist_ts/context/enhanced-context.d.ts +0 -73
  30. package/dist_ts/context/enhanced-context.js +0 -275
  31. package/dist_ts/context/index.d.ts +0 -11
  32. package/dist_ts/context/index.js +0 -12
  33. package/dist_ts/context/iterative-context-builder.d.ts +0 -62
  34. package/dist_ts/context/iterative-context-builder.js +0 -395
  35. package/dist_ts/context/lazy-file-loader.d.ts +0 -60
  36. package/dist_ts/context/lazy-file-loader.js +0 -182
  37. package/dist_ts/context/task-context-factory.d.ts +0 -48
  38. package/dist_ts/context/task-context-factory.js +0 -86
  39. package/dist_ts/context/types.d.ts +0 -301
  40. package/dist_ts/context/types.js +0 -2
  41. package/dist_ts/tsdoc.classes.typedoc.d.ts +0 -10
  42. package/dist_ts/tsdoc.classes.typedoc.js +0 -48
  43. package/dist_ts/tsdoc.cli.d.ts +0 -1
  44. package/dist_ts/tsdoc.cli.js +0 -32
  45. package/dist_ts/tsdoc.logging.d.ts +0 -2
  46. package/dist_ts/tsdoc.logging.js +0 -14
  47. package/dist_ts/tsdoc.paths.d.ts +0 -8
  48. package/dist_ts/tsdoc.paths.js +0 -12
  49. package/dist_ts/tsdoc.plugins.d.ts +0 -11
  50. package/dist_ts/tsdoc.plugins.js +0 -15
  51. package/ts/context/config-manager.ts +0 -369
  52. package/ts/context/context-analyzer.ts +0 -391
  53. package/ts/context/context-cache.ts +0 -286
  54. package/ts/context/context-trimmer.ts +0 -310
  55. package/ts/context/enhanced-context.ts +0 -332
  56. package/ts/context/index.ts +0 -70
  57. package/ts/context/iterative-context-builder.ts +0 -512
  58. package/ts/context/lazy-file-loader.ts +0 -207
  59. package/ts/context/task-context-factory.ts +0 -120
  60. package/ts/context/types.ts +0 -324
  61. /package/dist_ts/{context/diff-processor.d.ts → classes.diffprocessor.d.ts} +0 -0
  62. /package/ts/{context/diff-processor.ts → classes.diffprocessor.ts} +0 -0
package/ts/cli.ts CHANGED
@@ -4,7 +4,6 @@ import { logger } from './logging.js';
4
4
 
5
5
  import { TypeDoc } from './classes.typedoc.js';
6
6
  import { AiDoc } from './classes.aidoc.js';
7
- import * as context from './context/index.js';
8
7
 
9
8
  export const run = async () => {
10
9
  const tsdocCli = new plugins.smartcli.Smartcli();
@@ -32,17 +31,6 @@ export const run = async () => {
32
31
  const aidocInstance = new AiDoc();
33
32
  await aidocInstance.start();
34
33
 
35
- // Get context token count if requested
36
- if (argvArg.tokens || argvArg.showTokens) {
37
- logger.log('info', `Calculating context token count...`);
38
- const tokenCount = await aidocInstance.getProjectContextTokenCount(paths.cwd);
39
- logger.log('ok', `Total context token count: ${tokenCount}`);
40
-
41
- if (argvArg.tokensOnly) {
42
- return; // Exit early if we only want token count
43
- }
44
- }
45
-
46
34
  logger.log('info', `Generating new readme...`);
47
35
  logger.log('info', `This may take some time...`);
48
36
  await aidocInstance.buildReadme(paths.cwd);
@@ -51,102 +39,34 @@ export const run = async () => {
51
39
  await aidocInstance.buildDescription(paths.cwd);
52
40
  });
53
41
 
54
- tsdocCli.addCommand('tokens').subscribe(async (argvArg) => {
42
+ tsdocCli.addCommand('readme').subscribe(async (argvArg) => {
55
43
  const aidocInstance = new AiDoc();
56
44
  await aidocInstance.start();
57
45
 
58
- logger.log('info', `Calculating context token count...`);
59
-
60
- // Get task type if specified
61
- let taskType: context.TaskType | undefined = undefined;
62
- if (argvArg.task) {
63
- if (['readme', 'commit', 'description'].includes(argvArg.task)) {
64
- taskType = argvArg.task as context.TaskType;
65
- } else {
66
- logger.log('warn', `Unknown task type: ${argvArg.task}. Using default (readme).`);
67
- taskType = 'readme';
68
- }
69
- } else {
70
- // Default to readme if no task specified
71
- taskType = 'readme';
72
- }
73
-
74
- // Use iterative context building
75
- const taskFactory = new context.TaskContextFactory(paths.cwd);
76
- await taskFactory.initialize();
77
-
78
- let contextResult: context.IIterativeContextResult;
46
+ logger.log('info', `Generating new readme...`);
47
+ logger.log('info', `This may take some time...`);
48
+ await aidocInstance.buildReadme(paths.cwd);
49
+ });
79
50
 
80
- if (argvArg.all) {
81
- // Show stats for all task types
82
- const stats = await taskFactory.getTokenStats();
51
+ tsdocCli.addCommand('description').subscribe(async (argvArg) => {
52
+ const aidocInstance = new AiDoc();
53
+ await aidocInstance.start();
83
54
 
84
- logger.log('ok', 'Token statistics by task:');
85
- for (const [task, data] of Object.entries(stats)) {
86
- logger.log('info', `\n${task.toUpperCase()}:`);
87
- logger.log('info', ` Tokens: ${data.tokenCount}`);
88
- logger.log('info', ` Token savings: ${data.savings}`);
89
- logger.log('info', ` Files: ${data.includedFiles} included, ${data.trimmedFiles} trimmed, ${data.excludedFiles} excluded`);
55
+ logger.log('info', `Generating new description and keywords...`);
56
+ logger.log('info', `This may take some time...`);
57
+ await aidocInstance.buildDescription(paths.cwd);
58
+ });
90
59
 
91
- // Calculate percentage of model context
92
- const o4MiniPercentage = (data.tokenCount / 200000 * 100).toFixed(2);
93
- logger.log('info', ` Context usage: ${o4MiniPercentage}% of o4-mini (200K tokens)`);
94
- }
60
+ tsdocCli.addCommand('commit').subscribe(async (argvArg) => {
61
+ const aidocInstance = new AiDoc();
62
+ await aidocInstance.start();
95
63
 
96
- return;
97
- }
64
+ logger.log('info', `Generating commit message...`);
65
+ logger.log('info', `This may take some time...`);
66
+ const commitObject = await aidocInstance.buildNextCommitObject(paths.cwd);
98
67
 
99
- // Get context for specific task
100
- contextResult = await taskFactory.createContextForTask(taskType);
101
-
102
- // Display results
103
- logger.log('ok', `Total context token count: ${contextResult.tokenCount}`);
104
- logger.log('info', `Files included: ${contextResult.includedFiles.length}`);
105
- logger.log('info', `Files trimmed: ${contextResult.trimmedFiles.length}`);
106
- logger.log('info', `Files excluded: ${contextResult.excludedFiles.length}`);
107
- logger.log('info', `Token savings: ${contextResult.tokenSavings}`);
108
-
109
- if (argvArg.detailed) {
110
- // Show more detailed info about the context and token usage
111
- const o4MiniPercentage = (contextResult.tokenCount / 200000 * 100).toFixed(2);
112
- logger.log('info', `Token usage: ${o4MiniPercentage}% of o4-mini 200K token context window`);
113
-
114
- if (argvArg.model) {
115
- // Show percentages for different models
116
- if (argvArg.model === 'gpt4') {
117
- const gpt4Percentage = (contextResult.tokenCount / 8192 * 100).toFixed(2);
118
- logger.log('info', `Token usage (GPT-4): ${gpt4Percentage}% of 8192 token context window`);
119
- } else if (argvArg.model === 'gpt35') {
120
- const gpt35Percentage = (contextResult.tokenCount / 4096 * 100).toFixed(2);
121
- logger.log('info', `Token usage (GPT-3.5): ${gpt35Percentage}% of 4096 token context window`);
122
- }
123
- }
124
-
125
- // Estimate cost (approximate values)
126
- const o4MiniInputCost = 0.00005; // per 1K tokens for o4-mini
127
- const estimatedCost = (contextResult.tokenCount / 1000 * o4MiniInputCost).toFixed(6);
128
- logger.log('info', `Estimated input cost: $${estimatedCost} (o4-mini)`);
129
-
130
- if (argvArg.listFiles) {
131
- // List files included in context
132
- logger.log('info', '\nIncluded files:');
133
- contextResult.includedFiles.forEach(file => {
134
- logger.log('info', ` ${file.relativePath} (${file.tokenCount} tokens)`);
135
- });
136
-
137
- logger.log('info', '\nTrimmed files:');
138
- contextResult.trimmedFiles.forEach(file => {
139
- logger.log('info', ` ${file.relativePath} (${file.tokenCount} tokens)`);
140
- });
141
-
142
- if (contextResult.excludedFiles.length > 0) {
143
- logger.log('info', '\nExcluded files:');
144
- contextResult.excludedFiles.forEach(file => {
145
- logger.log('info', ` ${file.relativePath} (${file.tokenCount} tokens)`);
146
- });
147
- }
148
- }
149
- }
68
+ logger.log('ok', `Commit message generated:`);
69
+ console.log(JSON.stringify(commitObject, null, 2));
150
70
  });
151
71
 
152
72
  tsdocCli.addCommand('test').subscribe((argvArg) => {
package/ts/plugins.ts CHANGED
@@ -52,6 +52,5 @@ export { tspublish };
52
52
 
53
53
  // third party scope
54
54
  import * as typedoc from 'typedoc';
55
- import * as gptTokenizer from 'gpt-tokenizer';
56
55
 
57
- export { typedoc, gptTokenizer };
56
+ export { typedoc };
@@ -1,83 +0,0 @@
1
- import type { IContextConfig, ITrimConfig, ITaskConfig, TaskType, ICacheConfig, IAnalyzerConfig, IPrioritizationWeights, ITierConfig, IIterativeConfig } from './types.js';
2
- /**
3
- * Manages configuration for context building
4
- */
5
- export declare class ConfigManager {
6
- private static instance;
7
- private config;
8
- private projectDir;
9
- private configCache;
10
- /**
11
- * Get the singleton instance of ConfigManager
12
- */
13
- static getInstance(): ConfigManager;
14
- /**
15
- * Private constructor for singleton pattern
16
- */
17
- private constructor();
18
- /**
19
- * Initialize the config manager with a project directory
20
- * @param projectDir The project directory
21
- */
22
- initialize(projectDir: string): Promise<void>;
23
- /**
24
- * Get the default configuration
25
- */
26
- private getDefaultConfig;
27
- /**
28
- * Load configuration from npmextra.json
29
- */
30
- private loadConfig;
31
- /**
32
- * Merge configurations, with userConfig taking precedence
33
- * @param defaultConfig The default configuration
34
- * @param userConfig The user configuration
35
- */
36
- private mergeConfigs;
37
- /**
38
- * Get the complete configuration
39
- */
40
- getConfig(): IContextConfig;
41
- /**
42
- * Get the trimming configuration
43
- */
44
- getTrimConfig(): ITrimConfig;
45
- /**
46
- * Get configuration for a specific task
47
- * @param taskType The type of task
48
- */
49
- getTaskConfig(taskType: TaskType): ITaskConfig;
50
- /**
51
- * Get the maximum tokens allowed for context
52
- */
53
- getMaxTokens(): number;
54
- /**
55
- * Update the configuration
56
- * @param config The new configuration
57
- */
58
- updateConfig(config: Partial<IContextConfig>): Promise<void>;
59
- /**
60
- * Get cache configuration
61
- */
62
- getCacheConfig(): ICacheConfig;
63
- /**
64
- * Get analyzer configuration
65
- */
66
- getAnalyzerConfig(): IAnalyzerConfig;
67
- /**
68
- * Get prioritization weights
69
- */
70
- getPrioritizationWeights(): IPrioritizationWeights;
71
- /**
72
- * Get tier configuration
73
- */
74
- getTierConfig(): ITierConfig;
75
- /**
76
- * Get iterative configuration
77
- */
78
- getIterativeConfig(): IIterativeConfig;
79
- /**
80
- * Clear the config cache (force reload on next access)
81
- */
82
- clearCache(): void;
83
- }
@@ -1,318 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import * as fs from 'fs';
3
- /**
4
- * Manages configuration for context building
5
- */
6
- export class ConfigManager {
7
- /**
8
- * Get the singleton instance of ConfigManager
9
- */
10
- static getInstance() {
11
- if (!ConfigManager.instance) {
12
- ConfigManager.instance = new ConfigManager();
13
- }
14
- return ConfigManager.instance;
15
- }
16
- /**
17
- * Private constructor for singleton pattern
18
- */
19
- constructor() {
20
- this.projectDir = '';
21
- this.configCache = null;
22
- this.config = this.getDefaultConfig();
23
- }
24
- /**
25
- * Initialize the config manager with a project directory
26
- * @param projectDir The project directory
27
- */
28
- async initialize(projectDir) {
29
- this.projectDir = projectDir;
30
- await this.loadConfig();
31
- }
32
- /**
33
- * Get the default configuration
34
- */
35
- getDefaultConfig() {
36
- return {
37
- maxTokens: 190000, // Default for o4-mini with some buffer
38
- defaultMode: 'trimmed',
39
- taskSpecificSettings: {
40
- readme: {
41
- mode: 'trimmed',
42
- includePaths: ['ts/', 'src/'],
43
- excludePaths: ['test/', 'node_modules/']
44
- },
45
- commit: {
46
- mode: 'trimmed',
47
- focusOnChangedFiles: true
48
- },
49
- description: {
50
- mode: 'trimmed',
51
- includePackageInfo: true
52
- }
53
- },
54
- trimming: {
55
- removeImplementations: true,
56
- preserveInterfaces: true,
57
- preserveTypeDefs: true,
58
- preserveJSDoc: true,
59
- maxFunctionLines: 5,
60
- removeComments: true,
61
- removeBlankLines: true
62
- },
63
- cache: {
64
- enabled: true,
65
- ttl: 3600, // 1 hour
66
- maxSize: 100, // 100MB
67
- directory: undefined // Will be set to .nogit/context-cache by ContextCache
68
- },
69
- analyzer: {
70
- useAIRefinement: false, // Disabled by default for now
71
- aiModel: 'haiku'
72
- },
73
- prioritization: {
74
- dependencyWeight: 0.3,
75
- relevanceWeight: 0.4,
76
- efficiencyWeight: 0.2,
77
- recencyWeight: 0.1
78
- },
79
- tiers: {
80
- essential: { minScore: 0.8, trimLevel: 'none' },
81
- important: { minScore: 0.5, trimLevel: 'light' },
82
- optional: { minScore: 0.2, trimLevel: 'aggressive' }
83
- },
84
- iterative: {
85
- maxIterations: 5,
86
- firstPassFileLimit: 10,
87
- subsequentPassFileLimit: 5,
88
- temperature: 0.3,
89
- model: 'gpt-4-turbo-preview'
90
- }
91
- };
92
- }
93
- /**
94
- * Load configuration from npmextra.json
95
- */
96
- async loadConfig() {
97
- try {
98
- if (!this.projectDir) {
99
- return;
100
- }
101
- const npmextraJsonPath = plugins.path.join(this.projectDir, 'npmextra.json');
102
- // Check if file exists
103
- const fileExists = await plugins.fsInstance.file(npmextraJsonPath).exists();
104
- if (!fileExists) {
105
- return;
106
- }
107
- // Check cache
108
- const stats = await fs.promises.stat(npmextraJsonPath);
109
- const currentMtime = Math.floor(stats.mtimeMs);
110
- if (this.configCache && this.configCache.mtime === currentMtime) {
111
- // Use cached config
112
- this.config = this.configCache.config;
113
- return;
114
- }
115
- // Read the npmextra.json file
116
- const npmextraJsonFile = await plugins.smartfileFactory.fromFilePath(npmextraJsonPath);
117
- const npmextraContent = JSON.parse(npmextraJsonFile.contents.toString());
118
- // Check for tsdoc context configuration
119
- if (npmextraContent?.['@git.zone/tsdoc']?.context) {
120
- // Merge with default config
121
- this.config = this.mergeConfigs(this.config, npmextraContent['@git.zone/tsdoc'].context);
122
- }
123
- // Cache the config
124
- this.configCache = {
125
- mtime: currentMtime,
126
- config: { ...this.config }
127
- };
128
- }
129
- catch (error) {
130
- console.error('Error loading context configuration:', error);
131
- }
132
- }
133
- /**
134
- * Merge configurations, with userConfig taking precedence
135
- * @param defaultConfig The default configuration
136
- * @param userConfig The user configuration
137
- */
138
- mergeConfigs(defaultConfig, userConfig) {
139
- const result = { ...defaultConfig };
140
- // Merge top-level properties
141
- if (userConfig.maxTokens !== undefined)
142
- result.maxTokens = userConfig.maxTokens;
143
- if (userConfig.defaultMode !== undefined)
144
- result.defaultMode = userConfig.defaultMode;
145
- // Merge task-specific settings
146
- if (userConfig.taskSpecificSettings) {
147
- result.taskSpecificSettings = result.taskSpecificSettings || {};
148
- // For each task type, merge settings
149
- ['readme', 'commit', 'description'].forEach(taskType => {
150
- if (userConfig.taskSpecificSettings?.[taskType]) {
151
- result.taskSpecificSettings[taskType] = {
152
- ...result.taskSpecificSettings[taskType],
153
- ...userConfig.taskSpecificSettings[taskType]
154
- };
155
- }
156
- });
157
- }
158
- // Merge trimming configuration
159
- if (userConfig.trimming) {
160
- result.trimming = {
161
- ...result.trimming,
162
- ...userConfig.trimming
163
- };
164
- }
165
- // Merge cache configuration
166
- if (userConfig.cache) {
167
- result.cache = {
168
- ...result.cache,
169
- ...userConfig.cache
170
- };
171
- }
172
- // Merge analyzer configuration
173
- if (userConfig.analyzer) {
174
- result.analyzer = {
175
- ...result.analyzer,
176
- ...userConfig.analyzer
177
- };
178
- }
179
- // Merge prioritization weights
180
- if (userConfig.prioritization) {
181
- result.prioritization = {
182
- ...result.prioritization,
183
- ...userConfig.prioritization
184
- };
185
- }
186
- // Merge tier configuration
187
- if (userConfig.tiers) {
188
- result.tiers = {
189
- ...result.tiers,
190
- ...userConfig.tiers
191
- };
192
- }
193
- // Merge iterative configuration
194
- if (userConfig.iterative) {
195
- result.iterative = {
196
- ...result.iterative,
197
- ...userConfig.iterative
198
- };
199
- }
200
- return result;
201
- }
202
- /**
203
- * Get the complete configuration
204
- */
205
- getConfig() {
206
- return this.config;
207
- }
208
- /**
209
- * Get the trimming configuration
210
- */
211
- getTrimConfig() {
212
- return this.config.trimming || {};
213
- }
214
- /**
215
- * Get configuration for a specific task
216
- * @param taskType The type of task
217
- */
218
- getTaskConfig(taskType) {
219
- // Get task-specific config or empty object
220
- const taskConfig = this.config.taskSpecificSettings?.[taskType] || {};
221
- // If mode is not specified, use default mode
222
- if (!taskConfig.mode) {
223
- taskConfig.mode = this.config.defaultMode;
224
- }
225
- return taskConfig;
226
- }
227
- /**
228
- * Get the maximum tokens allowed for context
229
- */
230
- getMaxTokens() {
231
- return this.config.maxTokens || 190000;
232
- }
233
- /**
234
- * Update the configuration
235
- * @param config The new configuration
236
- */
237
- async updateConfig(config) {
238
- // Merge with existing config
239
- this.config = this.mergeConfigs(this.config, config);
240
- // Invalidate cache
241
- this.configCache = null;
242
- try {
243
- if (!this.projectDir) {
244
- return;
245
- }
246
- // Read the existing npmextra.json file
247
- const npmextraJsonPath = plugins.path.join(this.projectDir, 'npmextra.json');
248
- let npmextraContent = {};
249
- if (await plugins.fsInstance.file(npmextraJsonPath).exists()) {
250
- const npmextraJsonFile = await plugins.smartfileFactory.fromFilePath(npmextraJsonPath);
251
- npmextraContent = JSON.parse(npmextraJsonFile.contents.toString()) || {};
252
- }
253
- // Update the tsdoc context configuration
254
- const typedContent = npmextraContent;
255
- if (!typedContent.tsdoc)
256
- typedContent.tsdoc = {};
257
- typedContent.tsdoc.context = this.config;
258
- // Write back to npmextra.json
259
- const updatedContent = JSON.stringify(npmextraContent, null, 2);
260
- await plugins.fsInstance.file(npmextraJsonPath).encoding('utf8').write(updatedContent);
261
- }
262
- catch (error) {
263
- console.error('Error updating context configuration:', error);
264
- }
265
- }
266
- /**
267
- * Get cache configuration
268
- */
269
- getCacheConfig() {
270
- return this.config.cache || { enabled: true, ttl: 3600, maxSize: 100 };
271
- }
272
- /**
273
- * Get analyzer configuration
274
- */
275
- getAnalyzerConfig() {
276
- return this.config.analyzer || { useAIRefinement: false, aiModel: 'haiku' };
277
- }
278
- /**
279
- * Get prioritization weights
280
- */
281
- getPrioritizationWeights() {
282
- return this.config.prioritization || {
283
- dependencyWeight: 0.3,
284
- relevanceWeight: 0.4,
285
- efficiencyWeight: 0.2,
286
- recencyWeight: 0.1
287
- };
288
- }
289
- /**
290
- * Get tier configuration
291
- */
292
- getTierConfig() {
293
- return this.config.tiers || {
294
- essential: { minScore: 0.8, trimLevel: 'none' },
295
- important: { minScore: 0.5, trimLevel: 'light' },
296
- optional: { minScore: 0.2, trimLevel: 'aggressive' }
297
- };
298
- }
299
- /**
300
- * Get iterative configuration
301
- */
302
- getIterativeConfig() {
303
- return this.config.iterative || {
304
- maxIterations: 5,
305
- firstPassFileLimit: 10,
306
- subsequentPassFileLimit: 5,
307
- temperature: 0.3,
308
- model: 'gpt-4-turbo-preview'
309
- };
310
- }
311
- /**
312
- * Clear the config cache (force reload on next access)
313
- */
314
- clearCache() {
315
- this.configCache = null;
316
- }
317
- }
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9jb250ZXh0L2NvbmZpZy1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBY3pCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFNeEI7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNIO1FBaEJRLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBcUQsSUFBSSxDQUFDO1FBZ0IzRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQWtCO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN0QixPQUFPO1lBQ0wsU0FBUyxFQUFFLE1BQU0sRUFBRSx1Q0FBdUM7WUFDMUQsV0FBVyxFQUFFLFNBQVM7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCLE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsU0FBUztvQkFDZixZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO29CQUM3QixZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDO2lCQUN6QztnQkFD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
@@ -1,73 +0,0 @@
1
- import type { IFileMetadata, IAnalysisResult, TaskType, IPrioritizationWeights, ITierConfig } from './types.js';
2
- /**
3
- * ContextAnalyzer provides intelligent file selection and prioritization
4
- * based on dependency analysis, task relevance, and configurable weights
5
- */
6
- export declare class ContextAnalyzer {
7
- private projectRoot;
8
- private weights;
9
- private tiers;
10
- /**
11
- * Creates a new ContextAnalyzer
12
- * @param projectRoot - Root directory of the project
13
- * @param weights - Prioritization weights
14
- * @param tiers - Tier configuration
15
- */
16
- constructor(projectRoot: string, weights?: Partial<IPrioritizationWeights>, tiers?: Partial<ITierConfig>);
17
- /**
18
- * Analyzes files for a specific task type
19
- * @param metadata - Array of file metadata to analyze
20
- * @param taskType - Type of task being performed
21
- * @param changedFiles - Optional list of recently changed files (for commits)
22
- * @returns Analysis result with scored files
23
- */
24
- analyze(metadata: IFileMetadata[], taskType: TaskType, changedFiles?: string[]): Promise<IAnalysisResult>;
25
- /**
26
- * Builds a dependency graph from file metadata
27
- * @param metadata - Array of file metadata
28
- * @returns Dependency graph as a map
29
- */
30
- private buildDependencyGraph;
31
- /**
32
- * Extracts import statements from file contents
33
- * @param contents - File contents
34
- * @param filePath - Path of the file being analyzed
35
- * @returns Array of absolute paths to imported files
36
- */
37
- private extractImports;
38
- /**
39
- * Calculates centrality scores for all nodes in the dependency graph
40
- * Uses a simplified PageRank-like algorithm
41
- * @param graph - Dependency graph
42
- */
43
- private calculateCentrality;
44
- /**
45
- * Analyzes a single file
46
- * @param meta - File metadata
47
- * @param taskType - Task being performed
48
- * @param graph - Dependency graph
49
- * @param changedFiles - Recently changed files
50
- * @returns File analysis
51
- */
52
- private analyzeFile;
53
- /**
54
- * Calculates task-specific relevance score
55
- */
56
- private calculateRelevance;
57
- /**
58
- * Calculates efficiency score (information density)
59
- */
60
- private calculateEfficiency;
61
- /**
62
- * Calculates recency score for changed files
63
- */
64
- private calculateRecency;
65
- /**
66
- * Assigns a tier based on importance score
67
- */
68
- private assignTier;
69
- /**
70
- * Generates a human-readable reason for the score
71
- */
72
- private generateReason;
73
- }