@noyrax/5d-database-plugin 0.1.8 → 0.1.10-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 +31 -0
  32. package/out/core/migration-manager.d.ts.map +1 -1
  33. package/out/core/migration-manager.js +126 -7
  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,42 @@
1
+ import { MultiDbManager } from '../core/multi-db-manager';
2
+ /**
3
+ * API for ingestion operations.
4
+ * Provides programmatic access to ingestion functionality.
5
+ */
6
+ export declare class IngestionApi {
7
+ private dbManager;
8
+ private migrationManager;
9
+ private ingestionOrchestrator;
10
+ private workspaceRoot;
11
+ private pluginRoot;
12
+ constructor(dbManager: MultiDbManager, pluginRoot: string);
13
+ /**
14
+ * Validates that the workspace root and docs directory contain all required files.
15
+ * Throws an error if validation fails.
16
+ *
17
+ * @param workspaceRoot The workspace root directory
18
+ * @param docsPath The path to the docs directory
19
+ */
20
+ private validateWorkspaceRoot;
21
+ /**
22
+ * Performs a full ingestion of all dimensions.
23
+ *
24
+ * @param pluginId The plugin ID
25
+ * @param full Whether to perform full ingestion (default: true)
26
+ * @returns Promise that resolves when ingestion is complete
27
+ */
28
+ ingest(pluginId: string, full?: boolean): Promise<{
29
+ success: boolean;
30
+ message: string;
31
+ }>;
32
+ /**
33
+ * Checks if ingestion is needed.
34
+ *
35
+ * @returns Promise that resolves to ingestion status
36
+ */
37
+ checkIngestionStatus(): Promise<{
38
+ needed: boolean;
39
+ message: string;
40
+ }>;
41
+ }
42
+ //# sourceMappingURL=ingestion-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestion-api.d.ts","sourceRoot":"","sources":["../../src/api/ingestion-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D;;;GAGG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM;IAWzD;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;;;;;OAMG;IACU,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAkC3G;;;;OAIG;IACU,oBAAoB,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAcrF"}
@@ -0,0 +1,148 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.IngestionApi = void 0;
37
+ const migration_manager_1 = require("../core/migration-manager");
38
+ const ingestion_orchestrator_1 = require("../services/ingestion-orchestrator");
39
+ const docs_path_resolver_1 = require("../core/docs-path-resolver");
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs"));
42
+ /**
43
+ * API for ingestion operations.
44
+ * Provides programmatic access to ingestion functionality.
45
+ */
46
+ class IngestionApi {
47
+ constructor(dbManager, pluginRoot) {
48
+ this.dbManager = dbManager;
49
+ this.workspaceRoot = dbManager.getWorkspaceRoot();
50
+ this.pluginRoot = pluginRoot;
51
+ this.migrationManager = new migration_manager_1.MigrationManager(dbManager, pluginRoot);
52
+ // Find docs directory
53
+ const docsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(this.workspaceRoot);
54
+ this.ingestionOrchestrator = new ingestion_orchestrator_1.IngestionOrchestrator(dbManager, this.migrationManager, docsPath || undefined);
55
+ }
56
+ /**
57
+ * Validates that the workspace root and docs directory contain all required files.
58
+ * Throws an error if validation fails.
59
+ *
60
+ * @param workspaceRoot The workspace root directory
61
+ * @param docsPath The path to the docs directory
62
+ */
63
+ validateWorkspaceRoot(workspaceRoot, docsPath) {
64
+ const requiredPaths = [
65
+ { path: path.join(docsPath, 'modules'), name: 'docs/modules/', isDirectory: true },
66
+ { path: path.join(docsPath, 'index', 'symbols.jsonl'), name: 'docs/index/symbols.jsonl', isDirectory: false },
67
+ { path: path.join(docsPath, 'system', 'DEPENDENCY_GRAPH.md'), name: 'docs/system/DEPENDENCY_GRAPH.md', isDirectory: false },
68
+ { path: path.join(docsPath, 'adr'), name: 'docs/adr/', isDirectory: true },
69
+ { path: path.join(docsPath, 'system', 'CHANGE_REPORT.md'), name: 'docs/system/CHANGE_REPORT.md', isDirectory: false }
70
+ ];
71
+ const missingPaths = [];
72
+ for (const required of requiredPaths) {
73
+ if (!fs.existsSync(required.path)) {
74
+ missingPaths.push(required.name);
75
+ }
76
+ else {
77
+ // Verify it's the correct type (directory vs file)
78
+ const stats = fs.statSync(required.path);
79
+ if (required.isDirectory && !stats.isDirectory()) {
80
+ missingPaths.push(`${required.name} (expected directory, found file)`);
81
+ }
82
+ else if (!required.isDirectory && !stats.isFile()) {
83
+ missingPaths.push(`${required.name} (expected file, found directory)`);
84
+ }
85
+ }
86
+ }
87
+ if (missingPaths.length > 0) {
88
+ throw new Error(`Required documentation files/directories are missing:\n${missingPaths.map(p => ` - ${p}`).join('\n')}\n\n` +
89
+ `Please run Documentation System Plugin (Noyrax) first to generate complete documentation.\n` +
90
+ `Workspace root: ${workspaceRoot}\n` +
91
+ `Docs directory: ${docsPath}`);
92
+ }
93
+ }
94
+ /**
95
+ * Performs a full ingestion of all dimensions.
96
+ *
97
+ * @param pluginId The plugin ID
98
+ * @param full Whether to perform full ingestion (default: true)
99
+ * @returns Promise that resolves when ingestion is complete
100
+ */
101
+ async ingest(pluginId, full = true) {
102
+ // Find docs directory
103
+ const docsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(this.workspaceRoot);
104
+ if (!docsPath) {
105
+ throw new Error(`docs/ directory not found in workspace or parent directories.\n` +
106
+ `Please run Documentation System Plugin (Noyrax) first to generate docs/ directory.\n` +
107
+ `Workspace root: ${this.workspaceRoot}`);
108
+ }
109
+ // Validate workspace root (uses the same validation as ingest-cli)
110
+ this.validateWorkspaceRoot(this.workspaceRoot, docsPath);
111
+ try {
112
+ // Run migrations
113
+ await this.migrationManager.migrateAll();
114
+ // Perform ingestion
115
+ if (full) {
116
+ await this.ingestionOrchestrator.ingestFull(this.workspaceRoot, pluginId, docsPath);
117
+ }
118
+ else {
119
+ await this.ingestionOrchestrator.ingestIncremental(this.workspaceRoot, pluginId, docsPath);
120
+ }
121
+ return {
122
+ success: true,
123
+ message: `Ingestion completed successfully (mode: ${full ? 'full' : 'incremental'})`
124
+ };
125
+ }
126
+ catch (error) {
127
+ throw new Error(`Ingestion failed: ${error.message || String(error)}`);
128
+ }
129
+ }
130
+ /**
131
+ * Checks if ingestion is needed.
132
+ *
133
+ * @returns Promise that resolves to ingestion status
134
+ */
135
+ async checkIngestionStatus() {
136
+ const docsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(this.workspaceRoot);
137
+ const dbPath = path.join(this.workspaceRoot, '.database-plugin', 'modules.db');
138
+ if (!docsPath) {
139
+ return { needed: false, message: 'docs/ directory not found' };
140
+ }
141
+ if (!fs.existsSync(dbPath)) {
142
+ return { needed: true, message: 'Databases not found, ingestion needed' };
143
+ }
144
+ return { needed: false, message: 'Databases exist, ingestion may not be needed' };
145
+ }
146
+ }
147
+ exports.IngestionApi = IngestionApi;
148
+ //# sourceMappingURL=ingestion-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestion-api.js","sourceRoot":"","sources":["../../src/api/ingestion-api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iEAA6D;AAC7D,+EAA2E;AAC3E,mEAA8D;AAC9D,2CAA6B;AAC7B,uCAAyB;AAEzB;;;GAGG;AACH,MAAa,YAAY;IAOrB,YAAY,SAAyB,EAAE,UAAkB;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,oCAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEpE,sBAAsB;QACtB,MAAM,QAAQ,GAAG,qCAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,GAAG,IAAI,8CAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;IACpH,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAAC,aAAqB,EAAE,QAAgB;QACjE,MAAM,aAAa,GAAG;YAClB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE;YAClF,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,KAAK,EAAE;YAC7G,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,CAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,WAAW,EAAE,KAAK,EAAE;YAC3H,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE;YAC1E,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,KAAK,EAAE;SACxH,CAAC;QAEF,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,mDAAmD;gBACnD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC/C,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,mCAAmC,CAAC,CAAC;gBAC3E,CAAC;qBAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAClD,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,mCAAmC,CAAC,CAAC;gBAC3E,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACX,0DAA0D,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAC5G,6FAA6F;gBAC7F,mBAAmB,aAAa,IAAI;gBACpC,mBAAmB,QAAQ,EAAE,CAChC,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAgB,IAAI;QACtD,sBAAsB;QACtB,MAAM,QAAQ,GAAG,qCAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACX,iEAAiE;gBACjE,sFAAsF;gBACtF,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAC1C,CAAC;QACN,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAEzD,IAAI,CAAC;YACD,iBAAiB;YACjB,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAEzC,oBAAoB;YACpB,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/F,CAAC;YAED,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,2CAA2C,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG;aACvF,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,oBAAoB;QAC7B,MAAM,QAAQ,GAAG,qCAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;IACtF,CAAC;CACJ;AAvHD,oCAuHC"}
@@ -11,9 +11,19 @@ export declare class ModuleApi {
11
11
  */
12
12
  getModuleById(id: string, pluginId: string): Promise<Module | null>;
13
13
  /**
14
- * Gets a module by file path.
14
+ * Gets a module by file path with flexible path normalization.
15
+ * Supports various path formats:
16
+ * - Absolute paths (with workspace root)
17
+ * - Relative paths
18
+ * - Paths with different separators (/, \)
19
+ * - Paths with plugin prefixes
15
20
  */
16
21
  getModuleByPath(filePath: string, pluginId: string): Promise<Module | null>;
22
+ /**
23
+ * Normalizes a file path to generate possible variants for flexible matching.
24
+ * Returns an array of path variants in order of preference.
25
+ */
26
+ private normalizeFilePath;
17
27
  /**
18
28
  * Gets all modules for a plugin.
19
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"module-api.d.ts","sourceRoot":"","sources":["../../src/api/module-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAIrC;;OAEG;IACU,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMhF;;OAEG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMxF;;OAEG;IACU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAM/D;;OAEG;IACU,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAKjG"}
1
+ {"version":3,"file":"module-api.d.ts","sourceRoot":"","sources":["../../src/api/module-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAIrC;;OAEG;IACU,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMhF;;;;;;;OAOG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA4BxF;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAM/D;;OAEG;IACU,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAKjG"}
@@ -18,12 +18,64 @@ class ModuleApi {
18
18
  return repository.getById(id, pluginId);
19
19
  }
20
20
  /**
21
- * Gets a module by file path.
21
+ * Gets a module by file path with flexible path normalization.
22
+ * Supports various path formats:
23
+ * - Absolute paths (with workspace root)
24
+ * - Relative paths
25
+ * - Paths with different separators (/, \)
26
+ * - Paths with plugin prefixes
22
27
  */
23
28
  async getModuleByPath(filePath, pluginId) {
24
29
  const db = await this.dbManager.getDatabase('X');
25
30
  const repository = new module_repository_1.ModuleRepository(db);
26
- return repository.getByFilePath(filePath, pluginId);
31
+ // Try exact match first
32
+ let module = await repository.getByFilePath(filePath, pluginId);
33
+ if (module) {
34
+ return module;
35
+ }
36
+ // Generate normalized path variants
37
+ const pathVariants = this.normalizeFilePath(filePath);
38
+ // Try each variant
39
+ for (const variant of pathVariants) {
40
+ module = await repository.getByFilePath(variant, pluginId);
41
+ if (module) {
42
+ return module;
43
+ }
44
+ }
45
+ // Fallback: Try LIKE search with normalized path
46
+ const normalized = this.normalizeFilePath(filePath)[0]; // First variant (most normalized)
47
+ module = await repository.findByFilePathLike(normalized, pluginId);
48
+ return module;
49
+ }
50
+ /**
51
+ * Normalizes a file path to generate possible variants for flexible matching.
52
+ * Returns an array of path variants in order of preference.
53
+ */
54
+ normalizeFilePath(filePath) {
55
+ const variants = [];
56
+ // Normalize separators to forward slashes
57
+ let normalized = filePath.replace(/\\/g, '/');
58
+ variants.push(normalized);
59
+ // Remove leading slashes
60
+ const withoutLeadingSlash = normalized.replace(/^\/+/, '');
61
+ if (withoutLeadingSlash !== normalized) {
62
+ variants.push(withoutLeadingSlash);
63
+ }
64
+ // Remove common plugin prefixes (e.g., "5d-database-plugin/")
65
+ const pluginPrefixes = ['5d-database-plugin/', 'documentation-system-plugin/', 'mcp-server/'];
66
+ for (const prefix of pluginPrefixes) {
67
+ if (normalized.startsWith(prefix)) {
68
+ const withoutPrefix = normalized.substring(prefix.length);
69
+ variants.push(withoutPrefix);
70
+ }
71
+ // Also try without leading slash
72
+ if (withoutLeadingSlash.startsWith(prefix)) {
73
+ const withoutPrefix = withoutLeadingSlash.substring(prefix.length);
74
+ variants.push(withoutPrefix);
75
+ }
76
+ }
77
+ // Remove duplicates and return
78
+ return Array.from(new Set(variants));
27
79
  }
28
80
  /**
29
81
  * Gets all modules for a plugin.
@@ -1 +1 @@
1
- {"version":3,"file":"module-api.js","sourceRoot":"","sources":["../../src/api/module-api.ts"],"names":[],"mappings":";;;AACA,yEAAqE;AAGrE;;GAEG;AACH,MAAa,SAAS;IAGlB,YAAY,SAAyB;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,QAAgB;QACnD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,oCAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,QAAgB;QAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,oCAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,QAAgB;QACvC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,oCAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,uBAAuB,CAAC,WAAmB,EAAE,QAAgB;QACtE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,oCAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACJ;AA1CD,8BA0CC"}
1
+ {"version":3,"file":"module-api.js","sourceRoot":"","sources":["../../src/api/module-api.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,47 @@ const multi_db_manager_1 = require("../core/multi-db-manager");
41
41
  const migration_manager_1 = require("../core/migration-manager");
42
42
  const ingestion_orchestrator_1 = require("../services/ingestion-orchestrator");
43
43
  const docs_path_resolver_1 = require("../core/docs-path-resolver");
44
+ /**
45
+ * Validates that the workspace root and docs directory contain all required files.
46
+ * Throws an error and exits if validation fails.
47
+ *
48
+ * @param workspaceRoot The workspace root directory
49
+ * @param docsPath The path to the docs directory
50
+ */
51
+ function validateWorkspaceRoot(workspaceRoot, docsPath) {
52
+ const requiredPaths = [
53
+ { path: path.join(docsPath, 'modules'), name: 'docs/modules/', isDirectory: true },
54
+ { path: path.join(docsPath, 'index', 'symbols.jsonl'), name: 'docs/index/symbols.jsonl', isDirectory: false },
55
+ { path: path.join(docsPath, 'system', 'DEPENDENCY_GRAPH.md'), name: 'docs/system/DEPENDENCY_GRAPH.md', isDirectory: false },
56
+ { path: path.join(docsPath, 'adr'), name: 'docs/adr/', isDirectory: true },
57
+ { path: path.join(docsPath, 'system', 'CHANGE_REPORT.md'), name: 'docs/system/CHANGE_REPORT.md', isDirectory: false }
58
+ ];
59
+ const missingPaths = [];
60
+ for (const required of requiredPaths) {
61
+ if (!fs.existsSync(required.path)) {
62
+ missingPaths.push(required.name);
63
+ }
64
+ else {
65
+ // Verify it's the correct type (directory vs file)
66
+ const stats = fs.statSync(required.path);
67
+ if (required.isDirectory && !stats.isDirectory()) {
68
+ missingPaths.push(`${required.name} (expected directory, found file)`);
69
+ }
70
+ else if (!required.isDirectory && !stats.isFile()) {
71
+ missingPaths.push(`${required.name} (expected file, found directory)`);
72
+ }
73
+ }
74
+ }
75
+ if (missingPaths.length > 0) {
76
+ console.error('ERROR: Required documentation files/directories are missing:');
77
+ missingPaths.forEach(p => console.error(` - ${p}`));
78
+ console.error('');
79
+ console.error('Please run Documentation System Plugin (Noyrax) first to generate complete documentation.');
80
+ console.error(`Workspace root: ${workspaceRoot}`);
81
+ console.error(`Docs directory: ${docsPath}`);
82
+ process.exit(1);
83
+ }
84
+ }
44
85
  /**
45
86
  * Loads .env file from workspace root or parent directories.
46
87
  */
@@ -115,25 +156,8 @@ async function main() {
115
156
  process.exit(1);
116
157
  }
117
158
  console.log(`Found docs directory: ${docsPath}`);
118
- // Validate that required documentation files exist
119
- const requiredPaths = [
120
- { path: path.join(docsPath, 'modules'), name: 'modules/' },
121
- { path: path.join(docsPath, 'index', 'symbols.jsonl'), name: 'index/symbols.jsonl' },
122
- { path: path.join(docsPath, 'system', 'DEPENDENCY_GRAPH.md'), name: 'system/DEPENDENCY_GRAPH.md' },
123
- { path: path.join(docsPath, 'adr'), name: 'adr/' },
124
- { path: path.join(docsPath, 'system', 'CHANGE_REPORT.md'), name: 'system/CHANGE_REPORT.md' }
125
- ];
126
- const missingPaths = [];
127
- for (const required of requiredPaths) {
128
- if (!fs.existsSync(required.path)) {
129
- missingPaths.push(required.name);
130
- }
131
- }
132
- if (missingPaths.length > 0) {
133
- console.warn('WARNING: Some required documentation files are missing:');
134
- missingPaths.forEach(p => console.warn(` - ${p}`));
135
- console.warn('Please ensure Documentation System Plugin has generated complete documentation.');
136
- }
159
+ // Validate that required documentation files exist (hard validation - exits on failure)
160
+ validateWorkspaceRoot(workspaceRoot, docsPath);
137
161
  const ingestionOrchestrator = new ingestion_orchestrator_1.IngestionOrchestrator(dbManager, migrationManager, docsPath);
138
162
  try {
139
163
  await migrationManager.migrateAll();
@@ -1 +1 @@
1
- {"version":3,"file":"ingest-cli.js","sourceRoot":"","sources":["../../src/cli/ingest-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest-cli.js","sourceRoot":"","sources":["../../src/cli/ingest-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=merge-workspaces-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-workspaces-cli.d.ts","sourceRoot":"","sources":["../../src/cli/merge-workspaces-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,199 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const path = __importStar(require("path"));
38
+ const fs = __importStar(require("fs"));
39
+ const dotenv_1 = require("dotenv");
40
+ const multi_db_manager_1 = require("../core/multi-db-manager");
41
+ const migration_manager_1 = require("../core/migration-manager");
42
+ const ingestion_orchestrator_1 = require("../services/ingestion-orchestrator");
43
+ const docs_path_resolver_1 = require("../core/docs-path-resolver");
44
+ const crypto = __importStar(require("crypto"));
45
+ /**
46
+ * Loads .env file from workspace root or parent directories.
47
+ */
48
+ function loadEnvFile(workspaceRoot) {
49
+ let currentPath = workspaceRoot;
50
+ const maxDepth = 5;
51
+ for (let depth = 0; depth < maxDepth; depth++) {
52
+ const envPath = path.join(currentPath, '.env');
53
+ if (fs.existsSync(envPath)) {
54
+ (0, dotenv_1.config)({ path: envPath });
55
+ console.log(`[Merge Workspaces CLI] Loaded .env file from: ${envPath}`);
56
+ return;
57
+ }
58
+ const parentPath = path.dirname(currentPath);
59
+ if (parentPath === currentPath) {
60
+ break;
61
+ }
62
+ currentPath = parentPath;
63
+ }
64
+ console.warn('[Merge Workspaces CLI] No .env file found. Using environment variables only.');
65
+ }
66
+ /**
67
+ * Computes a stable plugin_id from a workspace root path.
68
+ */
69
+ function computePluginId(workspaceRoot) {
70
+ const normalizedPath = path.resolve(workspaceRoot).replace(/\\/g, '/').toLowerCase();
71
+ const hash = crypto.createHash('sha256').update(normalizedPath).digest('hex');
72
+ return hash.substring(0, 16);
73
+ }
74
+ /**
75
+ * CLI tool for merging multiple workspace documentations into a single database.
76
+ * Usage: node merge-workspaces-cli.js <target-workspace-root> [--source <source-workspace-root>] [--full]
77
+ */
78
+ async function main() {
79
+ const args = process.argv.slice(2);
80
+ let targetWorkspaceRoot = process.cwd();
81
+ let sourceWorkspaceRoot = null;
82
+ let isFull = false;
83
+ // Parse arguments
84
+ for (let i = 0; i < args.length; i++) {
85
+ if (args[i] === '--source' && i + 1 < args.length) {
86
+ sourceWorkspaceRoot = path.resolve(args[i + 1]);
87
+ i++;
88
+ }
89
+ else if (args[i] === '--full') {
90
+ isFull = true;
91
+ }
92
+ else if (targetWorkspaceRoot === process.cwd()) {
93
+ // First non-flag argument becomes target workspace root
94
+ targetWorkspaceRoot = path.resolve(args[i]);
95
+ }
96
+ }
97
+ // Load .env file
98
+ loadEnvFile(targetWorkspaceRoot);
99
+ if (process.env.OPENAI_API_KEY) {
100
+ console.log('[Merge Workspaces CLI] OpenAI API key loaded from .env file');
101
+ }
102
+ else {
103
+ console.warn('[Merge Workspaces CLI] WARNING: OPENAI_API_KEY not found in .env file or environment variables');
104
+ }
105
+ console.log(`Target workspace root: ${targetWorkspaceRoot}`);
106
+ console.log(`Mode: ${isFull ? 'full' : 'incremental'}`);
107
+ // Initialize target database manager (this will be the main database)
108
+ const targetDbManager = new multi_db_manager_1.MultiDbManager(targetWorkspaceRoot);
109
+ const pluginRoot = path.resolve(__dirname, '..', '..');
110
+ const migrationManager = new migration_manager_1.MigrationManager(targetDbManager, pluginRoot);
111
+ const targetPluginId = targetDbManager.getPluginId();
112
+ console.log(`Target plugin ID: ${targetPluginId}`);
113
+ // Run migrations
114
+ await migrationManager.migrateAll();
115
+ console.log('Database migrations completed');
116
+ // List of workspaces to merge
117
+ const workspacesToMerge = [];
118
+ // 1. Target workspace (always included)
119
+ const targetDocsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(targetWorkspaceRoot);
120
+ if (targetDocsPath) {
121
+ workspacesToMerge.push({
122
+ root: targetWorkspaceRoot,
123
+ docsPath: targetDocsPath,
124
+ name: 'Target Workspace'
125
+ });
126
+ console.log(`Found target docs directory: ${targetDocsPath}`);
127
+ }
128
+ else {
129
+ console.warn('WARNING: Target workspace docs/ directory not found. Skipping target workspace.');
130
+ }
131
+ // 2. Source workspace (if specified)
132
+ if (sourceWorkspaceRoot) {
133
+ const sourceDocsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(sourceWorkspaceRoot);
134
+ if (sourceDocsPath) {
135
+ workspacesToMerge.push({
136
+ root: sourceWorkspaceRoot,
137
+ docsPath: sourceDocsPath,
138
+ name: 'Source Workspace'
139
+ });
140
+ console.log(`Found source docs directory: ${sourceDocsPath}`);
141
+ }
142
+ else {
143
+ console.warn(`WARNING: Source workspace docs/ directory not found: ${sourceWorkspaceRoot}`);
144
+ }
145
+ }
146
+ // 3. Auto-detect documentation-system-plugin if it exists
147
+ const documentationSystemPluginPath = path.join(targetWorkspaceRoot, 'documentation-system-plugin');
148
+ if (fs.existsSync(documentationSystemPluginPath)) {
149
+ const noyraxDocsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(documentationSystemPluginPath);
150
+ if (noyraxDocsPath) {
151
+ // Check if not already added as source
152
+ const alreadyAdded = workspacesToMerge.some(w => w.docsPath === noyraxDocsPath);
153
+ if (!alreadyAdded) {
154
+ workspacesToMerge.push({
155
+ root: documentationSystemPluginPath,
156
+ docsPath: noyraxDocsPath,
157
+ name: 'Documentation System Plugin (Noyrax)'
158
+ });
159
+ console.log(`Found Documentation System Plugin docs directory: ${noyraxDocsPath}`);
160
+ }
161
+ }
162
+ }
163
+ if (workspacesToMerge.length === 0) {
164
+ console.error('ERROR: No docs/ directories found to merge.');
165
+ console.error('Please ensure at least one workspace has a docs/ directory.');
166
+ process.exit(1);
167
+ }
168
+ console.log(`\nMerging ${workspacesToMerge.length} workspace(s) into target database (plugin_id: ${targetPluginId})...`);
169
+ // Create ingestion orchestrator
170
+ const ingestionOrchestrator = new ingestion_orchestrator_1.IngestionOrchestrator(targetDbManager, migrationManager);
171
+ // Ingest each workspace into the target database
172
+ for (const workspace of workspacesToMerge) {
173
+ console.log(`\n--- Ingesting ${workspace.name} ---`);
174
+ console.log(` Workspace root: ${workspace.root}`);
175
+ console.log(` Docs path: ${workspace.docsPath}`);
176
+ try {
177
+ if (isFull) {
178
+ await ingestionOrchestrator.ingestFull(targetWorkspaceRoot, targetPluginId, workspace.docsPath);
179
+ }
180
+ else {
181
+ await ingestionOrchestrator.ingestIncremental(targetWorkspaceRoot, targetPluginId, workspace.docsPath);
182
+ }
183
+ console.log(`✓ Successfully ingested ${workspace.name}`);
184
+ }
185
+ catch (error) {
186
+ console.error(`✗ Failed to ingest ${workspace.name}: ${error.message}`);
187
+ console.error(error);
188
+ }
189
+ }
190
+ console.log('\n=== Merge completed successfully ===');
191
+ console.log(`All workspaces merged into database at: ${targetDbManager.getDbDirectory()}`);
192
+ console.log(`Plugin ID: ${targetPluginId}`);
193
+ process.exit(0);
194
+ }
195
+ main().catch((error) => {
196
+ console.error('Merge failed:', error);
197
+ process.exit(1);
198
+ });
199
+ //# sourceMappingURL=merge-workspaces-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-workspaces-cli.js","sourceRoot":"","sources":["../../src/cli/merge-workspaces-cli.ts"],"names":[],"mappings":"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"}