@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.
- package/MCP_SERVER_SETUP.md +14 -0
- package/README.md +49 -3
- package/SETUP_NEW_PROJECT.md +245 -14
- package/out/api/adr-api.d.ts +15 -2
- package/out/api/adr-api.d.ts.map +1 -1
- package/out/api/adr-api.js +98 -4
- package/out/api/adr-api.js.map +1 -1
- package/out/api/index.d.ts +1 -0
- package/out/api/index.d.ts.map +1 -1
- package/out/api/index.js +3 -1
- package/out/api/index.js.map +1 -1
- package/out/api/ingestion-api.d.ts +42 -0
- package/out/api/ingestion-api.d.ts.map +1 -0
- package/out/api/ingestion-api.js +148 -0
- package/out/api/ingestion-api.js.map +1 -0
- package/out/api/module-api.d.ts +11 -1
- package/out/api/module-api.d.ts.map +1 -1
- package/out/api/module-api.js +54 -2
- package/out/api/module-api.js.map +1 -1
- package/out/cli/ingest-cli.js +43 -19
- package/out/cli/ingest-cli.js.map +1 -1
- package/out/cli/merge-workspaces-cli.d.ts +3 -0
- package/out/cli/merge-workspaces-cli.d.ts.map +1 -0
- package/out/cli/merge-workspaces-cli.js +199 -0
- package/out/cli/merge-workspaces-cli.js.map +1 -0
- package/out/cli/tool-cli.js +59 -4
- package/out/cli/tool-cli.js.map +1 -1
- package/out/core/chromadb-vector-database.d.ts.map +1 -1
- package/out/core/chromadb-vector-database.js +6 -2
- package/out/core/chromadb-vector-database.js.map +1 -1
- package/out/core/migration-manager.d.ts +31 -0
- package/out/core/migration-manager.d.ts.map +1 -1
- package/out/core/migration-manager.js +126 -7
- package/out/core/migration-manager.js.map +1 -1
- package/out/core/multi-db-manager.d.ts +10 -0
- package/out/core/multi-db-manager.d.ts.map +1 -1
- package/out/core/multi-db-manager.js +51 -0
- package/out/core/multi-db-manager.js.map +1 -1
- package/out/ingestors/adr-ingestor.d.ts +7 -0
- package/out/ingestors/adr-ingestor.d.ts.map +1 -1
- package/out/ingestors/adr-ingestor.js +41 -9
- package/out/ingestors/adr-ingestor.js.map +1 -1
- package/out/mcp/server.d.ts +3 -0
- package/out/mcp/server.d.ts.map +1 -1
- package/out/mcp/server.js +106 -2
- package/out/mcp/server.js.map +1 -1
- package/out/mcp/tools/adr-generator.d.ts +123 -0
- package/out/mcp/tools/adr-generator.d.ts.map +1 -0
- package/out/mcp/tools/adr-generator.js +1113 -0
- package/out/mcp/tools/adr-generator.js.map +1 -0
- package/out/mcp/tools/gap-analysis.d.ts +6 -2
- package/out/mcp/tools/gap-analysis.d.ts.map +1 -1
- package/out/mcp/tools/gap-analysis.js +32 -5
- package/out/mcp/tools/gap-analysis.js.map +1 -1
- package/out/repositories/module-repository.d.ts +5 -0
- package/out/repositories/module-repository.d.ts.map +1 -1
- package/out/repositories/module-repository.js +24 -0
- package/out/repositories/module-repository.js.map +1 -1
- package/out/services/adr-context-builder.d.ts +70 -0
- package/out/services/adr-context-builder.d.ts.map +1 -0
- package/out/services/adr-context-builder.js +141 -0
- package/out/services/adr-context-builder.js.map +1 -0
- package/out/services/adr-pattern-analyzer.d.ts +75 -0
- package/out/services/adr-pattern-analyzer.d.ts.map +1 -0
- package/out/services/adr-pattern-analyzer.js +339 -0
- package/out/services/adr-pattern-analyzer.js.map +1 -0
- package/out/services/adr-reasoning-service.d.ts +63 -0
- package/out/services/adr-reasoning-service.d.ts.map +1 -0
- package/out/services/adr-reasoning-service.js +760 -0
- package/out/services/adr-reasoning-service.js.map +1 -0
- package/out/services/navigation-builder.d.ts.map +1 -1
- package/out/services/navigation-builder.js +70 -11
- package/out/services/navigation-builder.js.map +1 -1
- package/out/services/noyrax-integration-service.d.ts +51 -0
- package/out/services/noyrax-integration-service.d.ts.map +1 -0
- package/out/services/noyrax-integration-service.js +215 -0
- package/out/services/noyrax-integration-service.js.map +1 -0
- package/out/services/semantic-pattern-matcher.d.ts +61 -0
- package/out/services/semantic-pattern-matcher.d.ts.map +1 -0
- package/out/services/semantic-pattern-matcher.js +183 -0
- package/out/services/semantic-pattern-matcher.js.map +1 -0
- package/out/services/workflow-orchestrator.d.ts +63 -0
- package/out/services/workflow-orchestrator.d.ts.map +1 -0
- package/out/services/workflow-orchestrator.js +111 -0
- package/out/services/workflow-orchestrator.js.map +1 -0
- package/out/ui/commands.d.ts.map +1 -1
- package/out/ui/commands.js +112 -1
- package/out/ui/commands.js.map +1 -1
- package/out/ui/database-explorer.d.ts.map +1 -1
- package/out/ui/database-explorer.js +47 -1
- package/out/ui/database-explorer.js.map +1 -1
- 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":"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"}
|
package/out/api/module-api.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/out/api/module-api.js
CHANGED
|
@@ -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
|
-
|
|
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":";;;
|
|
1
|
+
{"version":3,"file":"module-api.js","sourceRoot":"","sources":["../../src/api/module-api.ts"],"names":[],"mappings":"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"}
|
package/out/cli/ingest-cli.js
CHANGED
|
@@ -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
|
-
|
|
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 @@
|
|
|
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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"}
|