@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.
- package/dist_ts/aidocs_classes/commit.js +65 -42
- package/dist_ts/aidocs_classes/description.js +68 -29
- package/dist_ts/aidocs_classes/projectcontext.d.ts +5 -5
- package/dist_ts/aidocs_classes/projectcontext.js +8 -16
- package/dist_ts/aidocs_classes/readme.js +156 -88
- package/dist_ts/classes.aidoc.d.ts +10 -6
- package/dist_ts/classes.aidoc.js +17 -11
- package/dist_ts/classes.diffprocessor.js +284 -0
- package/dist_ts/cli.js +21 -92
- package/dist_ts/plugins.d.ts +1 -2
- package/dist_ts/plugins.js +2 -3
- package/package.json +2 -3
- package/ts/aidocs_classes/commit.ts +67 -51
- package/ts/aidocs_classes/description.ts +72 -34
- package/ts/aidocs_classes/projectcontext.ts +7 -14
- package/ts/aidocs_classes/readme.ts +168 -93
- package/ts/classes.aidoc.ts +18 -11
- package/ts/cli.ts +20 -100
- package/ts/plugins.ts +1 -2
- package/dist_ts/context/config-manager.d.ts +0 -83
- package/dist_ts/context/config-manager.js +0 -318
- package/dist_ts/context/context-analyzer.d.ts +0 -73
- package/dist_ts/context/context-analyzer.js +0 -311
- package/dist_ts/context/context-cache.d.ts +0 -73
- package/dist_ts/context/context-cache.js +0 -239
- package/dist_ts/context/context-trimmer.d.ts +0 -60
- package/dist_ts/context/context-trimmer.js +0 -258
- package/dist_ts/context/diff-processor.js +0 -284
- package/dist_ts/context/enhanced-context.d.ts +0 -73
- package/dist_ts/context/enhanced-context.js +0 -275
- package/dist_ts/context/index.d.ts +0 -11
- package/dist_ts/context/index.js +0 -12
- package/dist_ts/context/iterative-context-builder.d.ts +0 -62
- package/dist_ts/context/iterative-context-builder.js +0 -395
- package/dist_ts/context/lazy-file-loader.d.ts +0 -60
- package/dist_ts/context/lazy-file-loader.js +0 -182
- package/dist_ts/context/task-context-factory.d.ts +0 -48
- package/dist_ts/context/task-context-factory.js +0 -86
- package/dist_ts/context/types.d.ts +0 -301
- package/dist_ts/context/types.js +0 -2
- package/dist_ts/tsdoc.classes.typedoc.d.ts +0 -10
- package/dist_ts/tsdoc.classes.typedoc.js +0 -48
- package/dist_ts/tsdoc.cli.d.ts +0 -1
- package/dist_ts/tsdoc.cli.js +0 -32
- package/dist_ts/tsdoc.logging.d.ts +0 -2
- package/dist_ts/tsdoc.logging.js +0 -14
- package/dist_ts/tsdoc.paths.d.ts +0 -8
- package/dist_ts/tsdoc.paths.js +0 -12
- package/dist_ts/tsdoc.plugins.d.ts +0 -11
- package/dist_ts/tsdoc.plugins.js +0 -15
- package/ts/context/config-manager.ts +0 -369
- package/ts/context/context-analyzer.ts +0 -391
- package/ts/context/context-cache.ts +0 -286
- package/ts/context/context-trimmer.ts +0 -310
- package/ts/context/enhanced-context.ts +0 -332
- package/ts/context/index.ts +0 -70
- package/ts/context/iterative-context-builder.ts +0 -512
- package/ts/context/lazy-file-loader.ts +0 -207
- package/ts/context/task-context-factory.ts +0 -120
- package/ts/context/types.ts +0 -324
- /package/dist_ts/{context/diff-processor.d.ts → classes.diffprocessor.d.ts} +0 -0
- /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';
|
package/dist_ts/context/types.js
DELETED
|
@@ -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
|
-
}
|