@git.zone/tsdoc 1.11.1 → 1.11.3

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 +65 -42
  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 +67 -51
  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
@@ -1,182 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import * as fs from 'fs';
3
- /**
4
- * LazyFileLoader handles efficient file loading by:
5
- * - Scanning files for metadata without loading contents
6
- * - Providing fast file size and token estimates
7
- * - Loading contents only when requested
8
- * - Parallel loading of selected files
9
- */
10
- export class LazyFileLoader {
11
- /**
12
- * Creates a new LazyFileLoader
13
- * @param projectRoot - Root directory of the project
14
- */
15
- constructor(projectRoot) {
16
- this.metadataCache = new Map();
17
- this.projectRoot = projectRoot;
18
- }
19
- /**
20
- * Scans files in given globs and creates metadata without loading contents
21
- * @param globs - File patterns to scan (e.g., ['ts/**\/*.ts', 'test/**\/*.ts'])
22
- * @returns Array of file metadata
23
- */
24
- async scanFiles(globs) {
25
- const metadata = [];
26
- for (const globPattern of globs) {
27
- try {
28
- const virtualDir = await plugins.smartfileFactory.virtualDirectoryFromPath(this.projectRoot);
29
- // Filter files based on glob pattern using simple pattern matching
30
- const smartFiles = virtualDir.filter(file => {
31
- // Simple glob matching
32
- const relativePath = file.relative;
33
- if (globPattern.includes('**')) {
34
- // Handle ** patterns - match any path
35
- const pattern = globPattern.replace(/\*\*/g, '.*').replace(/\*/g, '[^/]*');
36
- return new RegExp(`^${pattern}$`).test(relativePath);
37
- }
38
- else if (globPattern.includes('*')) {
39
- // Handle single * patterns
40
- const pattern = globPattern.replace(/\*/g, '[^/]*');
41
- return new RegExp(`^${pattern}$`).test(relativePath);
42
- }
43
- else {
44
- // Exact match
45
- return relativePath === globPattern;
46
- }
47
- }).listFiles();
48
- for (const smartFile of smartFiles) {
49
- try {
50
- const meta = await this.getMetadata(smartFile.absolutePath);
51
- metadata.push(meta);
52
- }
53
- catch (error) {
54
- // Skip files that can't be read
55
- console.warn(`Failed to get metadata for ${smartFile.absolutePath}:`, error.message);
56
- }
57
- }
58
- }
59
- catch (error) {
60
- // Skip patterns that don't match any files
61
- console.warn(`No files found for pattern ${globPattern}`);
62
- }
63
- }
64
- return metadata;
65
- }
66
- /**
67
- * Gets metadata for a single file without loading contents
68
- * @param filePath - Absolute path to the file
69
- * @returns File metadata
70
- */
71
- async getMetadata(filePath) {
72
- // Check cache first
73
- if (this.metadataCache.has(filePath)) {
74
- const cached = this.metadataCache.get(filePath);
75
- const currentStats = await fs.promises.stat(filePath);
76
- // Return cached if file hasn't changed
77
- if (cached.mtime === Math.floor(currentStats.mtimeMs)) {
78
- return cached;
79
- }
80
- }
81
- // Get file stats
82
- const stats = await fs.promises.stat(filePath);
83
- const relativePath = plugins.path.relative(this.projectRoot, filePath);
84
- // Estimate tokens: rough estimate of ~4 characters per token
85
- // This is faster than reading and tokenizing the entire file
86
- const estimatedTokens = Math.ceil(stats.size / 4);
87
- const metadata = {
88
- path: filePath,
89
- relativePath,
90
- size: stats.size,
91
- mtime: Math.floor(stats.mtimeMs),
92
- estimatedTokens,
93
- };
94
- // Cache the metadata
95
- this.metadataCache.set(filePath, metadata);
96
- return metadata;
97
- }
98
- /**
99
- * Loads file contents for selected files in parallel
100
- * @param metadata - Array of file metadata to load
101
- * @param tokenizer - Function to calculate accurate token count
102
- * @returns Array of complete file info with contents
103
- */
104
- async loadFiles(metadata, tokenizer) {
105
- // Load files in parallel
106
- const loadPromises = metadata.map(async (meta) => {
107
- try {
108
- const contents = await plugins.fsInstance.file(meta.path).encoding('utf8').read();
109
- const tokenCount = tokenizer(contents);
110
- const fileInfo = {
111
- path: meta.path,
112
- relativePath: meta.relativePath,
113
- contents,
114
- tokenCount,
115
- importanceScore: meta.importanceScore,
116
- };
117
- return fileInfo;
118
- }
119
- catch (error) {
120
- console.warn(`Failed to load file ${meta.path}:`, error.message);
121
- return null;
122
- }
123
- });
124
- // Wait for all loads to complete and filter out failures
125
- const results = await Promise.all(loadPromises);
126
- return results.filter((r) => r !== null);
127
- }
128
- /**
129
- * Loads a single file with contents
130
- * @param filePath - Absolute path to the file
131
- * @param tokenizer - Function to calculate accurate token count
132
- * @returns Complete file info with contents
133
- */
134
- async loadFile(filePath, tokenizer) {
135
- const meta = await this.getMetadata(filePath);
136
- const contents = await plugins.fsInstance.file(filePath).encoding('utf8').read();
137
- const tokenCount = tokenizer(contents);
138
- const relativePath = plugins.path.relative(this.projectRoot, filePath);
139
- return {
140
- path: filePath,
141
- relativePath,
142
- contents,
143
- tokenCount,
144
- importanceScore: meta.importanceScore,
145
- };
146
- }
147
- /**
148
- * Updates importance scores for metadata entries
149
- * @param scores - Map of file paths to importance scores
150
- */
151
- updateImportanceScores(scores) {
152
- for (const [path, score] of scores) {
153
- const meta = this.metadataCache.get(path);
154
- if (meta) {
155
- meta.importanceScore = score;
156
- }
157
- }
158
- }
159
- /**
160
- * Clears the metadata cache
161
- */
162
- clearCache() {
163
- this.metadataCache.clear();
164
- }
165
- /**
166
- * Gets total estimated tokens for all cached metadata
167
- */
168
- getTotalEstimatedTokens() {
169
- let total = 0;
170
- for (const meta of this.metadataCache.values()) {
171
- total += meta.estimatedTokens;
172
- }
173
- return total;
174
- }
175
- /**
176
- * Gets cached metadata entries
177
- */
178
- getCachedMetadata() {
179
- return Array.from(this.metadataCache.values());
180
- }
181
- }
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1maWxlLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2NvbnRleHQvbGF6eS1maWxlLWxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUd6Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUl6Qjs7O09BR0c7SUFDSCxZQUFZLFdBQW1CO1FBTnZCLGtCQUFhLEdBQStCLElBQUksR0FBRyxFQUFFLENBQUM7UUFPNUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWU7UUFDcEMsTUFBTSxRQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUVyQyxLQUFLLE1BQU0sV0FBVyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQztnQkFDSCxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzdGLG1FQUFtRTtnQkFDbkUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUMsdUJBQXVCO29CQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNuQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDL0Isc0NBQXNDO3dCQUN0QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3dCQUMzRSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksT0FB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
@@ -1,48 +0,0 @@
1
- import type { IIterativeContextResult, TaskType } from './types.js';
2
- /**
3
- * Factory class for creating task-specific context using iterative context building
4
- */
5
- export declare class TaskContextFactory {
6
- private projectDir;
7
- private configManager;
8
- private openaiInstance?;
9
- /**
10
- * Create a new TaskContextFactory
11
- * @param projectDirArg The project directory
12
- * @param openaiInstance Optional pre-configured OpenAI provider instance
13
- */
14
- constructor(projectDirArg: string, openaiInstance?: any);
15
- /**
16
- * Initialize the factory
17
- */
18
- initialize(): Promise<void>;
19
- /**
20
- * Create context for README generation
21
- */
22
- createContextForReadme(): Promise<IIterativeContextResult>;
23
- /**
24
- * Create context for description generation
25
- */
26
- createContextForDescription(): Promise<IIterativeContextResult>;
27
- /**
28
- * Create context for commit message generation
29
- * @param gitDiff Optional git diff to include in the context
30
- */
31
- createContextForCommit(gitDiff?: string): Promise<IIterativeContextResult>;
32
- /**
33
- * Create context for any task type
34
- * @param taskType The task type to create context for
35
- * @param additionalContent Optional additional content (currently not used)
36
- */
37
- createContextForTask(taskType: TaskType, additionalContent?: string): Promise<IIterativeContextResult>;
38
- /**
39
- * Get token stats for all task types
40
- */
41
- getTokenStats(): Promise<Record<TaskType, {
42
- tokenCount: number;
43
- savings: number;
44
- includedFiles: number;
45
- trimmedFiles: number;
46
- excludedFiles: number;
47
- }>>;
48
- }
@@ -1,86 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import { IterativeContextBuilder } from './iterative-context-builder.js';
3
- import { ConfigManager } from './config-manager.js';
4
- /**
5
- * Factory class for creating task-specific context using iterative context building
6
- */
7
- export class TaskContextFactory {
8
- /**
9
- * Create a new TaskContextFactory
10
- * @param projectDirArg The project directory
11
- * @param openaiInstance Optional pre-configured OpenAI provider instance
12
- */
13
- constructor(projectDirArg, openaiInstance) {
14
- this.projectDir = projectDirArg;
15
- this.configManager = ConfigManager.getInstance();
16
- this.openaiInstance = openaiInstance;
17
- }
18
- /**
19
- * Initialize the factory
20
- */
21
- async initialize() {
22
- await this.configManager.initialize(this.projectDir);
23
- }
24
- /**
25
- * Create context for README generation
26
- */
27
- async createContextForReadme() {
28
- const iterativeBuilder = new IterativeContextBuilder(this.projectDir, this.configManager.getIterativeConfig(), this.openaiInstance);
29
- await iterativeBuilder.initialize();
30
- return await iterativeBuilder.buildContextIteratively('readme');
31
- }
32
- /**
33
- * Create context for description generation
34
- */
35
- async createContextForDescription() {
36
- const iterativeBuilder = new IterativeContextBuilder(this.projectDir, this.configManager.getIterativeConfig(), this.openaiInstance);
37
- await iterativeBuilder.initialize();
38
- return await iterativeBuilder.buildContextIteratively('description');
39
- }
40
- /**
41
- * Create context for commit message generation
42
- * @param gitDiff Optional git diff to include in the context
43
- */
44
- async createContextForCommit(gitDiff) {
45
- const iterativeBuilder = new IterativeContextBuilder(this.projectDir, this.configManager.getIterativeConfig(), this.openaiInstance);
46
- await iterativeBuilder.initialize();
47
- return await iterativeBuilder.buildContextIteratively('commit', gitDiff);
48
- }
49
- /**
50
- * Create context for any task type
51
- * @param taskType The task type to create context for
52
- * @param additionalContent Optional additional content (currently not used)
53
- */
54
- async createContextForTask(taskType, additionalContent) {
55
- switch (taskType) {
56
- case 'readme':
57
- return this.createContextForReadme();
58
- case 'description':
59
- return this.createContextForDescription();
60
- case 'commit':
61
- return this.createContextForCommit(additionalContent);
62
- default:
63
- // Default to readme for unknown task types
64
- return this.createContextForReadme();
65
- }
66
- }
67
- /**
68
- * Get token stats for all task types
69
- */
70
- async getTokenStats() {
71
- const taskTypes = ['readme', 'description', 'commit'];
72
- const stats = {};
73
- for (const taskType of taskTypes) {
74
- const result = await this.createContextForTask(taskType);
75
- stats[taskType] = {
76
- tokenCount: result.tokenCount,
77
- savings: result.tokenSavings,
78
- includedFiles: result.includedFiles.length,
79
- trimmedFiles: result.trimmedFiles.length,
80
- excludedFiles: result.excludedFiles.length
81
- };
82
- }
83
- return stats;
84
- }
85
- }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1jb250ZXh0LWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9jb250ZXh0L3Rhc2stY29udGV4dC1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdwRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFLN0I7Ozs7T0FJRztJQUNILFlBQVksYUFBcUIsRUFBRSxjQUFvQjtRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCO1FBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsQ0FDbEQsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEVBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7UUFDRixNQUFNLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsMkJBQTJCO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsQ0FDbEQsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEVBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7UUFDRixNQUFNLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQWdCO1FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsQ0FDbEQsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEVBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7UUFDRixNQUFNLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsb0JBQW9CLENBQy9CLFFBQWtCLEVBQ2xCLGlCQUEwQjtRQUUxQixRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssYUFBYTtnQkFDaEIsT0FBTyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUM1QyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN4RDtnQkFDRSwyQ0FBMkM7Z0JBQzNDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBT3hCLE1BQU0sU0FBUyxHQUFlLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRSxNQUFNLEtBQUssR0FBMEIsRUFBUyxDQUFDO1FBRS9DLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHO2dCQUNoQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7Z0JBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWTtnQkFDNUIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTTtnQkFDMUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFDeEMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTTthQUMzQyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIn0=
@@ -1,301 +0,0 @@
1
- /**
2
- * Context processing mode to control how context is built
3
- */
4
- export type ContextMode = 'full' | 'trimmed' | 'summarized';
5
- /**
6
- * Configuration for context trimming
7
- */
8
- export interface ITrimConfig {
9
- /** Whether to remove function implementations */
10
- removeImplementations?: boolean;
11
- /** Whether to preserve interface definitions */
12
- preserveInterfaces?: boolean;
13
- /** Whether to preserve type definitions */
14
- preserveTypeDefs?: boolean;
15
- /** Whether to preserve JSDoc comments */
16
- preserveJSDoc?: boolean;
17
- /** Maximum lines to keep for function bodies (if not removing completely) */
18
- maxFunctionLines?: number;
19
- /** Whether to remove normal comments (non-JSDoc) */
20
- removeComments?: boolean;
21
- /** Whether to remove blank lines */
22
- removeBlankLines?: boolean;
23
- }
24
- /**
25
- * Task types that require different context optimization
26
- */
27
- export type TaskType = 'readme' | 'commit' | 'description';
28
- /**
29
- * Configuration for different tasks
30
- */
31
- export interface ITaskConfig {
32
- /** The context mode to use for this task */
33
- mode?: ContextMode;
34
- /** File paths to include for this task */
35
- includePaths?: string[];
36
- /** File paths to exclude for this task */
37
- excludePaths?: string[];
38
- /** For commit tasks, whether to focus on changed files */
39
- focusOnChangedFiles?: boolean;
40
- /** For description tasks, whether to include package info */
41
- includePackageInfo?: boolean;
42
- }
43
- /**
44
- * Complete context configuration
45
- */
46
- export interface IContextConfig {
47
- /** Maximum tokens to use for context */
48
- maxTokens?: number;
49
- /** Default context mode */
50
- defaultMode?: ContextMode;
51
- /** Task-specific settings */
52
- taskSpecificSettings?: {
53
- [key in TaskType]?: ITaskConfig;
54
- };
55
- /** Trimming configuration */
56
- trimming?: ITrimConfig;
57
- /** Cache configuration */
58
- cache?: ICacheConfig;
59
- /** Analyzer configuration */
60
- analyzer?: IAnalyzerConfig;
61
- /** Prioritization weights */
62
- prioritization?: IPrioritizationWeights;
63
- /** Tier configuration for adaptive trimming */
64
- tiers?: ITierConfig;
65
- /** Iterative context building configuration */
66
- iterative?: IIterativeConfig;
67
- }
68
- /**
69
- * Cache configuration
70
- */
71
- export interface ICacheConfig {
72
- /** Whether caching is enabled */
73
- enabled?: boolean;
74
- /** Time-to-live in seconds */
75
- ttl?: number;
76
- /** Maximum cache size in MB */
77
- maxSize?: number;
78
- /** Cache directory path */
79
- directory?: string;
80
- }
81
- /**
82
- * Analyzer configuration
83
- * Note: Smart analysis is always enabled; this config only controls advanced options
84
- */
85
- export interface IAnalyzerConfig {
86
- /** Whether to use AI refinement for selection (advanced, disabled by default) */
87
- useAIRefinement?: boolean;
88
- /** AI model to use for refinement */
89
- aiModel?: string;
90
- }
91
- /**
92
- * Weights for file prioritization
93
- */
94
- export interface IPrioritizationWeights {
95
- /** Weight for dependency centrality */
96
- dependencyWeight?: number;
97
- /** Weight for task relevance */
98
- relevanceWeight?: number;
99
- /** Weight for token efficiency */
100
- efficiencyWeight?: number;
101
- /** Weight for file recency */
102
- recencyWeight?: number;
103
- }
104
- /**
105
- * Tier configuration for adaptive trimming
106
- */
107
- export interface ITierConfig {
108
- essential?: ITierSettings;
109
- important?: ITierSettings;
110
- optional?: ITierSettings;
111
- }
112
- /**
113
- * Settings for a single tier
114
- */
115
- export interface ITierSettings {
116
- /** Minimum score to qualify for this tier */
117
- minScore: number;
118
- /** Trimming level to apply */
119
- trimLevel: 'none' | 'light' | 'aggressive';
120
- }
121
- /**
122
- * Basic file information interface
123
- */
124
- export interface IFileInfo {
125
- /** The file path */
126
- path: string;
127
- /** The file contents */
128
- contents: string;
129
- /** The file's relative path from the project root */
130
- relativePath: string;
131
- /** The estimated token count of the file */
132
- tokenCount?: number;
133
- /** The file's importance score (higher is more important) */
134
- importanceScore?: number;
135
- }
136
- /**
137
- * Result of context building
138
- */
139
- export interface IContextResult {
140
- /** The generated context string */
141
- context: string;
142
- /** The total token count of the context */
143
- tokenCount: number;
144
- /** Files included in the context */
145
- includedFiles: IFileInfo[];
146
- /** Files that were trimmed */
147
- trimmedFiles: IFileInfo[];
148
- /** Files that were excluded */
149
- excludedFiles: IFileInfo[];
150
- /** Token savings from trimming */
151
- tokenSavings: number;
152
- }
153
- /**
154
- * File metadata without contents (for lazy loading)
155
- */
156
- export interface IFileMetadata {
157
- /** The file path */
158
- path: string;
159
- /** The file's relative path from the project root */
160
- relativePath: string;
161
- /** File size in bytes */
162
- size: number;
163
- /** Last modified time (Unix timestamp) */
164
- mtime: number;
165
- /** Estimated token count (without loading full contents) */
166
- estimatedTokens: number;
167
- /** The file's importance score */
168
- importanceScore?: number;
169
- }
170
- /**
171
- * Cache entry for a file
172
- */
173
- export interface ICacheEntry {
174
- /** File path */
175
- path: string;
176
- /** File contents */
177
- contents: string;
178
- /** Token count */
179
- tokenCount: number;
180
- /** Last modified time when cached */
181
- mtime: number;
182
- /** When this cache entry was created */
183
- cachedAt: number;
184
- }
185
- /**
186
- * Dependency information for a file
187
- */
188
- export interface IFileDependencies {
189
- /** File path */
190
- path: string;
191
- /** Files this file imports */
192
- imports: string[];
193
- /** Files that import this file */
194
- importedBy: string[];
195
- /** Centrality score (0-1) - how central this file is in the dependency graph */
196
- centrality: number;
197
- }
198
- /**
199
- * Analysis result for a file
200
- */
201
- export interface IFileAnalysis {
202
- /** File path */
203
- path: string;
204
- /** Task relevance score (0-1) */
205
- relevanceScore: number;
206
- /** Dependency centrality score (0-1) */
207
- centralityScore: number;
208
- /** Token efficiency score (0-1) */
209
- efficiencyScore: number;
210
- /** Recency score (0-1) */
211
- recencyScore: number;
212
- /** Combined importance score (0-1) */
213
- importanceScore: number;
214
- /** Assigned tier */
215
- tier: 'essential' | 'important' | 'optional' | 'excluded';
216
- /** Reason for the score */
217
- reason?: string;
218
- }
219
- /**
220
- * Result of context analysis
221
- */
222
- export interface IAnalysisResult {
223
- /** Task type being analyzed */
224
- taskType: TaskType;
225
- /** Analyzed files with scores */
226
- files: IFileAnalysis[];
227
- /** Dependency graph */
228
- dependencyGraph: Map<string, IFileDependencies>;
229
- /** Total files analyzed */
230
- totalFiles: number;
231
- /** Analysis duration in ms */
232
- analysisDuration: number;
233
- }
234
- /**
235
- * Configuration for iterative context building
236
- */
237
- export interface IIterativeConfig {
238
- /** Maximum number of iterations allowed */
239
- maxIterations?: number;
240
- /** Maximum files to request in first iteration */
241
- firstPassFileLimit?: number;
242
- /** Maximum files to request in subsequent iterations */
243
- subsequentPassFileLimit?: number;
244
- /** Temperature for AI decision making (0-1) */
245
- temperature?: number;
246
- /** Model to use for iterative decisions */
247
- model?: string;
248
- }
249
- /**
250
- * AI decision for file selection
251
- */
252
- export interface IFileSelectionDecision {
253
- /** AI's reasoning for file selection */
254
- reasoning: string;
255
- /** File paths to load */
256
- filesToLoad: string[];
257
- /** Estimated tokens needed */
258
- estimatedTokensNeeded?: number;
259
- }
260
- /**
261
- * AI decision for context sufficiency
262
- */
263
- export interface IContextSufficiencyDecision {
264
- /** Whether context is sufficient */
265
- sufficient: boolean;
266
- /** AI's reasoning */
267
- reasoning: string;
268
- /** Additional files needed (if not sufficient) */
269
- additionalFilesNeeded?: string[];
270
- }
271
- /**
272
- * State for a single iteration
273
- */
274
- export interface IIterationState {
275
- /** Iteration number (1-based) */
276
- iteration: number;
277
- /** Files loaded in this iteration */
278
- filesLoaded: IFileInfo[];
279
- /** Tokens used in this iteration */
280
- tokensUsed: number;
281
- /** Total tokens used so far */
282
- totalTokensUsed: number;
283
- /** AI decision made in this iteration */
284
- decision: IFileSelectionDecision | IContextSufficiencyDecision;
285
- /** Duration of this iteration in ms */
286
- duration: number;
287
- }
288
- /**
289
- * Result of iterative context building
290
- */
291
- export interface IIterativeContextResult extends IContextResult {
292
- /** Number of iterations performed */
293
- iterationCount: number;
294
- /** Details of each iteration */
295
- iterations: IIterationState[];
296
- /** Total API calls made */
297
- apiCallCount: number;
298
- /** Total duration in ms */
299
- totalDuration: number;
300
- }
301
- export type { IDiffFileInfo, IProcessedDiff, IDiffProcessorOptions } from './diff-processor.js';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9jb250ZXh0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,10 +0,0 @@
1
- import * as plugins from './tsdoc.plugins.js';
2
- export declare class TypeDoc {
3
- smartshellInstance: plugins.smartshell.Smartshell;
4
- static isTypeDocDir(dirPathArg: string): Promise<boolean>;
5
- typedocDirectory: string;
6
- constructor(dirPathArg: any);
7
- compile(options?: {
8
- publicSubdir?: string;
9
- }): Promise<void>;
10
- }