@esthernandez/vibe-doc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checker/index.d.ts +34 -0
- package/dist/checker/index.d.ts.map +1 -0
- package/dist/checker/index.js +154 -0
- package/dist/checker/staleness.d.ts +26 -0
- package/dist/checker/staleness.d.ts.map +1 -0
- package/dist/checker/staleness.js +56 -0
- package/dist/classifier/index.d.ts +26 -0
- package/dist/classifier/index.d.ts.map +1 -0
- package/dist/classifier/index.js +146 -0
- package/dist/classifier/llm-prompt.d.ts +12 -0
- package/dist/classifier/llm-prompt.d.ts.map +1 -0
- package/dist/classifier/llm-prompt.js +123 -0
- package/dist/classifier/scoring-engine.d.ts +41 -0
- package/dist/classifier/scoring-engine.d.ts.map +1 -0
- package/dist/classifier/scoring-engine.js +197 -0
- package/dist/classifier/signals.d.ts +16 -0
- package/dist/classifier/signals.d.ts.map +1 -0
- package/dist/classifier/signals.js +305 -0
- package/dist/gap-analyzer/breadcrumbs.d.ts +18 -0
- package/dist/gap-analyzer/breadcrumbs.d.ts.map +1 -0
- package/dist/gap-analyzer/breadcrumbs.js +314 -0
- package/dist/gap-analyzer/index.d.ts +13 -0
- package/dist/gap-analyzer/index.d.ts.map +1 -0
- package/dist/gap-analyzer/index.js +88 -0
- package/dist/gap-analyzer/matrix.d.ts +29 -0
- package/dist/gap-analyzer/matrix.d.ts.map +1 -0
- package/dist/gap-analyzer/matrix.js +137 -0
- package/dist/gap-analyzer/tier-assigner.d.ts +22 -0
- package/dist/gap-analyzer/tier-assigner.d.ts.map +1 -0
- package/dist/gap-analyzer/tier-assigner.js +112 -0
- package/dist/generator/docx-writer.d.ts +15 -0
- package/dist/generator/docx-writer.d.ts.map +1 -0
- package/dist/generator/docx-writer.js +271 -0
- package/dist/generator/extractor.d.ts +11 -0
- package/dist/generator/extractor.d.ts.map +1 -0
- package/dist/generator/extractor.js +459 -0
- package/dist/generator/index.d.ts +25 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +106 -0
- package/dist/generator/markdown-writer.d.ts +27 -0
- package/dist/generator/markdown-writer.d.ts.map +1 -0
- package/dist/generator/markdown-writer.js +85 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +372 -0
- package/dist/scanner/artifact-scanner.d.ts +16 -0
- package/dist/scanner/artifact-scanner.d.ts.map +1 -0
- package/dist/scanner/artifact-scanner.js +189 -0
- package/dist/scanner/code-scanner.d.ts +17 -0
- package/dist/scanner/code-scanner.d.ts.map +1 -0
- package/dist/scanner/code-scanner.js +69 -0
- package/dist/scanner/file-scanner.d.ts +16 -0
- package/dist/scanner/file-scanner.d.ts.map +1 -0
- package/dist/scanner/file-scanner.js +119 -0
- package/dist/scanner/git-scanner.d.ts +10 -0
- package/dist/scanner/git-scanner.d.ts.map +1 -0
- package/dist/scanner/git-scanner.js +120 -0
- package/dist/scanner/index.d.ts +15 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +106 -0
- package/dist/state/index.d.ts +20 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +141 -0
- package/dist/state/schema.d.ts +101 -0
- package/dist/state/schema.d.ts.map +1 -0
- package/dist/state/schema.js +6 -0
- package/dist/templates/embedded/adr.md +45 -0
- package/dist/templates/embedded/api-spec.md +55 -0
- package/dist/templates/embedded/data-model.md +55 -0
- package/dist/templates/embedded/deployment-procedure.md +63 -0
- package/dist/templates/embedded/runbook.md +55 -0
- package/dist/templates/embedded/test-plan.md +55 -0
- package/dist/templates/embedded/threat-model.md +47 -0
- package/dist/templates/index.d.ts +20 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +106 -0
- package/dist/templates/registry.d.ts +31 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +172 -0
- package/dist/templates/renderer.d.ts +26 -0
- package/dist/templates/renderer.d.ts.map +1 -0
- package/dist/templates/renderer.js +145 -0
- package/dist/utils/language-detect.d.ts +14 -0
- package/dist/utils/language-detect.d.ts.map +1 -0
- package/dist/utils/language-detect.js +58 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +35 -0
- package/dist/versioning/differ.d.ts +20 -0
- package/dist/versioning/differ.d.ts.map +1 -0
- package/dist/versioning/differ.js +160 -0
- package/dist/versioning/index.d.ts +44 -0
- package/dist/versioning/index.d.ts.map +1 -0
- package/dist/versioning/index.js +165 -0
- package/package.json +40 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Tracking and History Management
|
|
3
|
+
* Handles archiving and tracking documentation versions
|
|
4
|
+
*/
|
|
5
|
+
import { VibedocState, HistoryEntry } from '../state/schema';
|
|
6
|
+
/**
|
|
7
|
+
* Archive the current version of a generated doc
|
|
8
|
+
* Moves it to docs/generated/.history/<docType>-v<N>-<date>.md
|
|
9
|
+
* @param projectPath - Root path of the project
|
|
10
|
+
* @param docType - Type of document to archive
|
|
11
|
+
* @param state - Current vibe-doc state
|
|
12
|
+
* @returns HistoryEntry if archived, null if no current version exists
|
|
13
|
+
*/
|
|
14
|
+
export declare function archiveCurrentVersion(projectPath: string, docType: string, state: VibedocState): HistoryEntry | null;
|
|
15
|
+
/**
|
|
16
|
+
* Get version history for a specific doc type
|
|
17
|
+
* @param state - Current vibe-doc state
|
|
18
|
+
* @param docType - Type of document
|
|
19
|
+
* @returns Array of HistoryEntry for this doc type, sorted by version descending
|
|
20
|
+
*/
|
|
21
|
+
export declare function getVersionHistory(state: VibedocState, docType: string): HistoryEntry[];
|
|
22
|
+
/**
|
|
23
|
+
* Get the next version number for a doc type
|
|
24
|
+
* @param state - Current vibe-doc state
|
|
25
|
+
* @param docType - Type of document
|
|
26
|
+
* @returns Next version number (count + 1)
|
|
27
|
+
*/
|
|
28
|
+
export declare function getNextVersion(state: VibedocState, docType: string): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get the full path to a versioned document
|
|
31
|
+
* @param projectPath - Root path of the project
|
|
32
|
+
* @param docType - Type of document
|
|
33
|
+
* @param version - Version number (e.g., "v1", "v2")
|
|
34
|
+
* @returns Full path to the versioned document, or null if not found
|
|
35
|
+
*/
|
|
36
|
+
export declare function getVersionedPath(projectPath: string, docType: string, version: string): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* List all available versions for a doc type on disk
|
|
39
|
+
* @param projectPath - Root path of the project
|
|
40
|
+
* @param docType - Type of document
|
|
41
|
+
* @returns Array of version strings (e.g., ["v2", "v1"])
|
|
42
|
+
*/
|
|
43
|
+
export declare function listAvailableVersions(projectPath: string, docType: string): string[];
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/versioning/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI7D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAClB,YAAY,GAAG,IAAI,CAoCrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,GACd,YAAY,EAAE,CAShB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAgBf;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BpF"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Version Tracking and History Management
|
|
4
|
+
* Handles archiving and tracking documentation versions
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.archiveCurrentVersion = archiveCurrentVersion;
|
|
41
|
+
exports.getVersionHistory = getVersionHistory;
|
|
42
|
+
exports.getNextVersion = getNextVersion;
|
|
43
|
+
exports.getVersionedPath = getVersionedPath;
|
|
44
|
+
exports.listAvailableVersions = listAvailableVersions;
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const HISTORY_DIR = '.history';
|
|
48
|
+
/**
|
|
49
|
+
* Archive the current version of a generated doc
|
|
50
|
+
* Moves it to docs/generated/.history/<docType>-v<N>-<date>.md
|
|
51
|
+
* @param projectPath - Root path of the project
|
|
52
|
+
* @param docType - Type of document to archive
|
|
53
|
+
* @param state - Current vibe-doc state
|
|
54
|
+
* @returns HistoryEntry if archived, null if no current version exists
|
|
55
|
+
*/
|
|
56
|
+
function archiveCurrentVersion(projectPath, docType, state) {
|
|
57
|
+
const docsDir = path.join(projectPath, 'docs', 'generated');
|
|
58
|
+
const currentPath = path.join(docsDir, `${docType}.md`);
|
|
59
|
+
// Check if current version exists
|
|
60
|
+
if (!fs.existsSync(currentPath)) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
// Create .history directory if needed
|
|
64
|
+
const historyDir = path.join(docsDir, HISTORY_DIR);
|
|
65
|
+
if (!fs.existsSync(historyDir)) {
|
|
66
|
+
fs.mkdirSync(historyDir, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
// Get next version number
|
|
69
|
+
const nextVersion = getNextVersion(state, docType);
|
|
70
|
+
// Generate archive filename
|
|
71
|
+
const now = new Date();
|
|
72
|
+
const dateStr = now.toISOString().split('T')[0]; // YYYY-MM-DD
|
|
73
|
+
const archiveFilename = `${docType}-v${nextVersion}-${dateStr}.md`;
|
|
74
|
+
const archivePath = path.join(historyDir, archiveFilename);
|
|
75
|
+
// Move current to archive
|
|
76
|
+
fs.renameSync(currentPath, archivePath);
|
|
77
|
+
// Create history entry
|
|
78
|
+
const historyEntry = {
|
|
79
|
+
docType,
|
|
80
|
+
version: `v${nextVersion}`,
|
|
81
|
+
generatedAt: new Date().toISOString(),
|
|
82
|
+
path: path.relative(projectPath, archivePath),
|
|
83
|
+
};
|
|
84
|
+
return historyEntry;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get version history for a specific doc type
|
|
88
|
+
* @param state - Current vibe-doc state
|
|
89
|
+
* @param docType - Type of document
|
|
90
|
+
* @returns Array of HistoryEntry for this doc type, sorted by version descending
|
|
91
|
+
*/
|
|
92
|
+
function getVersionHistory(state, docType) {
|
|
93
|
+
return state.history
|
|
94
|
+
.filter((entry) => entry.docType === docType)
|
|
95
|
+
.sort((a, b) => {
|
|
96
|
+
// Extract version numbers: "v1", "v2", etc.
|
|
97
|
+
const aNum = parseInt(a.version.replace('v', ''), 10);
|
|
98
|
+
const bNum = parseInt(b.version.replace('v', ''), 10);
|
|
99
|
+
return bNum - aNum; // Descending
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the next version number for a doc type
|
|
104
|
+
* @param state - Current vibe-doc state
|
|
105
|
+
* @param docType - Type of document
|
|
106
|
+
* @returns Next version number (count + 1)
|
|
107
|
+
*/
|
|
108
|
+
function getNextVersion(state, docType) {
|
|
109
|
+
const history = getVersionHistory(state, docType);
|
|
110
|
+
if (history.length === 0) {
|
|
111
|
+
return 1;
|
|
112
|
+
}
|
|
113
|
+
// Extract the highest version number and increment
|
|
114
|
+
const highestVersion = parseInt(history[0].version.replace('v', ''), 10);
|
|
115
|
+
return highestVersion + 1;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get the full path to a versioned document
|
|
119
|
+
* @param projectPath - Root path of the project
|
|
120
|
+
* @param docType - Type of document
|
|
121
|
+
* @param version - Version number (e.g., "v1", "v2")
|
|
122
|
+
* @returns Full path to the versioned document, or null if not found
|
|
123
|
+
*/
|
|
124
|
+
function getVersionedPath(projectPath, docType, version) {
|
|
125
|
+
const historyDir = path.join(projectPath, 'docs', 'generated', HISTORY_DIR);
|
|
126
|
+
if (!fs.existsSync(historyDir)) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
// Look for files matching pattern: <docType>-<version>-*.md
|
|
130
|
+
const files = fs.readdirSync(historyDir);
|
|
131
|
+
const versionedFile = files.find((f) => f.startsWith(`${docType}-${version}-`) && f.endsWith('.md'));
|
|
132
|
+
if (!versionedFile) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return path.join(historyDir, versionedFile);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* List all available versions for a doc type on disk
|
|
139
|
+
* @param projectPath - Root path of the project
|
|
140
|
+
* @param docType - Type of document
|
|
141
|
+
* @returns Array of version strings (e.g., ["v2", "v1"])
|
|
142
|
+
*/
|
|
143
|
+
function listAvailableVersions(projectPath, docType) {
|
|
144
|
+
const historyDir = path.join(projectPath, 'docs', 'generated', HISTORY_DIR);
|
|
145
|
+
if (!fs.existsSync(historyDir)) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
const files = fs.readdirSync(historyDir);
|
|
149
|
+
const versions = new Set();
|
|
150
|
+
for (const file of files) {
|
|
151
|
+
if (file.startsWith(`${docType}-v`) && file.endsWith('.md')) {
|
|
152
|
+
// Extract version from filename: <docType>-v<N>-<date>.md
|
|
153
|
+
const match = file.match(new RegExp(`^${docType}-(v\\d+)-`));
|
|
154
|
+
if (match) {
|
|
155
|
+
versions.add(match[1]);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Sort descending
|
|
160
|
+
return Array.from(versions).sort((a, b) => {
|
|
161
|
+
const aNum = parseInt(a.replace('v', ''), 10);
|
|
162
|
+
const bNum = parseInt(b.replace('v', ''), 10);
|
|
163
|
+
return bNum - aNum;
|
|
164
|
+
});
|
|
165
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@esthernandez/vibe-doc",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Vibe Doc CLI - Command-line interface for documentation generation",
|
|
5
|
+
"author": "Estevan Hernandez / 626Labs",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"bin": {
|
|
8
|
+
"vibe-doc": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc && npm run build:copy-templates",
|
|
17
|
+
"build:copy-templates": "node scripts/copy-templates.js",
|
|
18
|
+
"dev": "tsx watch src/index.ts",
|
|
19
|
+
"start": "node dist/index.js",
|
|
20
|
+
"type-check": "tsc --noEmit",
|
|
21
|
+
"clean": "rm -rf dist"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"commander": "^11.1.0",
|
|
25
|
+
"simple-git": "^3.22.0",
|
|
26
|
+
"fast-glob": "^3.3.2",
|
|
27
|
+
"docx": "^8.5.0",
|
|
28
|
+
"diff": "^5.1.0",
|
|
29
|
+
"marked": "^11.1.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"typescript": "^5.3.3",
|
|
33
|
+
"tsx": "^4.7.0",
|
|
34
|
+
"@types/node": "^20.10.6",
|
|
35
|
+
"@types/diff": "^5.0.9"
|
|
36
|
+
},
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=18.0.0"
|
|
39
|
+
}
|
|
40
|
+
}
|