@noyrax/5d-database-plugin 0.1.13-beta.1 → 0.1.14-beta.10

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 (147) hide show
  1. package/README.md +25 -0
  2. package/out/api/adr-api.d.ts +0 -6
  3. package/out/api/adr-api.d.ts.map +1 -1
  4. package/out/api/adr-api.js +14 -49
  5. package/out/api/adr-api.js.map +1 -1
  6. package/out/api/bootstrap-api.d.ts +4 -1
  7. package/out/api/bootstrap-api.d.ts.map +1 -1
  8. package/out/api/bootstrap-api.js +27 -4
  9. package/out/api/bootstrap-api.js.map +1 -1
  10. package/out/api/context-builder.d.ts.map +1 -1
  11. package/out/api/context-builder.js +21 -5
  12. package/out/api/context-builder.js.map +1 -1
  13. package/out/api/evidence-grader.d.ts +83 -0
  14. package/out/api/evidence-grader.d.ts.map +1 -0
  15. package/out/api/evidence-grader.js +161 -0
  16. package/out/api/evidence-grader.js.map +1 -0
  17. package/out/api/index.d.ts +5 -0
  18. package/out/api/index.d.ts.map +1 -1
  19. package/out/api/index.js +11 -1
  20. package/out/api/index.js.map +1 -1
  21. package/out/api/learning-path-api.d.ts +3 -0
  22. package/out/api/learning-path-api.d.ts.map +1 -1
  23. package/out/api/learning-path-api.js +15 -2
  24. package/out/api/learning-path-api.js.map +1 -1
  25. package/out/api/module-api.d.ts +0 -1
  26. package/out/api/module-api.d.ts.map +1 -1
  27. package/out/api/module-api.js +4 -38
  28. package/out/api/module-api.js.map +1 -1
  29. package/out/api/self-explanation-api.d.ts +11 -1
  30. package/out/api/self-explanation-api.d.ts.map +1 -1
  31. package/out/api/self-explanation-api.js +285 -19
  32. package/out/api/self-explanation-api.js.map +1 -1
  33. package/out/api/semantic-search-api.d.ts +3 -0
  34. package/out/api/semantic-search-api.d.ts.map +1 -1
  35. package/out/api/semantic-search-api.js +41 -4
  36. package/out/api/semantic-search-api.js.map +1 -1
  37. package/out/api/source-access-contract-api.d.ts +60 -0
  38. package/out/api/source-access-contract-api.d.ts.map +1 -0
  39. package/out/api/source-access-contract-api.js +231 -0
  40. package/out/api/source-access-contract-api.js.map +1 -0
  41. package/out/api/source-snippet-api.d.ts +58 -0
  42. package/out/api/source-snippet-api.d.ts.map +1 -0
  43. package/out/api/source-snippet-api.js +187 -0
  44. package/out/api/source-snippet-api.js.map +1 -0
  45. package/out/api/vector-backend-status-api.d.ts +68 -0
  46. package/out/api/vector-backend-status-api.d.ts.map +1 -0
  47. package/out/api/vector-backend-status-api.js +241 -0
  48. package/out/api/vector-backend-status-api.js.map +1 -0
  49. package/out/cli/debug-embedding-strategies.d.ts +3 -0
  50. package/out/cli/debug-embedding-strategies.d.ts.map +1 -0
  51. package/out/cli/debug-embedding-strategies.js +255 -0
  52. package/out/cli/debug-embedding-strategies.js.map +1 -0
  53. package/out/cli/debug-plugin-id.d.ts +9 -0
  54. package/out/cli/debug-plugin-id.d.ts.map +1 -0
  55. package/out/cli/debug-plugin-id.js +188 -0
  56. package/out/cli/debug-plugin-id.js.map +1 -0
  57. package/out/cli/ingest-cli.js +44 -5
  58. package/out/cli/ingest-cli.js.map +1 -1
  59. package/out/cli/tool-cli.js +1 -1
  60. package/out/cli/tool-cli.js.map +1 -1
  61. package/out/core/chromadb-vector-database.d.ts.map +1 -1
  62. package/out/core/chromadb-vector-database.js +10 -12
  63. package/out/core/chromadb-vector-database.js.map +1 -1
  64. package/out/core/migration-manager.d.ts.map +1 -1
  65. package/out/core/migration-manager.js +61 -32
  66. package/out/core/migration-manager.js.map +1 -1
  67. package/out/core/multi-db-manager.d.ts +26 -0
  68. package/out/core/multi-db-manager.d.ts.map +1 -1
  69. package/out/core/multi-db-manager.js +143 -2
  70. package/out/core/multi-db-manager.js.map +1 -1
  71. package/out/core/path-normalizer.d.ts +46 -0
  72. package/out/core/path-normalizer.d.ts.map +1 -0
  73. package/out/core/path-normalizer.js +152 -0
  74. package/out/core/path-normalizer.js.map +1 -0
  75. package/out/core/vector-database-factory.js +5 -5
  76. package/out/core/vector-database-factory.js.map +1 -1
  77. package/out/core/vss-vector-database.js +8 -8
  78. package/out/core/vss-vector-database.js.map +1 -1
  79. package/out/embedding/embedding-pipeline.d.ts +18 -0
  80. package/out/embedding/embedding-pipeline.d.ts.map +1 -1
  81. package/out/embedding/embedding-pipeline.js +192 -3
  82. package/out/embedding/embedding-pipeline.js.map +1 -1
  83. package/out/embedding/module-summarizer.d.ts +25 -0
  84. package/out/embedding/module-summarizer.d.ts.map +1 -0
  85. package/out/embedding/module-summarizer.js +104 -0
  86. package/out/embedding/module-summarizer.js.map +1 -0
  87. package/out/ingestors/adr-ingestor.d.ts.map +1 -1
  88. package/out/ingestors/adr-ingestor.js +7 -8
  89. package/out/ingestors/adr-ingestor.js.map +1 -1
  90. package/out/ingestors/module-ingestor.d.ts.map +1 -1
  91. package/out/ingestors/module-ingestor.js +17 -0
  92. package/out/ingestors/module-ingestor.js.map +1 -1
  93. package/out/ingestors/symbol-ingestor.d.ts.map +1 -1
  94. package/out/ingestors/symbol-ingestor.js +24 -2
  95. package/out/ingestors/symbol-ingestor.js.map +1 -1
  96. package/out/mcp/tools/gap-analysis.d.ts +21 -2
  97. package/out/mcp/tools/gap-analysis.d.ts.map +1 -1
  98. package/out/mcp/tools/gap-analysis.js +326 -27
  99. package/out/mcp/tools/gap-analysis.js.map +1 -1
  100. package/out/mcp/tools/learning-path.d.ts.map +1 -1
  101. package/out/mcp/tools/learning-path.js +19 -5
  102. package/out/mcp/tools/learning-path.js.map +1 -1
  103. package/out/mcp/tools/semantic-discovery.d.ts.map +1 -1
  104. package/out/mcp/tools/semantic-discovery.js +110 -22
  105. package/out/mcp/tools/semantic-discovery.js.map +1 -1
  106. package/out/mcp/tools/source-access-contract.d.ts +26 -0
  107. package/out/mcp/tools/source-access-contract.d.ts.map +1 -0
  108. package/out/mcp/tools/source-access-contract.js +45 -0
  109. package/out/mcp/tools/source-access-contract.js.map +1 -0
  110. package/out/mcp/tools/source-snippet.d.ts +71 -0
  111. package/out/mcp/tools/source-snippet.d.ts.map +1 -0
  112. package/out/mcp/tools/source-snippet.js +82 -0
  113. package/out/mcp/tools/source-snippet.js.map +1 -0
  114. package/out/models/action-hint.d.ts +36 -0
  115. package/out/models/action-hint.d.ts.map +1 -0
  116. package/out/models/action-hint.js +38 -0
  117. package/out/models/action-hint.js.map +1 -0
  118. package/out/models/evidence.d.ts +68 -0
  119. package/out/models/evidence.d.ts.map +1 -0
  120. package/out/models/evidence.js +91 -0
  121. package/out/models/evidence.js.map +1 -0
  122. package/out/models/module.d.ts +2 -0
  123. package/out/models/module.d.ts.map +1 -1
  124. package/out/models/reason-codes.d.ts +52 -0
  125. package/out/models/reason-codes.d.ts.map +1 -0
  126. package/out/models/reason-codes.js +83 -0
  127. package/out/models/reason-codes.js.map +1 -0
  128. package/out/models/symbol.d.ts +6 -0
  129. package/out/models/symbol.d.ts.map +1 -1
  130. package/out/repositories/adr-repository.d.ts.map +1 -1
  131. package/out/repositories/adr-repository.js +2 -1
  132. package/out/repositories/adr-repository.js.map +1 -1
  133. package/out/repositories/module-repository.d.ts.map +1 -1
  134. package/out/repositories/module-repository.js +9 -3
  135. package/out/repositories/module-repository.js.map +1 -1
  136. package/out/repositories/symbol-repository.d.ts.map +1 -1
  137. package/out/repositories/symbol-repository.js +22 -4
  138. package/out/repositories/symbol-repository.js.map +1 -1
  139. package/out/services/cross-dimension-linker.d.ts.map +1 -1
  140. package/out/services/cross-dimension-linker.js +27 -3
  141. package/out/services/cross-dimension-linker.js.map +1 -1
  142. package/package.json +196 -195
  143. package/schemas/sqlite/001_add_source_code_spans_modules.sql +7 -0
  144. package/schemas/sqlite/001_z_add_source_code_spans_modules.sql +13 -0
  145. package/schemas/sqlite/002_add_source_code_spans_symbols.sql +15 -0
  146. package/schemas/sqlite/002_z_add_source_code_spans_symbols.sql +21 -0
  147. package/schemas/sqlite/006_add_source_access_config.sql +33 -0
@@ -0,0 +1,241 @@
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.VectorBackendStatusApi = void 0;
37
+ const os = __importStar(require("os"));
38
+ const chromadb_vector_database_1 = require("../core/chromadb-vector-database");
39
+ const vss_vector_database_1 = require("../core/vss-vector-database");
40
+ const reason_codes_1 = require("../models/reason-codes");
41
+ const action_hint_1 = require("../models/action-hint");
42
+ /**
43
+ * API for checking vector backend status and health.
44
+ */
45
+ class VectorBackendStatusApi {
46
+ constructor(dbManager) {
47
+ this.dbManager = dbManager;
48
+ }
49
+ /**
50
+ * Gets the current vector backend status.
51
+ *
52
+ * @returns Promise that resolves to vector backend status
53
+ */
54
+ async getVectorBackendStatus() {
55
+ const platform = os.platform();
56
+ const arch = os.arch();
57
+ // Determine expected mode based on platform
58
+ let expectedMode = 'fallback';
59
+ if (platform === 'win32') {
60
+ expectedMode = 'chromadb';
61
+ }
62
+ else if (platform === 'darwin' || platform === 'linux') {
63
+ expectedMode = 'vss';
64
+ }
65
+ // Get vector database instance
66
+ const vectorDb = this.dbManager.getVectorDatabase();
67
+ if (!vectorDb) {
68
+ // Vector database not initialized
69
+ return {
70
+ backend: 'none',
71
+ mode: expectedMode,
72
+ expected_available: false,
73
+ reachable: false,
74
+ fallback: true,
75
+ reason_code: reason_codes_1.ReasonCode.NOT_INSTALLED,
76
+ description: 'Vector database not initialized. V-dimension database may not be opened yet.',
77
+ platform: `${platform}/${arch}`,
78
+ action_hints: this.getActionHintsForReason(reason_codes_1.ReasonCode.NOT_INSTALLED, expectedMode, platform)
79
+ };
80
+ }
81
+ const isAvailable = vectorDb.isAvailable();
82
+ const isChromaDb = vectorDb instanceof chromadb_vector_database_1.ChromaDbVectorDatabase;
83
+ const isVss = vectorDb instanceof vss_vector_database_1.VssVectorDatabase;
84
+ // Determine actual backend
85
+ let actualBackend = 'none';
86
+ if (isChromaDb) {
87
+ actualBackend = 'chromadb';
88
+ }
89
+ else if (isVss) {
90
+ actualBackend = 'vss';
91
+ }
92
+ else {
93
+ actualBackend = 'fallback';
94
+ }
95
+ // Determine if fallback is active
96
+ const isFallback = (expectedMode === 'chromadb' && actualBackend !== 'chromadb') ||
97
+ (expectedMode === 'vss' && actualBackend !== 'vss');
98
+ // Determine reason code
99
+ let reasonCode = reason_codes_1.ReasonCode.OK;
100
+ let description = 'Vector backend is available and reachable.';
101
+ if (!isAvailable) {
102
+ if (expectedMode === 'chromadb' && actualBackend === 'chromadb') {
103
+ reasonCode = reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE;
104
+ description = 'ChromaDB backend is not reachable. Check if ChromaDB server is running on localhost:8000.';
105
+ }
106
+ else if (expectedMode === 'vss' && actualBackend === 'vss') {
107
+ reasonCode = reason_codes_1.ReasonCode.DEPENDENCY_MISSING;
108
+ description = 'VSS extension is not available. SQLite VSS extension may not be installed.';
109
+ }
110
+ else if (isFallback) {
111
+ reasonCode = reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE;
112
+ description = 'Expected vector backend is not available, using fallback.';
113
+ }
114
+ else {
115
+ reasonCode = reason_codes_1.ReasonCode.NOT_INSTALLED;
116
+ description = 'Vector backend is not available.';
117
+ }
118
+ }
119
+ const status = {
120
+ backend: actualBackend,
121
+ mode: expectedMode,
122
+ expected_available: isAvailable && !isFallback,
123
+ reachable: isAvailable,
124
+ fallback: isFallback,
125
+ reason_code: reasonCode,
126
+ description,
127
+ platform: `${platform}/${arch}`
128
+ };
129
+ // Add action hints if there are issues
130
+ if (reasonCode !== reason_codes_1.ReasonCode.OK) {
131
+ status.action_hints = this.getActionHintsForReason(reasonCode, expectedMode, platform);
132
+ }
133
+ return status;
134
+ }
135
+ /**
136
+ * Performs a healthcheck on the vector backend.
137
+ * Attempts to perform a simple query to verify the backend is responsive.
138
+ *
139
+ * @returns Promise that resolves to healthcheck result
140
+ */
141
+ async healthcheckVectorBackend() {
142
+ const startTime = Date.now();
143
+ const vectorDb = this.dbManager.getVectorDatabase();
144
+ if (!vectorDb) {
145
+ return {
146
+ healthy: false,
147
+ reason_code: reason_codes_1.ReasonCode.NOT_INSTALLED,
148
+ description: 'Vector database not initialized.',
149
+ action_hints: this.getActionHintsForReason(reason_codes_1.ReasonCode.NOT_INSTALLED, 'fallback', os.platform())
150
+ };
151
+ }
152
+ if (!vectorDb.isAvailable()) {
153
+ const platform = os.platform();
154
+ const expectedMode = platform === 'win32' ? 'chromadb' : (platform === 'darwin' || platform === 'linux' ? 'vss' : 'fallback');
155
+ return {
156
+ healthy: false,
157
+ reason_code: reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE,
158
+ description: 'Vector backend is not available.',
159
+ action_hints: this.getActionHintsForReason(reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE, expectedMode, platform)
160
+ };
161
+ }
162
+ // Try to perform a simple search query to verify backend is responsive
163
+ try {
164
+ // Use a zero vector for testing (will return empty results, but tests connectivity)
165
+ const testVector = new Array(1536).fill(0);
166
+ await vectorDb.search(testVector, 1);
167
+ const latencyMs = Date.now() - startTime;
168
+ return {
169
+ healthy: true,
170
+ reason_code: reason_codes_1.ReasonCode.OK,
171
+ latency_ms: latencyMs,
172
+ description: 'Vector backend is healthy and responsive.'
173
+ };
174
+ }
175
+ catch (error) {
176
+ const latencyMs = Date.now() - startTime;
177
+ const errorMsg = error?.message || String(error);
178
+ const platform = os.platform();
179
+ const expectedMode = platform === 'win32' ? 'chromadb' : (platform === 'darwin' || platform === 'linux' ? 'vss' : 'fallback');
180
+ // Determine error code
181
+ let errorCode = 'UNKNOWN_ERROR';
182
+ let reasonCode = reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE;
183
+ if (errorMsg.includes('ECONNREFUSED') || errorMsg.includes('connect')) {
184
+ errorCode = 'CONNECTION_REFUSED';
185
+ reasonCode = reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE;
186
+ }
187
+ else if (errorMsg.includes('timeout')) {
188
+ errorCode = 'TIMEOUT';
189
+ reasonCode = reason_codes_1.ReasonCode.TIMEOUT;
190
+ }
191
+ else if (errorMsg.includes('ENOTFOUND')) {
192
+ errorCode = 'DNS_ERROR';
193
+ reasonCode = reason_codes_1.ReasonCode.WRONG_PATH;
194
+ }
195
+ return {
196
+ healthy: false,
197
+ reason_code: reasonCode,
198
+ latency_ms: latencyMs,
199
+ error_code: errorCode,
200
+ description: `Healthcheck failed: ${errorMsg}`,
201
+ action_hints: this.getActionHintsForReason(reasonCode, expectedMode, platform)
202
+ };
203
+ }
204
+ }
205
+ /**
206
+ * Gets action hints for a specific reason code.
207
+ */
208
+ getActionHintsForReason(reasonCode, expectedMode, platform) {
209
+ const hints = [];
210
+ if (reasonCode === reason_codes_1.ReasonCode.VECTOR_BACKEND_UNREACHABLE && expectedMode === 'chromadb') {
211
+ // ChromaDB is not reachable
212
+ if (platform === 'win32') {
213
+ hints.push((0, action_hint_1.createActionHint)('windows', 'chroma run --host localhost --port 8000', ['ChromaDB must be installed (pip install chromadb)', 'Python must be in PATH'], ['Open browser to http://localhost:8000/api/v1/heartbeat', 'Check if process is running: Get-Process | Where-Object {$_.ProcessName -like "*chroma*"}'], 'Start ChromaDB server on localhost:8000'));
214
+ }
215
+ else if (platform === 'linux') {
216
+ hints.push((0, action_hint_1.createActionHint)('linux', 'chroma run --host localhost --port 8000', ['ChromaDB must be installed (pip install chromadb)', 'Python must be in PATH'], ['curl http://localhost:8000/api/v1/heartbeat', 'Check if process is running: ps aux | grep chroma'], 'Start ChromaDB server on localhost:8000'));
217
+ }
218
+ else if (platform === 'darwin') {
219
+ hints.push((0, action_hint_1.createActionHint)('mac', 'chroma run --host localhost --port 8000', ['ChromaDB must be installed (pip install chromadb)', 'Python must be in PATH'], ['curl http://localhost:8000/api/v1/heartbeat', 'Check if process is running: ps aux | grep chroma'], 'Start ChromaDB server on localhost:8000'));
220
+ }
221
+ }
222
+ else if (reasonCode === reason_codes_1.ReasonCode.DEPENDENCY_MISSING && expectedMode === 'vss') {
223
+ // VSS extension is missing
224
+ if (platform === 'linux') {
225
+ hints.push((0, action_hint_1.createActionHint)('linux', 'sudo apt-get install sqlite3-vss', ['SQLite3 must be installed', 'Package manager access (apt-get)'], ['sqlite3 :memory: "SELECT load_extension(\'vss0\');"', 'Check if extension loads without errors'], 'Install SQLite VSS extension'));
226
+ }
227
+ else if (platform === 'darwin') {
228
+ hints.push((0, action_hint_1.createActionHint)('mac', 'brew install sqlite-vss', ['Homebrew must be installed', 'SQLite3 must be installed'], ['sqlite3 :memory: "SELECT load_extension(\'vss0\');"', 'Check if extension loads without errors'], 'Install SQLite VSS extension via Homebrew'));
229
+ }
230
+ }
231
+ else if (reasonCode === reason_codes_1.ReasonCode.NOT_INSTALLED) {
232
+ // Component is not installed
233
+ if (platform === 'win32') {
234
+ hints.push((0, action_hint_1.createActionHint)('windows', 'npm install chromadb', ['Node.js and npm must be installed'], ['node -e "require(\'chromadb\')"', 'Check if chromadb package is available'], 'Install chromadb npm package'));
235
+ }
236
+ }
237
+ return hints;
238
+ }
239
+ }
240
+ exports.VectorBackendStatusApi = VectorBackendStatusApi;
241
+ //# sourceMappingURL=vector-backend-status-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-backend-status-api.js","sourceRoot":"","sources":["../../src/api/vector-backend-status-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=debug-embedding-strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-embedding-strategies.d.ts","sourceRoot":"","sources":["../../src/cli/debug-embedding-strategies.ts"],"names":[],"mappings":""}
@@ -0,0 +1,255 @@
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 module_api_1 = require("../api/module-api");
42
+ const module_summarizer_1 = require("../embedding/module-summarizer");
43
+ const docs_path_resolver_1 = require("../core/docs-path-resolver");
44
+ /**
45
+ * Loads .env file from workspace root or parent directories.
46
+ */
47
+ function loadEnvFile(workspaceRoot) {
48
+ let currentPath = workspaceRoot;
49
+ const maxDepth = 5;
50
+ for (let depth = 0; depth < maxDepth; depth++) {
51
+ const envPath = path.join(currentPath, '.env');
52
+ if (fs.existsSync(envPath)) {
53
+ (0, dotenv_1.config)({ path: envPath });
54
+ return;
55
+ }
56
+ const parentPath = path.dirname(currentPath);
57
+ if (parentPath === currentPath) {
58
+ break;
59
+ }
60
+ currentPath = parentPath;
61
+ }
62
+ }
63
+ /**
64
+ * Validates that docs/ directory exists.
65
+ */
66
+ function validateDocsDirectory(workspaceRoot) {
67
+ const docsPath = docs_path_resolver_1.DocsPathResolver.findDocsDirectoryFromPath(workspaceRoot);
68
+ if (!docsPath) {
69
+ console.error('ERROR: docs/ directory not found in workspace or parent directories.');
70
+ console.error('Please run Documentation System Plugin (Noyrax) first to generate docs/ directory.');
71
+ return false;
72
+ }
73
+ return true;
74
+ }
75
+ /**
76
+ * Estimates token count from content length.
77
+ * Rough estimate: 1 token ≈ 4 characters (konservativ)
78
+ */
79
+ function estimateTokens(content) {
80
+ return Math.ceil(content.length / 4);
81
+ }
82
+ /**
83
+ * Tests optimize strategy (simulates what optimizeModuleContentForEmbedding does).
84
+ */
85
+ function testOptimizeStrategy(content, maxTokens) {
86
+ // Simplified version - just truncate for testing
87
+ const maxChars = maxTokens * 4;
88
+ const optimized = content.length > maxChars ? content.substring(0, maxChars) + '\n\n[... optimized ...]' : content;
89
+ const tokens = estimateTokens(optimized);
90
+ const reduction = estimateTokens(content) - tokens;
91
+ return { optimized, tokens, reduction };
92
+ }
93
+ /**
94
+ * Tests hierarchical strategy (simulates what extractModuleStructure does).
95
+ */
96
+ function testHierarchicalStrategy(content) {
97
+ const lines = content.split('\n');
98
+ const structure = [];
99
+ for (const line of lines) {
100
+ // Keep headers
101
+ if (line.startsWith('#') || line.startsWith('##') || line.startsWith('###')) {
102
+ structure.push(line);
103
+ continue;
104
+ }
105
+ // Skip tables
106
+ if (line.startsWith('|')) {
107
+ continue;
108
+ }
109
+ // Keep code blocks (first line only)
110
+ if (line.startsWith('```')) {
111
+ structure.push(line);
112
+ continue;
113
+ }
114
+ // Keep important comments
115
+ if (line.trim().startsWith('<!--') && line.includes('change:')) {
116
+ structure.push(line);
117
+ continue;
118
+ }
119
+ // Keep empty lines
120
+ if (line.trim() === '') {
121
+ structure.push(line);
122
+ continue;
123
+ }
124
+ }
125
+ const structureContent = structure.join('\n');
126
+ const tokens = estimateTokens(structureContent);
127
+ const reduction = estimateTokens(content) - tokens;
128
+ return { structure: structureContent, tokens, reduction };
129
+ }
130
+ /**
131
+ * CLI tool for debugging embedding strategies.
132
+ * Tests all three strategies and shows results.
133
+ */
134
+ async function main() {
135
+ const args = process.argv.slice(2);
136
+ // Auto-detect workspace root if not provided
137
+ let workspaceRoot;
138
+ if (args.length === 0) {
139
+ workspaceRoot = process.cwd();
140
+ }
141
+ else {
142
+ workspaceRoot = path.resolve(args[0]);
143
+ }
144
+ // Validate workspace root exists
145
+ if (!fs.existsSync(workspaceRoot)) {
146
+ console.error(`ERROR: Workspace root does not exist: ${workspaceRoot}`);
147
+ console.error('');
148
+ console.error('Usage: debug-embedding-strategies [<workspace-root>]');
149
+ console.error('If <workspace-root> is omitted, current working directory is used.');
150
+ process.exit(1);
151
+ }
152
+ // Load .env file
153
+ loadEnvFile(workspaceRoot);
154
+ // Validate docs/ directory
155
+ if (!validateDocsDirectory(workspaceRoot)) {
156
+ process.exit(1);
157
+ }
158
+ try {
159
+ console.log(`[Debug Embedding Strategies] Analyzing workspace: ${workspaceRoot}`);
160
+ console.log('');
161
+ const dbManager = new multi_db_manager_1.MultiDbManager(workspaceRoot);
162
+ const pluginId = dbManager.getPluginId();
163
+ const moduleApi = new module_api_1.ModuleApi(dbManager);
164
+ // Get all modules
165
+ const modules = await moduleApi.getAllModules(pluginId);
166
+ console.log(`[Debug Embedding Strategies] Found ${modules.length} modules`);
167
+ console.log('');
168
+ const maxTokens = 8000; // Same as in embedding-pipeline.ts
169
+ const largeModules = [];
170
+ // Analyze each module
171
+ for (const module of modules) {
172
+ const content = module.content_markdown;
173
+ const originalTokens = estimateTokens(content);
174
+ if (originalTokens > maxTokens) {
175
+ // Test optimize strategy
176
+ const optimizeResult = testOptimizeStrategy(content, maxTokens);
177
+ // Test hierarchical strategy
178
+ const hierarchicalResult = testHierarchicalStrategy(content);
179
+ // Check if summarize is available
180
+ const summarizer = new module_summarizer_1.ModuleSummarizer();
181
+ const summarizeAvailable = summarizer.isConfigured();
182
+ largeModules.push({
183
+ filePath: module.file_path,
184
+ originalTokens,
185
+ optimizeTokens: optimizeResult.tokens,
186
+ optimizeReduction: optimizeResult.reduction,
187
+ hierarchicalTokens: hierarchicalResult.tokens,
188
+ hierarchicalReduction: hierarchicalResult.reduction,
189
+ summarizeAvailable
190
+ });
191
+ }
192
+ }
193
+ // Print results
194
+ console.log('=== Token-Limit Analysis ===');
195
+ console.log('');
196
+ if (largeModules.length === 0) {
197
+ console.log('✅ No modules exceed token limit (8000 tokens)');
198
+ console.log(` All ${modules.length} modules are within limits`);
199
+ }
200
+ else {
201
+ console.log(`⚠️ Found ${largeModules.length} modules exceeding token limit:`);
202
+ console.log('');
203
+ // Sort by original tokens (largest first)
204
+ largeModules.sort((a, b) => b.originalTokens - a.originalTokens);
205
+ for (const module of largeModules) {
206
+ console.log(`📄 ${module.filePath}`);
207
+ console.log(` Original: ~${module.originalTokens} tokens`);
208
+ console.log(` Optimize: ~${module.optimizeTokens} tokens (reduction: ${module.optimizeReduction} tokens, ${Math.round(module.optimizeReduction / module.originalTokens * 100)}%)`);
209
+ console.log(` Hierarchical: ~${module.hierarchicalTokens} tokens (reduction: ${module.hierarchicalReduction} tokens, ${Math.round(module.hierarchicalReduction / module.originalTokens * 100)}%)`);
210
+ console.log(` Summarize: ${module.summarizeAvailable ? '✅ Available' : '❌ Not available (OPENAI_API_KEY required)'}`);
211
+ console.log('');
212
+ }
213
+ // Summary
214
+ console.log('=== Strategy Recommendations ===');
215
+ console.log('');
216
+ console.log('Current EMBEDDING_STRATEGY:', process.env.EMBEDDING_STRATEGY || 'optimize (default)');
217
+ console.log('');
218
+ const avgOptimizeReduction = largeModules.reduce((sum, m) => sum + m.optimizeReduction, 0) / largeModules.length;
219
+ const avgHierarchicalReduction = largeModules.reduce((sum, m) => sum + m.hierarchicalReduction, 0) / largeModules.length;
220
+ console.log(`Average token reduction:`);
221
+ console.log(` Optimize: ${Math.round(avgOptimizeReduction)} tokens (${Math.round(avgOptimizeReduction / largeModules[0].originalTokens * 100)}% of largest module)`);
222
+ console.log(` Hierarchical: ${Math.round(avgHierarchicalReduction)} tokens (${Math.round(avgHierarchicalReduction / largeModules[0].originalTokens * 100)}% of largest module)`);
223
+ console.log('');
224
+ if (largeModules.some(m => m.summarizeAvailable)) {
225
+ console.log('💡 Tip: Set EMBEDDING_STRATEGY=summarize in .env for LLM-based summarization');
226
+ }
227
+ else {
228
+ console.log('💡 Tip: Set OPENAI_API_KEY in .env to enable summarize strategy');
229
+ }
230
+ console.log('💡 Tip: Set EMBEDDING_STRATEGY=hierarchical in .env for hierarchical embeddings');
231
+ console.log('💡 Tip: Default (optimize) is recommended for most cases');
232
+ }
233
+ console.log('');
234
+ console.log('=== Test Complete ===');
235
+ }
236
+ catch (error) {
237
+ const errorMsg = error instanceof Error ? error.message : String(error);
238
+ console.error(`Error: ${errorMsg}`);
239
+ if (error instanceof Error && error.stack) {
240
+ console.error(`Stack trace: ${error.stack}`);
241
+ }
242
+ process.exit(1);
243
+ }
244
+ }
245
+ if (require.main === module) {
246
+ main().catch(error => {
247
+ const errorMsg = error instanceof Error ? error.message : String(error);
248
+ console.error(`Fatal error: ${errorMsg}`);
249
+ if (error instanceof Error && error.stack) {
250
+ console.error(`Stack trace: ${error.stack}`);
251
+ }
252
+ process.exit(1);
253
+ });
254
+ }
255
+ //# sourceMappingURL=debug-embedding-strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-embedding-strategies.js","sourceRoot":"","sources":["../../src/cli/debug-embedding-strategies.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA6B;AAC7B,uCAAyB;AACzB,mCAAgC;AAChC,+DAA0D;AAC1D,kDAA8C;AAG9C,sEAAkE;AAClE,mEAA8D;AAE9D;;GAEG;AACH,SAAS,WAAW,CAAC,aAAqB;IACtC,IAAI,WAAW,GAAG,aAAa,CAAC;IAChC,MAAM,QAAQ,GAAG,CAAC,CAAC;IAEnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM;QACV,CAAC;QACD,WAAW,GAAG,UAAU,CAAC;IAC7B,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,aAAqB;IAChD,MAAM,QAAQ,GAAG,qCAAgB,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;IAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;QACpG,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAe;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAe,EAAE,SAAiB;IAC5D,iDAAiD;IACjD,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC;IACnH,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IACnD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,eAAe;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1E,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACb,CAAC;QAED,cAAc;QACd,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QAED,qCAAqC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACb,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACb,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS;QACb,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IACnD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,IAAI;IACf,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,6CAA6C;IAC7C,IAAI,aAAqB,CAAC;IAE1B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;SAAM,CAAC;QACJ,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,iBAAiB;IACjB,WAAW,CAAC,aAAa,CAAC,CAAC;IAE3B,2BAA2B;IAC3B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qDAAqD,aAAa,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,SAAS,GAAG,IAAI,iCAAc,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAE3C,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,mCAAmC;QAC3D,MAAM,YAAY,GAQb,EAAE,CAAC;QAER,sBAAsB;QACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;YACxC,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAE/C,IAAI,cAAc,GAAG,SAAS,EAAE,CAAC;gBAC7B,yBAAyB;gBACzB,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAEhE,6BAA6B;gBAC7B,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBAE7D,kCAAkC;gBAClC,MAAM,UAAU,GAAG,IAAI,oCAAgB,EAAE,CAAC;gBAC1C,MAAM,kBAAkB,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;gBAErD,YAAY,CAAC,IAAI,CAAC;oBACd,QAAQ,EAAE,MAAM,CAAC,SAAS;oBAC1B,cAAc;oBACd,cAAc,EAAE,cAAc,CAAC,MAAM;oBACrC,iBAAiB,EAAE,cAAc,CAAC,SAAS;oBAC3C,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;oBAC7C,qBAAqB,EAAE,kBAAkB,CAAC,SAAS;oBACnD,kBAAkB;iBACrB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,4BAA4B,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,CAAC,MAAM,iCAAiC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,0CAA0C;YAC1C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;YAEjE,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,cAAc,SAAS,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,cAAc,uBAAuB,MAAM,CAAC,iBAAiB,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrL,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,kBAAkB,uBAAuB,MAAM,CAAC,qBAAqB,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrM,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,2CAA2C,EAAE,CAAC,CAAC;gBACxH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YAED,UAAU;YACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,oBAAoB,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YACjH,MAAM,wBAAwB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YAEzH,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACtK,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAClL,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;YAChG,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;YAC/F,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAEzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACjB,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Debug Tool: Plugin ID Verification
4
+ *
5
+ * Verifies plugin ID calculation and checks database for matching plugin IDs.
6
+ * Useful for debugging foreign system issues where plugin IDs don't match.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=debug-plugin-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-plugin-id.d.ts","sourceRoot":"","sources":["../../src/cli/debug-plugin-id.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}