@git.zone/tsdoc 2.0.6 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/aidocs_classes/commit.js +2 -2
- package/dist_ts/aidocs_classes/description.js +2 -2
- package/dist_ts/aidocs_classes/readme.js +3 -3
- package/dist_ts/classes.aidoc.d.ts +14 -36
- package/dist_ts/classes.aidoc.js +36 -209
- package/dist_ts/cli.js +3 -15
- package/dist_ts/helpers.agenttools.d.ts +1 -1
- package/dist_ts/helpers.agenttools.js +3 -110
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/package.json +6 -5
- package/readme.md +20 -20
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aidocs_classes/commit.ts +1 -1
- package/ts/aidocs_classes/description.ts +1 -1
- package/ts/aidocs_classes/readme.ts +2 -2
- package/ts/classes.aidoc.ts +48 -253
- package/ts/cli.ts +2 -15
- package/ts/helpers.agenttools.ts +2 -122
- package/ts/plugins.ts +2 -1
package/dist_ts/cli.js
CHANGED
|
@@ -4,11 +4,6 @@ import { logger } from './logging.js';
|
|
|
4
4
|
import { TypeDoc } from './classes.typedoc.js';
|
|
5
5
|
import { AiDoc } from './classes.aidoc.js';
|
|
6
6
|
import { NoChangesError } from './aidocs_classes/commit.js';
|
|
7
|
-
const defaultChatGptAuthSources = [
|
|
8
|
-
'opencode',
|
|
9
|
-
'codex',
|
|
10
|
-
'smartai',
|
|
11
|
-
];
|
|
12
7
|
const createAiDoc = async (argvArg) => {
|
|
13
8
|
const aidocInstance = new AiDoc(argvArg);
|
|
14
9
|
await aidocInstance.start();
|
|
@@ -24,17 +19,10 @@ const getSmartcliArgv = () => {
|
|
|
24
19
|
const handleAuthCommand = async (argvArg) => {
|
|
25
20
|
const subcommand = argvArg._?.[1] ?? 'status';
|
|
26
21
|
if (subcommand === 'login') {
|
|
27
|
-
|
|
28
|
-
console.log(`Open ${deviceCode.verificationUrl} and enter code ${deviceCode.userCode}`);
|
|
29
|
-
const tokenData = await plugins.smartai.completeOpenAiChatGptDeviceCodeLogin(deviceCode);
|
|
30
|
-
const authFilePath = plugins.smartaiOpenAiChatGptAuth.getDefaultOpenAiChatGptAuthPath('smartai');
|
|
31
|
-
await plugins.smartaiOpenAiChatGptAuth.writeOpenAiChatGptAuthFile(authFilePath, tokenData, 'smartai');
|
|
32
|
-
logger.log('success', `Stored OpenAI ChatGPT auth at ${authFilePath}`);
|
|
22
|
+
await plugins.tsagent.loginChatGptAuth();
|
|
33
23
|
return;
|
|
34
24
|
}
|
|
35
|
-
const inspections = await plugins.
|
|
36
|
-
sources: defaultChatGptAuthSources,
|
|
37
|
-
});
|
|
25
|
+
const inspections = await plugins.tsagent.inspectChatGptAuthSources();
|
|
38
26
|
console.log('OpenAI ChatGPT auth sources:');
|
|
39
27
|
for (const inspection of inspections) {
|
|
40
28
|
const status = inspection.usable
|
|
@@ -121,4 +109,4 @@ export const run = async () => {
|
|
|
121
109
|
});
|
|
122
110
|
tsdocCli.startParse(getSmartcliArgv());
|
|
123
111
|
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLE9BQVksRUFBa0IsRUFBRTtJQUN6RCxNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxHQUF5QixFQUFFO0lBQ2pELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2hELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNELE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxPQUFZLEVBQWlCLEVBQUU7SUFDOUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUM5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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
export declare const createReadOnlyFileSystemTools: (rootDirArg: string) => plugins.smartai.ToolSet
|
|
2
|
+
export declare const createReadOnlyFileSystemTools: (rootDirArg: string) => Promise<plugins.smartai.ToolSet>;
|
|
@@ -1,112 +1,5 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
'.git',
|
|
5
|
-
'.next',
|
|
6
|
-
'.nogit',
|
|
7
|
-
'.rpt2_cache',
|
|
8
|
-
'build',
|
|
9
|
-
'coverage',
|
|
10
|
-
'dist',
|
|
11
|
-
'node_modules',
|
|
12
|
-
'out',
|
|
13
|
-
]);
|
|
14
|
-
const defaultDeniedBasenames = new Set([
|
|
15
|
-
'.npmrc',
|
|
16
|
-
'bun.lockb',
|
|
17
|
-
'credentials.json',
|
|
18
|
-
'deno.lock',
|
|
19
|
-
'npm-shrinkwrap.json',
|
|
20
|
-
'package-lock.json',
|
|
21
|
-
'pnpm-lock.yaml',
|
|
22
|
-
'yarn.lock',
|
|
23
|
-
]);
|
|
24
|
-
const normalizeRelativePath = (rootDir, inputPath) => {
|
|
25
|
-
const resolvedRoot = plugins.path.resolve(rootDir);
|
|
26
|
-
const resolvedPath = plugins.path.resolve(plugins.path.isAbsolute(inputPath) ? inputPath : plugins.path.join(resolvedRoot, inputPath));
|
|
27
|
-
if (resolvedPath !== resolvedRoot && !resolvedPath.startsWith(`${resolvedRoot}${plugins.path.sep}`)) {
|
|
28
|
-
throw new Error(`Access denied: "${inputPath}" is outside allowed root "${rootDir}"`);
|
|
29
|
-
}
|
|
30
|
-
const relativePath = plugins.path.relative(resolvedRoot, resolvedPath) || '.';
|
|
31
|
-
assertAllowedRelativePath(relativePath);
|
|
32
|
-
return resolvedPath;
|
|
2
|
+
export const createReadOnlyFileSystemTools = async (rootDirArg) => {
|
|
3
|
+
return await plugins.tsagent.createReadOnlyProjectTools(rootDirArg);
|
|
33
4
|
};
|
|
34
|
-
|
|
35
|
-
const normalized = relativePath.split(plugins.path.sep).join('/');
|
|
36
|
-
const parts = normalized.split('/').filter(Boolean);
|
|
37
|
-
const basename = parts.at(-1) ?? normalized;
|
|
38
|
-
if (basename === '.env' || basename.startsWith('.env.')) {
|
|
39
|
-
throw new Error(`Access denied: ${relativePath} may contain environment secrets.`);
|
|
40
|
-
}
|
|
41
|
-
if (basename.endsWith('.pem') || basename.endsWith('.key') || basename.endsWith('.p12')) {
|
|
42
|
-
throw new Error(`Access denied: ${relativePath} may contain private key material.`);
|
|
43
|
-
}
|
|
44
|
-
if (defaultDeniedBasenames.has(basename)) {
|
|
45
|
-
throw new Error(`Access denied: ${relativePath} is excluded from AI file access.`);
|
|
46
|
-
}
|
|
47
|
-
for (const segment of parts) {
|
|
48
|
-
if (defaultDeniedSegments.has(segment) || segment.startsWith('dist_')) {
|
|
49
|
-
throw new Error(`Access denied: ${relativePath} is excluded from AI file access.`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const listDirectory = async (dirPath, recursive = false, prefix = '') => {
|
|
54
|
-
const entries = await plugins.fs.readdir(dirPath, { withFileTypes: true });
|
|
55
|
-
const result = [];
|
|
56
|
-
for (const entry of entries) {
|
|
57
|
-
const relativeEntryPath = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
58
|
-
try {
|
|
59
|
-
assertAllowedRelativePath(relativeEntryPath);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
result.push(`${relativeEntryPath}${entry.isDirectory() ? '/' : ''}`);
|
|
65
|
-
if (recursive && entry.isDirectory()) {
|
|
66
|
-
result.push(...await listDirectory(plugins.path.join(dirPath, entry.name), true, relativeEntryPath));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
};
|
|
71
|
-
export const createReadOnlyFileSystemTools = (rootDirArg) => {
|
|
72
|
-
const rootDir = plugins.path.resolve(rootDirArg);
|
|
73
|
-
return {
|
|
74
|
-
read_file: plugins.smartagent.tool({
|
|
75
|
-
description: 'Read file contents within the project. Secret and generated paths are blocked.',
|
|
76
|
-
inputSchema: plugins.smartagent.z.object({
|
|
77
|
-
path: plugins.smartagent.z.string().describe('Absolute or project-relative path to the file'),
|
|
78
|
-
startLine: plugins.smartagent.z.number().optional().describe('First line, 1-indexed and inclusive'),
|
|
79
|
-
endLine: plugins.smartagent.z.number().optional().describe('Last line, 1-indexed and inclusive'),
|
|
80
|
-
}),
|
|
81
|
-
execute: async ({ path: filePath, startLine, endLine }) => {
|
|
82
|
-
const resolvedPath = normalizeRelativePath(rootDir, filePath);
|
|
83
|
-
const stat = await plugins.fs.stat(resolvedPath);
|
|
84
|
-
if (!stat.isFile()) {
|
|
85
|
-
throw new Error(`Cannot read non-file path: ${filePath}`);
|
|
86
|
-
}
|
|
87
|
-
const content = await plugins.fs.readFile(resolvedPath, 'utf8');
|
|
88
|
-
const selectedContent = startLine !== undefined || endLine !== undefined
|
|
89
|
-
? content.split('\n').slice((startLine ?? 1) - 1, endLine).join('\n')
|
|
90
|
-
: content;
|
|
91
|
-
return plugins.smartagent.truncateOutput(selectedContent).content;
|
|
92
|
-
},
|
|
93
|
-
}),
|
|
94
|
-
list_directory: plugins.smartagent.tool({
|
|
95
|
-
description: 'List project files and directories. Secret and generated paths are omitted.',
|
|
96
|
-
inputSchema: plugins.smartagent.z.object({
|
|
97
|
-
path: plugins.smartagent.z.string().describe('Absolute or project-relative directory path to list'),
|
|
98
|
-
recursive: plugins.smartagent.z.boolean().optional().describe('List recursively'),
|
|
99
|
-
}),
|
|
100
|
-
execute: async ({ path: dirPath, recursive }) => {
|
|
101
|
-
const resolvedPath = normalizeRelativePath(rootDir, dirPath);
|
|
102
|
-
const stat = await plugins.fs.stat(resolvedPath);
|
|
103
|
-
if (!stat.isDirectory()) {
|
|
104
|
-
throw new Error(`Cannot list non-directory path: ${dirPath}`);
|
|
105
|
-
}
|
|
106
|
-
const entries = await listDirectory(resolvedPath, recursive === true);
|
|
107
|
-
return plugins.smartagent.truncateOutput(entries.join('\n')).content;
|
|
108
|
-
},
|
|
109
|
-
}),
|
|
110
|
-
};
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5hZ2VudHRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvaGVscGVycy5hZ2VudHRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDcEMsUUFBUTtJQUNSLE1BQU07SUFDTixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixPQUFPO0lBQ1AsVUFBVTtJQUNWLE1BQU07SUFDTixjQUFjO0lBQ2QsS0FBSztDQUNOLENBQUMsQ0FBQztBQUVILE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDckMsUUFBUTtJQUNSLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLFdBQVc7Q0FDWixDQUFDLENBQUM7QUFFSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZSxFQUFFLFNBQWlCLEVBQVUsRUFBRTtJQUMzRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDdkMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUM1RixDQUFDO0lBQ0YsSUFBSSxZQUFZLEtBQUssWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNwRyxNQUFNLElBQUksS0FB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
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5hZ2VudHRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvaGVscGVycy5hZ2VudHRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFFLEVBQUU7SUFDeEUsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDIn0=
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -22,7 +22,8 @@ import * as smarttime from '@push.rocks/smarttime';
|
|
|
22
22
|
export { smartconfig, qenv, smartagent, smartagentCompaction, smartagentTools, smartai, smartaiOpenAiChatGptAuth, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
23
23
|
export declare const fsInstance: smartfs.SmartFs;
|
|
24
24
|
export declare const smartfileFactory: smartfile.SmartFileFactory;
|
|
25
|
+
import * as tsagent from '@git.zone/tsagent';
|
|
25
26
|
import * as tspublish from '@git.zone/tspublish';
|
|
26
|
-
export { tspublish };
|
|
27
|
+
export { tsagent, tspublish };
|
|
27
28
|
import * as typedoc from 'typedoc';
|
|
28
29
|
export { typedoc };
|
package/dist_ts/plugins.js
CHANGED
|
@@ -28,9 +28,10 @@ export const fsInstance = new smartfs.SmartFs(smartFsNodeProvider);
|
|
|
28
28
|
// Create a shared SmartFileFactory for in-memory file operations
|
|
29
29
|
export const smartfileFactory = smartfile.SmartFileFactory.nodeFs();
|
|
30
30
|
// @git.zone scope
|
|
31
|
+
import * as tsagent from '@git.zone/tsagent';
|
|
31
32
|
import * as tspublish from '@git.zone/tspublish';
|
|
32
|
-
export { tspublish };
|
|
33
|
+
export { tsagent, tspublish };
|
|
33
34
|
// third party scope
|
|
34
35
|
import * as typedoc from 'typedoc';
|
|
35
36
|
export { typedoc };
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVwQixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLG9CQUFvQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxlQUFlLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssd0JBQXdCLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxhQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osVUFBVSxFQUNWLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsT0FBTyxFQUNQLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLGFBQWEsRUFDYixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxHQUNWLENBQUM7QUFFRiw2REFBNkQ7QUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQzlELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRSxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRXBFLGtCQUFrQjtBQUNsQixPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUU5QixvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFFbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tsdoc",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"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.",
|
|
6
6
|
"type": "module",
|
|
@@ -13,14 +13,15 @@
|
|
|
13
13
|
"tsdoc": "./cli.js"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@git.zone/tsbuild": "^4.4.
|
|
17
|
-
"@git.zone/tsrun": "^2.0.
|
|
18
|
-
"@git.zone/tstest": "^3.6.
|
|
16
|
+
"@git.zone/tsbuild": "^4.4.2",
|
|
17
|
+
"@git.zone/tsrun": "^2.0.4",
|
|
18
|
+
"@git.zone/tstest": "^3.6.6",
|
|
19
19
|
"@types/json-schema": "^7.0.15",
|
|
20
|
-
"@types/node": "^25.
|
|
20
|
+
"@types/node": "^25.9.3",
|
|
21
21
|
"@types/yargs-parser": "^21.0.3"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@git.zone/tsagent": "^1.1.1",
|
|
24
25
|
"@git.zone/tspublish": "^1.11.6",
|
|
25
26
|
"@push.rocks/early": "^4.0.4",
|
|
26
27
|
"@push.rocks/qenv": "^6.1.4",
|
package/readme.md
CHANGED
|
@@ -21,7 +21,7 @@ pnpm add @git.zone/tsdoc
|
|
|
21
21
|
|
|
22
22
|
## Usage
|
|
23
23
|
|
|
24
|
-
`@git.zone/tsdoc` is a TypeScript documentation powerhouse that combines traditional [TypeDoc](https://typedoc.org/) API docs with AI-powered documentation workflows. It
|
|
24
|
+
`@git.zone/tsdoc` is a TypeScript documentation powerhouse that combines traditional [TypeDoc](https://typedoc.org/) API docs with AI-powered documentation workflows. It delegates AI configuration, authentication, model setup, read-only project tools, and agent execution to `@git.zone/tsagent` to generate READMEs, project descriptions, keywords, and semantic commit messages by intelligently exploring your project's codebase.
|
|
25
25
|
|
|
26
26
|
### CLI Commands
|
|
27
27
|
|
|
@@ -121,7 +121,7 @@ import { AiDoc } from '@git.zone/tsdoc';
|
|
|
121
121
|
|
|
122
122
|
const aidoc = new AiDoc();
|
|
123
123
|
|
|
124
|
-
// Initialize —
|
|
124
|
+
// Initialize — resolves ChatGPT subscription auth first, then API-key fallback when needed
|
|
125
125
|
await aidoc.start();
|
|
126
126
|
|
|
127
127
|
// Generate a comprehensive README for a project
|
|
@@ -159,7 +159,7 @@ await aidoc.start();
|
|
|
159
159
|
|
|
160
160
|
### AI Defaults
|
|
161
161
|
|
|
162
|
-
AI features default to OpenAI `gpt-5.5` with `providerOptions.openai.reasoningEffort` set to `xhigh`. `tsdoc` uses `@
|
|
162
|
+
AI features default to OpenAI `gpt-5.5` with `providerOptions.openai.reasoningEffort` set to `xhigh`. `tsdoc` uses `@git.zone/tsagent` for model setup, ChatGPT subscription auth, API-key fallback, cache handling, read-only project tools, and agent execution.
|
|
163
163
|
|
|
164
164
|
### Authentication
|
|
165
165
|
|
|
@@ -177,24 +177,24 @@ API-key fallback still supports `OPENAI_TOKEN`, `OPENAI_API_KEY`, constructor-pr
|
|
|
177
177
|
|
|
178
178
|
### .smartconfig.json
|
|
179
179
|
|
|
180
|
-
tsdoc uses `.smartconfig.json` for project metadata.
|
|
180
|
+
tsdoc uses `.smartconfig.json` for project metadata. AI configuration is read through `@git.zone/tsagent`, `tsdoc`, and `@git.zone/tsdoc` in that order, with later keys overriding earlier keys. Legal information for README generation remains under `@git.zone/tsdoc.legal` or legacy `tsdoc.legal`.
|
|
181
181
|
|
|
182
182
|
```json
|
|
183
183
|
{
|
|
184
|
-
"@git.zone/
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
"
|
|
191
|
-
|
|
192
|
-
"openai": {
|
|
193
|
-
"reasoningEffort": "xhigh"
|
|
194
|
-
}
|
|
184
|
+
"@git.zone/tsagent": {
|
|
185
|
+
"provider": "openai",
|
|
186
|
+
"model": "gpt-5.5",
|
|
187
|
+
"authMode": "auto",
|
|
188
|
+
"chatGptAuthSources": ["opencode", "codex", "smartai"],
|
|
189
|
+
"providerOptions": {
|
|
190
|
+
"openai": {
|
|
191
|
+
"reasoningEffort": "xhigh"
|
|
195
192
|
}
|
|
196
193
|
}
|
|
197
194
|
},
|
|
195
|
+
"@git.zone/tsdoc": {
|
|
196
|
+
"legal": "\n## License and Legal Information\n\n..."
|
|
197
|
+
},
|
|
198
198
|
"@git.zone/cli": {
|
|
199
199
|
"module": {
|
|
200
200
|
"githost": "gitlab.com",
|
|
@@ -216,7 +216,7 @@ The `description` command writes updated description/keywords to `@git.zone/cli.
|
|
|
216
216
|
|
|
217
217
|
```
|
|
218
218
|
@git.zone/tsdoc
|
|
219
|
-
├── AiDoc # Main orchestrator —
|
|
219
|
+
├── AiDoc # Main orchestrator — wraps TsAgent and delegates to task classes
|
|
220
220
|
├── TypeDoc # Traditional TypeDoc API documentation generation
|
|
221
221
|
├── ProjectContext # Gathers project files (package.json, source, tests, config)
|
|
222
222
|
├── DiffProcessor # Intelligent git diff processing with prioritization & sampling
|
|
@@ -228,14 +228,14 @@ The `description` command writes updated description/keywords to `@git.zone/cli.
|
|
|
228
228
|
|
|
229
229
|
### 🧠 AI Agent Architecture
|
|
230
230
|
|
|
231
|
-
Each documentation task (readme, commit, description) runs an autonomous AI agent
|
|
231
|
+
Each documentation task (readme, commit, description) runs an autonomous AI agent through the shared `@git.zone/tsagent` runtime:
|
|
232
232
|
|
|
233
233
|
1. **System prompt** defines the agent's role, constraints, and output format
|
|
234
|
-
2. **Filesystem tools** give the agent scoped, enforced read-only access to the project directory
|
|
234
|
+
2. **Filesystem tools** come from `tsagent.createReadOnlyProjectTools()` and give the agent scoped, enforced read-only access to the project directory
|
|
235
235
|
3. **Autonomous exploration** — the agent decides which files to read, in what order
|
|
236
236
|
4. **Structured output** — README markdown, commit JSON, or description JSON
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
`TsAgent` centralizes model setup, ChatGPT subscription auth, provider options, cache options, and `@push.rocks/smartagent` execution across all agent calls.
|
|
239
239
|
|
|
240
240
|
### ⚡ Diff Processing Pipeline
|
|
241
241
|
|
|
@@ -261,7 +261,7 @@ Token budget is calculated dynamically: `context_limit - safety_margin - overhea
|
|
|
261
261
|
|
|
262
262
|
- **Node.js** >= 18
|
|
263
263
|
- **TypeScript** project with a `ts/` source directory
|
|
264
|
-
- **OpenAI API key** for AI features
|
|
264
|
+
- **OpenAI API key or ChatGPT subscription auth** for AI features
|
|
265
265
|
|
|
266
266
|
## License and Legal Information
|
|
267
267
|
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsdoc',
|
|
6
|
-
version: '2.0
|
|
6
|
+
version: '2.1.0',
|
|
7
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
|
}
|
|
@@ -214,7 +214,7 @@ export class Commit {
|
|
|
214
214
|
logger.log('warn', `Estimated tokens (${totalEstimatedTokens.toLocaleString()}) approach the model context limit. Consider splitting into smaller commits.`);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
const fsTools = createReadOnlyFileSystemTools(this.projectDir);
|
|
217
|
+
const fsTools = await createReadOnlyFileSystemTools(this.projectDir);
|
|
218
218
|
|
|
219
219
|
const commitSystemPrompt = `
|
|
220
220
|
You create commit messages for git commits following semantic versioning conventions.
|
|
@@ -45,7 +45,7 @@ export class Description {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
public async build() {
|
|
48
|
-
const fsTools = createReadOnlyFileSystemTools(this.projectDir);
|
|
48
|
+
const fsTools = await createReadOnlyFileSystemTools(this.projectDir);
|
|
49
49
|
|
|
50
50
|
const descriptionSystemPrompt = `
|
|
51
51
|
You create project descriptions and keywords for npm packages.
|
|
@@ -32,7 +32,7 @@ export class Readme {
|
|
|
32
32
|
throw new Error('No legal information found in .smartconfig.json under @git.zone/tsdoc.legal or tsdoc.legal.');
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
const fsTools = createReadOnlyFileSystemTools(this.projectDir);
|
|
35
|
+
const fsTools = await createReadOnlyFileSystemTools(this.projectDir);
|
|
36
36
|
|
|
37
37
|
const readmeSystemPrompt = `
|
|
38
38
|
You create markdown READMEs for npm projects. You only output the markdown readme.
|
|
@@ -127,7 +127,7 @@ Then generate a comprehensive README following this template:
|
|
|
127
127
|
.encoding('utf8')
|
|
128
128
|
.read();
|
|
129
129
|
|
|
130
|
-
const subModuleFsTools = createReadOnlyFileSystemTools(subModulePath);
|
|
130
|
+
const subModuleFsTools = await createReadOnlyFileSystemTools(subModulePath);
|
|
131
131
|
|
|
132
132
|
const subModuleSystemPrompt = `
|
|
133
133
|
You create markdown READMEs for npm projects. You only output the markdown readme.
|