@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.
Files changed (95) hide show
  1. package/dist/checker/index.d.ts +34 -0
  2. package/dist/checker/index.d.ts.map +1 -0
  3. package/dist/checker/index.js +154 -0
  4. package/dist/checker/staleness.d.ts +26 -0
  5. package/dist/checker/staleness.d.ts.map +1 -0
  6. package/dist/checker/staleness.js +56 -0
  7. package/dist/classifier/index.d.ts +26 -0
  8. package/dist/classifier/index.d.ts.map +1 -0
  9. package/dist/classifier/index.js +146 -0
  10. package/dist/classifier/llm-prompt.d.ts +12 -0
  11. package/dist/classifier/llm-prompt.d.ts.map +1 -0
  12. package/dist/classifier/llm-prompt.js +123 -0
  13. package/dist/classifier/scoring-engine.d.ts +41 -0
  14. package/dist/classifier/scoring-engine.d.ts.map +1 -0
  15. package/dist/classifier/scoring-engine.js +197 -0
  16. package/dist/classifier/signals.d.ts +16 -0
  17. package/dist/classifier/signals.d.ts.map +1 -0
  18. package/dist/classifier/signals.js +305 -0
  19. package/dist/gap-analyzer/breadcrumbs.d.ts +18 -0
  20. package/dist/gap-analyzer/breadcrumbs.d.ts.map +1 -0
  21. package/dist/gap-analyzer/breadcrumbs.js +314 -0
  22. package/dist/gap-analyzer/index.d.ts +13 -0
  23. package/dist/gap-analyzer/index.d.ts.map +1 -0
  24. package/dist/gap-analyzer/index.js +88 -0
  25. package/dist/gap-analyzer/matrix.d.ts +29 -0
  26. package/dist/gap-analyzer/matrix.d.ts.map +1 -0
  27. package/dist/gap-analyzer/matrix.js +137 -0
  28. package/dist/gap-analyzer/tier-assigner.d.ts +22 -0
  29. package/dist/gap-analyzer/tier-assigner.d.ts.map +1 -0
  30. package/dist/gap-analyzer/tier-assigner.js +112 -0
  31. package/dist/generator/docx-writer.d.ts +15 -0
  32. package/dist/generator/docx-writer.d.ts.map +1 -0
  33. package/dist/generator/docx-writer.js +271 -0
  34. package/dist/generator/extractor.d.ts +11 -0
  35. package/dist/generator/extractor.d.ts.map +1 -0
  36. package/dist/generator/extractor.js +459 -0
  37. package/dist/generator/index.d.ts +25 -0
  38. package/dist/generator/index.d.ts.map +1 -0
  39. package/dist/generator/index.js +106 -0
  40. package/dist/generator/markdown-writer.d.ts +27 -0
  41. package/dist/generator/markdown-writer.d.ts.map +1 -0
  42. package/dist/generator/markdown-writer.js +85 -0
  43. package/dist/index.d.ts +7 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +372 -0
  46. package/dist/scanner/artifact-scanner.d.ts +16 -0
  47. package/dist/scanner/artifact-scanner.d.ts.map +1 -0
  48. package/dist/scanner/artifact-scanner.js +189 -0
  49. package/dist/scanner/code-scanner.d.ts +17 -0
  50. package/dist/scanner/code-scanner.d.ts.map +1 -0
  51. package/dist/scanner/code-scanner.js +69 -0
  52. package/dist/scanner/file-scanner.d.ts +16 -0
  53. package/dist/scanner/file-scanner.d.ts.map +1 -0
  54. package/dist/scanner/file-scanner.js +119 -0
  55. package/dist/scanner/git-scanner.d.ts +10 -0
  56. package/dist/scanner/git-scanner.d.ts.map +1 -0
  57. package/dist/scanner/git-scanner.js +120 -0
  58. package/dist/scanner/index.d.ts +15 -0
  59. package/dist/scanner/index.d.ts.map +1 -0
  60. package/dist/scanner/index.js +106 -0
  61. package/dist/state/index.d.ts +20 -0
  62. package/dist/state/index.d.ts.map +1 -0
  63. package/dist/state/index.js +141 -0
  64. package/dist/state/schema.d.ts +101 -0
  65. package/dist/state/schema.d.ts.map +1 -0
  66. package/dist/state/schema.js +6 -0
  67. package/dist/templates/embedded/adr.md +45 -0
  68. package/dist/templates/embedded/api-spec.md +55 -0
  69. package/dist/templates/embedded/data-model.md +55 -0
  70. package/dist/templates/embedded/deployment-procedure.md +63 -0
  71. package/dist/templates/embedded/runbook.md +55 -0
  72. package/dist/templates/embedded/test-plan.md +55 -0
  73. package/dist/templates/embedded/threat-model.md +47 -0
  74. package/dist/templates/index.d.ts +20 -0
  75. package/dist/templates/index.d.ts.map +1 -0
  76. package/dist/templates/index.js +106 -0
  77. package/dist/templates/registry.d.ts +31 -0
  78. package/dist/templates/registry.d.ts.map +1 -0
  79. package/dist/templates/registry.js +172 -0
  80. package/dist/templates/renderer.d.ts +26 -0
  81. package/dist/templates/renderer.d.ts.map +1 -0
  82. package/dist/templates/renderer.js +145 -0
  83. package/dist/utils/language-detect.d.ts +14 -0
  84. package/dist/utils/language-detect.d.ts.map +1 -0
  85. package/dist/utils/language-detect.js +58 -0
  86. package/dist/utils/logger.d.ts +16 -0
  87. package/dist/utils/logger.d.ts.map +1 -0
  88. package/dist/utils/logger.js +35 -0
  89. package/dist/versioning/differ.d.ts +20 -0
  90. package/dist/versioning/differ.d.ts.map +1 -0
  91. package/dist/versioning/differ.js +160 -0
  92. package/dist/versioning/index.d.ts +44 -0
  93. package/dist/versioning/index.d.ts.map +1 -0
  94. package/dist/versioning/index.js +165 -0
  95. 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
+ }