@git.zone/tsdoc 1.10.2 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/aidocs_classes/commit.js +64 -17
- package/dist_ts/classes.aidoc.d.ts +1 -0
- package/dist_ts/classes.aidoc.js +4 -1
- package/dist_ts/cli.js +0 -0
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/npmextra.json +9 -0
- package/package.json +10 -8
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aidocs_classes/commit.ts +72 -16
- package/ts/classes.aidoc.ts +4 -0
- package/ts/plugins.ts +2 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tsdoc',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.11.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
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDhNQUE4TTtDQUM1TixDQUFBIn0=
|
|
@@ -99,8 +99,28 @@ export class Commit {
|
|
|
99
99
|
console.log(`⚠️ Warning: Context size (${contextResult.tokenCount} tokens) is close to or exceeds model limit (${MODEL_TOKEN_LIMIT} tokens).`);
|
|
100
100
|
console.log(`The model may not be able to process all information effectively.`);
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
// Use DualAgentOrchestrator for commit message generation with Guardian validation
|
|
103
|
+
const commitOrchestrator = new plugins.smartagent.DualAgentOrchestrator({
|
|
104
|
+
openaiToken: this.aiDocsRef.getOpenaiToken(),
|
|
105
|
+
defaultProvider: 'openai',
|
|
106
|
+
guardianPolicyPrompt: `
|
|
107
|
+
You validate commit messages for semantic versioning compliance.
|
|
108
|
+
|
|
109
|
+
APPROVE if:
|
|
110
|
+
- Version level (fix/feat/BREAKING CHANGE) matches the scope of changes in the diff
|
|
111
|
+
- Commit message is clear, professional, and follows conventional commit conventions
|
|
112
|
+
- No personal information, licensing details, or AI mentions (Claude/Codex) included
|
|
113
|
+
- JSON structure is valid with all required fields
|
|
114
|
+
- Scope accurately reflects the changed modules/files
|
|
115
|
+
|
|
116
|
+
REJECT with specific feedback if:
|
|
117
|
+
- Version level doesn't match the scope of changes (e.g., "feat" for a typo fix should be "fix")
|
|
118
|
+
- Message is vague, unprofessional, or contains sensitive information
|
|
119
|
+
- JSON is malformed or missing required fields (recommendedNextVersionLevel, recommendedNextVersionScope, recommendedNextVersionMessage, recommendedNextVersionDetails, recommendedNextVersion)
|
|
120
|
+
`,
|
|
121
|
+
});
|
|
122
|
+
await commitOrchestrator.start();
|
|
123
|
+
const commitTaskPrompt = `
|
|
104
124
|
You create a commit message for a git commit.
|
|
105
125
|
The commit message should be based on the files in the project.
|
|
106
126
|
You should not include any licensing information.
|
|
@@ -125,12 +145,16 @@ For the recommendedNextVersionDetails, please only add a detail entries to the a
|
|
|
125
145
|
You are being given the files of the project. You should use them to create the commit message.
|
|
126
146
|
Also you are given a diff.
|
|
127
147
|
Never mention CLAUDE code, or codex.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
148
|
+
|
|
149
|
+
Project context and diff:
|
|
150
|
+
${contextString}
|
|
151
|
+
`;
|
|
152
|
+
const commitResult = await commitOrchestrator.run(commitTaskPrompt);
|
|
153
|
+
await commitOrchestrator.stop();
|
|
154
|
+
if (!commitResult.success) {
|
|
155
|
+
throw new Error(`Commit message generation failed: ${commitResult.status}`);
|
|
156
|
+
}
|
|
157
|
+
const resultObject = JSON.parse(commitResult.result.replace('```json', '').replace('```', ''));
|
|
134
158
|
const previousChangelogPath = plugins.path.join(this.projectDir, 'changelog.md');
|
|
135
159
|
let previousChangelog;
|
|
136
160
|
if (await plugins.fsInstance.file(previousChangelogPath).exists()) {
|
|
@@ -140,9 +164,28 @@ Never mention CLAUDE code, or codex.
|
|
|
140
164
|
// lets build the changelog based on that
|
|
141
165
|
const commitMessages = await gitRepo.getAllCommitMessages();
|
|
142
166
|
console.log(JSON.stringify(commitMessages, null, 2));
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
167
|
+
// Use DualAgentOrchestrator for changelog generation with Guardian validation
|
|
168
|
+
const changelogOrchestrator = new plugins.smartagent.DualAgentOrchestrator({
|
|
169
|
+
openaiToken: this.aiDocsRef.getOpenaiToken(),
|
|
170
|
+
defaultProvider: 'openai',
|
|
171
|
+
guardianPolicyPrompt: `
|
|
172
|
+
You validate changelog generation.
|
|
173
|
+
|
|
174
|
+
APPROVE if:
|
|
175
|
+
- Changelog follows proper markdown format with ## headers for each version
|
|
176
|
+
- Entries are chronologically ordered (newest first)
|
|
177
|
+
- Version ranges for trivial commits are properly summarized
|
|
178
|
+
- No duplicate or empty entries
|
|
179
|
+
- Format matches: ## yyyy-mm-dd - x.x.x - scope
|
|
180
|
+
|
|
181
|
+
REJECT with feedback if:
|
|
182
|
+
- Markdown formatting is incorrect
|
|
183
|
+
- Entries are not meaningful or helpful
|
|
184
|
+
- Dates or versions are malformed
|
|
185
|
+
`,
|
|
186
|
+
});
|
|
187
|
+
await changelogOrchestrator.start();
|
|
188
|
+
const changelogTaskPrompt = `
|
|
146
189
|
You are building a changelog.md file for the project.
|
|
147
190
|
Omit commits and versions that lack relevant changes, but make sure to mention them as a range with a summarizing message instead.
|
|
148
191
|
|
|
@@ -156,14 +199,18 @@ A changelog entry should look like this:
|
|
|
156
199
|
You are given:
|
|
157
200
|
* the commit messages of the project
|
|
158
201
|
|
|
159
|
-
Only return the changelog file, so it can be written directly to changelog.md
|
|
160
|
-
|
|
202
|
+
Only return the changelog file content, so it can be written directly to changelog.md.
|
|
203
|
+
|
|
161
204
|
Here are the commit messages:
|
|
162
205
|
|
|
163
206
|
${JSON.stringify(commitMessages, null, 2)}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
207
|
+
`;
|
|
208
|
+
const changelogResult = await changelogOrchestrator.run(changelogTaskPrompt);
|
|
209
|
+
await changelogOrchestrator.stop();
|
|
210
|
+
if (!changelogResult.success) {
|
|
211
|
+
throw new Error(`Changelog generation failed: ${changelogResult.status}`);
|
|
212
|
+
}
|
|
213
|
+
previousChangelog = plugins.smartfileFactory.fromString(previousChangelogPath, changelogResult.result.replaceAll('```markdown', '').replaceAll('```', ''), 'utf8');
|
|
167
214
|
}
|
|
168
215
|
let oldChangelog = previousChangelog.contents.toString().replace('# Changelog\n\n', '');
|
|
169
216
|
if (oldChangelog.startsWith('\n')) {
|
|
@@ -178,4 +225,4 @@ ${JSON.stringify(commitMessages, null, 2)}
|
|
|
178
225
|
return resultObject;
|
|
179
226
|
}
|
|
180
227
|
}
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvYWlkb2NzX2NsYXNzZXMvY29tbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBVzdELE1BQU0sT0FBTyxNQUFNO0lBSWpCLFlBQVksU0FBZ0IsRUFBRSxhQUFxQjtRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQjtRQUNoQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6RCxNQUFNLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQy9ELGdCQUFnQixFQUNoQixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBRUYsMENBQTBDO1FBQzFDLGtEQUFrRDtRQUNsRCxNQUFNLGVBQWUsR0FBRztZQUN0QixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsV0FBVztZQUNYLFdBQVc7WUFDWCxXQUFXO1lBRVgsa0RBQWtEO1lBQ2xELFNBQVM7WUFDVCxXQUFXLEVBQVksMEJBQTBCO1lBQ2pELFVBQVU7WUFDVixVQUFVO1lBQ1YsUUFBUTtZQUNSLGdCQUFnQjtZQUVoQix5QkFBeUI7WUFDekIsYUFBYTtZQUNiLGVBQWU7WUFDZixh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
|
|
@@ -11,6 +11,7 @@ export declare class AiDoc {
|
|
|
11
11
|
private printSanitizedToken;
|
|
12
12
|
start(): Promise<void>;
|
|
13
13
|
stop(): Promise<void>;
|
|
14
|
+
getOpenaiToken(): string;
|
|
14
15
|
buildReadme(projectDirArg: string): Promise<string>;
|
|
15
16
|
buildDescription(projectDirArg: string): Promise<string>;
|
|
16
17
|
buildNextCommitObject(projectDirArg: string): Promise<aiDocsClasses.INextCommitObject>;
|
package/dist_ts/classes.aidoc.js
CHANGED
|
@@ -80,6 +80,9 @@ export class AiDoc {
|
|
|
80
80
|
// No explicit cleanup needed for npmextraKV or aidocInteract
|
|
81
81
|
// They don't keep event loop alive
|
|
82
82
|
}
|
|
83
|
+
getOpenaiToken() {
|
|
84
|
+
return this.openaiToken;
|
|
85
|
+
}
|
|
83
86
|
async buildReadme(projectDirArg) {
|
|
84
87
|
const readmeInstance = new aiDocsClasses.Readme(this, projectDirArg);
|
|
85
88
|
return await readmeInstance.build();
|
|
@@ -127,4 +130,4 @@ export class AiDoc {
|
|
|
127
130
|
return projectContextInstance.countTokens(text, model);
|
|
128
131
|
}
|
|
129
132
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5haWRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuYWlkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxLQUFLLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sS0FBSztJQVVoQixZQUFZLE9BQWE7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixpRkFBaUY7UUFDakYsSUFBSSxVQUFrQixDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsbURBQW1EO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRSxVQUFVLEdBQUcsR0FBRyxLQUFLLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixtREFBbUQ7WUFDbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJ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
|
package/dist_ts/cli.js
CHANGED
|
File without changes
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as path from 'path';
|
|
|
2
2
|
export { path };
|
|
3
3
|
import * as npmextra from '@push.rocks/npmextra';
|
|
4
4
|
import * as qenv from '@push.rocks/qenv';
|
|
5
|
+
import * as smartagent from '@push.rocks/smartagent';
|
|
5
6
|
import * as smartai from '@push.rocks/smartai';
|
|
6
7
|
import * as smartcli from '@push.rocks/smartcli';
|
|
7
8
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
@@ -14,7 +15,7 @@ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-loca
|
|
|
14
15
|
import * as smartpath from '@push.rocks/smartpath';
|
|
15
16
|
import * as smartshell from '@push.rocks/smartshell';
|
|
16
17
|
import * as smarttime from '@push.rocks/smarttime';
|
|
17
|
-
export { npmextra, qenv, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
18
|
+
export { npmextra, qenv, smartagent, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
18
19
|
export declare const fsInstance: smartfs.SmartFs;
|
|
19
20
|
export declare const smartfileFactory: smartfile.SmartFileFactory;
|
|
20
21
|
import * as tspublish from '@git.zone/tspublish';
|
package/dist_ts/plugins.js
CHANGED
|
@@ -4,6 +4,7 @@ export { path };
|
|
|
4
4
|
// pushrocks scope
|
|
5
5
|
import * as npmextra from '@push.rocks/npmextra';
|
|
6
6
|
import * as qenv from '@push.rocks/qenv';
|
|
7
|
+
import * as smartagent from '@push.rocks/smartagent';
|
|
7
8
|
import * as smartai from '@push.rocks/smartai';
|
|
8
9
|
import * as smartcli from '@push.rocks/smartcli';
|
|
9
10
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
@@ -16,7 +17,7 @@ import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-loca
|
|
|
16
17
|
import * as smartpath from '@push.rocks/smartpath';
|
|
17
18
|
import * as smartshell from '@push.rocks/smartshell';
|
|
18
19
|
import * as smarttime from '@push.rocks/smarttime';
|
|
19
|
-
export { npmextra, qenv, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
20
|
+
export { npmextra, qenv, smartagent, smartai, smartcli, smartdelay, smartfile, smartfs, smartgit, smartinteract, smartlog, smartlogDestinationLocal, smartpath, smartshell, smarttime, };
|
|
20
21
|
// Create a shared SmartFs instance for filesystem operations
|
|
21
22
|
const smartFsNodeProvider = new smartfs.SmartFsProviderNode();
|
|
22
23
|
export const fsInstance = new smartfs.SmartFs(smartFsNodeProvider);
|
|
@@ -29,4 +30,4 @@ export { tspublish };
|
|
|
29
30
|
import * as typedoc from 'typedoc';
|
|
30
31
|
import * as gptTokenizer from 'gpt-tokenizer';
|
|
31
32
|
export { typedoc, gptTokenizer };
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUVoQixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyx3QkFBd0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsYUFBYSxFQUNiLFFBQVEsRUFDUix3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEdBQ1YsQ0FBQztBQUVGLDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRW5FLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7QUFFcEUsa0JBQWtCO0FBQ2xCLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRXJCLG9CQUFvQjtBQUNwQixPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEtBQUssWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDIn0=
|
package/npmextra.json
CHANGED
|
@@ -31,5 +31,14 @@
|
|
|
31
31
|
},
|
|
32
32
|
"tsdoc": {
|
|
33
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
|
+
}
|
|
34
43
|
}
|
|
35
44
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/tsdoc",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.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,6 +12,12 @@
|
|
|
12
12
|
"bin": {
|
|
13
13
|
"tsdoc": "cli.js"
|
|
14
14
|
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "(tstest test/ --verbose --logfile --timeout 600) && npm run testCli",
|
|
17
|
+
"testCli": "(node ./cli.ts.js) && (node ./cli.ts.js aidocs)",
|
|
18
|
+
"build": "(tsbuild --web --allowimplicitany)",
|
|
19
|
+
"buildDocs": "tsdoc"
|
|
20
|
+
},
|
|
15
21
|
"devDependencies": {
|
|
16
22
|
"@git.zone/tsbuild": "^3.1.2",
|
|
17
23
|
"@git.zone/tsrun": "^2.0.1",
|
|
@@ -23,6 +29,7 @@
|
|
|
23
29
|
"@push.rocks/early": "^4.0.4",
|
|
24
30
|
"@push.rocks/npmextra": "^5.3.3",
|
|
25
31
|
"@push.rocks/qenv": "^6.1.3",
|
|
32
|
+
"@push.rocks/smartagent": "file:../../push.rocks/smartagent",
|
|
26
33
|
"@push.rocks/smartai": "^0.8.0",
|
|
27
34
|
"@push.rocks/smartcli": "^4.0.19",
|
|
28
35
|
"@push.rocks/smartdelay": "^3.0.5",
|
|
@@ -75,10 +82,5 @@
|
|
|
75
82
|
"url": "https://gitlab.com/gitzone/tsdoc/issues"
|
|
76
83
|
},
|
|
77
84
|
"homepage": "https://gitlab.com/gitzone/tsdoc#readme",
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
"testCli": "(node ./cli.ts.js) && (node ./cli.ts.js aidocs)",
|
|
81
|
-
"build": "(tsbuild --web --allowimplicitany)",
|
|
82
|
-
"buildDocs": "tsdoc"
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
+
"packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748"
|
|
86
|
+
}
|
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: '1.
|
|
6
|
+
version: '1.11.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
|
}
|
|
@@ -137,8 +137,30 @@ export class Commit {
|
|
|
137
137
|
console.log(`The model may not be able to process all information effectively.`);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
// Use DualAgentOrchestrator for commit message generation with Guardian validation
|
|
141
|
+
const commitOrchestrator = new plugins.smartagent.DualAgentOrchestrator({
|
|
142
|
+
openaiToken: this.aiDocsRef.getOpenaiToken(),
|
|
143
|
+
defaultProvider: 'openai',
|
|
144
|
+
guardianPolicyPrompt: `
|
|
145
|
+
You validate commit messages for semantic versioning compliance.
|
|
146
|
+
|
|
147
|
+
APPROVE if:
|
|
148
|
+
- Version level (fix/feat/BREAKING CHANGE) matches the scope of changes in the diff
|
|
149
|
+
- Commit message is clear, professional, and follows conventional commit conventions
|
|
150
|
+
- No personal information, licensing details, or AI mentions (Claude/Codex) included
|
|
151
|
+
- JSON structure is valid with all required fields
|
|
152
|
+
- Scope accurately reflects the changed modules/files
|
|
153
|
+
|
|
154
|
+
REJECT with specific feedback if:
|
|
155
|
+
- Version level doesn't match the scope of changes (e.g., "feat" for a typo fix should be "fix")
|
|
156
|
+
- Message is vague, unprofessional, or contains sensitive information
|
|
157
|
+
- JSON is malformed or missing required fields (recommendedNextVersionLevel, recommendedNextVersionScope, recommendedNextVersionMessage, recommendedNextVersionDetails, recommendedNextVersion)
|
|
158
|
+
`,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
await commitOrchestrator.start();
|
|
162
|
+
|
|
163
|
+
const commitTaskPrompt = `
|
|
142
164
|
You create a commit message for a git commit.
|
|
143
165
|
The commit message should be based on the files in the project.
|
|
144
166
|
You should not include any licensing information.
|
|
@@ -163,14 +185,20 @@ For the recommendedNextVersionDetails, please only add a detail entries to the a
|
|
|
163
185
|
You are being given the files of the project. You should use them to create the commit message.
|
|
164
186
|
Also you are given a diff.
|
|
165
187
|
Never mention CLAUDE code, or codex.
|
|
166
|
-
`,
|
|
167
|
-
messageHistory: [],
|
|
168
|
-
userMessage: contextString,
|
|
169
|
-
});
|
|
170
188
|
|
|
171
|
-
|
|
189
|
+
Project context and diff:
|
|
190
|
+
${contextString}
|
|
191
|
+
`;
|
|
192
|
+
|
|
193
|
+
const commitResult = await commitOrchestrator.run(commitTaskPrompt);
|
|
194
|
+
await commitOrchestrator.stop();
|
|
195
|
+
|
|
196
|
+
if (!commitResult.success) {
|
|
197
|
+
throw new Error(`Commit message generation failed: ${commitResult.status}`);
|
|
198
|
+
}
|
|
199
|
+
|
|
172
200
|
const resultObject: INextCommitObject = JSON.parse(
|
|
173
|
-
result.
|
|
201
|
+
commitResult.result.replace('```json', '').replace('```', '')
|
|
174
202
|
);
|
|
175
203
|
|
|
176
204
|
const previousChangelogPath = plugins.path.join(this.projectDir, 'changelog.md');
|
|
@@ -183,9 +211,31 @@ Never mention CLAUDE code, or codex.
|
|
|
183
211
|
// lets build the changelog based on that
|
|
184
212
|
const commitMessages = await gitRepo.getAllCommitMessages();
|
|
185
213
|
console.log(JSON.stringify(commitMessages, null, 2));
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
214
|
+
|
|
215
|
+
// Use DualAgentOrchestrator for changelog generation with Guardian validation
|
|
216
|
+
const changelogOrchestrator = new plugins.smartagent.DualAgentOrchestrator({
|
|
217
|
+
openaiToken: this.aiDocsRef.getOpenaiToken(),
|
|
218
|
+
defaultProvider: 'openai',
|
|
219
|
+
guardianPolicyPrompt: `
|
|
220
|
+
You validate changelog generation.
|
|
221
|
+
|
|
222
|
+
APPROVE if:
|
|
223
|
+
- Changelog follows proper markdown format with ## headers for each version
|
|
224
|
+
- Entries are chronologically ordered (newest first)
|
|
225
|
+
- Version ranges for trivial commits are properly summarized
|
|
226
|
+
- No duplicate or empty entries
|
|
227
|
+
- Format matches: ## yyyy-mm-dd - x.x.x - scope
|
|
228
|
+
|
|
229
|
+
REJECT with feedback if:
|
|
230
|
+
- Markdown formatting is incorrect
|
|
231
|
+
- Entries are not meaningful or helpful
|
|
232
|
+
- Dates or versions are malformed
|
|
233
|
+
`,
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
await changelogOrchestrator.start();
|
|
237
|
+
|
|
238
|
+
const changelogTaskPrompt = `
|
|
189
239
|
You are building a changelog.md file for the project.
|
|
190
240
|
Omit commits and versions that lack relevant changes, but make sure to mention them as a range with a summarizing message instead.
|
|
191
241
|
|
|
@@ -199,17 +249,23 @@ A changelog entry should look like this:
|
|
|
199
249
|
You are given:
|
|
200
250
|
* the commit messages of the project
|
|
201
251
|
|
|
202
|
-
Only return the changelog file, so it can be written directly to changelog.md
|
|
203
|
-
|
|
252
|
+
Only return the changelog file content, so it can be written directly to changelog.md.
|
|
253
|
+
|
|
204
254
|
Here are the commit messages:
|
|
205
255
|
|
|
206
256
|
${JSON.stringify(commitMessages, null, 2)}
|
|
207
|
-
|
|
208
|
-
|
|
257
|
+
`;
|
|
258
|
+
|
|
259
|
+
const changelogResult = await changelogOrchestrator.run(changelogTaskPrompt);
|
|
260
|
+
await changelogOrchestrator.stop();
|
|
261
|
+
|
|
262
|
+
if (!changelogResult.success) {
|
|
263
|
+
throw new Error(`Changelog generation failed: ${changelogResult.status}`);
|
|
264
|
+
}
|
|
209
265
|
|
|
210
266
|
previousChangelog = plugins.smartfileFactory.fromString(
|
|
211
267
|
previousChangelogPath,
|
|
212
|
-
|
|
268
|
+
changelogResult.result.replaceAll('```markdown', '').replaceAll('```', ''),
|
|
213
269
|
'utf8'
|
|
214
270
|
);
|
|
215
271
|
}
|
package/ts/classes.aidoc.ts
CHANGED
|
@@ -99,6 +99,10 @@ export class AiDoc {
|
|
|
99
99
|
// They don't keep event loop alive
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
public getOpenaiToken(): string {
|
|
103
|
+
return this.openaiToken;
|
|
104
|
+
}
|
|
105
|
+
|
|
102
106
|
public async buildReadme(projectDirArg: string) {
|
|
103
107
|
const readmeInstance = new aiDocsClasses.Readme(this, projectDirArg);
|
|
104
108
|
return await readmeInstance.build();
|
package/ts/plugins.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { path };
|
|
|
6
6
|
// pushrocks scope
|
|
7
7
|
import * as npmextra from '@push.rocks/npmextra';
|
|
8
8
|
import * as qenv from '@push.rocks/qenv';
|
|
9
|
+
import * as smartagent from '@push.rocks/smartagent';
|
|
9
10
|
import * as smartai from '@push.rocks/smartai';
|
|
10
11
|
import * as smartcli from '@push.rocks/smartcli';
|
|
11
12
|
import * as smartdelay from '@push.rocks/smartdelay';
|
|
@@ -22,6 +23,7 @@ import * as smarttime from '@push.rocks/smarttime';
|
|
|
22
23
|
export {
|
|
23
24
|
npmextra,
|
|
24
25
|
qenv,
|
|
26
|
+
smartagent,
|
|
25
27
|
smartai,
|
|
26
28
|
smartcli,
|
|
27
29
|
smartdelay,
|