@noyrax/documentation-system-plugin 1.0.4-beta.1 → 1.0.4-beta.3

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 (84) hide show
  1. package/docs/index/symbols.jsonl +78 -31
  2. package/docs/modules/mcp__src__tools__drift.ts.md +6 -2
  3. package/docs/modules/mcp__src__tools__impact.ts.md +3 -0
  4. package/docs/modules/package.json.md +10 -11
  5. package/docs/modules/scripts__verify-adrs.js.md +2 -2
  6. package/docs/modules/src__core__consolidation.ts.md +0 -1
  7. package/docs/modules/src__core__scanner.ts.md +0 -1
  8. package/docs/modules/src__index__index.ts.md +18 -0
  9. package/docs/modules/src__parsers__json-yaml.ts.md +16 -1
  10. package/docs/modules/src__parsers__types.ts.md +18 -0
  11. package/docs/system/CHANGE_REPORT.md +14 -7
  12. package/docs/system/DEPENDENCIES.md +0 -27
  13. package/docs/system/DEPENDENCY_GRAPH.md +267 -299
  14. package/docs/system/SYSTEM_METADATA.json +37 -0
  15. package/package.json +3 -4
  16. package/noyrax-5d-database-plugin-0.1.8.tgz +0 -0
  17. package/out/cache/ast-cache.js +0 -69
  18. package/out/cache/ast-cache.js.map +0 -1
  19. package/out/cache/dependencies-cache.js +0 -73
  20. package/out/cache/dependencies-cache.js.map +0 -1
  21. package/out/cache/output-cache.js +0 -69
  22. package/out/cache/output-cache.js.map +0 -1
  23. package/out/cache/signature-cache.js +0 -60
  24. package/out/cache/signature-cache.js.map +0 -1
  25. package/out/cli/generate-cli.js +0 -330
  26. package/out/cli/generate-cli.js.map +0 -1
  27. package/out/cli/scan-cli.js +0 -151
  28. package/out/cli/scan-cli.js.map +0 -1
  29. package/out/cli/validate-cli.js +0 -258
  30. package/out/cli/validate-cli.js.map +0 -1
  31. package/out/core/async.js +0 -38
  32. package/out/core/async.js.map +0 -1
  33. package/out/core/consolidation.js +0 -230
  34. package/out/core/consolidation.js.map +0 -1
  35. package/out/core/git.js +0 -48
  36. package/out/core/git.js.map +0 -1
  37. package/out/core/language-detection.js +0 -29
  38. package/out/core/language-detection.js.map +0 -1
  39. package/out/core/scanner.js +0 -179
  40. package/out/core/scanner.js.map +0 -1
  41. package/out/core/signature-formatter.js +0 -162
  42. package/out/core/signature-formatter.js.map +0 -1
  43. package/out/core/symbol-classifier.js +0 -96
  44. package/out/core/symbol-classifier.js.map +0 -1
  45. package/out/core/symbols.js +0 -24
  46. package/out/core/symbols.js.map +0 -1
  47. package/out/drift/index.js +0 -28
  48. package/out/drift/index.js.map +0 -1
  49. package/out/extension.js +0 -984
  50. package/out/extension.js.map +0 -1
  51. package/out/generator/adr-linker.js +0 -216
  52. package/out/generator/adr-linker.js.map +0 -1
  53. package/out/generator/change-report.js +0 -124
  54. package/out/generator/change-report.js.map +0 -1
  55. package/out/generator/dependency-graph.js +0 -98
  56. package/out/generator/dependency-graph.js.map +0 -1
  57. package/out/generator/index.js +0 -117
  58. package/out/generator/index.js.map +0 -1
  59. package/out/generator/module-doc.js +0 -438
  60. package/out/generator/module-doc.js.map +0 -1
  61. package/out/index/index.js +0 -147
  62. package/out/index/index.js.map +0 -1
  63. package/out/logging/index.js +0 -24
  64. package/out/logging/index.js.map +0 -1
  65. package/out/parsers/dependencies.js +0 -126
  66. package/out/parsers/dependencies.js.map +0 -1
  67. package/out/parsers/json-yaml.js +0 -90
  68. package/out/parsers/json-yaml.js.map +0 -1
  69. package/out/parsers/python.js +0 -160
  70. package/out/parsers/python.js.map +0 -1
  71. package/out/parsers/ts-js.js +0 -397
  72. package/out/parsers/ts-js.js.map +0 -1
  73. package/out/parsers/types.js +0 -3
  74. package/out/parsers/types.js.map +0 -1
  75. package/out/ui/commands-provider.js +0 -91
  76. package/out/ui/commands-provider.js.map +0 -1
  77. package/out/ui/status-bar.js +0 -85
  78. package/out/ui/status-bar.js.map +0 -1
  79. package/out/validator/index.js +0 -185
  80. package/out/validator/index.js.map +0 -1
  81. package/out/validator/signature-matching.js +0 -261
  82. package/out/validator/signature-matching.js.map +0 -1
  83. package/out/validator/status.js +0 -38
  84. package/out/validator/status.js.map +0 -1
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.saveAstHashCache = exports.loadAstHashCache = exports.computeFileHash = void 0;
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- const crypto_1 = require("crypto");
30
- /**
31
- * @public
32
- * Compute hash for file content
33
- */
34
- function computeFileHash(content) {
35
- return (0, crypto_1.createHash)('sha256').update(content).digest('hex').slice(0, 16);
36
- }
37
- exports.computeFileHash = computeFileHash;
38
- /**
39
- * @public
40
- * Load AST hash cache from file
41
- */
42
- function loadAstHashCache(cacheFile) {
43
- try {
44
- if (!fs.existsSync(cacheFile))
45
- return null;
46
- const raw = fs.readFileSync(cacheFile, 'utf8');
47
- const data = JSON.parse(raw);
48
- if (!data || !Array.isArray(data.entries))
49
- return null;
50
- return data;
51
- }
52
- catch {
53
- return null;
54
- }
55
- }
56
- exports.loadAstHashCache = loadAstHashCache;
57
- /**
58
- * @public
59
- * Save AST hash cache to file
60
- */
61
- function saveAstHashCache(cacheDir, data) {
62
- if (!fs.existsSync(cacheDir))
63
- fs.mkdirSync(cacheDir, { recursive: true });
64
- const file = path.join(cacheDir, 'ast-hashes.json');
65
- const sorted = { ...data, entries: [...data.entries].sort((a, b) => a.path.localeCompare(b.path)) };
66
- fs.writeFileSync(file, JSON.stringify(sorted, null, 2) + '\n', 'utf8');
67
- }
68
- exports.saveAstHashCache = saveAstHashCache;
69
- //# sourceMappingURL=ast-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ast-cache.js","sourceRoot":"","sources":["../../src/cache/ast-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAoC;AAYpC;;;GAGG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC3C,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAFD,0CAEC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,SAAiB;IAC9C,IAAI;QACA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,IAAI,CAAC;KACf;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAVD,4CAUC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,QAAgB,EAAE,IAAsB;IACrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IACpG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AALD,4CAKC"}
@@ -1,73 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.saveDependenciesCache = exports.loadDependenciesCache = void 0;
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- /**
30
- * @public
31
- * Load dependencies cache from file
32
- */
33
- function loadDependenciesCache(cacheFile) {
34
- try {
35
- if (!fs.existsSync(cacheFile))
36
- return null;
37
- const raw = fs.readFileSync(cacheFile, 'utf8');
38
- const data = JSON.parse(raw);
39
- if (!data || data.version !== 1 || !Array.isArray(data.entries))
40
- return null;
41
- return data;
42
- }
43
- catch {
44
- return null;
45
- }
46
- }
47
- exports.loadDependenciesCache = loadDependenciesCache;
48
- /**
49
- * @public
50
- * Save dependencies cache to file
51
- */
52
- function saveDependenciesCache(cacheDir, data) {
53
- if (!fs.existsSync(cacheDir))
54
- fs.mkdirSync(cacheDir, { recursive: true });
55
- const file = path.join(cacheDir, 'dependencies.json');
56
- const sorted = {
57
- ...data,
58
- entries: [...data.entries].sort((a, b) => {
59
- if (a.from !== b.from)
60
- return a.from.localeCompare(b.from);
61
- if (a.to !== b.to)
62
- return a.to.localeCompare(b.to);
63
- if (a.type !== b.type)
64
- return a.type.localeCompare(b.type);
65
- const aSymbols = (a.symbols || []).join(',');
66
- const bSymbols = (b.symbols || []).join(',');
67
- return aSymbols.localeCompare(bSymbols);
68
- })
69
- };
70
- fs.writeFileSync(file, JSON.stringify(sorted, null, 2) + '\n', 'utf8');
71
- }
72
- exports.saveDependenciesCache = saveDependenciesCache;
73
- //# sourceMappingURL=dependencies-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependencies-cache.js","sourceRoot":"","sources":["../../src/cache/dependencies-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAwB7B;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,SAAiB;IACnD,IAAI;QACA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACtD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7E,OAAO,IAAI,CAAC;KACf;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAVD,sDAUC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,QAAgB,EAAE,IAA2B;IAC/E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG;QACX,GAAG,IAAI;QACP,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;KACL,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAfD,sDAeC"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.saveOutputHashCache = exports.loadOutputHashCache = exports.computeContentHash = void 0;
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- const crypto_1 = require("crypto");
30
- /**
31
- * @public
32
- * Compute content hash for caching
33
- */
34
- function computeContentHash(content) {
35
- return (0, crypto_1.createHash)('sha256').update(content).digest('hex').slice(0, 16);
36
- }
37
- exports.computeContentHash = computeContentHash;
38
- /**
39
- * @public
40
- * Load output hash cache from file
41
- */
42
- function loadOutputHashCache(cacheFile) {
43
- try {
44
- if (!fs.existsSync(cacheFile))
45
- return null;
46
- const raw = fs.readFileSync(cacheFile, 'utf8');
47
- const data = JSON.parse(raw);
48
- if (!data || !Array.isArray(data.entries))
49
- return null;
50
- return data;
51
- }
52
- catch {
53
- return null;
54
- }
55
- }
56
- exports.loadOutputHashCache = loadOutputHashCache;
57
- /**
58
- * @public
59
- * Save output hash cache to file
60
- */
61
- function saveOutputHashCache(cacheDir, data) {
62
- if (!fs.existsSync(cacheDir))
63
- fs.mkdirSync(cacheDir, { recursive: true });
64
- const file = path.join(cacheDir, 'output-hashes.json');
65
- const sorted = { ...data, entries: [...data.entries].sort((a, b) => a.path.localeCompare(b.path)) };
66
- fs.writeFileSync(file, JSON.stringify(sorted, null, 2) + '\n', 'utf8');
67
- }
68
- exports.saveOutputHashCache = saveOutputHashCache;
69
- //# sourceMappingURL=output-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output-cache.js","sourceRoot":"","sources":["../../src/cache/output-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,mCAAoC;AAYpC;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAC9C,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAFD,gDAEC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,SAAiB;IACjD,IAAI;QACA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACpD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,IAAI,CAAC;KACf;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAVD,kDAUC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,QAAgB,EAAE,IAAyB;IAC3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IACpG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AALD,kDAKC"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.saveSignatureCache = exports.loadSignatureCache = void 0;
27
- const fs = __importStar(require("fs"));
28
- const path = __importStar(require("path"));
29
- /**
30
- * @public
31
- * Load signature cache from file
32
- */
33
- function loadSignatureCache(cacheFile) {
34
- try {
35
- if (!fs.existsSync(cacheFile))
36
- return null;
37
- const raw = fs.readFileSync(cacheFile, 'utf8');
38
- const data = JSON.parse(raw);
39
- if (!data || !Array.isArray(data.entries))
40
- return null;
41
- return data;
42
- }
43
- catch {
44
- return null;
45
- }
46
- }
47
- exports.loadSignatureCache = loadSignatureCache;
48
- /**
49
- * @public
50
- * Save signature cache to file
51
- */
52
- function saveSignatureCache(cacheDir, data) {
53
- if (!fs.existsSync(cacheDir))
54
- fs.mkdirSync(cacheDir, { recursive: true });
55
- const file = path.join(cacheDir, 'signatures.json');
56
- const sorted = { ...data, entries: [...data.entries].sort((a, b) => a.baseId.localeCompare(b.baseId)) };
57
- fs.writeFileSync(file, JSON.stringify(sorted, null, 2) + '\n', 'utf8');
58
- }
59
- exports.saveSignatureCache = saveSignatureCache;
60
- //# sourceMappingURL=signature-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature-cache.js","sourceRoot":"","sources":["../../src/cache/signature-cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAY7B;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,SAAiB;IAChD,IAAI;QACA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,IAAI,CAAC;KACf;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAVD,gDAUC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAwB;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACxG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AALD,gDAKC"}
@@ -1,330 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- /**
4
- * CLI-Tool für vollständige Dokumentationsgenerierung
5
- *
6
- * Generiert alle Dokumentations-Artefakte ohne VS Code APIs:
7
- * - docs/modules/*.md (Modul-Dokumentation)
8
- * - docs/index/symbols.jsonl (Symbol-Index mit DependencyEntry[])
9
- * - docs/system/DEPENDENCIES.md (Import-Übersicht)
10
- * - docs/system/DEPENDENCY_GRAPH.md (Mermaid-Graph)
11
- * - docs/system/CHANGE_REPORT.md (Änderungsprotokoll)
12
- *
13
- * Wird von postcompile Hook in anderen Plugins aufgerufen.
14
- */
15
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- var desc = Object.getOwnPropertyDescriptor(m, k);
18
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
- desc = { enumerable: true, get: function() { return m[k]; } };
20
- }
21
- Object.defineProperty(o, k2, desc);
22
- }) : (function(o, m, k, k2) {
23
- if (k2 === undefined) k2 = k;
24
- o[k2] = m[k];
25
- }));
26
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
- Object.defineProperty(o, "default", { enumerable: true, value: v });
28
- }) : function(o, v) {
29
- o["default"] = v;
30
- });
31
- var __importStar = (this && this.__importStar) || function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.runGenerateCli = void 0;
40
- const path = __importStar(require("path"));
41
- const fs = __importStar(require("fs"));
42
- const scanner_1 = require("../core/scanner");
43
- const ts_js_1 = require("../parsers/ts-js");
44
- const json_yaml_1 = require("../parsers/json-yaml");
45
- const python_1 = require("../parsers/python");
46
- const dependencies_1 = require("../parsers/dependencies");
47
- const consolidation_1 = require("../core/consolidation");
48
- const index_1 = require("../generator/index");
49
- const index_2 = require("../index/index");
50
- const dependency_graph_1 = require("../generator/dependency-graph");
51
- const change_report_1 = require("../generator/change-report");
52
- const ast_cache_1 = require("../cache/ast-cache");
53
- const dependencies_cache_1 = require("../cache/dependencies-cache");
54
- const output_cache_1 = require("../cache/output-cache");
55
- const signature_cache_1 = require("../cache/signature-cache");
56
- const index_3 = require("../drift/index");
57
- const git_1 = require("../core/git");
58
- function log(logs, message, verbose) {
59
- logs.push(message);
60
- if (verbose) {
61
- console.log(message);
62
- }
63
- }
64
- async function runGenerateCli(options = {}) {
65
- const startTime = Date.now();
66
- const logs = [];
67
- const errors = [];
68
- const verbose = options.verbose ?? false;
69
- try {
70
- const workspaceRoot = options.workspaceRoot || process.cwd();
71
- const outputPath = options.outputPath || 'docs';
72
- const incremental = options.incremental ?? true;
73
- log(logs, `[generate] Workspace: ${workspaceRoot}`, verbose);
74
- log(logs, `[generate] Output: ${outputPath}`, verbose);
75
- log(logs, `[generate] Mode: ${incremental ? 'incremental' : 'full'}`, verbose);
76
- // Verzeichnisse erstellen
77
- const docsDir = path.join(workspaceRoot, outputPath);
78
- const modulesDir = path.join(docsDir, 'modules');
79
- const indexDir = path.join(docsDir, 'index');
80
- const systemDir = path.join(docsDir, 'system');
81
- const cacheDir = path.join(docsDir, '.cache');
82
- for (const dir of [docsDir, modulesDir, indexDir, systemDir, cacheDir]) {
83
- if (!fs.existsSync(dir)) {
84
- fs.mkdirSync(dir, { recursive: true });
85
- }
86
- }
87
- // Workspace scannen
88
- const scannedAll = (0, scanner_1.scanWorkspace)({ workspaceRoot }, false);
89
- log(logs, `[scan] ${scannedAll.length} Dateien gefunden`, verbose);
90
- // Git-basierte Filterung für inkrementelle Läufe
91
- let scanned = scannedAll;
92
- let isFirstRun = false;
93
- const astCacheFile = path.join(cacheDir, 'ast-hashes.json');
94
- const prevAst = (0, ast_cache_1.loadAstHashCache)(astCacheFile);
95
- if (!prevAst || (prevAst.entries ?? []).length === 0) {
96
- isFirstRun = true;
97
- log(logs, `[cache] Erster Lauf - kein AST-Cache vorhanden`, verbose);
98
- }
99
- if (incremental && !isFirstRun) {
100
- const changed = (0, git_1.getChangedFiles)(workspaceRoot);
101
- if (changed && changed.size > 0) {
102
- const changedSet = new Set(changed);
103
- scanned = scannedAll.filter(f => changedSet.has(f.repositoryRelativePath));
104
- log(logs, `[git] ${scanned.length} geänderte Dateien (von ${scannedAll.length})`, verbose);
105
- }
106
- }
107
- // Parser initialisieren
108
- const parsers = [
109
- new ts_js_1.TsJsParser(),
110
- new json_yaml_1.JsonYamlParser(),
111
- new python_1.PythonParser()
112
- ];
113
- const allSymbols = [];
114
- const allDependencies = [];
115
- const astMap = new Map((prevAst?.entries ?? []).map(e => [e.path, e.hash]));
116
- const nextAstEntries = [];
117
- const actuallyParsedFiles = new Set();
118
- // Dateien parsen
119
- for (const f of scanned) {
120
- try {
121
- const content = fs.readFileSync(f.absolutePath, 'utf8');
122
- const fileHash = (0, ast_cache_1.computeFileHash)(content);
123
- nextAstEntries.push({ path: f.repositoryRelativePath, hash: fileHash });
124
- // Cache-Check (außer beim ersten Lauf oder im Full-Modus)
125
- if (!isFirstRun && incremental) {
126
- const unchanged = astMap.get(f.repositoryRelativePath) === fileHash;
127
- if (unchanged) {
128
- continue;
129
- }
130
- }
131
- actuallyParsedFiles.add(f.repositoryRelativePath);
132
- let symbols = [];
133
- let dependencies = [];
134
- if (f.language === 'ts' || f.language === 'js') {
135
- const tsParser = parsers[0];
136
- symbols = tsParser.parse(f.absolutePath, content)
137
- .map(s => ({ ...s, filePath: f.repositoryRelativePath }));
138
- // SourceFile für Dependency-Extraktion
139
- const sourceFile = tsParser.project.getSourceFile(f.absolutePath);
140
- if (sourceFile) {
141
- dependencies = (0, dependencies_1.extractTsJsDependencies)(sourceFile, f.repositoryRelativePath);
142
- }
143
- }
144
- else if (f.language === 'json' || f.language === 'yaml' || f.language === 'markdown') {
145
- symbols = parsers[1].parse(f.absolutePath, content)
146
- .map(s => ({ ...s, filePath: f.repositoryRelativePath }));
147
- }
148
- else if (f.language === 'python') {
149
- symbols = parsers[2].parse(f.absolutePath, content)
150
- .map(s => ({ ...s, filePath: f.repositoryRelativePath }));
151
- dependencies = (0, dependencies_1.extractPythonDependencies)(content, f.repositoryRelativePath);
152
- }
153
- allSymbols.push(...symbols);
154
- allDependencies.push(...dependencies);
155
- }
156
- catch (error) {
157
- const message = error instanceof Error ? error.message : String(error);
158
- errors.push(`Error parsing ${f.repositoryRelativePath}: ${message}`);
159
- log(logs, `[warn] Fehler beim Parsen von ${f.repositoryRelativePath}: ${message}`, verbose);
160
- }
161
- }
162
- log(logs, `[parse] ${allSymbols.length} Symbole, ${allDependencies.length} Dependencies (${actuallyParsedFiles.size} Dateien geparst)`, verbose);
163
- // Union-Bildung
164
- const depCacheFile = path.join(cacheDir, 'dependencies.json');
165
- const depCachePrev = (0, dependencies_cache_1.loadDependenciesCache)(depCacheFile);
166
- const deletedFilesFromGit = (0, git_1.getDeletedFiles)(workspaceRoot) ?? new Set();
167
- const dependenciesUnion = (0, consolidation_1.buildDependenciesUnion)(allDependencies, depCachePrev?.entries ?? [], actuallyParsedFiles, deletedFilesFromGit);
168
- // Symbol-Union aus Index laden
169
- const indexFile = path.join(indexDir, 'symbols.jsonl');
170
- let symbolsPrev = [];
171
- if (fs.existsSync(indexFile)) {
172
- try {
173
- symbolsPrev = (0, index_2.readSymbolsFromIndex)(indexFile);
174
- }
175
- catch {
176
- symbolsPrev = [];
177
- }
178
- }
179
- const scannedFilesSet = new Set(scannedAll.map(f => f.repositoryRelativePath));
180
- const symbolsUnion = (0, consolidation_1.buildSymbolsUnion)(allSymbols, symbolsPrev, actuallyParsedFiles, deletedFilesFromGit, scannedFilesSet);
181
- log(logs, `[union] Symbole: ${allSymbols.length} neu + ${symbolsPrev.length} gecacht → ${symbolsUnion.length} Union`, verbose);
182
- log(logs, `[union] Dependencies: ${allDependencies.length} neu → ${dependenciesUnion.length} Union`, verbose);
183
- // AST-Cache speichern
184
- if (nextAstEntries.length > 0) {
185
- (0, ast_cache_1.saveAstHashCache)(cacheDir, { version: 1, entries: nextAstEntries });
186
- }
187
- // Modul-Dokumentation generieren
188
- const existingDocs = new Map();
189
- if (fs.existsSync(modulesDir)) {
190
- const existingFiles = fs.readdirSync(modulesDir).filter(f => f.endsWith('.md'));
191
- for (const file of existingFiles) {
192
- const filePath = path.join(modulesDir, file);
193
- const content = fs.readFileSync(filePath, 'utf8');
194
- const originalPath = file.replace(/__/g, '/').replace(/\.md$/, '');
195
- existingDocs.set(originalPath, content);
196
- }
197
- }
198
- const files = (0, index_1.generatePerFileDocs)(symbolsUnion, modulesDir, existingDocs);
199
- // Output-Hash-Cache für inkrementelles Schreiben
200
- const outHashFile = path.join(cacheDir, 'output-hashes.json');
201
- const prevOut = (0, output_cache_1.loadOutputHashCache)(outHashFile);
202
- const prevMap = new Map((prevOut?.entries ?? []).map(e => [e.path, e.hash]));
203
- const newEntries = [];
204
- for (const [repoRel, content] of files.entries()) {
205
- const safe = repoRel.replace(/[^a-zA-Z0-9_\-./]/g, '_').replace(/\//g, '__');
206
- const target = path.join(modulesDir, `${safe}.md`);
207
- const hash = (0, output_cache_1.computeContentHash)(content);
208
- newEntries.push({ path: safe + '.md', hash });
209
- const before = prevMap.get(safe + '.md');
210
- if (before !== hash || !fs.existsSync(target)) {
211
- fs.writeFileSync(target, content, 'utf8');
212
- }
213
- }
214
- if (newEntries.length > 0) {
215
- (0, output_cache_1.saveOutputHashCache)(cacheDir, { version: 1, entries: newEntries });
216
- }
217
- // Symbol-Index generieren (mit DependencyEntry[] Format!)
218
- const indexRows = (0, index_2.buildIndexFromSymbols)(symbolsUnion, dependenciesUnion);
219
- if (symbolsUnion.length > 0) {
220
- (0, index_2.writeJsonlIndex)(indexRows, indexFile);
221
- }
222
- log(logs, `[index] ${indexRows.length} Einträge in symbols.jsonl geschrieben`, verbose);
223
- // Dependency-Graph generieren
224
- const mermaidGraph = (0, dependency_graph_1.generateMermaidGraph)(dependenciesUnion);
225
- const depOverview = (0, dependency_graph_1.generateDependencyOverview)(dependenciesUnion);
226
- fs.writeFileSync(path.join(systemDir, 'DEPENDENCY_GRAPH.md'), mermaidGraph, 'utf8');
227
- fs.writeFileSync(path.join(systemDir, 'DEPENDENCIES.md'), depOverview, 'utf8');
228
- // Dependencies-Cache speichern
229
- if (dependenciesUnion.length > 0) {
230
- (0, dependencies_cache_1.saveDependenciesCache)(cacheDir, { version: 1, entries: dependenciesUnion });
231
- }
232
- // Signatur-Cache und Drift-Detection
233
- const prev = (0, signature_cache_1.loadSignatureCache)(path.join(cacheDir, 'signatures.json'));
234
- const entries = (0, index_3.computeCacheEntries)(symbolsUnion);
235
- if (entries.length > 0) {
236
- (0, signature_cache_1.saveSignatureCache)(cacheDir, { version: 1, entries });
237
- }
238
- const drift = (0, index_3.detectDrift)(prev, entries);
239
- // Change-Report generieren
240
- const changes = (0, change_report_1.extractChangesFromModuleDocs)(files);
241
- const prevDepCount = (depCachePrev?.entries ?? []).length;
242
- const depAdded = dependenciesUnion.length > prevDepCount ? dependenciesUnion.length - prevDepCount : 0;
243
- const depRemoved = prevDepCount > dependenciesUnion.length ? prevDepCount - dependenciesUnion.length : 0;
244
- const changeReport = (0, change_report_1.generateChangeReport)({
245
- runType: incremental ? 'incremental' : 'full',
246
- parsedFiles: scanned.length,
247
- skippedFiles: scanned.length - actuallyParsedFiles.size,
248
- symbolsAdded: changes.symbolsAdded,
249
- symbolsRemoved: changes.symbolsRemoved,
250
- symbolsChanged: changes.symbolsChanged,
251
- dependenciesAdded: depAdded,
252
- dependenciesRemoved: depRemoved,
253
- totalDependencies: dependenciesUnion.length,
254
- validationErrors: 0,
255
- validationWarnings: drift.staleSymbols.length,
256
- validationDetails: drift.staleSymbols.length > 0
257
- ? drift.staleSymbols.slice(0, 5).map(id => `Signatur-Abweichung: ${id}`)
258
- : []
259
- });
260
- fs.writeFileSync(path.join(systemDir, 'CHANGE_REPORT.md'), changeReport, 'utf8');
261
- const duration = Date.now() - startTime;
262
- log(logs, `[generate] Fertig: ${symbolsUnion.length} Symbole, ${dependenciesUnion.length} Dependencies, ${files.size} Docs (${duration}ms)`, verbose);
263
- return {
264
- status: errors.length > 0 ? 'partial' : 'success',
265
- filesProcessed: scanned.length,
266
- symbolsExtracted: symbolsUnion.length,
267
- dependenciesExtracted: dependenciesUnion.length,
268
- docsGenerated: files.size,
269
- duration,
270
- logs,
271
- errors: errors.length > 0 ? errors : undefined,
272
- };
273
- }
274
- catch (error) {
275
- const message = error instanceof Error ? error.message : String(error);
276
- errors.push(message);
277
- return {
278
- status: 'error',
279
- filesProcessed: 0,
280
- symbolsExtracted: 0,
281
- dependenciesExtracted: 0,
282
- docsGenerated: 0,
283
- duration: Date.now() - startTime,
284
- logs,
285
- errors,
286
- };
287
- }
288
- }
289
- exports.runGenerateCli = runGenerateCli;
290
- // CLI-Entry-Point
291
- if (require.main === module) {
292
- const args = process.argv.slice(2);
293
- const options = {};
294
- // Argument-Parsing
295
- for (let i = 0; i < args.length; i++) {
296
- if (args[i] === '--workspace-root' && args[i + 1]) {
297
- options.workspaceRoot = args[i + 1];
298
- i++;
299
- }
300
- else if (args[i] === '--output-path' && args[i + 1]) {
301
- options.outputPath = args[i + 1];
302
- i++;
303
- }
304
- else if (args[i] === '--full') {
305
- options.incremental = false;
306
- }
307
- else if (args[i] === '--verbose' || args[i] === '-v') {
308
- options.verbose = true;
309
- }
310
- }
311
- runGenerateCli(options)
312
- .then(result => {
313
- console.log(JSON.stringify(result, null, 2));
314
- process.exit(result.status === 'error' ? 1 : 0);
315
- })
316
- .catch(error => {
317
- console.error(JSON.stringify({
318
- status: 'error',
319
- filesProcessed: 0,
320
- symbolsExtracted: 0,
321
- dependenciesExtracted: 0,
322
- docsGenerated: 0,
323
- duration: 0,
324
- logs: [],
325
- errors: [error instanceof Error ? error.message : String(error)],
326
- }, null, 2));
327
- process.exit(1);
328
- });
329
- }
330
- //# sourceMappingURL=generate-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-cli.js","sourceRoot":"","sources":["../../src/cli/generate-cli.ts"],"names":[],"mappings":"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"}