@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/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
- const deviceCode = await plugins.smartai.requestOpenAiChatGptDeviceCode();
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.smartaiOpenAiChatGptAuth.inspectOpenAiChatGptAuthSources({
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsTUFBTSx5QkFBeUIsR0FBZ0U7SUFDN0YsVUFBVTtJQUNWLE9BQU87SUFDUCxTQUFTO0NBQ1YsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxPQUFZLEVBQWtCLEVBQUU7SUFDekQsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsTUFBTSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsR0FBeUIsRUFBRTtJQUNqRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVE7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMzRCxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFpQixFQUFFO0lBQzlELE1BQU0s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
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 defaultDeniedSegments = new Set([
3
- '.cache',
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
- const assertAllowedRelativePath = (relativePath) => {
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=
@@ -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 };
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVwQixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLG9CQUFvQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxlQUFlLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssd0JBQXdCLE1BQU0seUNBQXlDLENBQUM7QUFDcEYsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxhQUFhLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssVUFBVSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osVUFBVSxFQUNWLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsT0FBTyxFQUNQLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLGFBQWEsRUFDYixRQUFRLEVBQ1Isd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxHQUNWLENBQUM7QUFFRiw2REFBNkQ7QUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQzlELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRSxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRXBFLGtCQUFrQjtBQUNsQixPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUVyQixvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFFbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDIn0=
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.6",
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.0",
17
- "@git.zone/tsrun": "^2.0.3",
18
- "@git.zone/tstest": "^3.6.5",
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.6.2",
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 uses OpenAI models via `@push.rocks/smartai` and autonomous agents via `@push.rocks/smartagent` to generate READMEs, project descriptions, keywords, and semantic commit messages — all by intelligently exploring your project's codebase with scoped filesystem tools.
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 — prompts for OpenAI token on first run, then persists it
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 `@push.rocks/smartai` for model setup and `@push.rocks/smartagent` for cached agent runs.
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. The `@git.zone/tsdoc` key holds legal and AI configuration. Legacy `tsdoc` is still read as a fallback.
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/tsdoc": {
185
- "legal": "\n## License and Legal Information\n\n...",
186
- "ai": {
187
- "provider": "openai",
188
- "model": "gpt-5.5",
189
- "authMode": "auto",
190
- "chatGptAuthSources": ["opencode", "codex", "smartai"],
191
- "providerOptions": {
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 — manages AI model, delegates to task classes
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 via `@push.rocks/smartagent`'s `runAgent()`:
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
- The agents use `@push.rocks/smartai`'s `getModelSetup()` so model setup, ChatGPT subscription auth, provider options, and cache options are preserved across agent calls.
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
 
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tsdoc',
6
- version: '2.0.6',
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.