@git.zone/tsdoc 1.4.5 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +3 -3
- package/dist_ts/aidocs_classes/commit.js +16 -10
- package/dist_ts/aidocs_classes/description.js +14 -6
- package/dist_ts/aidocs_classes/projectcontext.d.ts +22 -0
- package/dist_ts/aidocs_classes/projectcontext.js +41 -1
- package/dist_ts/aidocs_classes/readme.js +10 -4
- package/dist_ts/classes.aidoc.d.ts +23 -0
- package/dist_ts/classes.aidoc.js +34 -1
- package/dist_ts/cli.js +110 -1
- package/dist_ts/context/config-manager.d.ts +58 -0
- package/dist_ts/context/config-manager.js +183 -0
- package/dist_ts/context/context-trimmer.d.ts +52 -0
- package/dist_ts/context/context-trimmer.js +199 -0
- package/dist_ts/context/enhanced-context.d.ts +75 -0
- package/dist_ts/context/enhanced-context.js +272 -0
- package/dist_ts/context/index.d.ts +7 -0
- package/dist_ts/context/index.js +8 -0
- package/dist_ts/context/task-context-factory.d.ts +46 -0
- package/dist_ts/context/task-context-factory.js +109 -0
- package/dist_ts/context/types.d.ts +89 -0
- package/dist_ts/context/types.js +2 -0
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/npmextra.json +10 -9
- package/package.json +25 -23
- package/readme.md +588 -174
- package/readme.plan.md +314 -0
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/aidocs_classes/commit.ts +21 -9
- package/ts/aidocs_classes/description.ts +16 -5
- package/ts/aidocs_classes/projectcontext.ts +43 -0
- package/ts/aidocs_classes/readme.ts +11 -3
- package/ts/classes.aidoc.ts +37 -0
- package/ts/cli.ts +128 -0
- package/ts/context/config-manager.ts +209 -0
- package/ts/context/context-trimmer.ts +246 -0
- package/ts/context/enhanced-context.ts +343 -0
- package/ts/context/index.ts +32 -0
- package/ts/context/task-context-factory.ts +138 -0
- package/ts/context/types.ts +95 -0
- package/ts/plugins.ts +2 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsdoc',
|
|
6
|
-
version: '1.
|
|
7
|
-
description: '
|
|
6
|
+
version: '1.5.1',
|
|
7
|
+
description: 'A comprehensive TypeScript documentation tool that leverages AI to generate and enhance project documentation, including dynamic README creation, API docs via TypeDoc, and smart commit message generation.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDhNQUE4TTtDQUM1TixDQUFBIn0=
|
|
@@ -14,15 +14,21 @@ export class Commit {
|
|
|
14
14
|
'pnpm-lock.yaml',
|
|
15
15
|
'package-lock.json',
|
|
16
16
|
]);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
// Use the new TaskContextFactory for optimized context
|
|
18
|
+
const taskContextFactory = new (await import('../context/index.js')).TaskContextFactory(this.projectDir);
|
|
19
|
+
await taskContextFactory.initialize();
|
|
20
|
+
// Generate context specifically for commit task
|
|
21
|
+
const contextResult = await taskContextFactory.createContextForCommit(diffStringArray[0] ? diffStringArray.join('\n\n') : 'No changes.');
|
|
22
|
+
// Get the optimized context string
|
|
23
|
+
let contextString = contextResult.context;
|
|
24
|
+
// Log token usage statistics
|
|
25
|
+
console.log(`Token usage - Context: ${contextResult.tokenCount}, Files: ${contextResult.includedFiles.length + contextResult.trimmedFiles.length}, Savings: ${contextResult.tokenSavings}`);
|
|
26
|
+
// Check for token overflow against model limits
|
|
27
|
+
const MODEL_TOKEN_LIMIT = 200000; // o4-mini
|
|
28
|
+
if (contextResult.tokenCount > MODEL_TOKEN_LIMIT * 0.9) {
|
|
29
|
+
console.log(`⚠️ Warning: Context size (${contextResult.tokenCount} tokens) is close to or exceeds model limit (${MODEL_TOKEN_LIMIT} tokens).`);
|
|
30
|
+
console.log(`The model may not be able to process all information effectively.`);
|
|
31
|
+
}
|
|
26
32
|
let result = await this.aiDocsRef.openaiInstance.chat({
|
|
27
33
|
systemMessage: `
|
|
28
34
|
You create a commit message for a git commit.
|
|
@@ -102,4 +108,4 @@ ${JSON.stringify(commitMessages, null, 2)}
|
|
|
102
108
|
return resultObject;
|
|
103
109
|
}
|
|
104
110
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvYWlkb2NzX2NsYXNzZXMvY29tbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFXckQsTUFBTSxPQUFPLE1BQU07SUFJakIsWUFBWSxTQUFnQixFQUFFLGFBQXFCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pELE1BQU0sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FDL0QsZ0JBQWdCLEVBQ2hCLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RCxnQkFBZ0I7WUFDaEIsbUJBQW1CO1NBQ3BCLENBQUMsQ0FBQztRQUNILHVEQUF1RDtRQUN2RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pHLE1BQU0sa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFdEMsZ0RBQWdEO1FBQ2hELE1BQU0sYUFBYSxHQUFHLE1BQU0sa0JBQWtCLENBQUMs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
|
|
@@ -6,9 +6,14 @@ export class Description {
|
|
|
6
6
|
this.projectDir = projectDirArg;
|
|
7
7
|
}
|
|
8
8
|
async build() {
|
|
9
|
-
//
|
|
10
|
-
const
|
|
11
|
-
|
|
9
|
+
// Use the new TaskContextFactory for optimized context
|
|
10
|
+
const taskContextFactory = new (await import('../context/index.js')).TaskContextFactory(this.projectDir);
|
|
11
|
+
await taskContextFactory.initialize();
|
|
12
|
+
// Generate context specifically for description task
|
|
13
|
+
const contextResult = await taskContextFactory.createContextForDescription();
|
|
14
|
+
const contextString = contextResult.context;
|
|
15
|
+
// Log token usage statistics
|
|
16
|
+
console.log(`Token usage - Context: ${contextResult.tokenCount}, Files: ${contextResult.includedFiles.length + contextResult.trimmedFiles.length}, Savings: ${contextResult.tokenSavings}`);
|
|
12
17
|
let result = await this.aiDocsRef.openaiInstance.chat({
|
|
13
18
|
systemMessage: `
|
|
14
19
|
You create a json adhering the following interface:
|
|
@@ -31,14 +36,17 @@ Don't wrap the JSON in three ticks json!!!
|
|
|
31
36
|
});
|
|
32
37
|
console.log(result.message);
|
|
33
38
|
const resultObject = JSON.parse(result.message.replace('```json', '').replace('```', ''));
|
|
34
|
-
|
|
39
|
+
// Create a standard ProjectContext instance for file operations
|
|
40
|
+
const projectContext = new ProjectContext(this.projectDir);
|
|
41
|
+
const files = await projectContext.gatherFiles();
|
|
42
|
+
const npmextraJson = files.smartfilesNpmextraJSON;
|
|
35
43
|
const npmextraJsonContent = JSON.parse(npmextraJson.contents.toString());
|
|
36
44
|
npmextraJsonContent.gitzone.module.description = resultObject.description;
|
|
37
45
|
npmextraJsonContent.gitzone.module.keywords = resultObject.keywords;
|
|
38
46
|
npmextraJson.contents = Buffer.from(JSON.stringify(npmextraJsonContent, null, 2));
|
|
39
47
|
await npmextraJson.write();
|
|
40
48
|
// do the same with packageJson
|
|
41
|
-
const packageJson =
|
|
49
|
+
const packageJson = files.smartfilePackageJSON;
|
|
42
50
|
const packageJsonContent = JSON.parse(packageJson.contents.toString());
|
|
43
51
|
packageJsonContent.description = resultObject.description;
|
|
44
52
|
packageJsonContent.keywords = resultObject.keywords;
|
|
@@ -50,4 +58,4 @@ Don't wrap the JSON in three ticks json!!!
|
|
|
50
58
|
return result.message;
|
|
51
59
|
}
|
|
52
60
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9haWRvY3NfY2xhc3Nlcy9kZXNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPckQsTUFBTSxPQUFPLFdBQVc7SUFLdEIsWUFBWSxTQUFnQixFQUFFLGFBQXFCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNoQix1REFBdUQ7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RyxNQUFNLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXRDLHFEQUFxRDtRQUNyRCxNQUFNLGFBQWEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDN0UsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUU1Qyw2QkFBNkI7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsYUFBYSxDQUFDLFVBQVUsWUFBWSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sY0FBYyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUU1TCxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNwRCxhQUFhLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztLQWVoQjtZQUNDLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFdBQVcsRUFBRSxhQUFhO1NBQzNCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE1BQU0sWUFBWSxHQUEwQixJQUFJLENBQUMsS0FBSyxDQUNwRCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDekQsQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQ2xELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFekUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUMxRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRXBFLFlBQVksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTNCLCtCQUErQjtRQUMvQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUMxRCxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxXQUFXLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiJ9
|
|
@@ -2,6 +2,8 @@ import * as plugins from '../plugins.js';
|
|
|
2
2
|
export declare class ProjectContext {
|
|
3
3
|
static fromDir(dirArg: string): Promise<void>;
|
|
4
4
|
projectDir: string;
|
|
5
|
+
private tokenCount;
|
|
6
|
+
private contextString;
|
|
5
7
|
constructor(projectDirArg: string);
|
|
6
8
|
gatherFiles(): Promise<{
|
|
7
9
|
smartfilePackageJSON: plugins.smartfile.SmartFile;
|
|
@@ -12,6 +14,26 @@ export declare class ProjectContext {
|
|
|
12
14
|
smartfilesTest: plugins.smartfile.SmartFile[];
|
|
13
15
|
}>;
|
|
14
16
|
convertFilesToContext(filesArg: plugins.smartfile.SmartFile[]): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Calculate the token count for a string using the GPT tokenizer
|
|
19
|
+
* @param text The text to count tokens for
|
|
20
|
+
* @param model The model to use for token counting (default: gpt-3.5-turbo)
|
|
21
|
+
* @returns The number of tokens in the text
|
|
22
|
+
*/
|
|
23
|
+
countTokens(text: string, model?: string): number;
|
|
15
24
|
private buildContext;
|
|
25
|
+
/**
|
|
26
|
+
* Get the token count for the current context
|
|
27
|
+
* @returns The number of tokens in the context
|
|
28
|
+
*/
|
|
29
|
+
getTokenCount(): number;
|
|
30
|
+
/**
|
|
31
|
+
* Get both the context string and its token count
|
|
32
|
+
* @returns An object containing the context string and token count
|
|
33
|
+
*/
|
|
34
|
+
getContextWithTokenCount(): {
|
|
35
|
+
context: string;
|
|
36
|
+
tokenCount: number;
|
|
37
|
+
};
|
|
16
38
|
update(): Promise<string>;
|
|
17
39
|
}
|
|
@@ -2,6 +2,8 @@ import * as plugins from '../plugins.js';
|
|
|
2
2
|
export class ProjectContext {
|
|
3
3
|
static async fromDir(dirArg) { }
|
|
4
4
|
constructor(projectDirArg) {
|
|
5
|
+
this.tokenCount = 0;
|
|
6
|
+
this.contextString = '';
|
|
5
7
|
this.projectDir = projectDirArg;
|
|
6
8
|
}
|
|
7
9
|
async gatherFiles() {
|
|
@@ -36,6 +38,24 @@ ${smartfile.contents.toString()}
|
|
|
36
38
|
})
|
|
37
39
|
.join('\n');
|
|
38
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Calculate the token count for a string using the GPT tokenizer
|
|
43
|
+
* @param text The text to count tokens for
|
|
44
|
+
* @param model The model to use for token counting (default: gpt-3.5-turbo)
|
|
45
|
+
* @returns The number of tokens in the text
|
|
46
|
+
*/
|
|
47
|
+
countTokens(text, model = 'gpt-3.5-turbo') {
|
|
48
|
+
try {
|
|
49
|
+
// Use the gpt-tokenizer library to count tokens
|
|
50
|
+
const tokens = plugins.gptTokenizer.encode(text);
|
|
51
|
+
return tokens.length;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error('Error counting tokens:', error);
|
|
55
|
+
// Provide a rough estimate (4 chars per token) if tokenization fails
|
|
56
|
+
return Math.ceil(text.length / 4);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
39
59
|
async buildContext(dirArg) {
|
|
40
60
|
const files = await this.gatherFiles();
|
|
41
61
|
let context = await this.convertFilesToContext([
|
|
@@ -46,12 +66,32 @@ ${smartfile.contents.toString()}
|
|
|
46
66
|
...files.smartfilesMod,
|
|
47
67
|
...files.smartfilesTest,
|
|
48
68
|
]);
|
|
69
|
+
// Count tokens in the context
|
|
70
|
+
this.contextString = context;
|
|
71
|
+
this.tokenCount = this.countTokens(context);
|
|
49
72
|
// console.log(context);
|
|
50
73
|
return context;
|
|
51
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the token count for the current context
|
|
77
|
+
* @returns The number of tokens in the context
|
|
78
|
+
*/
|
|
79
|
+
getTokenCount() {
|
|
80
|
+
return this.tokenCount;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get both the context string and its token count
|
|
84
|
+
* @returns An object containing the context string and token count
|
|
85
|
+
*/
|
|
86
|
+
getContextWithTokenCount() {
|
|
87
|
+
return {
|
|
88
|
+
context: this.contextString,
|
|
89
|
+
tokenCount: this.tokenCount
|
|
90
|
+
};
|
|
91
|
+
}
|
|
52
92
|
async update() {
|
|
53
93
|
const result = await this.buildContext(this.projectDir);
|
|
54
94
|
return result;
|
|
55
95
|
}
|
|
56
96
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9haWRvY3NfY2xhc3Nlcy9wcm9qZWN0Y29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8sY0FBYztJQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFjLElBQUcsQ0FBQztJQU85QyxZQUFZLGFBQXFCO1FBSHpCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQ3pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQ2xELElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUNyRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUMvQyxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDMUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxFQUNyRCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxT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
|
|
@@ -9,10 +9,16 @@ export class Readme {
|
|
|
9
9
|
}
|
|
10
10
|
async build() {
|
|
11
11
|
let finalReadmeString = ``;
|
|
12
|
-
//
|
|
13
|
-
const
|
|
14
|
-
|
|
12
|
+
// Use the new TaskContextFactory for optimized context
|
|
13
|
+
const taskContextFactory = new (await import('../context/index.js')).TaskContextFactory(this.projectDir);
|
|
14
|
+
await taskContextFactory.initialize();
|
|
15
|
+
// Generate context specifically for readme task
|
|
16
|
+
const contextResult = await taskContextFactory.createContextForReadme();
|
|
17
|
+
const contextString = contextResult.context;
|
|
18
|
+
// Log token usage statistics
|
|
19
|
+
console.log(`Token usage - Context: ${contextResult.tokenCount}, Files: ${contextResult.includedFiles.length + contextResult.trimmedFiles.length}, Savings: ${contextResult.tokenSavings}`);
|
|
15
20
|
// lets first check legal before introducung any cost
|
|
21
|
+
const projectContext = new ProjectContext(this.projectDir);
|
|
16
22
|
const npmExtraJson = JSON.parse((await projectContext.gatherFiles()).smartfilesNpmextraJSON.contents.toString());
|
|
17
23
|
const legalInfo = npmExtraJson?.tsdoc?.legal;
|
|
18
24
|
if (!legalInfo) {
|
|
@@ -125,4 +131,4 @@ The Readme should follow the following template:
|
|
|
125
131
|
return result.message;
|
|
126
132
|
}
|
|
127
133
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvYWlkb2NzX2NsYXNzZXMvcmVhZG1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sT0FBTyxNQUFNO0lBS2pCLFlBQVksU0FBZ0IsRUFBRSxhQUFxQjtRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFM0IsdURBQXVEO1FBQ3ZELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekcsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV0QyxnREFBZ0Q7UUFDaEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFFNUMsNkJBQTZCO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLGFBQWEsQ0FBQyxVQUFVLFlBQVksYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLGNBQWMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFNUwscURBQXFEO1FBQ3JE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
|
|
@@ -10,6 +10,7 @@ export declare class AiDoc {
|
|
|
10
10
|
constructor(argvArg?: any);
|
|
11
11
|
private printSanitizedToken;
|
|
12
12
|
start(): Promise<void>;
|
|
13
|
+
stop(): Promise<void>;
|
|
13
14
|
buildReadme(projectDirArg: string): Promise<string>;
|
|
14
15
|
buildDescription(projectDirArg: string): Promise<string>;
|
|
15
16
|
buildNextCommitObject(projectDirArg: string): Promise<aiDocsClasses.INextCommitObject>;
|
|
@@ -21,4 +22,26 @@ export declare class AiDoc {
|
|
|
21
22
|
smartfilesMod: plugins.smartfile.SmartFile[];
|
|
22
23
|
smartfilesTest: plugins.smartfile.SmartFile[];
|
|
23
24
|
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the context with token count information
|
|
27
|
+
* @param projectDirArg The path to the project directory
|
|
28
|
+
* @returns An object containing the context string and its token count
|
|
29
|
+
*/
|
|
30
|
+
getProjectContextWithTokenCount(projectDirArg: string): Promise<{
|
|
31
|
+
context: string;
|
|
32
|
+
tokenCount: number;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Get just the token count for a project's context
|
|
36
|
+
* @param projectDirArg The path to the project directory
|
|
37
|
+
* @returns The number of tokens in the project context
|
|
38
|
+
*/
|
|
39
|
+
getProjectContextTokenCount(projectDirArg: string): Promise<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Count tokens in a text string using GPT tokenizer
|
|
42
|
+
* @param text The text to count tokens for
|
|
43
|
+
* @param model The model to use for tokenization (default: gpt-3.5-turbo)
|
|
44
|
+
* @returns The number of tokens in the text
|
|
45
|
+
*/
|
|
46
|
+
countTokens(text: string, model?: string): number;
|
|
24
47
|
}
|
package/dist_ts/classes.aidoc.js
CHANGED
|
@@ -60,6 +60,9 @@ export class AiDoc {
|
|
|
60
60
|
});
|
|
61
61
|
await this.openaiInstance.start();
|
|
62
62
|
}
|
|
63
|
+
async stop() {
|
|
64
|
+
await this.openaiInstance.stop();
|
|
65
|
+
}
|
|
63
66
|
async buildReadme(projectDirArg) {
|
|
64
67
|
const readmeInstance = new aiDocsClasses.Readme(this, projectDirArg);
|
|
65
68
|
return await readmeInstance.build();
|
|
@@ -76,5 +79,35 @@ export class AiDoc {
|
|
|
76
79
|
const projectContextInstance = new aiDocsClasses.ProjectContext(projectDirArg);
|
|
77
80
|
return await projectContextInstance.gatherFiles();
|
|
78
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the context with token count information
|
|
84
|
+
* @param projectDirArg The path to the project directory
|
|
85
|
+
* @returns An object containing the context string and its token count
|
|
86
|
+
*/
|
|
87
|
+
async getProjectContextWithTokenCount(projectDirArg) {
|
|
88
|
+
const projectContextInstance = new aiDocsClasses.ProjectContext(projectDirArg);
|
|
89
|
+
await projectContextInstance.update();
|
|
90
|
+
return projectContextInstance.getContextWithTokenCount();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get just the token count for a project's context
|
|
94
|
+
* @param projectDirArg The path to the project directory
|
|
95
|
+
* @returns The number of tokens in the project context
|
|
96
|
+
*/
|
|
97
|
+
async getProjectContextTokenCount(projectDirArg) {
|
|
98
|
+
const projectContextInstance = new aiDocsClasses.ProjectContext(projectDirArg);
|
|
99
|
+
await projectContextInstance.update();
|
|
100
|
+
return projectContextInstance.getTokenCount();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Count tokens in a text string using GPT tokenizer
|
|
104
|
+
* @param text The text to count tokens for
|
|
105
|
+
* @param model The model to use for tokenization (default: gpt-3.5-turbo)
|
|
106
|
+
* @returns The number of tokens in the text
|
|
107
|
+
*/
|
|
108
|
+
countTokens(text, model = 'gpt-3.5-turbo') {
|
|
109
|
+
const projectContextInstance = new aiDocsClasses.ProjectContext('');
|
|
110
|
+
return projectContextInstance.countTokens(text, model);
|
|
111
|
+
}
|
|
79
112
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5haWRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuYWlkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxLQUFLLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sS0FBSztJQVVoQixZQUFZLE9BQWE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixpRkFBaUY7UUFDakYsSUFBSSxVQUFrQixDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsbURBQW1EO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRSxVQUFVLEdBQUcsR0FBRyxLQUFLLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixtREFBbUQ7WUFDbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJ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
|
package/dist_ts/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as paths from './paths.js';
|
|
|
3
3
|
import { logger } from './logging.js';
|
|
4
4
|
import { TypeDoc } from './classes.typedoc.js';
|
|
5
5
|
import { AiDoc } from './classes.aidoc.js';
|
|
6
|
+
import * as context from './context/index.js';
|
|
6
7
|
export const run = async () => {
|
|
7
8
|
const tsdocCli = new plugins.smartcli.Smartcli();
|
|
8
9
|
tsdocCli.standardCommand().subscribe(async (argvArg) => {
|
|
@@ -25,6 +26,15 @@ export const run = async () => {
|
|
|
25
26
|
tsdocCli.addCommand('aidoc').subscribe(async (argvArg) => {
|
|
26
27
|
const aidocInstance = new AiDoc();
|
|
27
28
|
await aidocInstance.start();
|
|
29
|
+
// Get context token count if requested
|
|
30
|
+
if (argvArg.tokens || argvArg.showTokens) {
|
|
31
|
+
logger.log('info', `Calculating context token count...`);
|
|
32
|
+
const tokenCount = await aidocInstance.getProjectContextTokenCount(paths.cwd);
|
|
33
|
+
logger.log('ok', `Total context token count: ${tokenCount}`);
|
|
34
|
+
if (argvArg.tokensOnly) {
|
|
35
|
+
return; // Exit early if we only want token count
|
|
36
|
+
}
|
|
37
|
+
}
|
|
28
38
|
logger.log('info', `Generating new readme...`);
|
|
29
39
|
logger.log('info', `This may take some time...`);
|
|
30
40
|
await aidocInstance.buildReadme(paths.cwd);
|
|
@@ -32,6 +42,105 @@ export const run = async () => {
|
|
|
32
42
|
logger.log('info', `This may take some time...`);
|
|
33
43
|
await aidocInstance.buildDescription(paths.cwd);
|
|
34
44
|
});
|
|
45
|
+
tsdocCli.addCommand('tokens').subscribe(async (argvArg) => {
|
|
46
|
+
const aidocInstance = new AiDoc();
|
|
47
|
+
await aidocInstance.start();
|
|
48
|
+
logger.log('info', `Calculating context token count...`);
|
|
49
|
+
// Determine context mode based on args
|
|
50
|
+
let contextMode = 'full';
|
|
51
|
+
if (argvArg.trim || argvArg.trimmed) {
|
|
52
|
+
contextMode = 'trimmed';
|
|
53
|
+
}
|
|
54
|
+
else if (argvArg.summarize || argvArg.summarized) {
|
|
55
|
+
contextMode = 'summarized';
|
|
56
|
+
}
|
|
57
|
+
// Get task type if specified
|
|
58
|
+
let taskType = undefined;
|
|
59
|
+
if (argvArg.task) {
|
|
60
|
+
if (['readme', 'commit', 'description'].includes(argvArg.task)) {
|
|
61
|
+
taskType = argvArg.task;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
logger.log('warn', `Unknown task type: ${argvArg.task}. Using default context.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Use enhanced context
|
|
68
|
+
const taskFactory = new context.TaskContextFactory(paths.cwd);
|
|
69
|
+
await taskFactory.initialize();
|
|
70
|
+
let contextResult;
|
|
71
|
+
if (argvArg.all) {
|
|
72
|
+
// Show stats for all task types
|
|
73
|
+
const stats = await taskFactory.getTokenStats();
|
|
74
|
+
logger.log('ok', 'Token statistics by task:');
|
|
75
|
+
for (const [task, data] of Object.entries(stats)) {
|
|
76
|
+
logger.log('info', `\n${task.toUpperCase()}:`);
|
|
77
|
+
logger.log('info', ` Tokens: ${data.tokenCount}`);
|
|
78
|
+
logger.log('info', ` Token savings: ${data.savings}`);
|
|
79
|
+
logger.log('info', ` Files: ${data.includedFiles} included, ${data.trimmedFiles} trimmed, ${data.excludedFiles} excluded`);
|
|
80
|
+
// Calculate percentage of model context
|
|
81
|
+
const o4MiniPercentage = (data.tokenCount / 200000 * 100).toFixed(2);
|
|
82
|
+
logger.log('info', ` Context usage: ${o4MiniPercentage}% of o4-mini (200K tokens)`);
|
|
83
|
+
}
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (taskType) {
|
|
87
|
+
// Get context for specific task
|
|
88
|
+
contextResult = await taskFactory.createContextForTask(taskType);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Get generic context with specified mode
|
|
92
|
+
const enhancedContext = new context.EnhancedContext(paths.cwd);
|
|
93
|
+
await enhancedContext.initialize();
|
|
94
|
+
enhancedContext.setContextMode(contextMode);
|
|
95
|
+
if (argvArg.maxTokens) {
|
|
96
|
+
enhancedContext.setTokenBudget(parseInt(argvArg.maxTokens, 10));
|
|
97
|
+
}
|
|
98
|
+
contextResult = await enhancedContext.buildContext();
|
|
99
|
+
}
|
|
100
|
+
// Display results
|
|
101
|
+
logger.log('ok', `Total context token count: ${contextResult.tokenCount}`);
|
|
102
|
+
logger.log('info', `Files included: ${contextResult.includedFiles.length}`);
|
|
103
|
+
logger.log('info', `Files trimmed: ${contextResult.trimmedFiles.length}`);
|
|
104
|
+
logger.log('info', `Files excluded: ${contextResult.excludedFiles.length}`);
|
|
105
|
+
logger.log('info', `Token savings: ${contextResult.tokenSavings}`);
|
|
106
|
+
if (argvArg.detailed) {
|
|
107
|
+
// Show more detailed info about the context and token usage
|
|
108
|
+
const o4MiniPercentage = (contextResult.tokenCount / 200000 * 100).toFixed(2);
|
|
109
|
+
logger.log('info', `Token usage: ${o4MiniPercentage}% of o4-mini 200K token context window`);
|
|
110
|
+
if (argvArg.model) {
|
|
111
|
+
// Show percentages for different models
|
|
112
|
+
if (argvArg.model === 'gpt4') {
|
|
113
|
+
const gpt4Percentage = (contextResult.tokenCount / 8192 * 100).toFixed(2);
|
|
114
|
+
logger.log('info', `Token usage (GPT-4): ${gpt4Percentage}% of 8192 token context window`);
|
|
115
|
+
}
|
|
116
|
+
else if (argvArg.model === 'gpt35') {
|
|
117
|
+
const gpt35Percentage = (contextResult.tokenCount / 4096 * 100).toFixed(2);
|
|
118
|
+
logger.log('info', `Token usage (GPT-3.5): ${gpt35Percentage}% of 4096 token context window`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Estimate cost (approximate values)
|
|
122
|
+
const o4MiniInputCost = 0.00005; // per 1K tokens for o4-mini
|
|
123
|
+
const estimatedCost = (contextResult.tokenCount / 1000 * o4MiniInputCost).toFixed(6);
|
|
124
|
+
logger.log('info', `Estimated input cost: $${estimatedCost} (o4-mini)`);
|
|
125
|
+
if (argvArg.listFiles) {
|
|
126
|
+
// List files included in context
|
|
127
|
+
logger.log('info', '\nIncluded files:');
|
|
128
|
+
contextResult.includedFiles.forEach(file => {
|
|
129
|
+
logger.log('info', ` ${file.relativePath} (${file.tokenCount} tokens)`);
|
|
130
|
+
});
|
|
131
|
+
logger.log('info', '\nTrimmed files:');
|
|
132
|
+
contextResult.trimmedFiles.forEach(file => {
|
|
133
|
+
logger.log('info', ` ${file.relativePath} (${file.tokenCount} tokens)`);
|
|
134
|
+
});
|
|
135
|
+
if (contextResult.excludedFiles.length > 0) {
|
|
136
|
+
logger.log('info', '\nExcluded files:');
|
|
137
|
+
contextResult.excludedFiles.forEach(file => {
|
|
138
|
+
logger.log('info', ` ${file.relativePath} (${file.tokenCount} tokens)`);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
35
144
|
tsdocCli.addCommand('test').subscribe((argvArg) => {
|
|
36
145
|
tsdocCli.triggerCommand('typedoc', argvArg);
|
|
37
146
|
process.on('exit', async () => {
|
|
@@ -40,4 +149,4 @@ export const run = async () => {
|
|
|
40
149
|
});
|
|
41
150
|
tsdocCli.startParse();
|
|
42
151
|
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRTtJQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFakQsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDckQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUNsRCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsMkNBQTJDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUMsTUFBTTtZQUNSO2dCQUNFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLG1DQUFtQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMs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
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { IContextConfig, ITrimConfig, ITaskConfig, TaskType } 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
|
+
/**
|
|
10
|
+
* Get the singleton instance of ConfigManager
|
|
11
|
+
*/
|
|
12
|
+
static getInstance(): ConfigManager;
|
|
13
|
+
/**
|
|
14
|
+
* Private constructor for singleton pattern
|
|
15
|
+
*/
|
|
16
|
+
private constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Initialize the config manager with a project directory
|
|
19
|
+
* @param projectDir The project directory
|
|
20
|
+
*/
|
|
21
|
+
initialize(projectDir: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Get the default configuration
|
|
24
|
+
*/
|
|
25
|
+
private getDefaultConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Load configuration from npmextra.json
|
|
28
|
+
*/
|
|
29
|
+
private loadConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Merge configurations, with userConfig taking precedence
|
|
32
|
+
* @param defaultConfig The default configuration
|
|
33
|
+
* @param userConfig The user configuration
|
|
34
|
+
*/
|
|
35
|
+
private mergeConfigs;
|
|
36
|
+
/**
|
|
37
|
+
* Get the complete configuration
|
|
38
|
+
*/
|
|
39
|
+
getConfig(): IContextConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Get the trimming configuration
|
|
42
|
+
*/
|
|
43
|
+
getTrimConfig(): ITrimConfig;
|
|
44
|
+
/**
|
|
45
|
+
* Get configuration for a specific task
|
|
46
|
+
* @param taskType The type of task
|
|
47
|
+
*/
|
|
48
|
+
getTaskConfig(taskType: TaskType): ITaskConfig;
|
|
49
|
+
/**
|
|
50
|
+
* Get the maximum tokens allowed for context
|
|
51
|
+
*/
|
|
52
|
+
getMaxTokens(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Update the configuration
|
|
55
|
+
* @param config The new configuration
|
|
56
|
+
*/
|
|
57
|
+
updateConfig(config: Partial<IContextConfig>): Promise<void>;
|
|
58
|
+
}
|