Compare commits

...

10 Commits

Author SHA1 Message Date
84947cfb80 1.4.4
Some checks failed
Default (tags) / security (push) Failing after 1s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-02-25 18:33:51 +00:00
1a9ac9091d fix(dependencies): Update dependencies to latest versions 2025-02-25 18:33:51 +00:00
88b93b8b83 1.4.3
Some checks failed
Default (tags) / security (push) Failing after 2s
Default (tags) / test (push) Failing after 1s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
2025-01-14 17:42:19 +01:00
77279a9135 fix(aidocs_classes): Improve readme generation instructions to ensure correct markdown formatting. 2025-01-14 17:42:19 +01:00
7426addbdd 1.4.2 2024-10-28 21:45:28 +01:00
58d060d729 fix(cli): Ensure async completion for aidoc readme and description generation 2024-10-28 21:45:28 +01:00
370cbfe6f3 1.4.1 2024-10-28 21:20:51 +01:00
2adb4e8cb0 fix(readme): Correct async call to getModuleSubDirs in readme generation. 2024-10-28 21:20:50 +01:00
e8608b1cae 1.4.0 2024-10-28 21:16:00 +01:00
33fa7fa337 feat(aidocs): Added support for building readmes for sub-modules in aidocs 2024-10-28 21:15:59 +01:00
7 changed files with 5374 additions and 2089 deletions

View File

@ -1,5 +1,34 @@
# Changelog # Changelog
## 2025-02-25 - 1.4.4 - fix(dependencies)
Update dependencies to latest versions
- Updated '@push.rocks/smartai' from '^0.0.17' to '^0.4.2'
- Updated 'typedoc' from '^0.26.1' to '^0.27.9'
## 2025-01-14 - 1.4.3 - fix(aidocs_classes)
Improve readme generation instructions to ensure correct markdown formatting.
- Added guidance to avoid using backticks at the beginning and end of readme generation to prevent markdown issues.
- Clarified that the output is directly written to readme.md and backticks should only be used for code blocks.
## 2024-10-28 - 1.4.2 - fix(cli)
Ensure async completion for aidoc readme and description generation
- Added await statements for asynchronous methods buildReadme and buildDescription in the aidoc command.
## 2024-10-28 - 1.4.1 - fix(readme)
Correct async call to getModuleSubDirs in readme generation.
- Fixed an issue with asynchronous handling in readme generation for submodules.
- Ensured that getModuleSubDirs function is called with await to handle promises properly.
## 2024-10-28 - 1.4.0 - feat(aidocs)
Added support for building readmes for sub-modules in aidocs
- Updated the `Readme` class to handle monorepo projects by generating readmes for sub-modules.
- Integrated `tspublish` to identify sub-modules for readme generation.
## 2024-06-24 - 1.3.12 - fix(aidocs) ## 2024-06-24 - 1.3.12 - fix(aidocs)
Fix changelog generation by handling leading newlines Fix changelog generation by handling leading newlines

View File

@ -1,6 +1,6 @@
{ {
"name": "@git.zone/tsdoc", "name": "@git.zone/tsdoc",
"version": "1.3.12", "version": "1.4.4",
"private": false, "private": false,
"description": "An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.", "description": "An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.",
"type": "module", "type": "module",
@ -23,13 +23,14 @@
"@git.zone/tsrun": "^1.2.46", "@git.zone/tsrun": "^1.2.46",
"@git.zone/tstest": "^1.0.90", "@git.zone/tstest": "^1.0.90",
"@push.rocks/tapbundle": "^5.0.23", "@push.rocks/tapbundle": "^5.0.23",
"@types/node": "^20.14.8" "@types/node": "^22.8.1"
}, },
"dependencies": { "dependencies": {
"@git.zone/tspublish": "^1.5.5",
"@push.rocks/early": "^4.0.3", "@push.rocks/early": "^4.0.3",
"@push.rocks/npmextra": "^5.0.23", "@push.rocks/npmextra": "^5.0.23",
"@push.rocks/qenv": "^6.0.5", "@push.rocks/qenv": "^6.0.5",
"@push.rocks/smartai": "^0.0.17", "@push.rocks/smartai": "^0.4.2",
"@push.rocks/smartcli": "^4.0.11", "@push.rocks/smartcli": "^4.0.11",
"@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartfile": "^11.0.20", "@push.rocks/smartfile": "^11.0.20",
@ -40,7 +41,7 @@
"@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpath": "^5.0.18",
"@push.rocks/smartshell": "^3.0.5", "@push.rocks/smartshell": "^3.0.5",
"@push.rocks/smarttime": "^4.0.6", "@push.rocks/smarttime": "^4.0.6",
"typedoc": "^0.26.1", "typedoc": "^0.27.9",
"typescript": "^5.5.2" "typescript": "^5.5.2"
}, },
"files": [ "files": [

7348
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsdoc', name: '@git.zone/tsdoc',
version: '1.3.12', version: '1.4.4',
description: 'An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.' description: 'An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.'
} }

View File

@ -1,6 +1,8 @@
import type { AiDoc } from '../classes.aidoc.js'; import type { AiDoc } from '../classes.aidoc.js';
import * as plugins from '../plugins.js'; import * as plugins from '../plugins.js';
import * as paths from '../paths.js';
import { ProjectContext } from './projectcontext.js'; import { ProjectContext } from './projectcontext.js';
import { logger } from '../logging.js';
export class Readme { export class Readme {
// INSTANCE // INSTANCE
@ -21,7 +23,7 @@ export class Readme {
// lets first check legal before introducung any cost // lets first check legal before introducung any cost
const npmExtraJson = JSON.parse( const npmExtraJson = JSON.parse(
(await projectContext.gatherFiles()).smartfilesNpmextraJSON.contents.toString(), (await projectContext.gatherFiles()).smartfilesNpmextraJSON.contents.toString()
); );
const legalInfo = npmExtraJson?.tsdoc?.legal; const legalInfo = npmExtraJson?.tsdoc?.legal;
if (!legalInfo) { if (!legalInfo) {
@ -79,6 +81,64 @@ The Readme should follow the following template:
readme.contents = Buffer.from(finalReadmeString); readme.contents = Buffer.from(finalReadmeString);
await readme.write(); await readme.write();
// lets care about monorepo aspects
const tsPublishInstance = new plugins.tspublish.TsPublish();
const subModules = await tsPublishInstance.getModuleSubDirs(paths.cwd);
logger.log('info', `Found ${Object.keys(subModules).length} sub modules`);
for (const subModule of Object.keys(subModules)) {
logger.log('info', `Building readme for ${subModule}`);
const subModuleContextString = await projectContext.update();
let result = await this.aiDocsRef.openaiInstance.chat({
systemMessage: `
You create markdown readmes for npm projects. You only output the markdown readme.
IMPORTANT: YOU ARE NOW CREATING THE README FOR THE FOLLOWING SUB MODULE: ${subModule} !!!!!!!!!!!
The Sub Module will be published with the following data:
${JSON.stringify(plugins.smartfile.fs.toStringSync(plugins.path.join(paths.cwd, subModule, 'tspublish.json')), null, 2)}
The Readme should follow the following template:
# Project Name
[
The name is the module name of package.json
The description is in the description field of package.json
]
## Install
[
Write a short text on how to install the project
]
## Usage
[
Give code examples here.
Construct sensible scenarios for the user.
Make sure to show a complete set of features of the module.
Don't omit use cases.
It does not matter how much time you need.
ALWAYS USE ESM SYNTAX AND TYPESCRIPT.
DON'T CHICKEN OUT. Write at least 4000 words. More if necessary.
If there is already a readme, take the Usage section as base. Remove outdated content, and expand and improve upon the valid parts.
Super important: Check for completenes.
Don't include any licensing information. This will be added in a later step.
Avoid "in conclusions".
Good to know:
* npmextra.json contains overall module information.
* readme.hints.md provides valuable hints about module ideas.
* Your output lands directly in the readme.md file.
* Don't use \`\`\` at the beginning or the end. It'll cause problems. Only use it for codeblocks. You are directly writing markdown. No need to introduce it weirdly.
]
`,
messageHistory: [],
userMessage: subModuleContextString,
});
const subModuleReadmeString = result.message + '\n' + legalInfo;
await plugins.smartfile.memory.toFs(subModuleReadmeString, plugins.path.join(paths.cwd, subModule, 'readme.md'));
logger.log('success', `Built readme for ${subModule}`);
}
return result.message; return result.message;
} }
} }

View File

@ -28,14 +28,14 @@ export const run = async () => {
}); });
tsdocCli.addCommand('aidoc').subscribe(async (argvArg) => { tsdocCli.addCommand('aidoc').subscribe(async (argvArg) => {
logger.log('info', `Generating new readme...`);
logger.log('info', `This may take some time...`);
const aidocInstance = new AiDoc(); const aidocInstance = new AiDoc();
await aidocInstance.start(); await aidocInstance.start();
aidocInstance.buildReadme(paths.cwd); logger.log('info', `Generating new readme...`);
logger.log('info', `This may take some time...`);
await aidocInstance.buildReadme(paths.cwd);
logger.log('info', `Generating new keywords...`); logger.log('info', `Generating new keywords...`);
logger.log('info', `This may take some time...`); logger.log('info', `This may take some time...`);
aidocInstance.buildDescription(paths.cwd); await aidocInstance.buildDescription(paths.cwd);
}); });
tsdocCli.addCommand('test').subscribe((argvArg) => { tsdocCli.addCommand('test').subscribe((argvArg) => {

View File

@ -34,6 +34,11 @@ export {
smarttime, smarttime,
}; };
// @git.zone scope
import * as tspublish from '@git.zone/tspublish';
export { tspublish };
// third party scope // third party scope
import * as typedoc from 'typedoc'; import * as typedoc from 'typedoc';