@noyrax/5d-database-plugin 0.1.8 → 0.1.11-beta.1

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 (92) hide show
  1. package/MCP_SERVER_SETUP.md +14 -0
  2. package/README.md +49 -3
  3. package/SETUP_NEW_PROJECT.md +245 -14
  4. package/out/api/adr-api.d.ts +15 -2
  5. package/out/api/adr-api.d.ts.map +1 -1
  6. package/out/api/adr-api.js +98 -4
  7. package/out/api/adr-api.js.map +1 -1
  8. package/out/api/index.d.ts +1 -0
  9. package/out/api/index.d.ts.map +1 -1
  10. package/out/api/index.js +3 -1
  11. package/out/api/index.js.map +1 -1
  12. package/out/api/ingestion-api.d.ts +42 -0
  13. package/out/api/ingestion-api.d.ts.map +1 -0
  14. package/out/api/ingestion-api.js +148 -0
  15. package/out/api/ingestion-api.js.map +1 -0
  16. package/out/api/module-api.d.ts +11 -1
  17. package/out/api/module-api.d.ts.map +1 -1
  18. package/out/api/module-api.js +54 -2
  19. package/out/api/module-api.js.map +1 -1
  20. package/out/cli/ingest-cli.js +43 -19
  21. package/out/cli/ingest-cli.js.map +1 -1
  22. package/out/cli/merge-workspaces-cli.d.ts +3 -0
  23. package/out/cli/merge-workspaces-cli.d.ts.map +1 -0
  24. package/out/cli/merge-workspaces-cli.js +199 -0
  25. package/out/cli/merge-workspaces-cli.js.map +1 -0
  26. package/out/cli/tool-cli.js +59 -4
  27. package/out/cli/tool-cli.js.map +1 -1
  28. package/out/core/chromadb-vector-database.d.ts.map +1 -1
  29. package/out/core/chromadb-vector-database.js +6 -2
  30. package/out/core/chromadb-vector-database.js.map +1 -1
  31. package/out/core/migration-manager.d.ts +42 -2
  32. package/out/core/migration-manager.d.ts.map +1 -1
  33. package/out/core/migration-manager.js +218 -11
  34. package/out/core/migration-manager.js.map +1 -1
  35. package/out/core/multi-db-manager.d.ts +10 -0
  36. package/out/core/multi-db-manager.d.ts.map +1 -1
  37. package/out/core/multi-db-manager.js +51 -0
  38. package/out/core/multi-db-manager.js.map +1 -1
  39. package/out/ingestors/adr-ingestor.d.ts +7 -0
  40. package/out/ingestors/adr-ingestor.d.ts.map +1 -1
  41. package/out/ingestors/adr-ingestor.js +41 -9
  42. package/out/ingestors/adr-ingestor.js.map +1 -1
  43. package/out/mcp/server.d.ts +3 -0
  44. package/out/mcp/server.d.ts.map +1 -1
  45. package/out/mcp/server.js +106 -2
  46. package/out/mcp/server.js.map +1 -1
  47. package/out/mcp/tools/adr-generator.d.ts +123 -0
  48. package/out/mcp/tools/adr-generator.d.ts.map +1 -0
  49. package/out/mcp/tools/adr-generator.js +1113 -0
  50. package/out/mcp/tools/adr-generator.js.map +1 -0
  51. package/out/mcp/tools/gap-analysis.d.ts +6 -2
  52. package/out/mcp/tools/gap-analysis.d.ts.map +1 -1
  53. package/out/mcp/tools/gap-analysis.js +32 -5
  54. package/out/mcp/tools/gap-analysis.js.map +1 -1
  55. package/out/repositories/module-repository.d.ts +5 -0
  56. package/out/repositories/module-repository.d.ts.map +1 -1
  57. package/out/repositories/module-repository.js +24 -0
  58. package/out/repositories/module-repository.js.map +1 -1
  59. package/out/services/adr-context-builder.d.ts +70 -0
  60. package/out/services/adr-context-builder.d.ts.map +1 -0
  61. package/out/services/adr-context-builder.js +141 -0
  62. package/out/services/adr-context-builder.js.map +1 -0
  63. package/out/services/adr-pattern-analyzer.d.ts +75 -0
  64. package/out/services/adr-pattern-analyzer.d.ts.map +1 -0
  65. package/out/services/adr-pattern-analyzer.js +339 -0
  66. package/out/services/adr-pattern-analyzer.js.map +1 -0
  67. package/out/services/adr-reasoning-service.d.ts +63 -0
  68. package/out/services/adr-reasoning-service.d.ts.map +1 -0
  69. package/out/services/adr-reasoning-service.js +760 -0
  70. package/out/services/adr-reasoning-service.js.map +1 -0
  71. package/out/services/navigation-builder.d.ts.map +1 -1
  72. package/out/services/navigation-builder.js +70 -11
  73. package/out/services/navigation-builder.js.map +1 -1
  74. package/out/services/noyrax-integration-service.d.ts +51 -0
  75. package/out/services/noyrax-integration-service.d.ts.map +1 -0
  76. package/out/services/noyrax-integration-service.js +215 -0
  77. package/out/services/noyrax-integration-service.js.map +1 -0
  78. package/out/services/semantic-pattern-matcher.d.ts +61 -0
  79. package/out/services/semantic-pattern-matcher.d.ts.map +1 -0
  80. package/out/services/semantic-pattern-matcher.js +183 -0
  81. package/out/services/semantic-pattern-matcher.js.map +1 -0
  82. package/out/services/workflow-orchestrator.d.ts +63 -0
  83. package/out/services/workflow-orchestrator.d.ts.map +1 -0
  84. package/out/services/workflow-orchestrator.js +111 -0
  85. package/out/services/workflow-orchestrator.js.map +1 -0
  86. package/out/ui/commands.d.ts.map +1 -1
  87. package/out/ui/commands.js +112 -1
  88. package/out/ui/commands.js.map +1 -1
  89. package/out/ui/database-explorer.d.ts.map +1 -1
  90. package/out/ui/database-explorer.js +47 -1
  91. package/out/ui/database-explorer.js.map +1 -1
  92. package/package.json +22 -4
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SemanticPatternMatcher = void 0;
4
+ const semantic_search_api_1 = require("../api/semantic-search-api");
5
+ const architecture_mining_1 = require("../mcp/tools/architecture-mining");
6
+ const module_api_1 = require("../api/module-api");
7
+ const adr_api_1 = require("../api/adr-api");
8
+ /**
9
+ * Uses Semantic Search (V-Dimension) and Architecture Mining to find similar modules and their ADRs.
10
+ * Used for deterministic ADR reconstruction.
11
+ */
12
+ class SemanticPatternMatcher {
13
+ constructor(dbManager, idMapper, embeddingGenerator) {
14
+ this.dbManager = dbManager;
15
+ this.semanticSearchApi = new semantic_search_api_1.SemanticSearchApi(dbManager, embeddingGenerator);
16
+ this.architectureMiningTool = new architecture_mining_1.ArchitectureMiningTool(dbManager, idMapper);
17
+ this.moduleApi = new module_api_1.ModuleApi(dbManager);
18
+ this.adrApi = new adr_api_1.AdrApi(dbManager);
19
+ }
20
+ /**
21
+ * Finds similar modules using Semantic Search (V-Dimension).
22
+ */
23
+ async findSimilarModules(targetModule, pluginId, limit = 5) {
24
+ // Check if semantic search is available
25
+ if (!this.semanticSearchApi['embeddingGenerator'].isConfigured()) {
26
+ // Fallback: Use file path similarity
27
+ return this.findSimilarModulesByPath(targetModule, pluginId, limit);
28
+ }
29
+ // Build query from module content
30
+ const query = this.buildModuleQuery(targetModule);
31
+ try {
32
+ // Search for similar modules in X-Dimension
33
+ const results = await this.semanticSearchApi.search(query, pluginId, {
34
+ dimensions: ['X'],
35
+ limit: limit * 2 // Get more results to filter out the target module
36
+ });
37
+ // Filter out the target module
38
+ const filteredResults = results.filter(result => result.externalId !== targetModule.file_path);
39
+ // Fetch actual modules for the results
40
+ const modules = [];
41
+ for (const result of results.slice(0, limit * 2)) {
42
+ if (result.externalId === targetModule.file_path) {
43
+ continue; // Skip target module
44
+ }
45
+ const module = await this.moduleApi.getModuleByPath(result.externalId, pluginId);
46
+ if (module) {
47
+ modules.push({
48
+ module,
49
+ similarityScore: result.score
50
+ });
51
+ }
52
+ if (modules.length >= limit) {
53
+ break;
54
+ }
55
+ }
56
+ return modules;
57
+ }
58
+ catch (error) {
59
+ console.warn(`[SemanticPatternMatcher] Semantic search failed, using fallback: ${error}`);
60
+ return this.findSimilarModulesByPath(targetModule, pluginId, limit);
61
+ }
62
+ }
63
+ /**
64
+ * Finds ADRs for similar modules.
65
+ */
66
+ async findAdrsForSimilarModules(targetModule, pluginId) {
67
+ const similarModules = await this.findSimilarModules(targetModule, pluginId, 10);
68
+ const adrsForSimilar = [];
69
+ for (const similar of similarModules) {
70
+ // Get ADRs for this similar module
71
+ const adrs = await this.adrApi.getAdrsByFilePath(similar.module.file_path, pluginId);
72
+ for (const adr of adrs) {
73
+ adrsForSimilar.push({
74
+ adr,
75
+ module: similar.module,
76
+ similarityScore: similar.similarityScore
77
+ });
78
+ }
79
+ }
80
+ // Sort by similarity score (highest first)
81
+ adrsForSimilar.sort((a, b) => b.similarityScore - a.similarityScore);
82
+ return adrsForSimilar;
83
+ }
84
+ /**
85
+ * Finds architectural patterns in the target module.
86
+ */
87
+ async findPatterns(targetModule, pluginId) {
88
+ try {
89
+ const miningResult = await this.architectureMiningTool.execute({
90
+ pluginId,
91
+ filePath: targetModule.file_path
92
+ });
93
+ const parsed = JSON.parse(miningResult);
94
+ const decisions = parsed.decisions || [];
95
+ return decisions.map((d) => ({
96
+ pattern: d.pattern,
97
+ evidence: d.evidence || [],
98
+ confidence: d.confidence || 'medium'
99
+ }));
100
+ }
101
+ catch (error) {
102
+ console.warn(`[SemanticPatternMatcher] Architecture mining failed: ${error}`);
103
+ return [];
104
+ }
105
+ }
106
+ /**
107
+ * Builds a semantic search query from module information.
108
+ */
109
+ buildModuleQuery(module) {
110
+ const fileName = module.file_path.split('/').pop() || '';
111
+ const dirName = module.file_path.split('/').slice(-2, -1)[0] || '';
112
+ // Extract key terms from file path
113
+ const terms = [];
114
+ // Add directory name if meaningful
115
+ if (dirName && dirName !== 'src') {
116
+ terms.push(dirName);
117
+ }
118
+ // Add file name without extension
119
+ const baseName = fileName.replace(/\.[^/.]+$/, '');
120
+ terms.push(baseName);
121
+ // Extract words from camelCase/PascalCase
122
+ const words = baseName
123
+ .replace(/([A-Z])/g, ' $1')
124
+ .split(/[\s_-]+/)
125
+ .filter(w => w.length > 2);
126
+ terms.push(...words);
127
+ // Build query
128
+ return terms.join(' ');
129
+ }
130
+ /**
131
+ * Fallback: Finds similar modules by file path similarity.
132
+ */
133
+ async findSimilarModulesByPath(targetModule, pluginId, limit) {
134
+ const allModules = await this.moduleApi.getAllModules(pluginId);
135
+ const targetPath = targetModule.file_path;
136
+ const targetDir = targetPath.split('/').slice(0, -1).join('/');
137
+ const targetFileName = targetPath.split('/').pop() || '';
138
+ // Score modules by path similarity
139
+ const scored = [];
140
+ for (const module of allModules) {
141
+ if (module.file_path === targetPath) {
142
+ continue; // Skip target module
143
+ }
144
+ let score = 0;
145
+ const modulePath = module.file_path;
146
+ const moduleDir = modulePath.split('/').slice(0, -1).join('/');
147
+ const moduleFileName = modulePath.split('/').pop() || '';
148
+ // Same directory = high score
149
+ if (moduleDir === targetDir) {
150
+ score += 50;
151
+ }
152
+ // Similar directory structure = medium score
153
+ const targetDirParts = targetDir.split('/');
154
+ const moduleDirParts = moduleDir.split('/');
155
+ const commonDirParts = targetDirParts.filter(part => moduleDirParts.includes(part));
156
+ score += commonDirParts.length * 10;
157
+ // Similar file name = medium score
158
+ if (moduleFileName.toLowerCase().includes(targetFileName.toLowerCase().substring(0, 5)) ||
159
+ targetFileName.toLowerCase().includes(moduleFileName.toLowerCase().substring(0, 5))) {
160
+ score += 20;
161
+ }
162
+ // Same file name pattern (e.g., both end with "-api.ts")
163
+ if (targetFileName.match(/-[a-z]+\.ts$/) && moduleFileName.match(/-[a-z]+\.ts$/)) {
164
+ const targetSuffix = targetFileName.match(/-([a-z]+)\.ts$/)?.[1];
165
+ const moduleSuffix = moduleFileName.match(/-([a-z]+)\.ts$/)?.[1];
166
+ if (targetSuffix === moduleSuffix) {
167
+ score += 30;
168
+ }
169
+ }
170
+ if (score > 0) {
171
+ scored.push({ module, score });
172
+ }
173
+ }
174
+ // Sort by score and return top results
175
+ scored.sort((a, b) => b.score - a.score);
176
+ return scored.slice(0, limit).map(item => ({
177
+ module: item.module,
178
+ similarityScore: item.score / 100 // Normalize to 0-1 range
179
+ }));
180
+ }
181
+ }
182
+ exports.SemanticPatternMatcher = SemanticPatternMatcher;
183
+ //# sourceMappingURL=semantic-pattern-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-pattern-matcher.js","sourceRoot":"","sources":["../../src/services/semantic-pattern-matcher.ts"],"names":[],"mappings":";;;AAEA,oEAA+D;AAC/D,0EAA0E;AAE1E,kDAA8C;AAC9C,4CAAwC;AA8BxC;;;GAGG;AACH,MAAa,sBAAsB;IAO/B,YACI,SAAyB,EACzB,QAAkB,EAClB,kBAAsC;QAEtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,uCAAiB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,sBAAsB,GAAG,IAAI,4CAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAC3B,YAAoB,EACpB,QAAgB,EAChB,QAAgB,CAAC;QAEjB,wCAAwC;QACxC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC;YAC/D,qCAAqC;YACrC,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;QAED,kCAAkC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAElD,IAAI,CAAC;YACD,4CAA4C;YAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;gBACjE,UAAU,EAAE,CAAC,GAAG,CAAC;gBACjB,KAAK,EAAE,KAAK,GAAG,CAAC,CAAE,mDAAmD;aACxE,CAAC,CAAC;YAEH,+BAA+B;YAC/B,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;YAE/F,uCAAuC;YACvC,MAAM,OAAO,GAAoB,EAAE,CAAC;YACpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC/C,SAAS,CAAE,qBAAqB;gBACpC,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACjF,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC;wBACT,MAAM;wBACN,eAAe,EAAE,MAAM,CAAC,KAAK;qBAChC,CAAC,CAAC;gBACP,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC1B,MAAM;gBACV,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oEAAoE,KAAK,EAAE,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,yBAAyB,CAClC,YAAoB,EACpB,QAAgB;QAEhB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjF,MAAM,cAAc,GAA0B,EAAE,CAAC;QAEjD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACnC,mCAAmC;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAErF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,cAAc,CAAC,IAAI,CAAC;oBAChB,GAAG;oBACH,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;iBAC3C,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,2CAA2C;QAC3C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;QAErE,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CACrB,YAAoB,EACpB,QAAgB;QAEhB,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;gBAC3D,QAAQ;gBACR,QAAQ,EAAE,YAAY,CAAC,SAAS;aACnC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAEzC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;gBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,QAAQ;aACvC,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,wDAAwD,KAAK,EAAE,CAAC,CAAC;YAC9E,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAc;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnE,mCAAmC;QACnC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,mCAAmC;QACnC,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,kCAAkC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErB,0CAA0C;QAC1C,MAAM,KAAK,GAAG,QAAQ;aACjB,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aAC1B,KAAK,CAAC,SAAS,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAErB,cAAc;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAClC,YAAoB,EACpB,QAAgB,EAChB,KAAa;QAEb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC;QAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAEzD,mCAAmC;QACnC,MAAM,MAAM,GAA6C,EAAE,CAAC;QAE5D,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAClC,SAAS,CAAE,qBAAqB;YACpC,CAAC;YAED,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;YACpC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAEzD,8BAA8B;YAC9B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1B,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,6CAA6C;YAC7C,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACpF,KAAK,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;YAEpC,mCAAmC;YACnC,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnF,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,yDAAyD;YACzD,IAAI,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/E,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjE,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;oBAChC,KAAK,IAAI,EAAE,CAAC;gBAChB,CAAC;YACL,CAAC;YAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAE,yBAAyB;SAC/D,CAAC,CAAC,CAAC;IACR,CAAC;CACJ;AAhOD,wDAgOC"}
@@ -0,0 +1,63 @@
1
+ import { IngestionOrchestrator } from './ingestion-orchestrator';
2
+ import { MultiDbManager } from '../core/multi-db-manager';
3
+ /**
4
+ * Options for running the full workflow.
5
+ */
6
+ export interface WorkflowOptions {
7
+ /**
8
+ * Whether to generate documentation first (default: true).
9
+ */
10
+ generateDocs?: boolean;
11
+ /**
12
+ * Whether to perform full ingestion (default: false, uses incremental).
13
+ */
14
+ fullIngestion?: boolean;
15
+ /**
16
+ * Whether to generate embeddings (default: true).
17
+ */
18
+ generateEmbeddings?: boolean;
19
+ /**
20
+ * Whether to skip if docs are already up-to-date (default: false).
21
+ */
22
+ skipIfUpToDate?: boolean;
23
+ }
24
+ /**
25
+ * Result of running the workflow.
26
+ */
27
+ export interface WorkflowResult {
28
+ success: boolean;
29
+ docsGenerated: boolean;
30
+ ingestionCompleted: boolean;
31
+ embeddingsGenerated: boolean;
32
+ errors?: string[];
33
+ warnings?: string[];
34
+ }
35
+ /**
36
+ * Orchestrates the complete workflow:
37
+ * 1. Noyrax: Generate documentation (scan → validate → generate)
38
+ * 2. 5D Database: Ingest documentation into SQLite databases
39
+ * 3. V-Dimension: Generate embeddings and calculate importance scores
40
+ */
41
+ export declare class WorkflowOrchestrator {
42
+ private noyraxService;
43
+ private ingestionOrchestrator;
44
+ private dbManager;
45
+ private workspaceRoot;
46
+ constructor(workspaceRoot: string, dbManager: MultiDbManager, ingestionOrchestrator: IngestionOrchestrator);
47
+ /**
48
+ * Runs the full workflow.
49
+ *
50
+ * @param options Workflow options
51
+ * @returns Promise that resolves with the workflow result
52
+ */
53
+ runFullWorkflow(options?: WorkflowOptions): Promise<WorkflowResult>;
54
+ /**
55
+ * Checks the status of the workflow prerequisites.
56
+ */
57
+ checkStatus(): Promise<{
58
+ noyraxAvailable: boolean;
59
+ docsStatus: import('./noyrax-integration-service').DocsStatus;
60
+ dbManagerReady: boolean;
61
+ }>;
62
+ }
63
+ //# sourceMappingURL=workflow-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-orchestrator.d.ts","sourceRoot":"","sources":["../../src/services/workflow-orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,aAAa,CAAS;gBAG1B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,EACzB,qBAAqB,EAAE,qBAAqB;IAQhD;;;;;OAKG;IACG,eAAe,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAmF7E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QACzB,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,8BAA8B,EAAE,UAAU,CAAC;QAC9D,cAAc,EAAE,OAAO,CAAC;KAC3B,CAAC;CAYL"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowOrchestrator = void 0;
4
+ const noyrax_integration_service_1 = require("./noyrax-integration-service");
5
+ const docs_path_resolver_1 = require("../core/docs-path-resolver");
6
+ /**
7
+ * Orchestrates the complete workflow:
8
+ * 1. Noyrax: Generate documentation (scan → validate → generate)
9
+ * 2. 5D Database: Ingest documentation into SQLite databases
10
+ * 3. V-Dimension: Generate embeddings and calculate importance scores
11
+ */
12
+ class WorkflowOrchestrator {
13
+ constructor(workspaceRoot, dbManager, ingestionOrchestrator) {
14
+ this.workspaceRoot = workspaceRoot;
15
+ this.dbManager = dbManager;
16
+ this.ingestionOrchestrator = ingestionOrchestrator;
17
+ this.noyraxService = new noyrax_integration_service_1.NoyraxIntegrationService(workspaceRoot);
18
+ }
19
+ /**
20
+ * Runs the full workflow.
21
+ *
22
+ * @param options Workflow options
23
+ * @returns Promise that resolves with the workflow result
24
+ */
25
+ async runFullWorkflow(options = {}) {
26
+ const { generateDocs = true, fullIngestion = false, generateEmbeddings = true, skipIfUpToDate = false } = options;
27
+ const result = {
28
+ success: false,
29
+ docsGenerated: false,
30
+ ingestionCompleted: false,
31
+ embeddingsGenerated: false,
32
+ errors: [],
33
+ warnings: []
34
+ };
35
+ try {
36
+ // Step 1: Generate documentation (if requested)
37
+ if (generateDocs) {
38
+ // Check if docs need regeneration
39
+ if (skipIfUpToDate) {
40
+ const needsRegen = await this.noyraxService.needsRegeneration();
41
+ if (!needsRegen) {
42
+ console.log('[WorkflowOrchestrator] Documentation is up-to-date, skipping generation.');
43
+ result.docsGenerated = false; // Not generated, but exists
44
+ }
45
+ else {
46
+ console.log('[WorkflowOrchestrator] Documentation needs regeneration, generating...');
47
+ await this.noyraxService.generateDocumentation();
48
+ result.docsGenerated = true;
49
+ }
50
+ }
51
+ else {
52
+ console.log('[WorkflowOrchestrator] Generating documentation...');
53
+ await this.noyraxService.generateDocumentation();
54
+ result.docsGenerated = true;
55
+ }
56
+ }
57
+ // Step 2: Find docs path
58
+ const docsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(this.workspaceRoot);
59
+ if (!docsPath) {
60
+ throw new Error('docs/ directory not found. ' +
61
+ 'Please ensure documentation has been generated or specify the docs path.');
62
+ }
63
+ // Step 3: Get plugin ID
64
+ const pluginId = this.dbManager.getPluginId();
65
+ // Step 4: Perform ingestion
66
+ console.log('[WorkflowOrchestrator] Starting ingestion...');
67
+ if (fullIngestion) {
68
+ await this.ingestionOrchestrator.ingestFull(this.workspaceRoot, pluginId, docsPath);
69
+ }
70
+ else {
71
+ await this.ingestionOrchestrator.ingestIncremental(this.workspaceRoot, pluginId, docsPath);
72
+ }
73
+ result.ingestionCompleted = true;
74
+ // Step 5: Generate embeddings (if requested)
75
+ // Note: Embeddings are already generated during ingestion (V-Dimension),
76
+ // but we can verify they exist
77
+ if (generateEmbeddings) {
78
+ // Embeddings are handled by IngestionOrchestrator during ingestion
79
+ // This is just a flag to indicate they should be generated
80
+ result.embeddingsGenerated = true;
81
+ }
82
+ result.success = true;
83
+ console.log('[WorkflowOrchestrator] Full workflow completed successfully.');
84
+ }
85
+ catch (error) {
86
+ const errorMessage = error.message || String(error);
87
+ result.errors = result.errors || [];
88
+ result.errors.push(errorMessage);
89
+ result.success = false;
90
+ console.error('[WorkflowOrchestrator] Workflow failed:', errorMessage);
91
+ throw error;
92
+ }
93
+ return result;
94
+ }
95
+ /**
96
+ * Checks the status of the workflow prerequisites.
97
+ */
98
+ async checkStatus() {
99
+ // Check if Noyrax is available by checking docs status
100
+ const docsStatus = await this.noyraxService.checkDocsStatus();
101
+ const noyraxAvailable = docsStatus.exists || docsStatus.hasModules;
102
+ const dbManagerReady = this.dbManager !== undefined;
103
+ return {
104
+ noyraxAvailable,
105
+ docsStatus,
106
+ dbManagerReady
107
+ };
108
+ }
109
+ }
110
+ exports.WorkflowOrchestrator = WorkflowOrchestrator;
111
+ //# sourceMappingURL=workflow-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-orchestrator.js","sourceRoot":"","sources":["../../src/services/workflow-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAChC,SAAS,EAAE,cAAc,EACzB,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,wBAAwB,EAC1C,QAAQ,CAAC,EAAE,MAAM,GAClB,IAAI,CA+GN"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAI/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAChC,SAAS,EAAE,cAAc,EACzB,qBAAqB,EAAE,qBAAqB,EAC5C,gBAAgB,EAAE,wBAAwB,EAC1C,QAAQ,CAAC,EAAE,MAAM,GAClB,IAAI,CAmPN"}
@@ -38,6 +38,8 @@ const vscode = __importStar(require("vscode"));
38
38
  const path = __importStar(require("path"));
39
39
  const docs_path_resolver_1 = require("../core/docs-path-resolver");
40
40
  const detail_view_provider_1 = require("./detail-view-provider");
41
+ const noyrax_integration_service_1 = require("../services/noyrax-integration-service");
42
+ const workflow_orchestrator_1 = require("../services/workflow-orchestrator");
41
43
  /**
42
44
  * Registers all VS Code commands for the 5D Database Plugin.
43
45
  */
@@ -118,6 +120,115 @@ function registerCommands(context, dbManager, ingestionOrchestrator, explorerPro
118
120
  vscode.window.showErrorMessage(`Failed to open file: ${filePath}. Error: ${error}`);
119
121
  }
120
122
  });
121
- context.subscriptions.push(ingestCommand, searchCommand, showModuleDetailCommand, showSymbolDetailCommand, showAdrDetailCommand, showDependencyDetailCommand, showChangeDetailCommand, openSourceFileCommand, detailViewProvider);
123
+ // New command: Generate documentation using Noyrax
124
+ const generateDocsCommand = vscode.commands.registerCommand('5d-database.generate-docs', async () => {
125
+ const workspaceFolders = vscode.workspace.workspaceFolders;
126
+ if (!workspaceFolders || workspaceFolders.length === 0) {
127
+ vscode.window.showErrorMessage('No workspace folder found');
128
+ return;
129
+ }
130
+ const workspaceRoot = workspaceFolders[0].uri.fsPath;
131
+ const noyraxService = new noyrax_integration_service_1.NoyraxIntegrationService(workspaceRoot);
132
+ vscode.window.withProgress({
133
+ location: vscode.ProgressLocation.Notification,
134
+ title: 'Generating Documentation',
135
+ cancellable: false
136
+ }, async (progress) => {
137
+ progress.report({ increment: 0, message: 'Starting documentation generation...' });
138
+ try {
139
+ progress.report({ increment: 33, message: 'Running scan...' });
140
+ await noyraxService.generateDocumentation();
141
+ progress.report({ increment: 100, message: 'Documentation generated successfully' });
142
+ vscode.window.showInformationMessage('Documentation generated successfully');
143
+ }
144
+ catch (error) {
145
+ const errorMessage = error.message || String(error);
146
+ vscode.window.showErrorMessage(`Documentation generation failed: ${errorMessage}`);
147
+ }
148
+ });
149
+ });
150
+ // New command: Full workflow (Generate docs + Ingest)
151
+ const fullWorkflowCommand = vscode.commands.registerCommand('5d-database.full-workflow', async () => {
152
+ const workspaceFolders = vscode.workspace.workspaceFolders;
153
+ if (!workspaceFolders || workspaceFolders.length === 0) {
154
+ vscode.window.showErrorMessage('No workspace folder found');
155
+ return;
156
+ }
157
+ const workspaceRoot = workspaceFolders[0].uri.fsPath;
158
+ const workflowOrchestrator = new workflow_orchestrator_1.WorkflowOrchestrator(workspaceRoot, dbManager, ingestionOrchestrator);
159
+ vscode.window.withProgress({
160
+ location: vscode.ProgressLocation.Notification,
161
+ title: 'Running Full Workflow',
162
+ cancellable: false
163
+ }, async (progress) => {
164
+ progress.report({ increment: 0, message: 'Starting full workflow...' });
165
+ try {
166
+ progress.report({ increment: 20, message: 'Generating documentation...' });
167
+ const result = await workflowOrchestrator.runFullWorkflow({
168
+ generateDocs: true,
169
+ fullIngestion: false,
170
+ generateEmbeddings: true,
171
+ skipIfUpToDate: false
172
+ });
173
+ if (result.success) {
174
+ progress.report({ increment: 100, message: 'Workflow completed successfully' });
175
+ // Refresh the database explorer to show newly ingested data
176
+ explorerProvider.refresh();
177
+ let message = 'Full workflow completed successfully';
178
+ if (result.warnings && result.warnings.length > 0) {
179
+ message += ` (${result.warnings.length} warning(s))`;
180
+ }
181
+ vscode.window.showInformationMessage(message);
182
+ }
183
+ else {
184
+ const errorMessage = result.errors?.join(', ') || 'Unknown error';
185
+ vscode.window.showErrorMessage(`Workflow failed: ${errorMessage}`);
186
+ }
187
+ }
188
+ catch (error) {
189
+ const errorMessage = error.message || String(error);
190
+ vscode.window.showErrorMessage(`Workflow failed: ${errorMessage}`);
191
+ }
192
+ });
193
+ });
194
+ // New command: Merge workspaces (combine both systems into one database)
195
+ const mergeWorkspacesCommand = vscode.commands.registerCommand('5d-database.merge-workspaces', async () => {
196
+ const workspaceFolders = vscode.workspace.workspaceFolders;
197
+ if (!workspaceFolders || workspaceFolders.length === 0) {
198
+ vscode.window.showErrorMessage('No workspace folder found');
199
+ return;
200
+ }
201
+ const workspaceRoot = workspaceFolders[0].uri.fsPath;
202
+ const { exec } = await Promise.resolve().then(() => __importStar(require('child_process')));
203
+ const { promisify } = await Promise.resolve().then(() => __importStar(require('util')));
204
+ const execAsync = promisify(exec);
205
+ const mergeCliPath = path.join(__dirname, '..', '..', 'out', 'cli', 'merge-workspaces-cli.js');
206
+ vscode.window.withProgress({
207
+ location: vscode.ProgressLocation.Notification,
208
+ title: 'Merging Workspaces',
209
+ cancellable: false
210
+ }, async (progress) => {
211
+ progress.report({ increment: 0, message: 'Starting workspace merge...' });
212
+ try {
213
+ progress.report({ increment: 50, message: 'Merging documentation from both systems...' });
214
+ const { stdout, stderr } = await execAsync(`node "${mergeCliPath}" "${workspaceRoot}" --full`, {
215
+ cwd: workspaceRoot,
216
+ maxBuffer: 10 * 1024 * 1024 // 10MB buffer
217
+ });
218
+ if (stderr && !stderr.includes('WARN')) {
219
+ console.warn('[Merge Workspaces] Warnings:', stderr);
220
+ }
221
+ progress.report({ increment: 100, message: 'Merge completed successfully' });
222
+ // Refresh the database explorer to show merged data
223
+ explorerProvider.refresh();
224
+ vscode.window.showInformationMessage('Workspaces merged successfully. Both systems are now in one database.');
225
+ }
226
+ catch (error) {
227
+ const errorMessage = error.message || String(error);
228
+ vscode.window.showErrorMessage(`Workspace merge failed: ${errorMessage}`);
229
+ }
230
+ });
231
+ });
232
+ context.subscriptions.push(ingestCommand, searchCommand, showModuleDetailCommand, showSymbolDetailCommand, showAdrDetailCommand, showDependencyDetailCommand, showChangeDetailCommand, openSourceFileCommand, generateDocsCommand, fullWorkflowCommand, mergeWorkspacesCommand, detailViewProvider);
122
233
  }
123
234
  //# sourceMappingURL=commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"database-explorer.d.ts","sourceRoot":"","sources":["../../src/ui/database-explorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAQ1D;;GAEG;AACH,cAAM,gBAAiB,SAAQ,MAAM,CAAC,QAAQ;aAEtB,KAAK,EAAE,MAAM;aACb,gBAAgB,EAAE,MAAM,CAAC,wBAAwB;aACjD,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO;gBAFxB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,CAAC,wBAAwB,EACjD,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,YAAA;CAO/C;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;IACtF,OAAO,CAAC,oBAAoB,CAA0I;IACtK,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAmC;IAEzH,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc;IAKvE,OAAO,IAAI,IAAI;IAIf,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,QAAQ;IAIjD,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CA8G7E"}
1
+ {"version":3,"file":"database-explorer.d.ts","sourceRoot":"","sources":["../../src/ui/database-explorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAQ1D;;GAEG;AACH,cAAM,gBAAiB,SAAQ,MAAM,CAAC,QAAQ;aAEtB,KAAK,EAAE,MAAM;aACb,gBAAgB,EAAE,MAAM,CAAC,wBAAwB;aACjD,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO;gBAFxB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,CAAC,wBAAwB,EACjD,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,YAAA;CAO/C;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;IACtF,OAAO,CAAC,oBAAoB,CAA0I;IACtK,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAmC;IAEzH,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc;IAKvE,OAAO,IAAI,IAAI;IAIf,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,QAAQ;IAIjD,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAuL7E"}
@@ -85,6 +85,13 @@ class DatabaseExplorerProvider {
85
85
  if (element.label.startsWith('X: Modules')) {
86
86
  const moduleApi = new module_api_1.ModuleApi(this.dbManager);
87
87
  const modules = await moduleApi.getAllModules(this.pluginId);
88
+ if (modules.length === 0) {
89
+ return [new DatabaseTreeItem('No modules found. Run ingestion first.', vscode.TreeItemCollapsibleState.None, {
90
+ command: '5d-database.ingest',
91
+ title: 'Run Ingestion',
92
+ arguments: []
93
+ })];
94
+ }
88
95
  return modules.map(m => {
89
96
  const item = new DatabaseTreeItem(m.file_path, vscode.TreeItemCollapsibleState.None, {
90
97
  command: '5d-database.showModuleDetail',
@@ -99,6 +106,13 @@ class DatabaseExplorerProvider {
99
106
  else if (element.label.startsWith('Y: Symbols')) {
100
107
  const symbolApi = new symbol_api_1.SymbolApi(this.dbManager);
101
108
  const symbols = await symbolApi.getAllSymbols(this.pluginId);
109
+ if (symbols.length === 0) {
110
+ return [new DatabaseTreeItem('No symbols found. Run ingestion first.', vscode.TreeItemCollapsibleState.None, {
111
+ command: '5d-database.ingest',
112
+ title: 'Run Ingestion',
113
+ arguments: []
114
+ })];
115
+ }
102
116
  return symbols.slice(0, 100).map(s => {
103
117
  const item = new DatabaseTreeItem(`${s.name} (${s.kind})`, vscode.TreeItemCollapsibleState.None, {
104
118
  command: '5d-database.showSymbolDetail',
@@ -115,6 +129,13 @@ class DatabaseExplorerProvider {
115
129
  else if (element.label.startsWith('Z: Dependencies')) {
116
130
  const depApi = new dependency_api_1.DependencyApi(this.dbManager);
117
131
  const deps = await depApi.getAllDependencies(this.pluginId);
132
+ if (deps.length === 0) {
133
+ return [new DatabaseTreeItem('No dependencies found. Run ingestion first.', vscode.TreeItemCollapsibleState.None, {
134
+ command: '5d-database.ingest',
135
+ title: 'Run Ingestion',
136
+ arguments: []
137
+ })];
138
+ }
118
139
  return deps.slice(0, 100).map(d => {
119
140
  const item = new DatabaseTreeItem(`${d.from_module} → ${d.to_module}`, vscode.TreeItemCollapsibleState.None, {
120
141
  command: '5d-database.showDependencyDetail',
@@ -132,6 +153,13 @@ class DatabaseExplorerProvider {
132
153
  else if (element.label.startsWith('W: ADRs')) {
133
154
  const adrApi = new adr_api_1.AdrApi(this.dbManager);
134
155
  const adrs = await adrApi.getAllAdrs(this.pluginId);
156
+ if (adrs.length === 0) {
157
+ return [new DatabaseTreeItem('No ADRs found. Run ingestion first.', vscode.TreeItemCollapsibleState.None, {
158
+ command: '5d-database.ingest',
159
+ title: 'Run Ingestion',
160
+ arguments: []
161
+ })];
162
+ }
135
163
  return adrs.map(a => {
136
164
  const item = new DatabaseTreeItem(`ADR-${a.adr_number}: ${a.title}`, vscode.TreeItemCollapsibleState.None, {
137
165
  command: '5d-database.showAdrDetail',
@@ -146,6 +174,13 @@ class DatabaseExplorerProvider {
146
174
  else if (element.label.startsWith('T: Changes')) {
147
175
  const changeApi = new change_api_1.ChangeApi(this.dbManager);
148
176
  const reports = await changeApi.getAllChangeReports(this.pluginId);
177
+ if (reports.length === 0) {
178
+ return [new DatabaseTreeItem('No change reports found. Run ingestion first.', vscode.TreeItemCollapsibleState.None, {
179
+ command: '5d-database.ingest',
180
+ title: 'Run Ingestion',
181
+ arguments: []
182
+ })];
183
+ }
149
184
  return reports.slice(0, 10).map(r => {
150
185
  const label = `${r.run_type} - ${r.created_at.toLocaleDateString()} (${r.parsed_files} files, ${r.total_dependencies} deps)`;
151
186
  const item = new DatabaseTreeItem(label, vscode.TreeItemCollapsibleState.None, {
@@ -160,7 +195,18 @@ class DatabaseExplorerProvider {
160
195
  }
161
196
  }
162
197
  catch (error) {
163
- vscode.window.showErrorMessage(`Error loading ${element.label}: ${error}`);
198
+ const errorMessage = error instanceof Error ? error.message : String(error);
199
+ // Check if it's a "no such table" error
200
+ if (errorMessage.includes('no such table') || errorMessage.includes('SQLITE_ERROR')) {
201
+ return [new DatabaseTreeItem(`Database not initialized. Run ingestion first. (Error: ${errorMessage})`, vscode.TreeItemCollapsibleState.None, {
202
+ command: '5d-database.ingest',
203
+ title: 'Run Ingestion',
204
+ arguments: []
205
+ })];
206
+ }
207
+ // For other errors, show error message
208
+ vscode.window.showErrorMessage(`Error loading ${element.label}: ${errorMessage}`);
209
+ return [new DatabaseTreeItem(`Error: ${errorMessage}`, vscode.TreeItemCollapsibleState.None)];
164
210
  }
165
211
  return [];
166
212
  }