@git.zone/tsdoc 2.0.5 → 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.
@@ -3,7 +3,8 @@ import * as paths from './paths.js';
3
3
  export class TypeDoc {
4
4
  // Static
5
5
  static async isTypeDocDir(dirPathArg) {
6
- return true;
6
+ return await plugins.fsInstance.file(plugins.path.join(dirPathArg, 'ts/index.ts')).exists()
7
+ || await plugins.fsInstance.file(plugins.path.join(dirPathArg, 'ts_web/index.ts')).exists();
7
8
  }
8
9
  constructor(dirPathArg) {
9
10
  this.smartshellInstance = new plugins.smartshell.Smartshell({
@@ -26,23 +27,44 @@ export class TypeDoc {
26
27
  include: [],
27
28
  };
28
29
  let startDirectory = '';
29
- if (await plugins.fsInstance.directory(plugins.path.join(paths.cwd, './ts')).exists()) {
30
- data.include.push(plugins.path.join(paths.cwd, './ts/**/*'));
30
+ if (await plugins.fsInstance.directory(plugins.path.join(this.typedocDirectory, './ts')).exists()) {
31
+ data.include.push(plugins.path.join(this.typedocDirectory, './ts/**/*'));
31
32
  startDirectory = 'ts';
32
33
  }
33
- if (await plugins.fsInstance.directory(plugins.path.join(paths.cwd, './ts_web')).exists()) {
34
- data.include.push(plugins.path.join(paths.cwd, './ts_web/**/*'));
34
+ if (await plugins.fsInstance.directory(plugins.path.join(this.typedocDirectory, './ts_web')).exists()) {
35
+ data.include.push(plugins.path.join(this.typedocDirectory, './ts_web/**/*'));
35
36
  if (!startDirectory) {
36
37
  startDirectory = 'ts_web';
37
38
  }
38
39
  }
39
- await plugins.fsInstance.file(paths.tsconfigFile).encoding('utf8').write(JSON.stringify(data));
40
- let targetDir = paths.publicDir;
40
+ if (!startDirectory) {
41
+ throw new Error(`No TypeDoc entrypoint found in ${this.typedocDirectory}`);
42
+ }
43
+ const tempDir = plugins.path.join(this.typedocDirectory, '.nogit', 'tsdoc');
44
+ const tempTsconfigFile = plugins.path.join(tempDir, 'tsconfig.json');
45
+ await plugins.fsInstance.directory(tempDir).recursive().create();
46
+ await plugins.fsInstance.file(tempTsconfigFile).encoding('utf8').write(JSON.stringify(data));
47
+ const publicDir = plugins.path.join(this.typedocDirectory, 'public');
48
+ let targetDir = publicDir;
41
49
  if (options?.publicSubdir) {
42
- targetDir = plugins.path.join(targetDir, options.publicSubdir);
50
+ targetDir = plugins.path.resolve(plugins.path.join(targetDir, options.publicSubdir));
51
+ const resolvedPublicDir = plugins.path.resolve(publicDir);
52
+ if (!targetDir.startsWith(`${resolvedPublicDir}${plugins.path.sep}`) && targetDir !== resolvedPublicDir) {
53
+ throw new Error(`Invalid publicSubdir outside public directory: ${options.publicSubdir}`);
54
+ }
55
+ }
56
+ try {
57
+ const result = await this.smartshellInstance.exec(`typedoc --tsconfig ${shellQuote(tempTsconfigFile)} --out ${shellQuote(targetDir)} ${shellQuote(plugins.path.join(this.typedocDirectory, startDirectory, 'index.ts'))}`);
58
+ if (result.exitCode !== 0) {
59
+ throw new Error('typedoc command failed.');
60
+ }
61
+ }
62
+ finally {
63
+ if (await plugins.fsInstance.file(tempTsconfigFile).exists()) {
64
+ await plugins.fsInstance.file(tempTsconfigFile).delete();
65
+ }
43
66
  }
44
- await this.smartshellInstance.exec(`typedoc --tsconfig ${paths.tsconfigFile} --out ${targetDir} ${startDirectory}/index.ts`);
45
- await plugins.fsInstance.file(paths.tsconfigFile).delete();
46
67
  }
47
68
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50eXBlZG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy50eXBlZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxPQUFPO0lBTWxCLFNBQVM7SUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFrQjtRQUNqRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJRCxZQUFZLFVBQWtCO1FBWnZCLHVCQUFrQixHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDNUQsUUFBUSxFQUFFLE1BQU07WUFDaEIsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNoQyxDQUFDLENBQUM7UUFVRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQW1DO1FBQ3RELE1BQU0sSUFBSSxHQUFHO1lBQ1gsZUFBZSxFQUFFO2dCQUNmLHNCQUFzQixFQUFFLElBQUk7Z0JBQzVCLHVCQUF1QixFQUFFLEtBQUs7Z0JBQzlCLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixNQUFNLEVBQUUsVUFBVTtnQkFDbEIsZ0JBQWdCLEVBQUUsVUFBVTtnQkFDNUIsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLG9CQUFvQixFQUFFLElBQUk7YUFDM0I7WUFDRCxPQUFPLEVBQUUsRUFBYztTQUN4QixDQUFDO1FBQ0YsSUFBSSxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsY0FBYyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLGNBQWMsR0FBRyxRQUFRLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvRixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQzFCLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ2hDLHNCQUFzQixLQUFLLENBQUMsWUFBWSxVQUFVLFNBQVMsSUFBSSxjQUFjLFdBQVcsQ0FDekYsQ0FBQztRQUNGLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdELENBQUM7Q0FDRiJ9
69
+ const shellQuote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50eXBlZG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy50eXBlZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxPQUFPO0lBTWxCLFNBQVM7SUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFrQjtRQUNqRCxPQUFPLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO2VBQ3RGLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBSUQsWUFBWSxVQUFrQjtRQWJ2Qix1QkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQzVELFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGVBQWUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDaEMsQ0FBQyxDQUFDO1FBV0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFtQztRQUN0RCxNQUFNLElBQUksR0FBRztZQUNYLGVBQWUsRUFBRTtnQkFDZixzQkFBc0IsRUFBRSxJQUFJO2dCQUM1Qix1QkFBdUIsRUFBRSxLQUFLO2dCQUM5QixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLGdCQUFnQixFQUFFLFVBQVU7Z0JBQzVCLGVBQWUsRUFB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
package/dist_ts/cli.js CHANGED
@@ -3,6 +3,39 @@ 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 { NoChangesError } from './aidocs_classes/commit.js';
7
+ const createAiDoc = async (argvArg) => {
8
+ const aidocInstance = new AiDoc(argvArg);
9
+ await aidocInstance.start();
10
+ return aidocInstance;
11
+ };
12
+ const getSmartcliArgv = () => {
13
+ if (process.argv.length === 0)
14
+ return undefined;
15
+ if (process.argv[0] === process.execPath)
16
+ return undefined;
17
+ return [process.execPath, 'tsdoc', ...process.argv];
18
+ };
19
+ const handleAuthCommand = async (argvArg) => {
20
+ const subcommand = argvArg._?.[1] ?? 'status';
21
+ if (subcommand === 'login') {
22
+ await plugins.tsagent.loginChatGptAuth();
23
+ return;
24
+ }
25
+ const inspections = await plugins.tsagent.inspectChatGptAuthSources();
26
+ console.log('OpenAI ChatGPT auth sources:');
27
+ for (const inspection of inspections) {
28
+ const status = inspection.usable
29
+ ? 'usable'
30
+ : inspection.exists
31
+ ? inspection.expired
32
+ ? 'expired'
33
+ : 'not usable'
34
+ : 'missing';
35
+ const account = inspection.email ? ` (${inspection.email})` : '';
36
+ console.log(` ${inspection.source}: ${status}${account} - ${inspection.filePath}`);
37
+ }
38
+ };
6
39
  export const run = async () => {
7
40
  const tsdocCli = new plugins.smartcli.Smartcli();
8
41
  tsdocCli.standardCommand().subscribe(async (argvArg) => {
@@ -23,8 +56,7 @@ export const run = async () => {
23
56
  });
24
57
  });
25
58
  tsdocCli.addCommand('aidoc').subscribe(async (argvArg) => {
26
- const aidocInstance = new AiDoc();
27
- await aidocInstance.start();
59
+ const aidocInstance = await createAiDoc(argvArg);
28
60
  logger.log('info', `Generating new readme...`);
29
61
  logger.log('info', `This may take some time...`);
30
62
  await aidocInstance.buildReadme(paths.cwd);
@@ -32,35 +64,49 @@ export const run = async () => {
32
64
  logger.log('info', `This may take some time...`);
33
65
  await aidocInstance.buildDescription(paths.cwd);
34
66
  });
67
+ tsdocCli.addCommand('aidocs').subscribe(async (argvArg) => {
68
+ tsdocCli.triggerCommand('aidoc', argvArg);
69
+ });
35
70
  tsdocCli.addCommand('readme').subscribe(async (argvArg) => {
36
- const aidocInstance = new AiDoc();
37
- await aidocInstance.start();
71
+ const aidocInstance = await createAiDoc(argvArg);
38
72
  logger.log('info', `Generating new readme...`);
39
73
  logger.log('info', `This may take some time...`);
40
74
  await aidocInstance.buildReadme(paths.cwd);
41
75
  });
42
76
  tsdocCli.addCommand('description').subscribe(async (argvArg) => {
43
- const aidocInstance = new AiDoc();
44
- await aidocInstance.start();
77
+ const aidocInstance = await createAiDoc(argvArg);
45
78
  logger.log('info', `Generating new description and keywords...`);
46
79
  logger.log('info', `This may take some time...`);
47
80
  await aidocInstance.buildDescription(paths.cwd);
48
81
  });
49
82
  tsdocCli.addCommand('commit').subscribe(async (argvArg) => {
50
- const aidocInstance = new AiDoc();
51
- await aidocInstance.start();
83
+ const aidocInstance = await createAiDoc(argvArg);
52
84
  logger.log('info', `Generating commit message...`);
53
85
  logger.log('info', `This may take some time...`);
54
- const commitObject = await aidocInstance.buildNextCommitObject(paths.cwd);
86
+ let commitObject;
87
+ try {
88
+ commitObject = await aidocInstance.buildNextCommitObject(paths.cwd);
89
+ }
90
+ catch (error) {
91
+ if (error instanceof NoChangesError || error.name === 'NoChangesError') {
92
+ logger.log('info', 'No uncommitted changes found.');
93
+ console.log(JSON.stringify({ ok: true, noChanges: true }, null, 2));
94
+ return;
95
+ }
96
+ throw error;
97
+ }
55
98
  logger.log('ok', `Commit message generated:`);
56
99
  console.log(JSON.stringify(commitObject, null, 2));
57
100
  });
101
+ tsdocCli.addCommand('auth').subscribe(async (argvArg) => {
102
+ await handleAuthCommand(argvArg);
103
+ });
58
104
  tsdocCli.addCommand('test').subscribe((argvArg) => {
59
105
  tsdocCli.triggerCommand('typedoc', argvArg);
60
106
  process.on('exit', async () => {
61
107
  await plugins.fsInstance.directory(paths.publicDir).recursive().delete();
62
108
  });
63
109
  });
64
- tsdocCli.startParse();
110
+ tsdocCli.startParse(getSmartcliArgv());
65
111
  };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRWpELFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbEQsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLDJDQUEyQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDekUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzVDLE1BQU07WUFDUjtnQkFDRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQ0FBbUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FB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
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLE9BQVksRUFBa0IsRUFBRTtJQUN6RCxNQUFNLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxHQUF5QixFQUFFO0lBQ2pELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2hELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNELE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxPQUFZLEVBQWlCLEVBQUU7SUFDOUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUM5QyxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUMzQixNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3RFLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM1QyxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNO1lBQzlCLENBQUMsQ0FBQyxRQUFRO1lBQ1YsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2dCQUNqQixDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87b0JBQ2xCLENBQUMsQ0FBQyxTQUFTO29CQUNYLENBQUMsQ0FBQyxZQUFZO2dCQUNoQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxNQUFNLEtBQUssTUFBTSxHQUFHLE9BQU8sTUFBTSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUVqRCxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSwyQ0FBMkMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3pFLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsbUNBQW1DLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN6RCxNQUFNLGVBQWUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsTUFBTSxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN2RCxNQUFNLGFBQWEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDakQsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDakQsTUFBTSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hELFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hELE1BQU0sYUFBYSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzdELE1BQU0sYUFBYSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLDRDQUE0QyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2pELElBQUksWUFBaUUsQ0FBQztRQUN0RSxJQUFJLENBQUM7WUFDSCxZQUFZLEdBQUcsTUFBTSxhQUFhLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxLQUFLLFlBQVksY0FBYyxJQUFLLEtBQWUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsK0JBQStCLENBQUMsQ0FBQztnQkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BFLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3RELE1BQU0saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2hELFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVCLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ import * as plugins from './plugins.js';
2
+ export declare const createReadOnlyFileSystemTools: (rootDirArg: string) => Promise<plugins.smartai.ToolSet>;
@@ -0,0 +1,5 @@
1
+ import * as plugins from './plugins.js';
2
+ export const createReadOnlyFileSystemTools = async (rootDirArg) => {
3
+ return await plugins.tsagent.createReadOnlyProjectTools(rootDirArg);
4
+ };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5hZ2VudHRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvaGVscGVycy5hZ2VudHRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFFLEVBQUU7SUFDeEUsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDIn0=
@@ -1,2 +1,3 @@
1
1
  export declare const runCli: () => Promise<void>;
2
2
  export * from './classes.aidoc.js';
3
+ export { NoChangesError } from './aidocs_classes/commit.js';
package/dist_ts/index.js CHANGED
@@ -8,4 +8,5 @@ export const runCli = async () => {
8
8
  };
9
9
  // exports
10
10
  export * from './classes.aidoc.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRWIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQy9CLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDIn0=
11
+ export { NoChangesError } from './aidocs_classes/commit.js';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRWIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQy9CLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQyJ9
@@ -1,10 +1,13 @@
1
+ import * as fs from 'node:fs/promises';
1
2
  import * as path from 'path';
2
- export { path };
3
+ export { fs, path };
3
4
  import * as smartconfig from '@push.rocks/smartconfig';
4
5
  import * as qenv from '@push.rocks/qenv';
5
6
  import * as smartagent from '@push.rocks/smartagent';
7
+ import * as smartagentCompaction from '@push.rocks/smartagent/compaction';
6
8
  import * as smartagentTools from '@push.rocks/smartagent/tools';
7
9
  import * as smartai from '@push.rocks/smartai';
10
+ import * as smartaiOpenAiChatGptAuth from '@push.rocks/smartai/openai-chatgpt-auth';
8
11
  import * as smartcli from '@push.rocks/smartcli';
9
12
  import * as smartdelay from '@push.rocks/smartdelay';
10
13
  import * as smartfile from '@push.rocks/smartfile';
@@ -16,10 +19,11 @@ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-loca
16
19
  import * as smartpath from '@push.rocks/smartpath';
17
20
  import * as smartshell from '@push.rocks/smartshell';
18
21
  import * as smarttime from '@push.rocks/smarttime';
19
- export { smartconfig, qenv, smartagent, smartagentTools, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
22
+ export { smartconfig, qenv, smartagent, smartagentCompaction, smartagentTools, smartai, smartaiOpenAiChatGptAuth, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
20
23
  export declare const fsInstance: smartfs.SmartFs;
21
24
  export declare const smartfileFactory: smartfile.SmartFileFactory;
25
+ import * as tsagent from '@git.zone/tsagent';
22
26
  import * as tspublish from '@git.zone/tspublish';
23
- export { tspublish };
27
+ export { tsagent, tspublish };
24
28
  import * as typedoc from 'typedoc';
25
29
  export { typedoc };
@@ -1,12 +1,15 @@
1
1
  // node native
2
+ import * as fs from 'node:fs/promises';
2
3
  import * as path from 'path';
3
- export { path };
4
+ export { fs, path };
4
5
  // pushrocks scope
5
6
  import * as smartconfig from '@push.rocks/smartconfig';
6
7
  import * as qenv from '@push.rocks/qenv';
7
8
  import * as smartagent from '@push.rocks/smartagent';
9
+ import * as smartagentCompaction from '@push.rocks/smartagent/compaction';
8
10
  import * as smartagentTools from '@push.rocks/smartagent/tools';
9
11
  import * as smartai from '@push.rocks/smartai';
12
+ import * as smartaiOpenAiChatGptAuth from '@push.rocks/smartai/openai-chatgpt-auth';
10
13
  import * as smartcli from '@push.rocks/smartcli';
11
14
  import * as smartdelay from '@push.rocks/smartdelay';
12
15
  import * as smartfile from '@push.rocks/smartfile';
@@ -18,16 +21,17 @@ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-loca
18
21
  import * as smartpath from '@push.rocks/smartpath';
19
22
  import * as smartshell from '@push.rocks/smartshell';
20
23
  import * as smarttime from '@push.rocks/smarttime';
21
- export { smartconfig, qenv, smartagent, smartagentTools, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
24
+ export { smartconfig, qenv, smartagent, smartagentCompaction, smartagentTools, smartai, smartaiOpenAiChatGptAuth, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
22
25
  // Create a shared SmartFs instance for filesystem operations
23
26
  const smartFsNodeProvider = new smartfs.SmartFsProviderNode();
24
27
  export const fsInstance = new smartfs.SmartFs(smartFsNodeProvider);
25
28
  // Create a shared SmartFileFactory for in-memory file operations
26
29
  export const smartfileFactory = smartfile.SmartFileFactory.nodeFs();
27
30
  // @git.zone scope
31
+ import * as tsagent from '@git.zone/tsagent';
28
32
  import * as tspublish from '@git.zone/tspublish';
29
- export { tspublish };
33
+ export { tsagent, tspublish };
30
34
  // third party scope
31
35
  import * as typedoc from 'typedoc';
32
36
  export { typedoc };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVoQixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLGVBQWUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLHdCQUF3QixNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFVBQVUsRUFDVixlQUFlLEVBQ2YsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEdBQ1YsQ0FBQztBQUVGLDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRW5FLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7QUFFcEUsa0JBQWtCO0FBQ2xCLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRXJCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMifQ==
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.5",
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",
@@ -12,26 +12,21 @@
12
12
  "bin": {
13
13
  "tsdoc": "./cli.js"
14
14
  },
15
- "scripts": {
16
- "test": "(tstest test/ --verbose --logfile --timeout 600) && pnpm run testCli",
17
- "testCli": "(node ./cli.ts.js) && (node ./cli.ts.js aidocs)",
18
- "build": "(tsbuild --web)",
19
- "buildDocs": "tsdoc"
20
- },
21
15
  "devDependencies": {
22
- "@git.zone/tsbuild": "^4.4.0",
23
- "@git.zone/tsrun": "^2.0.3",
24
- "@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",
25
19
  "@types/json-schema": "^7.0.15",
26
- "@types/node": "^25.6.2",
20
+ "@types/node": "^25.9.3",
27
21
  "@types/yargs-parser": "^21.0.3"
28
22
  },
29
23
  "dependencies": {
24
+ "@git.zone/tsagent": "^1.1.1",
30
25
  "@git.zone/tspublish": "^1.11.6",
31
26
  "@push.rocks/early": "^4.0.4",
32
27
  "@push.rocks/qenv": "^6.1.4",
33
- "@push.rocks/smartagent": "^3.1.0",
34
- "@push.rocks/smartai": "^2.2.0",
28
+ "@push.rocks/smartagent": "^3.3.0",
29
+ "@push.rocks/smartai": "^4.0.0",
35
30
  "@push.rocks/smartcli": "^4.0.21",
36
31
  "@push.rocks/smartconfig": "^6.1.1",
37
32
  "@push.rocks/smartdelay": "^3.1.0",
@@ -83,5 +78,10 @@
83
78
  "url": "https://gitlab.com/gitzone/tsdoc/issues"
84
79
  },
85
80
  "homepage": "https://gitlab.com/gitzone/tsdoc#readme",
86
- "packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748"
87
- }
81
+ "scripts": {
82
+ "test": "(tstest test/ --verbose --logfile --timeout 600) && pnpm run testCli",
83
+ "testCli": "(node ./cli.ts.js auth status) && (node ./cli.ts.js typedoc --publicSubdir test) && rm -rf public",
84
+ "build": "(tsbuild --web)",
85
+ "buildDocs": "tsdoc"
86
+ }
87
+ }
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
 
@@ -33,6 +33,8 @@ pnpm add @git.zone/tsdoc
33
33
  | `tsdoc description` | 🏷️ Generates AI-powered description and keywords only |
34
34
  | `tsdoc commit` | 💬 Generates a semantic commit message from uncommitted changes |
35
35
  | `tsdoc typedoc` | 📚 Generates traditional TypeDoc API documentation |
36
+ | `tsdoc auth status` | Shows available ChatGPT subscription auth sources without printing secrets |
37
+ | `tsdoc auth login` | Starts a ChatGPT device-code login and stores SmartAI auth |
36
38
 
37
39
  ### 🤖 AI-Powered Documentation (`aidoc`)
38
40
 
@@ -119,7 +121,7 @@ import { AiDoc } from '@git.zone/tsdoc';
119
121
 
120
122
  const aidoc = new AiDoc();
121
123
 
122
- // Initialize — prompts for OpenAI token on first run, then persists it
124
+ // Initialize — resolves ChatGPT subscription auth first, then API-key fallback when needed
123
125
  await aidoc.start();
124
126
 
125
127
  // Generate a comprehensive README for a project
@@ -155,26 +157,45 @@ await aidoc.start();
155
157
 
156
158
  ## Configuration
157
159
 
158
- ### OpenAI Token
160
+ ### AI Defaults
159
161
 
160
- An OpenAI API key is required for all AI features. It can be provided in three ways (checked in order):
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.
161
163
 
162
- 1. **Environment variable**: Set `OPENAI_TOKEN` in your environment or `.env` file
163
- 2. **Constructor argument**: Pass `{ OPENAI_TOKEN: 'sk-...' }` to `new AiDoc()`
164
- 3. **Interactive prompt**: On first run, tsdoc will prompt for the token and persist it
164
+ ### Authentication
165
165
 
166
- The token is persisted at `~/.smartconfig/kv/@git.zone/tsdoc.json` for subsequent runs.
166
+ Default auth mode is `auto`. For OpenAI, `tsdoc` first tries ChatGPT subscription auth and falls back to API-key auth only when no usable subscription auth exists.
167
+
168
+ Subscription auth source preference:
169
+
170
+ 1. `opencode` (`~/.local/share/opencode/auth.json`)
171
+ 2. `codex` (`~/.codex/auth.json`)
172
+ 3. `smartai` (`~/.git.zone/ide/openai-chatgpt-auth.json`)
173
+
174
+ Use `tsdoc auth status` to inspect available sources without printing tokens. Use `tsdoc auth login` to create SmartAI-managed ChatGPT auth through the device-code flow.
175
+
176
+ API-key fallback still supports `OPENAI_TOKEN`, `OPENAI_API_KEY`, constructor-provided `apiKey`, and the persisted `~/.smartconfig/kv/@git.zone/tsdoc.json` token.
167
177
 
168
178
  ### .smartconfig.json
169
179
 
170
- tsdoc uses `.smartconfig.json` for project metadata. The `tsdoc` key holds legal information that gets appended to generated READMEs:
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`.
171
181
 
172
182
  ```json
173
183
  {
174
- "tsdoc": {
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"
192
+ }
193
+ }
194
+ },
195
+ "@git.zone/tsdoc": {
175
196
  "legal": "\n## License and Legal Information\n\n..."
176
197
  },
177
- "gitzone": {
198
+ "@git.zone/cli": {
178
199
  "module": {
179
200
  "githost": "gitlab.com",
180
201
  "gitscope": "gitzone",
@@ -187,7 +208,7 @@ tsdoc uses `.smartconfig.json` for project metadata. The `tsdoc` key holds legal
187
208
  }
188
209
  ```
189
210
 
190
- The `description` command writes updated description/keywords to both `gitzone.module` in `.smartconfig.json` and to `package.json`.
211
+ The `description` command writes updated description/keywords to `@git.zone/cli.module` in `.smartconfig.json`, updates legacy `gitzone.module` when present, and updates `package.json`.
191
212
 
192
213
  ## Architecture
193
214
 
@@ -195,7 +216,7 @@ The `description` command writes updated description/keywords to both `gitzone.m
195
216
 
196
217
  ```
197
218
  @git.zone/tsdoc
198
- ├── AiDoc # Main orchestrator — manages AI model, delegates to task classes
219
+ ├── AiDoc # Main orchestrator — wraps TsAgent and delegates to task classes
199
220
  ├── TypeDoc # Traditional TypeDoc API documentation generation
200
221
  ├── ProjectContext # Gathers project files (package.json, source, tests, config)
201
222
  ├── DiffProcessor # Intelligent git diff processing with prioritization & sampling
@@ -207,14 +228,14 @@ The `description` command writes updated description/keywords to both `gitzone.m
207
228
 
208
229
  ### 🧠 AI Agent Architecture
209
230
 
210
- 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:
211
232
 
212
233
  1. **System prompt** defines the agent's role, constraints, and output format
213
- 2. **Filesystem tools** give the agent scoped, 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
214
235
  3. **Autonomous exploration** — the agent decides which files to read, in what order
215
236
  4. **Structured output** — README markdown, commit JSON, or description JSON
216
237
 
217
- The agents use `@push.rocks/smartai`'s `getModel()` to create a language model instance backed by OpenAI.
238
+ `TsAgent` centralizes model setup, ChatGPT subscription auth, provider options, cache options, and `@push.rocks/smartagent` execution across all agent calls.
218
239
 
219
240
  ### ⚡ Diff Processing Pipeline
220
241
 
@@ -227,7 +248,7 @@ The `DiffProcessor` handles large git diffs without blowing up token budgets:
227
248
  | **Large** | ≥ 800 lines changed | Metadata only (filepath + stats) |
228
249
 
229
250
  Files are scored by importance:
230
- - **100** — Source files (`src/`, `lib/`, `app/`, `components/`, `pages/`, `api/`)
251
+ - **100** — Source files (`ts/`, `ts_web/`, `src/`, `lib/`, `app/`, `components/`, `pages/`, `api/`)
231
252
  - **80** — Test files (`test/`, `*.test.ts`, `*.spec.ts`)
232
253
  - **70** — Interface/type files, entry points (`index.ts`, `mod.ts`)
233
254
  - **60** — Configuration files (`.json`, `.yaml`, `.config.ts`)
@@ -240,7 +261,7 @@ Token budget is calculated dynamically: `context_limit - safety_margin - overhea
240
261
 
241
262
  - **Node.js** >= 18
242
263
  - **TypeScript** project with a `ts/` source directory
243
- - **OpenAI API key** for AI features
264
+ - **OpenAI API key or ChatGPT subscription auth** for AI features
244
265
 
245
266
  ## License and Legal Information
246
267
 
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tsdoc',
6
- version: '2.0.5',
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
  }