@git.zone/tsdoc 2.0.0 → 2.0.2
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/.smartconfig.json +44 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/aidocs_classes/description.js +10 -10
- package/dist_ts/aidocs_classes/projectcontext.js +2 -2
- package/dist_ts/aidocs_classes/readme.js +4 -4
- package/dist_ts/classes.aidoc.d.ts +1 -1
- package/dist_ts/classes.aidoc.js +8 -8
- package/dist_ts/plugins.d.ts +2 -2
- package/dist_ts/plugins.js +3 -3
- package/license +1 -1
- package/package.json +9 -9
- package/readme.md +107 -74
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aidocs_classes/description.ts +9 -9
- package/ts/aidocs_classes/projectcontext.ts +1 -1
- package/ts/aidocs_classes/readme.ts +3 -3
- package/ts/classes.aidoc.ts +8 -8
- package/ts/plugins.ts +2 -2
- package/npmextra.json +0 -44
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"gitzone": {
|
|
3
|
+
"projectType": "npm",
|
|
4
|
+
"module": {
|
|
5
|
+
"githost": "gitlab.com",
|
|
6
|
+
"gitscope": "gitzone",
|
|
7
|
+
"gitrepo": "tsdoc",
|
|
8
|
+
"shortDescription": "a tool for better documentation",
|
|
9
|
+
"npmPackagename": "@git.zone/tsdoc",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"projectDomain": "git.zone",
|
|
12
|
+
"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.",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"TypeScript",
|
|
15
|
+
"documentation",
|
|
16
|
+
"AI",
|
|
17
|
+
"CLI",
|
|
18
|
+
"README",
|
|
19
|
+
"TypeDoc",
|
|
20
|
+
"commit messages",
|
|
21
|
+
"automation",
|
|
22
|
+
"code analysis",
|
|
23
|
+
"context trimming",
|
|
24
|
+
"developer tools"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"npmci": {
|
|
29
|
+
"npmGlobalTools": [],
|
|
30
|
+
"npmAccessLevel": "public"
|
|
31
|
+
},
|
|
32
|
+
"tsdoc": {
|
|
33
|
+
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./license) file.\n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.\n\nUse of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District Court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
34
|
+
},
|
|
35
|
+
"@git.zone/cli": {
|
|
36
|
+
"release": {
|
|
37
|
+
"registries": [
|
|
38
|
+
"https://verdaccio.lossless.digital",
|
|
39
|
+
"https://registry.npmjs.org"
|
|
40
|
+
],
|
|
41
|
+
"accessLevel": "public"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsdoc',
|
|
6
|
-
version: '2.0.
|
|
6
|
+
version: '2.0.2',
|
|
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
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDhNQUE4TTtDQUM1TixDQUFBIn0=
|
|
@@ -15,7 +15,7 @@ You create project descriptions and keywords for npm packages.
|
|
|
15
15
|
You have access to filesystem tools to explore the project.
|
|
16
16
|
|
|
17
17
|
IMPORTANT RULES:
|
|
18
|
-
- Only READ files (package.json,
|
|
18
|
+
- Only READ files (package.json, .smartconfig.json, source files in ts/)
|
|
19
19
|
- Do NOT write, delete, or modify any files
|
|
20
20
|
- Your final response must be valid JSON only
|
|
21
21
|
- Description must be a clear, concise one-sentence summary
|
|
@@ -29,7 +29,7 @@ PROJECT DIRECTORY: ${this.projectDir}
|
|
|
29
29
|
Use the filesystem tools to explore the project and understand what it does:
|
|
30
30
|
1. First, use list_directory to see the project structure
|
|
31
31
|
2. Read package.json to understand the package name and current description
|
|
32
|
-
3. Read
|
|
32
|
+
3. Read .smartconfig.json if it exists for additional metadata
|
|
33
33
|
4. Read key source files in ts/ directory to understand the implementation
|
|
34
34
|
|
|
35
35
|
Then generate a description and keywords based on your exploration.
|
|
@@ -58,13 +58,13 @@ Don't wrap the JSON in \`\`\`json\`\`\` - just return the raw JSON object.
|
|
|
58
58
|
// Use ProjectContext to get file handles for writing
|
|
59
59
|
const projectContext = new ProjectContext(this.projectDir);
|
|
60
60
|
const files = await projectContext.gatherFiles();
|
|
61
|
-
// Update
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
await
|
|
61
|
+
// Update smartconfig.json
|
|
62
|
+
const smartconfigJson = files.smartfilesNpmextraJSON;
|
|
63
|
+
const smartconfigJsonContent = JSON.parse(smartconfigJson.contents.toString());
|
|
64
|
+
smartconfigJsonContent['gitzone'].module.description = resultObject.description;
|
|
65
|
+
smartconfigJsonContent['gitzone'].module.keywords = resultObject.keywords;
|
|
66
|
+
smartconfigJson.contents = Buffer.from(JSON.stringify(smartconfigJsonContent, null, 2));
|
|
67
|
+
await smartconfigJson.write();
|
|
68
68
|
// Update package.json
|
|
69
69
|
const packageJson = files.smartfilePackageJSON;
|
|
70
70
|
const packageJsonContent = JSON.parse(packageJson.contents.toString());
|
|
@@ -78,4 +78,4 @@ Don't wrap the JSON in \`\`\`json\`\`\` - just return the raw JSON object.
|
|
|
78
78
|
return descriptionResult.text;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9haWRvY3NfY2xhc3Nlcy9kZXNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU92QyxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUFZLFNBQWdCLEVBQUUsYUFBcUI7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLGlFQUFpRTtRQUNqRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVyRixNQUFNLHVCQUF1QixHQUFHOzs7Ozs7Ozs7Ozs7O0NBYW5DLENBQUM7UUFFRSxNQUFNLHFCQUFxQixHQUFHO3FCQUNiLElBQUksQ0FBQyxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUJuQyxDQUFDO1FBRUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsK0NBQStDLENBQUMsQ0FBQztRQUVwRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSztZQUMzQixNQUFNLEVBQUUscUJBQXFCO1lBQzdCLE1BQU0sRUFBRSx1QkFBdUI7WUFDL0IsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLFFBQVEsRUFBRSxDQUFDO1NBQ3JGLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsTUFBTSxZQUFZLEdBQTBCLElBQUksQ0FBQyxLQUFLLENBQ3BELGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ2pFLENBQUM7UUFFRixxREFBcUQ7UUFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpELDBCQUEwQjtRQUMxQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDckQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUvRSxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDaEYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRTFFLGVBQWUsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLHNCQUFzQjtRQUN0QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDL0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUMxRCxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNwRCxXQUFXLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDMUMsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztDQUNGIn0=
|
|
@@ -10,7 +10,7 @@ export class ProjectContext {
|
|
|
10
10
|
const smartfilePackageJSON = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'package.json'), this.projectDir);
|
|
11
11
|
const smartfilesReadme = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'readme.md'), this.projectDir);
|
|
12
12
|
const smartfilesReadmeHints = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, 'readme.hints.md'), this.projectDir);
|
|
13
|
-
const smartfilesNpmextraJSON = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, '
|
|
13
|
+
const smartfilesNpmextraJSON = await plugins.smartfileFactory.fromFilePath(plugins.path.join(this.projectDir, '.smartconfig.json'), this.projectDir);
|
|
14
14
|
const smartfilesMod = await plugins.smartfileFactory.virtualDirectoryFromPath(this.projectDir).then(vd => vd.filter(f => f.relative.startsWith('ts') && f.relative.endsWith('.ts')).listFiles());
|
|
15
15
|
const smartfilesTest = await plugins.smartfileFactory.virtualDirectoryFromPath(this.projectDir).then(vd => vd.filter(f => f.relative.startsWith('test/') && f.relative.endsWith('.ts')).listFiles());
|
|
16
16
|
return {
|
|
@@ -86,4 +86,4 @@ ${smartfile.contents.toString()}
|
|
|
86
86
|
return result;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9haWRvY3NfY2xhc3Nlcy9wcm9qZWN0Y29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8sY0FBYztJQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFjLElBQUcsQ0FBQztJQU85QyxZQUFZLGFBQXFCO1FBSHpCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUN0RSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxFQUNsRCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ2xFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQy9DLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFFRixNQUFNLHFCQUFxQixHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FDdkUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxFQUNyRCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ3hFLE9B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
|
|
@@ -11,10 +11,10 @@ export class Readme {
|
|
|
11
11
|
let finalReadmeString = ``;
|
|
12
12
|
// First check legal info before introducing any cost
|
|
13
13
|
const projectContext = new ProjectContext(this.projectDir);
|
|
14
|
-
const
|
|
15
|
-
const legalInfo =
|
|
14
|
+
const smartconfigJson = JSON.parse((await projectContext.gatherFiles()).smartfilesNpmextraJSON.contents.toString());
|
|
15
|
+
const legalInfo = smartconfigJson?.['tsdoc']?.legal;
|
|
16
16
|
if (!legalInfo) {
|
|
17
|
-
const error = new Error(`No legal information found in
|
|
17
|
+
const error = new Error(`No legal information found in .smartconfig.json`);
|
|
18
18
|
console.log(error);
|
|
19
19
|
}
|
|
20
20
|
// Use runAgent with filesystem tool for agent-driven exploration
|
|
@@ -161,4 +161,4 @@ Don't use \`\`\` at the beginning or end. Only for code blocks.
|
|
|
161
161
|
return resultMessage;
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvYWlkb2NzX2NsYXNzZXMvcmVhZG1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sT0FBTyxNQUFNO0lBS2pCLFlBQVksU0FBZ0IsRUFBRSxhQUFxQjtRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFM0IscURBQXFEO1FBQ3JELE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNoQyxDQUFDLE1BQU0sY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUNoRixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFl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
|
|
@@ -2,7 +2,7 @@ import * as plugins from './plugins.js';
|
|
|
2
2
|
import * as aiDocsClasses from './aidocs_classes/index.js';
|
|
3
3
|
export declare class AiDoc {
|
|
4
4
|
private openaiToken;
|
|
5
|
-
|
|
5
|
+
smartconfigKV: plugins.smartconfig.KeyValueStore;
|
|
6
6
|
qenvInstance: plugins.qenv.Qenv;
|
|
7
7
|
aidocInteract: plugins.smartinteract.SmartInteract;
|
|
8
8
|
model: plugins.smartai.LanguageModelV3;
|
package/dist_ts/classes.aidoc.js
CHANGED
|
@@ -26,8 +26,8 @@ export class AiDoc {
|
|
|
26
26
|
if (!(await this.qenvInstance.getEnvVarOnDemand('OPENAI_TOKEN'))) {
|
|
27
27
|
// Migrate old KV store path to new path if needed
|
|
28
28
|
const homeDir = plugins.smartpath.get.home();
|
|
29
|
-
const oldKvPath = plugins.path.join(homeDir, '.
|
|
30
|
-
const newKvDir = plugins.path.join(homeDir, '.
|
|
29
|
+
const oldKvPath = plugins.path.join(homeDir, '.smartconfig/kv/tsdoc.json');
|
|
30
|
+
const newKvDir = plugins.path.join(homeDir, '.smartconfig/kv/@git.zone');
|
|
31
31
|
const newKvPath = plugins.path.join(newKvDir, 'tsdoc.json');
|
|
32
32
|
if (await plugins.fsInstance.file(oldKvPath).exists() &&
|
|
33
33
|
!(await plugins.fsInstance.file(newKvPath).exists())) {
|
|
@@ -37,12 +37,12 @@ export class AiDoc {
|
|
|
37
37
|
await plugins.fsInstance.file(oldKvPath).delete();
|
|
38
38
|
console.log('Migration complete: tsdoc.json -> @git.zone/tsdoc.json');
|
|
39
39
|
}
|
|
40
|
-
this.
|
|
40
|
+
this.smartconfigKV = new plugins.smartconfig.KeyValueStore({
|
|
41
41
|
typeArg: 'userHomeDir',
|
|
42
42
|
identityArg: '@git.zone/tsdoc',
|
|
43
43
|
mandatoryKeys: ['OPENAI_TOKEN'],
|
|
44
44
|
});
|
|
45
|
-
const missingKeys = await this.
|
|
45
|
+
const missingKeys = await this.smartconfigKV.getMissingMandatoryKeys();
|
|
46
46
|
if (missingKeys.length > 0) {
|
|
47
47
|
// lets try argv
|
|
48
48
|
if (this.argvArg?.OPENAI_TOKEN) {
|
|
@@ -61,11 +61,11 @@ export class AiDoc {
|
|
|
61
61
|
this.openaiToken = answerObject.value;
|
|
62
62
|
}
|
|
63
63
|
this.printSanitizedToken();
|
|
64
|
-
await this.
|
|
64
|
+
await this.smartconfigKV.writeKey('OPENAI_TOKEN', this.openaiToken);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
if (!this.openaiToken && this.
|
|
68
|
-
this.openaiToken = await this.
|
|
67
|
+
if (!this.openaiToken && this.smartconfigKV) {
|
|
68
|
+
this.openaiToken = await this.smartconfigKV.readKey('OPENAI_TOKEN');
|
|
69
69
|
}
|
|
70
70
|
// Create model using getModel()
|
|
71
71
|
this.model = plugins.smartai.getModel({
|
|
@@ -126,4 +126,4 @@ export class AiDoc {
|
|
|
126
126
|
return projectContextInstance.countTokens(text);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5haWRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuYWlkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxLQUFLLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sS0FBSztJQVVoQixZQUFZLE9BQWE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixpRkFBaUY7UUFDakYsSUFBSSxVQUFrQixDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsbURBQW1EO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRSxVQUFVLEdBQUcsR0FBRyxLQUFLLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixtREFBbUQ7WUFDbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJ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
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
export { path };
|
|
3
|
-
import * as
|
|
3
|
+
import * as smartconfig from '@push.rocks/smartconfig';
|
|
4
4
|
import * as qenv from '@push.rocks/qenv';
|
|
5
5
|
import * as smartagent from '@push.rocks/smartagent';
|
|
6
6
|
import * as smartagentTools from '@push.rocks/smartagent/tools';
|
|
@@ -16,7 +16,7 @@ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-loca
|
|
|
16
16
|
import * as smartpath from '@push.rocks/smartpath';
|
|
17
17
|
import * as smartshell from '@push.rocks/smartshell';
|
|
18
18
|
import * as smarttime from '@push.rocks/smarttime';
|
|
19
|
-
export {
|
|
19
|
+
export { smartconfig, qenv, smartagent, smartagentTools, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
20
20
|
export declare const fsInstance: smartfs.SmartFs;
|
|
21
21
|
export declare const smartfileFactory: smartfile.SmartFileFactory;
|
|
22
22
|
import * as tspublish from '@git.zone/tspublish';
|
package/dist_ts/plugins.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
export { path };
|
|
4
4
|
// pushrocks scope
|
|
5
|
-
import * as
|
|
5
|
+
import * as smartconfig from '@push.rocks/smartconfig';
|
|
6
6
|
import * as qenv from '@push.rocks/qenv';
|
|
7
7
|
import * as smartagent from '@push.rocks/smartagent';
|
|
8
8
|
import * as smartagentTools from '@push.rocks/smartagent/tools';
|
|
@@ -18,7 +18,7 @@ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-loca
|
|
|
18
18
|
import * as smartpath from '@push.rocks/smartpath';
|
|
19
19
|
import * as smartshell from '@push.rocks/smartshell';
|
|
20
20
|
import * as smarttime from '@push.rocks/smarttime';
|
|
21
|
-
export {
|
|
21
|
+
export { smartconfig, qenv, smartagent, smartagentTools, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
22
22
|
// Create a shared SmartFs instance for filesystem operations
|
|
23
23
|
const smartFsNodeProvider = new smartfs.SmartFsProviderNode();
|
|
24
24
|
export const fsInstance = new smartfs.SmartFs(smartFsNodeProvider);
|
|
@@ -30,4 +30,4 @@ export { tspublish };
|
|
|
30
30
|
// third party scope
|
|
31
31
|
import * as typedoc from 'typedoc';
|
|
32
32
|
export { typedoc };
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVoQixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLGVBQWUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLHdCQUF3QixNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBRW5ELE9BQU8sRUFDTCxXQUFXLEVBQ1gsSUFBSSxFQUNKLFVBQVUsRUFDVixlQUFlLEVBQ2YsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEdBQ1YsQ0FBQztBQUVGLDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRW5FLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7QUFFcEUsa0JBQWtCO0FBQ2xCLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRXJCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMifQ==
|
package/license
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (c) 2019
|
|
1
|
+
Copyright (c) 2019 Task Venture Capital GmbH (hello@task.vc)
|
|
2
2
|
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
4
|
of this software and associated documentation files (the "Software"), to deal
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tsdoc",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
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",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@git.zone/tsbuild": "^4.3.0",
|
|
23
23
|
"@git.zone/tsrun": "^2.0.1",
|
|
24
|
-
"@git.zone/tstest": "^3.
|
|
25
|
-
"@types/node": "^25.
|
|
24
|
+
"@git.zone/tstest": "^3.5.1",
|
|
25
|
+
"@types/node": "^25.5.0"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@git.zone/tspublish": "^1.11.
|
|
28
|
+
"@git.zone/tspublish": "^1.11.3",
|
|
29
29
|
"@push.rocks/early": "^4.0.4",
|
|
30
|
-
"@push.rocks/
|
|
30
|
+
"@push.rocks/smartconfig": "^6.0.1",
|
|
31
31
|
"@push.rocks/qenv": "^6.1.3",
|
|
32
32
|
"@push.rocks/smartagent": "^3.0.2",
|
|
33
33
|
"@push.rocks/smartai": "^2.0.0",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"@push.rocks/smartlog": "^3.2.1",
|
|
41
41
|
"@push.rocks/smartlog-destination-local": "^9.0.2",
|
|
42
42
|
"@push.rocks/smartpath": "^6.0.0",
|
|
43
|
-
"@push.rocks/smartshell": "^3.3.
|
|
43
|
+
"@push.rocks/smartshell": "^3.3.8",
|
|
44
44
|
"@push.rocks/smarttime": "^4.2.3",
|
|
45
|
-
"typedoc": "^0.28.
|
|
46
|
-
"typescript": "^
|
|
45
|
+
"typedoc": "^0.28.18",
|
|
46
|
+
"typescript": "^6.0.2"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
49
|
"ts/**/*",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"dist_ts_web/**/*",
|
|
55
55
|
"assets/**/*",
|
|
56
56
|
"cli.js",
|
|
57
|
-
"
|
|
57
|
+
".smartconfig.json",
|
|
58
58
|
"readme.md"
|
|
59
59
|
],
|
|
60
60
|
"browserslist": [
|
package/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @git.zone/tsdoc
|
|
2
2
|
|
|
3
|
-
AI-Powered Documentation for TypeScript Projects
|
|
3
|
+
AI-Powered Documentation & Commit Intelligence for TypeScript Projects 🚀
|
|
4
4
|
|
|
5
5
|
## Issue Reporting and Security
|
|
6
6
|
|
|
@@ -12,31 +12,31 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|
|
12
12
|
# Global installation (recommended for CLI usage)
|
|
13
13
|
pnpm add -g @git.zone/tsdoc
|
|
14
14
|
|
|
15
|
-
# Or use with npx
|
|
15
|
+
# Or use with npx (no install needed)
|
|
16
16
|
npx @git.zone/tsdoc
|
|
17
17
|
|
|
18
|
-
# Or install locally as a dependency
|
|
18
|
+
# Or install locally as a project dependency
|
|
19
19
|
pnpm add @git.zone/tsdoc
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Usage
|
|
23
23
|
|
|
24
|
-
`@git.zone/tsdoc` is a
|
|
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.
|
|
25
25
|
|
|
26
26
|
### CLI Commands
|
|
27
27
|
|
|
28
28
|
| Command | Description |
|
|
29
29
|
|---------|-------------|
|
|
30
|
-
| `tsdoc` | Auto-detects project type and runs TypeDoc |
|
|
31
|
-
| `tsdoc aidoc` | Generates AI-powered README + description/keywords |
|
|
32
|
-
| `tsdoc readme` | Generates AI-powered README only |
|
|
33
|
-
| `tsdoc description` | Generates AI-powered description and keywords only |
|
|
34
|
-
| `tsdoc commit` | Generates a semantic commit message from uncommitted changes |
|
|
35
|
-
| `tsdoc typedoc` | Generates traditional TypeDoc API documentation |
|
|
30
|
+
| `tsdoc` | 🔍 Auto-detects project type and runs TypeDoc |
|
|
31
|
+
| `tsdoc aidoc` | 🤖 Generates AI-powered README + description/keywords |
|
|
32
|
+
| `tsdoc readme` | 📝 Generates AI-powered README only |
|
|
33
|
+
| `tsdoc description` | 🏷️ Generates AI-powered description and keywords only |
|
|
34
|
+
| `tsdoc commit` | 💬 Generates a semantic commit message from uncommitted changes |
|
|
35
|
+
| `tsdoc typedoc` | 📚 Generates traditional TypeDoc API documentation |
|
|
36
36
|
|
|
37
|
-
###
|
|
37
|
+
### 🤖 AI-Powered Documentation (`aidoc`)
|
|
38
38
|
|
|
39
|
-
The `aidoc` command combines README generation and description/keyword generation
|
|
39
|
+
The `aidoc` command is the all-in-one workflow that combines README generation and description/keyword generation:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
# In your project root
|
|
@@ -44,11 +44,13 @@ tsdoc aidoc
|
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
This will:
|
|
47
|
-
1. Analyze your codebase using an AI agent with filesystem access
|
|
48
|
-
2. Generate a comprehensive `readme.md`
|
|
49
|
-
3. Update `package.json` and `npmextra.json` with an AI-generated description and keywords
|
|
50
47
|
|
|
51
|
-
|
|
48
|
+
1. Spin up an AI agent with read-only filesystem access scoped to your project
|
|
49
|
+
2. The agent autonomously explores your project structure, reads source files, and understands the API
|
|
50
|
+
3. Generate a comprehensive `readme.md` with install instructions, usage examples, and architecture overview
|
|
51
|
+
4. Update `package.json` and `.smartconfig.json` with an AI-generated description and keywords
|
|
52
|
+
|
|
53
|
+
You can also run these steps individually:
|
|
52
54
|
|
|
53
55
|
```bash
|
|
54
56
|
# Generate only the README
|
|
@@ -58,39 +60,41 @@ tsdoc readme
|
|
|
58
60
|
tsdoc description
|
|
59
61
|
```
|
|
60
62
|
|
|
61
|
-
###
|
|
63
|
+
### 💬 Smart Commit Messages (`commit`)
|
|
62
64
|
|
|
63
|
-
The `commit` command analyzes your uncommitted changes and produces a structured commit object:
|
|
65
|
+
The `commit` command analyzes your uncommitted changes and produces a structured commit object following [Conventional Commits](https://www.conventionalcommits.org/):
|
|
64
66
|
|
|
65
67
|
```bash
|
|
66
68
|
tsdoc commit
|
|
67
69
|
```
|
|
68
70
|
|
|
69
|
-
Output is a JSON object
|
|
71
|
+
Output is a JSON object:
|
|
70
72
|
|
|
71
73
|
```json
|
|
72
74
|
{
|
|
73
75
|
"recommendedNextVersionLevel": "feat",
|
|
74
76
|
"recommendedNextVersionScope": "core",
|
|
75
|
-
"recommendedNextVersionMessage": "add
|
|
77
|
+
"recommendedNextVersionMessage": "add smart diff processing for large changesets",
|
|
76
78
|
"recommendedNextVersionDetails": [
|
|
77
|
-
"implemented
|
|
78
|
-
"
|
|
79
|
+
"implemented intelligent diff sampling with head/tail extraction",
|
|
80
|
+
"added file prioritization by importance score"
|
|
79
81
|
],
|
|
80
82
|
"recommendedNextVersion": "1.13.0",
|
|
81
|
-
"changelog": "# Changelog\n\n## 2026-03-
|
|
83
|
+
"changelog": "# Changelog\n\n## 2026-03-24 - 1.13.0 - core\n..."
|
|
82
84
|
}
|
|
83
85
|
```
|
|
84
86
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
87
|
+
Under the hood, the commit flow:
|
|
88
|
+
|
|
89
|
+
- **Excludes noise**: Lock files, build artifacts (`dist/`, `dist_*/`), IDE directories, caches, and source maps are filtered out before processing
|
|
90
|
+
- **Prioritizes what matters**: Source files rank higher than test files, which rank higher than config, docs, and build artifacts
|
|
91
|
+
- **Handles large diffs gracefully**: The `DiffProcessor` categorizes files by size — small files (< 300 lines) are included in full, medium files (< 800 lines) get head/tail sampling, and large files are metadata-only
|
|
92
|
+
- **Respects token budgets**: Dynamically calculates available tokens based on the model's context limit minus overhead
|
|
93
|
+
- **Auto-generates changelogs**: If no `changelog.md` exists, one is created from the full git history
|
|
90
94
|
|
|
91
|
-
###
|
|
95
|
+
### 📚 TypeDoc Generation (`typedoc`)
|
|
92
96
|
|
|
93
|
-
For traditional API documentation
|
|
97
|
+
For traditional API documentation:
|
|
94
98
|
|
|
95
99
|
```bash
|
|
96
100
|
# Generate to default ./public directory
|
|
@@ -100,34 +104,40 @@ tsdoc typedoc
|
|
|
100
104
|
tsdoc typedoc --publicSubdir docs
|
|
101
105
|
```
|
|
102
106
|
|
|
103
|
-
|
|
107
|
+
TypeDoc generation auto-detects your source directories (`ts/` and `ts_web/`) and creates a temporary tsconfig for compilation.
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
### 🏗️ Monorepo Support
|
|
110
|
+
|
|
111
|
+
When generating READMEs, tsdoc automatically detects monorepo submodules via `@git.zone/tspublish` conventions. Each submodule directory containing a `tspublish.json` gets its own generated README with the legal section appended.
|
|
106
112
|
|
|
107
113
|
### Programmatic API
|
|
108
114
|
|
|
109
|
-
You can
|
|
115
|
+
You can use tsdoc programmatically in your own tools:
|
|
110
116
|
|
|
111
117
|
```typescript
|
|
112
118
|
import { AiDoc } from '@git.zone/tsdoc';
|
|
113
119
|
|
|
114
120
|
const aidoc = new AiDoc();
|
|
115
|
-
await aidoc.start(); // Initializes the AI model (prompts for OpenAI token if needed)
|
|
116
121
|
|
|
117
|
-
//
|
|
118
|
-
await aidoc.
|
|
122
|
+
// Initialize — prompts for OpenAI token on first run, then persists it
|
|
123
|
+
await aidoc.start();
|
|
124
|
+
|
|
125
|
+
// Generate a comprehensive README for a project
|
|
126
|
+
const readmeContent = await aidoc.buildReadme('/path/to/project');
|
|
119
127
|
|
|
120
|
-
// Generate description and keywords
|
|
128
|
+
// Generate description and keywords, updating package.json and .smartconfig.json
|
|
121
129
|
await aidoc.buildDescription('/path/to/project');
|
|
122
130
|
|
|
123
|
-
// Generate a commit message object
|
|
131
|
+
// Generate a structured commit message object from uncommitted changes
|
|
124
132
|
const commitObj = await aidoc.buildNextCommitObject('/path/to/project');
|
|
125
|
-
console.log(commitObj);
|
|
133
|
+
console.log(commitObj.recommendedNextVersionLevel); // 'fix' | 'feat' | 'BREAKING CHANGE'
|
|
134
|
+
console.log(commitObj.recommendedNextVersionMessage);
|
|
135
|
+
console.log(commitObj.changelog);
|
|
126
136
|
|
|
127
|
-
// Get project
|
|
137
|
+
// Get gathered project files (package.json, source files, tests, config)
|
|
128
138
|
const context = await aidoc.getProjectContext('/path/to/project');
|
|
129
139
|
|
|
130
|
-
// Get token count for a project
|
|
140
|
+
// Get token count for a project's context
|
|
131
141
|
const tokenCount = await aidoc.getProjectContextTokenCount('/path/to/project');
|
|
132
142
|
|
|
133
143
|
// Estimate tokens in arbitrary text
|
|
@@ -136,21 +146,28 @@ const tokens = aidoc.countTokens('some text here');
|
|
|
136
146
|
await aidoc.stop();
|
|
137
147
|
```
|
|
138
148
|
|
|
149
|
+
You can also pass the OpenAI token directly via the constructor:
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
const aidoc = new AiDoc({ OPENAI_TOKEN: 'sk-...' });
|
|
153
|
+
await aidoc.start();
|
|
154
|
+
```
|
|
155
|
+
|
|
139
156
|
## Configuration
|
|
140
157
|
|
|
141
158
|
### OpenAI Token
|
|
142
159
|
|
|
143
|
-
An OpenAI API key is required for all AI features. It can be provided in three ways:
|
|
160
|
+
An OpenAI API key is required for all AI features. It can be provided in three ways (checked in order):
|
|
144
161
|
|
|
145
|
-
1. **Environment variable**: `OPENAI_TOKEN`
|
|
146
|
-
2. **
|
|
147
|
-
3. **
|
|
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
|
|
148
165
|
|
|
149
|
-
The token is persisted at `~/.
|
|
166
|
+
The token is persisted at `~/.smartconfig/kv/@git.zone/tsdoc.json` for subsequent runs.
|
|
150
167
|
|
|
151
|
-
###
|
|
168
|
+
### .smartconfig.json
|
|
152
169
|
|
|
153
|
-
tsdoc uses
|
|
170
|
+
tsdoc uses `.smartconfig.json` for project metadata. The `tsdoc` key holds legal information that gets appended to generated READMEs:
|
|
154
171
|
|
|
155
172
|
```json
|
|
156
173
|
{
|
|
@@ -170,62 +187,78 @@ tsdoc uses `npmextra.json` for project metadata. The `tsdoc` key holds legal inf
|
|
|
170
187
|
}
|
|
171
188
|
```
|
|
172
189
|
|
|
190
|
+
The `description` command writes updated description/keywords to both `gitzone.module` in `.smartconfig.json` and to `package.json`.
|
|
191
|
+
|
|
173
192
|
## Architecture
|
|
174
193
|
|
|
175
194
|
### Core Components
|
|
176
195
|
|
|
177
196
|
```
|
|
178
197
|
@git.zone/tsdoc
|
|
179
|
-
├── AiDoc # Main orchestrator
|
|
198
|
+
├── AiDoc # Main orchestrator — manages AI model, delegates to task classes
|
|
180
199
|
├── TypeDoc # Traditional TypeDoc API documentation generation
|
|
181
|
-
├── ProjectContext # Gathers project files
|
|
182
|
-
├── DiffProcessor # Intelligent git diff processing with prioritization
|
|
183
|
-
├── Readme # AI-
|
|
184
|
-
├── Commit # AI-
|
|
185
|
-
├── Description # AI-
|
|
200
|
+
├── ProjectContext # Gathers project files (package.json, source, tests, config)
|
|
201
|
+
├── DiffProcessor # Intelligent git diff processing with prioritization & sampling
|
|
202
|
+
├── Readme # AI agent-driven README generation with filesystem tools
|
|
203
|
+
├── Commit # AI agent-driven commit message generation with diff analysis
|
|
204
|
+
├── Description # AI agent-driven description and keyword generation
|
|
186
205
|
└── CLI # Command-line interface built on @push.rocks/smartcli
|
|
187
206
|
```
|
|
188
207
|
|
|
189
|
-
### AI Agent Architecture
|
|
208
|
+
### 🧠 AI Agent Architecture
|
|
209
|
+
|
|
210
|
+
Each documentation task (readme, commit, description) runs an autonomous AI agent via `@push.rocks/smartagent`'s `runAgent()`:
|
|
190
211
|
|
|
191
|
-
|
|
212
|
+
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
|
|
214
|
+
3. **Autonomous exploration** — the agent decides which files to read, in what order
|
|
215
|
+
4. **Structured output** — README markdown, commit JSON, or description JSON
|
|
192
216
|
|
|
193
|
-
|
|
194
|
-
2. Gets access to scoped filesystem tools (read-only, limited to project directory)
|
|
195
|
-
3. Explores the project structure autonomously using tool calls
|
|
196
|
-
4. Produces the final output (README markdown, commit JSON, or description JSON)
|
|
217
|
+
The agents use `@push.rocks/smartai`'s `getModel()` to create a language model instance backed by OpenAI.
|
|
197
218
|
|
|
198
|
-
### Diff Processing
|
|
219
|
+
### ⚡ Diff Processing Pipeline
|
|
199
220
|
|
|
200
|
-
The `DiffProcessor`
|
|
221
|
+
The `DiffProcessor` handles large git diffs without blowing up token budgets:
|
|
201
222
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
223
|
+
| File Category | Threshold | Treatment |
|
|
224
|
+
|---------------|-----------|-----------|
|
|
225
|
+
| **Small** | < 300 lines changed | Included in full |
|
|
226
|
+
| **Medium** | < 800 lines changed | Head (75 lines) + tail (75 lines) sampling |
|
|
227
|
+
| **Large** | ≥ 800 lines changed | Metadata only (filepath + stats) |
|
|
228
|
+
|
|
229
|
+
Files are scored by importance:
|
|
230
|
+
- **100** — Source files (`src/`, `lib/`, `app/`, `components/`, `pages/`, `api/`)
|
|
231
|
+
- **80** — Test files (`test/`, `*.test.ts`, `*.spec.ts`)
|
|
232
|
+
- **70** — Interface/type files, entry points (`index.ts`, `mod.ts`)
|
|
233
|
+
- **60** — Configuration files (`.json`, `.yaml`, `.config.ts`)
|
|
234
|
+
- **40** — Documentation (`.md`, `.txt`)
|
|
235
|
+
- **10** — Build artifacts (`dist/`, `build/`, `.next/`)
|
|
236
|
+
|
|
237
|
+
Token budget is calculated dynamically: `context_limit - safety_margin - overhead - prompt_size`.
|
|
207
238
|
|
|
208
239
|
## Requirements
|
|
209
240
|
|
|
210
|
-
- **Node.js** >= 18
|
|
211
|
-
- **TypeScript** project with `ts/` source directory
|
|
212
|
-
- **OpenAI API key**
|
|
241
|
+
- **Node.js** >= 18
|
|
242
|
+
- **TypeScript** project with a `ts/` source directory
|
|
243
|
+
- **OpenAI API key** for AI features
|
|
213
244
|
|
|
214
245
|
## License and Legal Information
|
|
215
246
|
|
|
216
|
-
This repository contains open-source code
|
|
247
|
+
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./license) file.
|
|
217
248
|
|
|
218
249
|
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
|
219
250
|
|
|
220
251
|
### Trademarks
|
|
221
252
|
|
|
222
|
-
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein.
|
|
253
|
+
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.
|
|
254
|
+
|
|
255
|
+
Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.
|
|
223
256
|
|
|
224
257
|
### Company Information
|
|
225
258
|
|
|
226
259
|
Task Venture Capital GmbH
|
|
227
|
-
Registered at District
|
|
260
|
+
Registered at District Court Bremen HRB 35230 HB, Germany
|
|
228
261
|
|
|
229
|
-
For any legal inquiries or
|
|
262
|
+
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
|
230
263
|
|
|
231
264
|
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
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.0.2',
|
|
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
|
}
|
|
@@ -28,7 +28,7 @@ You create project descriptions and keywords for npm packages.
|
|
|
28
28
|
You have access to filesystem tools to explore the project.
|
|
29
29
|
|
|
30
30
|
IMPORTANT RULES:
|
|
31
|
-
- Only READ files (package.json,
|
|
31
|
+
- Only READ files (package.json, .smartconfig.json, source files in ts/)
|
|
32
32
|
- Do NOT write, delete, or modify any files
|
|
33
33
|
- Your final response must be valid JSON only
|
|
34
34
|
- Description must be a clear, concise one-sentence summary
|
|
@@ -43,7 +43,7 @@ PROJECT DIRECTORY: ${this.projectDir}
|
|
|
43
43
|
Use the filesystem tools to explore the project and understand what it does:
|
|
44
44
|
1. First, use list_directory to see the project structure
|
|
45
45
|
2. Read package.json to understand the package name and current description
|
|
46
|
-
3. Read
|
|
46
|
+
3. Read .smartconfig.json if it exists for additional metadata
|
|
47
47
|
4. Read key source files in ts/ directory to understand the implementation
|
|
48
48
|
|
|
49
49
|
Then generate a description and keywords based on your exploration.
|
|
@@ -79,15 +79,15 @@ Don't wrap the JSON in \`\`\`json\`\`\` - just return the raw JSON object.
|
|
|
79
79
|
const projectContext = new ProjectContext(this.projectDir);
|
|
80
80
|
const files = await projectContext.gatherFiles();
|
|
81
81
|
|
|
82
|
-
// Update
|
|
83
|
-
const
|
|
84
|
-
const
|
|
82
|
+
// Update smartconfig.json
|
|
83
|
+
const smartconfigJson = files.smartfilesNpmextraJSON;
|
|
84
|
+
const smartconfigJsonContent = JSON.parse(smartconfigJson.contents.toString());
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
smartconfigJsonContent['gitzone'].module.description = resultObject.description;
|
|
87
|
+
smartconfigJsonContent['gitzone'].module.keywords = resultObject.keywords;
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
await
|
|
89
|
+
smartconfigJson.contents = Buffer.from(JSON.stringify(smartconfigJsonContent, null, 2));
|
|
90
|
+
await smartconfigJson.write();
|
|
91
91
|
|
|
92
92
|
// Update package.json
|
|
93
93
|
const packageJson = files.smartfilePackageJSON;
|
|
@@ -27,7 +27,7 @@ export class ProjectContext {
|
|
|
27
27
|
this.projectDir,
|
|
28
28
|
);
|
|
29
29
|
const smartfilesNpmextraJSON = await plugins.smartfileFactory.fromFilePath(
|
|
30
|
-
plugins.path.join(this.projectDir, '
|
|
30
|
+
plugins.path.join(this.projectDir, '.smartconfig.json'),
|
|
31
31
|
this.projectDir,
|
|
32
32
|
);
|
|
33
33
|
const smartfilesMod = await plugins.smartfileFactory.virtualDirectoryFromPath(
|
|
@@ -19,12 +19,12 @@ export class Readme {
|
|
|
19
19
|
|
|
20
20
|
// First check legal info before introducing any cost
|
|
21
21
|
const projectContext = new ProjectContext(this.projectDir);
|
|
22
|
-
const
|
|
22
|
+
const smartconfigJson = JSON.parse(
|
|
23
23
|
(await projectContext.gatherFiles()).smartfilesNpmextraJSON.contents.toString()
|
|
24
24
|
);
|
|
25
|
-
const legalInfo =
|
|
25
|
+
const legalInfo = smartconfigJson?.['tsdoc']?.legal;
|
|
26
26
|
if (!legalInfo) {
|
|
27
|
-
const error = new Error(`No legal information found in
|
|
27
|
+
const error = new Error(`No legal information found in .smartconfig.json`);
|
|
28
28
|
console.log(error);
|
|
29
29
|
}
|
|
30
30
|
|
package/ts/classes.aidoc.ts
CHANGED
|
@@ -5,7 +5,7 @@ import * as aiDocsClasses from './aidocs_classes/index.js';
|
|
|
5
5
|
export class AiDoc {
|
|
6
6
|
private openaiToken: string;
|
|
7
7
|
|
|
8
|
-
public
|
|
8
|
+
public smartconfigKV: plugins.smartconfig.KeyValueStore;
|
|
9
9
|
public qenvInstance: plugins.qenv.Qenv;
|
|
10
10
|
public aidocInteract: plugins.smartinteract.SmartInteract;
|
|
11
11
|
public model: plugins.smartai.LanguageModelV3;
|
|
@@ -38,8 +38,8 @@ export class AiDoc {
|
|
|
38
38
|
if (!(await this.qenvInstance.getEnvVarOnDemand('OPENAI_TOKEN'))) {
|
|
39
39
|
// Migrate old KV store path to new path if needed
|
|
40
40
|
const homeDir = plugins.smartpath.get.home();
|
|
41
|
-
const oldKvPath = plugins.path.join(homeDir, '.
|
|
42
|
-
const newKvDir = plugins.path.join(homeDir, '.
|
|
41
|
+
const oldKvPath = plugins.path.join(homeDir, '.smartconfig/kv/tsdoc.json');
|
|
42
|
+
const newKvDir = plugins.path.join(homeDir, '.smartconfig/kv/@git.zone');
|
|
43
43
|
const newKvPath = plugins.path.join(newKvDir, 'tsdoc.json');
|
|
44
44
|
if (
|
|
45
45
|
await plugins.fsInstance.file(oldKvPath).exists() &&
|
|
@@ -52,13 +52,13 @@ export class AiDoc {
|
|
|
52
52
|
console.log('Migration complete: tsdoc.json -> @git.zone/tsdoc.json');
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
this.
|
|
55
|
+
this.smartconfigKV = new plugins.smartconfig.KeyValueStore({
|
|
56
56
|
typeArg: 'userHomeDir',
|
|
57
57
|
identityArg: '@git.zone/tsdoc',
|
|
58
58
|
mandatoryKeys: ['OPENAI_TOKEN'],
|
|
59
59
|
});
|
|
60
60
|
|
|
61
|
-
const missingKeys = await this.
|
|
61
|
+
const missingKeys = await this.smartconfigKV.getMissingMandatoryKeys();
|
|
62
62
|
if (missingKeys.length > 0) {
|
|
63
63
|
// lets try argv
|
|
64
64
|
if (this.argvArg?.OPENAI_TOKEN) {
|
|
@@ -77,11 +77,11 @@ export class AiDoc {
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
this.printSanitizedToken();
|
|
80
|
-
await this.
|
|
80
|
+
await this.smartconfigKV.writeKey('OPENAI_TOKEN', this.openaiToken);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
if (!this.openaiToken && this.
|
|
84
|
-
this.openaiToken = await this.
|
|
83
|
+
if (!this.openaiToken && this.smartconfigKV) {
|
|
84
|
+
this.openaiToken = await this.smartconfigKV.readKey('OPENAI_TOKEN');
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// Create model using getModel()
|
package/ts/plugins.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as path from 'path';
|
|
|
4
4
|
export { path };
|
|
5
5
|
|
|
6
6
|
// pushrocks scope
|
|
7
|
-
import * as
|
|
7
|
+
import * as smartconfig from '@push.rocks/smartconfig';
|
|
8
8
|
import * as qenv from '@push.rocks/qenv';
|
|
9
9
|
import * as smartagent from '@push.rocks/smartagent';
|
|
10
10
|
import * as smartagentTools from '@push.rocks/smartagent/tools';
|
|
@@ -22,7 +22,7 @@ import * as smartshell from '@push.rocks/smartshell';
|
|
|
22
22
|
import * as smarttime from '@push.rocks/smarttime';
|
|
23
23
|
|
|
24
24
|
export {
|
|
25
|
-
|
|
25
|
+
smartconfig,
|
|
26
26
|
qenv,
|
|
27
27
|
smartagent,
|
|
28
28
|
smartagentTools,
|
package/npmextra.json
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"gitzone": {
|
|
3
|
-
"projectType": "npm",
|
|
4
|
-
"module": {
|
|
5
|
-
"githost": "gitlab.com",
|
|
6
|
-
"gitscope": "gitzone",
|
|
7
|
-
"gitrepo": "tsdoc",
|
|
8
|
-
"shortDescription": "a tool for better documentation",
|
|
9
|
-
"npmPackagename": "@git.zone/tsdoc",
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"projectDomain": "git.zone",
|
|
12
|
-
"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.",
|
|
13
|
-
"keywords": [
|
|
14
|
-
"TypeScript",
|
|
15
|
-
"documentation",
|
|
16
|
-
"AI",
|
|
17
|
-
"CLI",
|
|
18
|
-
"README",
|
|
19
|
-
"TypeDoc",
|
|
20
|
-
"commit messages",
|
|
21
|
-
"automation",
|
|
22
|
-
"code analysis",
|
|
23
|
-
"context trimming",
|
|
24
|
-
"developer tools"
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"npmci": {
|
|
29
|
-
"npmGlobalTools": [],
|
|
30
|
-
"npmAccessLevel": "public"
|
|
31
|
-
},
|
|
32
|
-
"tsdoc": {
|
|
33
|
-
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
|
34
|
-
},
|
|
35
|
-
"@git.zone/cli": {
|
|
36
|
-
"release": {
|
|
37
|
-
"registries": [
|
|
38
|
-
"https://verdaccio.lossless.digital",
|
|
39
|
-
"https://registry.npmjs.org"
|
|
40
|
-
],
|
|
41
|
-
"accessLevel": "public"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|