@grafema/mcp 0.2.12-beta → 0.3.1-beta

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 (158) hide show
  1. package/dist/analysis-worker.d.ts +4 -3
  2. package/dist/analysis-worker.d.ts.map +1 -1
  3. package/dist/analysis-worker.js +8 -203
  4. package/dist/analysis-worker.js.map +1 -1
  5. package/dist/analysis.d.ts +10 -3
  6. package/dist/analysis.d.ts.map +1 -1
  7. package/dist/analysis.js +130 -62
  8. package/dist/analysis.js.map +1 -1
  9. package/dist/config.d.ts +5 -11
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +6 -128
  12. package/dist/config.js.map +1 -1
  13. package/dist/definitions/analysis-tools.d.ts +6 -0
  14. package/dist/definitions/analysis-tools.d.ts.map +1 -0
  15. package/dist/definitions/analysis-tools.js +125 -0
  16. package/dist/definitions/analysis-tools.js.map +1 -0
  17. package/dist/definitions/context-tools.d.ts +6 -0
  18. package/dist/definitions/context-tools.d.ts.map +1 -0
  19. package/dist/definitions/context-tools.js +144 -0
  20. package/dist/definitions/context-tools.js.map +1 -0
  21. package/dist/definitions/graph-tools.d.ts +7 -0
  22. package/dist/definitions/graph-tools.d.ts.map +1 -0
  23. package/dist/definitions/graph-tools.js +124 -0
  24. package/dist/definitions/graph-tools.js.map +1 -0
  25. package/dist/definitions/graphql-tools.d.ts +6 -0
  26. package/dist/definitions/graphql-tools.d.ts.map +1 -0
  27. package/dist/definitions/graphql-tools.js +62 -0
  28. package/dist/definitions/graphql-tools.js.map +1 -0
  29. package/dist/definitions/guarantee-tools.d.ts +6 -0
  30. package/dist/definitions/guarantee-tools.d.ts.map +1 -0
  31. package/dist/definitions/guarantee-tools.js +136 -0
  32. package/dist/definitions/guarantee-tools.js.map +1 -0
  33. package/dist/definitions/index.d.ts +7 -0
  34. package/dist/definitions/index.d.ts.map +1 -0
  35. package/dist/definitions/index.js +24 -0
  36. package/dist/definitions/index.js.map +1 -0
  37. package/dist/definitions/knowledge-tools.d.ts +10 -0
  38. package/dist/definitions/knowledge-tools.d.ts.map +1 -0
  39. package/dist/definitions/knowledge-tools.js +300 -0
  40. package/dist/definitions/knowledge-tools.js.map +1 -0
  41. package/dist/definitions/notation-tools.d.ts +9 -0
  42. package/dist/definitions/notation-tools.d.ts.map +1 -0
  43. package/dist/definitions/notation-tools.js +62 -0
  44. package/dist/definitions/notation-tools.js.map +1 -0
  45. package/dist/definitions/project-tools.d.ts +6 -0
  46. package/dist/definitions/project-tools.d.ts.map +1 -0
  47. package/dist/definitions/project-tools.js +181 -0
  48. package/dist/definitions/project-tools.js.map +1 -0
  49. package/dist/definitions/query-tools.d.ts +6 -0
  50. package/dist/definitions/query-tools.d.ts.map +1 -0
  51. package/dist/definitions/query-tools.js +245 -0
  52. package/dist/definitions/query-tools.js.map +1 -0
  53. package/dist/definitions/types.d.ts +21 -0
  54. package/dist/definitions/types.d.ts.map +1 -0
  55. package/dist/definitions/types.js +5 -0
  56. package/dist/definitions/types.js.map +1 -0
  57. package/dist/dev-proxy.d.ts +29 -0
  58. package/dist/dev-proxy.d.ts.map +1 -0
  59. package/dist/dev-proxy.js +267 -0
  60. package/dist/dev-proxy.js.map +1 -0
  61. package/dist/handlers/analysis-handlers.d.ts.map +1 -1
  62. package/dist/handlers/analysis-handlers.js +34 -4
  63. package/dist/handlers/analysis-handlers.js.map +1 -1
  64. package/dist/handlers/context-handlers.d.ts +5 -6
  65. package/dist/handlers/context-handlers.d.ts.map +1 -1
  66. package/dist/handlers/context-handlers.js +19 -16
  67. package/dist/handlers/context-handlers.js.map +1 -1
  68. package/dist/handlers/coverage-handlers.js +1 -1
  69. package/dist/handlers/dataflow-handlers.d.ts +2 -0
  70. package/dist/handlers/dataflow-handlers.d.ts.map +1 -1
  71. package/dist/handlers/dataflow-handlers.js +68 -46
  72. package/dist/handlers/dataflow-handlers.js.map +1 -1
  73. package/dist/handlers/documentation-handlers.d.ts.map +1 -1
  74. package/dist/handlers/documentation-handlers.js +56 -2
  75. package/dist/handlers/documentation-handlers.js.map +1 -1
  76. package/dist/handlers/graph-handlers.d.ts +23 -0
  77. package/dist/handlers/graph-handlers.d.ts.map +1 -0
  78. package/dist/handlers/graph-handlers.js +155 -0
  79. package/dist/handlers/graph-handlers.js.map +1 -0
  80. package/dist/handlers/graphql-handlers.d.ts +9 -0
  81. package/dist/handlers/graphql-handlers.d.ts.map +1 -0
  82. package/dist/handlers/graphql-handlers.js +57 -0
  83. package/dist/handlers/graphql-handlers.js.map +1 -0
  84. package/dist/handlers/guarantee-handlers.js +1 -1
  85. package/dist/handlers/guard-handlers.d.ts.map +1 -1
  86. package/dist/handlers/guard-handlers.js +6 -3
  87. package/dist/handlers/guard-handlers.js.map +1 -1
  88. package/dist/handlers/index.d.ts +4 -0
  89. package/dist/handlers/index.d.ts.map +1 -1
  90. package/dist/handlers/index.js +6 -0
  91. package/dist/handlers/index.js.map +1 -1
  92. package/dist/handlers/issue-handlers.d.ts.map +1 -1
  93. package/dist/handlers/issue-handlers.js +10 -15
  94. package/dist/handlers/issue-handlers.js.map +1 -1
  95. package/dist/handlers/knowledge-handlers.d.ts +25 -0
  96. package/dist/handlers/knowledge-handlers.d.ts.map +1 -0
  97. package/dist/handlers/knowledge-handlers.js +208 -0
  98. package/dist/handlers/knowledge-handlers.js.map +1 -0
  99. package/dist/handlers/notation-handlers.d.ts +6 -0
  100. package/dist/handlers/notation-handlers.d.ts.map +1 -0
  101. package/dist/handlers/notation-handlers.js +53 -0
  102. package/dist/handlers/notation-handlers.js.map +1 -0
  103. package/dist/handlers/project-handlers.js +1 -1
  104. package/dist/handlers/query-handlers.d.ts.map +1 -1
  105. package/dist/handlers/query-handlers.js +166 -20
  106. package/dist/handlers/query-handlers.js.map +1 -1
  107. package/dist/prompts.js +1 -1
  108. package/dist/server.d.ts +19 -1
  109. package/dist/server.d.ts.map +1 -1
  110. package/dist/server.js +93 -3
  111. package/dist/server.js.map +1 -1
  112. package/dist/state.d.ts +10 -1
  113. package/dist/state.d.ts.map +1 -1
  114. package/dist/state.js +61 -8
  115. package/dist/state.js.map +1 -1
  116. package/dist/types.d.ts +75 -3
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/utils.d.ts +4 -0
  119. package/dist/utils.d.ts.map +1 -1
  120. package/dist/utils.js +18 -1
  121. package/dist/utils.js.map +1 -1
  122. package/package.json +4 -3
  123. package/src/analysis-worker.ts +9 -301
  124. package/src/analysis.ts +151 -77
  125. package/src/config.ts +6 -193
  126. package/src/definitions/analysis-tools.ts +127 -0
  127. package/src/definitions/context-tools.ts +147 -0
  128. package/src/definitions/graph-tools.ts +126 -0
  129. package/src/definitions/graphql-tools.ts +64 -0
  130. package/src/definitions/guarantee-tools.ts +138 -0
  131. package/src/definitions/index.ts +28 -0
  132. package/src/definitions/knowledge-tools.ts +302 -0
  133. package/src/definitions/notation-tools.ts +64 -0
  134. package/src/definitions/project-tools.ts +183 -0
  135. package/src/definitions/query-tools.ts +247 -0
  136. package/src/definitions/types.ts +22 -0
  137. package/src/dev-proxy.ts +336 -0
  138. package/src/handlers/analysis-handlers.ts +35 -4
  139. package/src/handlers/context-handlers.ts +19 -15
  140. package/src/handlers/coverage-handlers.ts +1 -1
  141. package/src/handlers/dataflow-handlers.ts +74 -56
  142. package/src/handlers/documentation-handlers.ts +56 -2
  143. package/src/handlers/graph-handlers.ts +212 -0
  144. package/src/handlers/graphql-handlers.ts +70 -0
  145. package/src/handlers/guarantee-handlers.ts +1 -1
  146. package/src/handlers/guard-handlers.ts +7 -3
  147. package/src/handlers/index.ts +6 -0
  148. package/src/handlers/issue-handlers.ts +10 -15
  149. package/src/handlers/knowledge-handlers.ts +242 -0
  150. package/src/handlers/notation-handlers.ts +71 -0
  151. package/src/handlers/project-handlers.ts +1 -1
  152. package/src/handlers/query-handlers.ts +186 -22
  153. package/src/prompts.ts +1 -1
  154. package/src/server.ts +126 -2
  155. package/src/state.ts +68 -8
  156. package/src/types.ts +98 -3
  157. package/src/utils.ts +22 -1
  158. package/src/definitions.ts +0 -665
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Analysis Worker - runs in separate process to avoid blocking MCP server
2
+ * Analysis Worker DEPRECATED
3
3
  *
4
- * Usage: node analysis-worker.js <projectPath> [serviceName]
4
+ * Analysis is now handled by the grafema-orchestrator Rust binary.
5
+ * This file is kept as a stub to prevent import errors from any remaining references.
5
6
  *
6
- * Sends progress updates via IPC to parent process
7
+ * Use analysis.ts ensureAnalyzed() which spawns grafema-orchestrator.
7
8
  */
8
9
  export {};
9
10
  //# sourceMappingURL=analysis-worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-worker.d.ts","sourceRoot":"","sources":["../src/analysis-worker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
1
+ {"version":3,"file":"analysis-worker.d.ts","sourceRoot":"","sources":["../src/analysis-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,208 +1,13 @@
1
1
  /**
2
- * Analysis Worker - runs in separate process to avoid blocking MCP server
2
+ * Analysis Worker DEPRECATED
3
3
  *
4
- * Usage: node analysis-worker.js <projectPath> [serviceName]
4
+ * Analysis is now handled by the grafema-orchestrator Rust binary.
5
+ * This file is kept as a stub to prevent import errors from any remaining references.
5
6
  *
6
- * Sends progress updates via IPC to parent process
7
+ * Use analysis.ts ensureAnalyzed() which spawns grafema-orchestrator.
7
8
  */
8
- import { join } from 'path';
9
- import { existsSync, readdirSync, readFileSync } from 'fs';
10
- import { pathToFileURL } from 'url';
11
- import { Orchestrator, RFDBServerBackend,
12
- // Indexing
13
- JSModuleIndexer,
14
- // Analysis
15
- JSASTAnalyzer, ExpressRouteAnalyzer, ExpressResponseAnalyzer, NestJSRouteAnalyzer, SocketIOAnalyzer, DatabaseAnalyzer, FetchAnalyzer, ServiceLayerAnalyzer, ReactAnalyzer,
16
- // Enrichment
17
- MethodCallResolver, ArgumentParameterLinker, AliasTracker, ValueDomainAnalyzer, MountPointResolver, PrefixEvaluator, ConfigRoutingMapBuilder, ServiceConnectionEnricher, RejectionPropagationEnricher,
18
- // Validation
19
- CallResolverValidator, EvalBanValidator, SQLInjectionValidator, AwaitInLoopValidator, ShadowingDetector, GraphConnectivityValidator, DataFlowValidator, UnconnectedRouteValidator, } from '@grafema/core';
20
- const projectPath = process.argv[2];
21
- const serviceName = process.argv[3] && process.argv[3] !== '' ? process.argv[3] : null;
22
- const indexOnly = process.argv[4] === 'indexOnly';
23
- if (!projectPath) {
24
- console.error('Usage: node analysis-worker.js <projectPath> [serviceName] [indexOnly]');
25
- process.exit(1);
26
- }
27
- function sendProgress(data) {
28
- if (process.send) {
29
- process.send({ type: 'progress', ...data });
30
- }
31
- }
32
- function sendComplete(data) {
33
- if (process.send) {
34
- process.send({ type: 'complete', ...data });
35
- }
36
- }
37
- function sendError(error) {
38
- if (process.send) {
39
- process.send({ type: 'error', message: error.message, stack: error.stack });
40
- }
41
- }
42
- async function loadConfig() {
43
- const configPath = join(projectPath, '.grafema', 'config.json');
44
- if (existsSync(configPath)) {
45
- return JSON.parse(readFileSync(configPath, 'utf8'));
46
- }
47
- return { plugins: {} };
48
- }
49
- async function loadCustomPlugins() {
50
- const pluginsDir = join(projectPath, '.grafema', 'plugins');
51
- const customPlugins = {};
52
- if (!existsSync(pluginsDir)) {
53
- return customPlugins;
54
- }
55
- const files = readdirSync(pluginsDir).filter(f => f.endsWith('.mjs') || f.endsWith('.js'));
56
- for (const file of files) {
57
- try {
58
- const module = await import(pathToFileURL(join(pluginsDir, file)).href);
59
- const PluginClass = module.default;
60
- if (PluginClass) {
61
- customPlugins[PluginClass.name] = PluginClass;
62
- }
63
- }
64
- catch (err) {
65
- console.error(`Failed to load plugin ${file}:`, err.message);
66
- }
67
- }
68
- return customPlugins;
69
- }
70
- async function run() {
71
- const startTime = Date.now();
72
- let db = null;
73
- try {
74
- sendProgress({ phase: 'starting', message: 'Loading configuration...' });
75
- const config = await loadConfig();
76
- const customPlugins = await loadCustomPlugins();
77
- // Built-in plugins map
78
- const builtinPlugins = {
79
- JSModuleIndexer: () => new JSModuleIndexer(),
80
- JSASTAnalyzer: () => new JSASTAnalyzer(),
81
- ExpressRouteAnalyzer: () => new ExpressRouteAnalyzer(),
82
- ExpressResponseAnalyzer: () => new ExpressResponseAnalyzer(),
83
- NestJSRouteAnalyzer: () => new NestJSRouteAnalyzer(),
84
- SocketIOAnalyzer: () => new SocketIOAnalyzer(),
85
- DatabaseAnalyzer: () => new DatabaseAnalyzer(),
86
- FetchAnalyzer: () => new FetchAnalyzer(),
87
- ServiceLayerAnalyzer: () => new ServiceLayerAnalyzer(),
88
- ReactAnalyzer: () => new ReactAnalyzer(),
89
- MethodCallResolver: () => new MethodCallResolver(),
90
- ArgumentParameterLinker: () => new ArgumentParameterLinker(),
91
- AliasTracker: () => new AliasTracker(),
92
- ValueDomainAnalyzer: () => new ValueDomainAnalyzer(),
93
- MountPointResolver: () => new MountPointResolver(),
94
- PrefixEvaluator: () => new PrefixEvaluator(),
95
- ConfigRoutingMapBuilder: () => new ConfigRoutingMapBuilder(),
96
- ServiceConnectionEnricher: () => new ServiceConnectionEnricher(),
97
- RejectionPropagationEnricher: () => new RejectionPropagationEnricher(),
98
- CallResolverValidator: () => new CallResolverValidator(),
99
- EvalBanValidator: () => new EvalBanValidator(),
100
- SQLInjectionValidator: () => new SQLInjectionValidator(),
101
- AwaitInLoopValidator: () => new AwaitInLoopValidator(),
102
- ShadowingDetector: () => new ShadowingDetector(),
103
- GraphConnectivityValidator: () => new GraphConnectivityValidator(),
104
- DataFlowValidator: () => new DataFlowValidator(),
105
- UnconnectedRouteValidator: () => new UnconnectedRouteValidator(),
106
- };
107
- // Add custom plugins
108
- for (const [name, PluginClass] of Object.entries(customPlugins)) {
109
- builtinPlugins[name] = () => new PluginClass();
110
- }
111
- // Build plugins array from config
112
- const plugins = [];
113
- for (const [_phase, pluginNames] of Object.entries(config.plugins || {})) {
114
- for (const name of pluginNames) {
115
- if (builtinPlugins[name]) {
116
- plugins.push(builtinPlugins[name]());
117
- }
118
- else if (customPlugins[name]) {
119
- plugins.push(new customPlugins[name]());
120
- console.log(`[Worker] Loaded custom plugin: ${name}`);
121
- }
122
- else {
123
- console.warn(`[Worker] Plugin not found: ${name}`);
124
- }
125
- }
126
- }
127
- console.log(`[Worker] Loaded ${plugins.length} plugins:`, plugins.map(p => p.metadata?.name || p.constructor?.name || 'unknown'));
128
- sendProgress({ phase: 'starting', message: `Loaded ${plugins.length} plugins` });
129
- // Get parallel analysis config
130
- const parallelConfig = config.analysis?.parallel;
131
- if (parallelConfig?.enabled) {
132
- console.log(`[Worker] Queue-based parallel mode enabled: workers=${parallelConfig.workers}`);
133
- }
134
- // Connect to RFDB server (shared with MCP server)
135
- // The MCP server starts the RFDB server if not running
136
- const dbPath = join(projectPath, '.grafema', 'graph.rfdb');
137
- const socketPath = config.analysis?.parallel?.socketPath || join(projectPath, '.grafema', 'rfdb.sock');
138
- console.log(`[Worker] Connecting to RFDB server: socket=${socketPath}, db=${dbPath}`);
139
- db = new RFDBServerBackend({ socketPath, dbPath });
140
- await db.connect();
141
- // NOTE: db.clear() is NOT called here.
142
- // MCP server clears DB INSIDE the analysis lock BEFORE spawning this worker.
143
- // This prevents race conditions where concurrent analysis calls could both
144
- // clear the database. Worker assumes DB is already clean.
145
- // See: REG-159 implementation, Phase 2.5 (Worker Clear Coordination)
146
- sendProgress({ phase: 'discovery', message: 'Starting analysis...' });
147
- // Create orchestrator
148
- const orchestrator = new Orchestrator({
149
- graph: db,
150
- plugins,
151
- parallel: parallelConfig, // Pass parallel config for queue-based analysis
152
- serviceFilter: serviceName,
153
- indexOnly: indexOnly,
154
- onProgress: (progress) => {
155
- sendProgress({
156
- phase: progress.phase,
157
- message: progress.message,
158
- servicesAnalyzed: progress.servicesAnalyzed
159
- });
160
- }
161
- });
162
- // Run analysis
163
- await orchestrator.run(projectPath);
164
- // Get final stats
165
- let nodeCount = 0;
166
- let edgeCount = 0;
167
- // Use async methods for RFDBServerBackend
168
- const allEdges = await db.getAllEdgesAsync();
169
- edgeCount = allEdges.length;
170
- for await (const _node of db.queryNodes({})) {
171
- nodeCount++;
172
- }
173
- // Flush to disk using proper async method
174
- console.log('[Worker] Flushing database to disk...');
175
- await db.flush();
176
- console.log('[Worker] Database flushed successfully');
177
- const totalTime = ((Date.now() - startTime) / 1000).toFixed(2);
178
- sendComplete({
179
- nodeCount,
180
- edgeCount,
181
- totalTime
182
- });
183
- // Close database properly before exit
184
- await db.close();
185
- console.log('[Worker] Database closed');
186
- process.exit(0);
187
- }
188
- finally {
189
- // Ensure database connection is closed even on error
190
- if (db && db.connected) {
191
- try {
192
- await db.close();
193
- console.log('[Worker] Database connection closed in cleanup');
194
- }
195
- catch (closeErr) {
196
- const message = closeErr instanceof Error ? closeErr.message : String(closeErr);
197
- console.error('[Worker] Error closing database connection:', message);
198
- }
199
- }
200
- }
201
- }
202
- run().catch(err => {
203
- const error = err instanceof Error ? err : new Error(String(err));
204
- sendError(error);
205
- console.error('Analysis failed:', err);
206
- process.exit(1);
207
- });
9
+ throw new Error('Analysis is now handled by grafema-orchestrator. ' +
10
+ 'Use analysis.ts ensureAnalyzed() instead. ' +
11
+ 'The worker pattern is no longer needed since we shell out to a native binary.');
12
+ export {};
208
13
  //# sourceMappingURL=analysis-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-worker.js","sourceRoot":"","sources":["../src/analysis-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis-worker.js","sourceRoot":"","sources":["../src/analysis-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,IAAI,KAAK,CACb,mDAAmD;IACjD,4CAA4C;IAC5C,+EAA+E,CAClF,CAAC"}
@@ -1,5 +1,9 @@
1
1
  /**
2
2
  * MCP Analysis Orchestration
3
+ *
4
+ * Shells out to the `grafema-orchestrator` Rust binary instead of using
5
+ * the JS Orchestrator class. The binary handles file discovery, parsing,
6
+ * analysis, resolution, and RFDB ingestion.
3
7
  */
4
8
  import type { GraphBackend } from '@grafema/types';
5
9
  /**
@@ -10,14 +14,17 @@ import type { GraphBackend } from '@grafema/types';
10
14
  * - Concurrent calls wait for the current analysis to complete
11
15
  * - force=true while analysis is running returns an error immediately
12
16
  *
13
- * @param serviceName - Optional service to analyze (null = all)
14
- * @param force - If true, clear DB and re-analyze even if already analyzed.
17
+ * @param serviceName - Optional service to analyze (null = all) — currently unused by the orchestrator
18
+ * @param force - If true, add --force flag to re-analyze all files.
15
19
  * ERROR if another analysis is already running.
16
20
  * @throws Error if force=true and analysis is already running
17
21
  */
18
22
  export declare function ensureAnalyzed(serviceName?: string | null, force?: boolean): Promise<GraphBackend>;
19
23
  /**
20
- * Discover services without running full analysis
24
+ * Discover services without running full analysis.
25
+ *
26
+ * Service discovery is now handled by grafema-orchestrator's file discovery.
27
+ * This returns an empty array — the orchestrator handles discovery internally.
21
28
  */
22
29
  export declare function discoverServices(): Promise<unknown[]>;
23
30
  //# sourceMappingURL=analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,WAAW,GAAE,MAAM,GAAG,IAAW,EACjC,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,YAAY,CAAC,CAwGvB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAyC3D"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA6FnD;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,WAAW,GAAE,MAAM,GAAG,IAAW,EACjC,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,YAAY,CAAC,CAkHvB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAI3D"}
package/dist/analysis.js CHANGED
@@ -1,10 +1,92 @@
1
1
  /**
2
2
  * MCP Analysis Orchestration
3
+ *
4
+ * Shells out to the `grafema-orchestrator` Rust binary instead of using
5
+ * the JS Orchestrator class. The binary handles file discovery, parsing,
6
+ * analysis, resolution, and RFDB ingestion.
3
7
  */
4
- import { Orchestrator } from '@grafema/core';
5
- import { getOrCreateBackend, getProjectPath, getIsAnalyzed, setIsAnalyzed, getAnalysisStatus, setAnalysisStatus, isAnalysisRunning, acquireAnalysisLock, } from './state.js';
6
- import { loadConfig, loadCustomPlugins, createPlugins } from './config.js';
8
+ import { existsSync } from 'fs';
9
+ import { join } from 'path';
10
+ import { spawn } from 'child_process';
11
+ import { findOrchestratorBinary, getBinaryNotFoundMessage } from '@grafema/util';
12
+ import { getOrCreateBackend, getProjectPath, getIsAnalyzed, setIsAnalyzed, getAnalysisStatus, setAnalysisStatus, isAnalysisRunning, acquireAnalysisLock, getKnowledgeBase, } from './state.js';
13
+ import { loadConfig } from './config.js';
7
14
  import { log } from './utils.js';
15
+ /**
16
+ * Resolve the config file path for grafema-orchestrator.
17
+ *
18
+ * The orchestrator expects a YAML config with `root`, `include`, `exclude` fields.
19
+ * Looks for:
20
+ * 1. grafema.config.yaml in project root
21
+ * 2. .grafema/config.yaml as fallback
22
+ */
23
+ function findConfigPath(projectPath) {
24
+ const candidates = [
25
+ join(projectPath, 'grafema.config.yaml'),
26
+ join(projectPath, '.grafema', 'config.yaml'),
27
+ ];
28
+ for (const candidate of candidates) {
29
+ if (existsSync(candidate))
30
+ return candidate;
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * Resolve the RFDB socket path for the current project.
36
+ *
37
+ * Uses the same logic as state.ts getOrCreateBackend():
38
+ * config.analysis.parallel.socketPath > default derived from dbPath
39
+ */
40
+ function resolveSocketPath(projectPath) {
41
+ const config = loadConfig(projectPath);
42
+ const configSocket = config.analysis?.parallel?.socketPath;
43
+ if (configSocket)
44
+ return configSocket;
45
+ // Default: same as RFDBServerBackend derives from dbPath
46
+ return join(projectPath, '.grafema', 'rfdb.sock');
47
+ }
48
+ /**
49
+ * Spawn grafema-orchestrator and wait for it to complete.
50
+ *
51
+ * @returns Promise that resolves on success, rejects on failure
52
+ */
53
+ function runOrchestrator(binaryPath, args) {
54
+ return new Promise((resolve, reject) => {
55
+ log(`[Grafema MCP] Spawning: ${binaryPath} ${args.join(' ')}`);
56
+ const child = spawn(binaryPath, args, {
57
+ stdio: ['ignore', 'pipe', 'pipe'],
58
+ });
59
+ let stdout = '';
60
+ let stderr = '';
61
+ child.stdout.on('data', (data) => {
62
+ const text = data.toString();
63
+ stdout += text;
64
+ // Forward orchestrator output to MCP log
65
+ for (const line of text.split('\n').filter(Boolean)) {
66
+ log(`[orchestrator] ${line}`);
67
+ }
68
+ });
69
+ child.stderr.on('data', (data) => {
70
+ const text = data.toString();
71
+ stderr += text;
72
+ for (const line of text.split('\n').filter(Boolean)) {
73
+ log(`[orchestrator] ${line}`);
74
+ }
75
+ });
76
+ child.on('error', (err) => {
77
+ reject(new Error(`Failed to spawn grafema-orchestrator: ${err.message}`));
78
+ });
79
+ child.on('close', (code) => {
80
+ if (code === 0) {
81
+ resolve();
82
+ }
83
+ else {
84
+ reject(new Error(`grafema-orchestrator exited with code ${code}\n` +
85
+ (stderr || stdout || '(no output)')));
86
+ }
87
+ });
88
+ });
89
+ }
8
90
  /**
9
91
  * Ensure project is analyzed, optionally filtering to a single service.
10
92
  *
@@ -13,8 +95,8 @@ import { log } from './utils.js';
13
95
  * - Concurrent calls wait for the current analysis to complete
14
96
  * - force=true while analysis is running returns an error immediately
15
97
  *
16
- * @param serviceName - Optional service to analyze (null = all)
17
- * @param force - If true, clear DB and re-analyze even if already analyzed.
98
+ * @param serviceName - Optional service to analyze (null = all) — currently unused by the orchestrator
99
+ * @param force - If true, add --force flag to re-analyze all files.
18
100
  * ERROR if another analysis is already running.
19
101
  * @throws Error if force=true and analysis is already running
20
102
  */
@@ -39,8 +121,6 @@ export async function ensureAnalyzed(serviceName = null, force = false) {
39
121
  return db;
40
122
  }
41
123
  // Clear DB inside lock, BEFORE running analysis
42
- // This is critical for worker coordination: MCP server clears DB here,
43
- // worker does NOT call db.clear() (see analysis-worker.ts)
44
124
  if (force || !getIsAnalyzed()) {
45
125
  log('[Grafema MCP] Clearing database before analysis...');
46
126
  if (db.clear) {
@@ -49,42 +129,54 @@ export async function ensureAnalyzed(serviceName = null, force = false) {
49
129
  setIsAnalyzed(false);
50
130
  }
51
131
  log(`[Grafema MCP] Analyzing project: ${projectPath}${serviceName ? ` (service: ${serviceName})` : ''}`);
52
- const config = loadConfig(projectPath);
53
- const { pluginMap: customPluginMap } = await loadCustomPlugins(projectPath);
54
- // Create plugins from config
55
- const plugins = createPlugins(config.plugins, customPluginMap);
56
- log(`[Grafema MCP] Total plugins: ${plugins.length}`);
57
- // Check for parallel analysis config
58
- const parallelConfig = config.analysis?.parallel;
59
- log(`[Grafema MCP] Config analysis section: ${JSON.stringify(config.analysis)}`);
60
- if (parallelConfig?.enabled) {
61
- log(`[Grafema MCP] Parallel analysis enabled: maxWorkers=${parallelConfig.maxWorkers || 'auto'}, socket=${parallelConfig.socketPath || '/tmp/rfdb.sock'}`);
132
+ // Find the orchestrator binary
133
+ const binaryPath = findOrchestratorBinary();
134
+ if (!binaryPath) {
135
+ throw new Error(getBinaryNotFoundMessage('grafema-orchestrator'));
136
+ }
137
+ // Find config file
138
+ const configPath = findConfigPath(projectPath);
139
+ if (!configPath) {
140
+ throw new Error(`No config file found for grafema-orchestrator.\n` +
141
+ `Expected one of:\n` +
142
+ ` - ${join(projectPath, 'grafema.config.yaml')}\n` +
143
+ ` - ${join(projectPath, '.grafema', 'config.yaml')}\n`);
62
144
  }
145
+ // Resolve socket path
146
+ const socketPath = resolveSocketPath(projectPath);
63
147
  const analysisStatus = getAnalysisStatus();
64
148
  const startTime = Date.now();
65
- const orchestrator = new Orchestrator({
66
- graph: db,
67
- plugins: plugins,
68
- parallel: parallelConfig,
69
- serviceFilter: serviceName,
70
- onProgress: (progress) => {
71
- log(`[Grafema MCP] ${progress.phase}: ${progress.message}`);
72
- setAnalysisStatus({
73
- phase: progress.phase,
74
- message: progress.message,
75
- servicesDiscovered: progress.servicesDiscovered || analysisStatus.servicesDiscovered,
76
- servicesAnalyzed: progress.servicesAnalyzed || analysisStatus.servicesAnalyzed,
77
- });
78
- },
149
+ setAnalysisStatus({
150
+ phase: 'starting',
151
+ message: 'Spawning grafema-orchestrator...',
152
+ servicesDiscovered: analysisStatus.servicesDiscovered,
153
+ servicesAnalyzed: analysisStatus.servicesAnalyzed,
79
154
  });
80
- await orchestrator.run(projectPath);
155
+ // Build args
156
+ const args = ['analyze', '--config', configPath, '--socket', socketPath];
157
+ if (force) {
158
+ args.push('--force');
159
+ }
160
+ log(`[Grafema MCP] Binary: ${binaryPath}`);
161
+ log(`[Grafema MCP] Config: ${configPath}`);
162
+ log(`[Grafema MCP] Socket: ${socketPath}`);
163
+ // Run the orchestrator
164
+ await runOrchestrator(binaryPath, args);
81
165
  // Flush if available
82
166
  if ('flush' in db && typeof db.flush === 'function') {
83
167
  await db.flush();
84
168
  }
85
169
  setIsAnalyzed(true);
170
+ // Bump KB resolver generation so cached resolutions are re-evaluated
171
+ const kb = getKnowledgeBase();
172
+ if (kb) {
173
+ kb.invalidateResolutionCache();
174
+ log('[Grafema MCP] KnowledgeBase resolution cache invalidated after analysis');
175
+ }
86
176
  const totalTime = ((Date.now() - startTime) / 1000).toFixed(2);
87
177
  setAnalysisStatus({
178
+ phase: 'complete',
179
+ message: `Analysis complete in ${totalTime}s`,
88
180
  timings: {
89
181
  ...analysisStatus.timings,
90
182
  total: parseFloat(totalTime),
@@ -99,38 +191,14 @@ export async function ensureAnalyzed(serviceName = null, force = false) {
99
191
  }
100
192
  }
101
193
  /**
102
- * Discover services without running full analysis
194
+ * Discover services without running full analysis.
195
+ *
196
+ * Service discovery is now handled by grafema-orchestrator's file discovery.
197
+ * This returns an empty array — the orchestrator handles discovery internally.
103
198
  */
104
199
  export async function discoverServices() {
105
- const db = await getOrCreateBackend();
106
200
  const projectPath = getProjectPath();
107
- log(`[Grafema MCP] Discovering services in: ${projectPath}`);
108
- const config = loadConfig(projectPath);
109
- const { pluginMap: customPluginMap } = await loadCustomPlugins(projectPath);
110
- const availablePlugins = {
111
- ...Object.fromEntries(Object.entries(customPluginMap).map(([name, PluginClass]) => [
112
- name,
113
- () => new PluginClass(),
114
- ])),
115
- };
116
- const plugins = [];
117
- const discoveryPluginNames = config.plugins.discovery ?? [];
118
- for (const name of discoveryPluginNames) {
119
- const factory = availablePlugins[name];
120
- if (factory) {
121
- plugins.push(factory());
122
- log(`[Grafema MCP] Enabled discovery plugin: ${name}`);
123
- }
124
- else {
125
- log(`[Grafema MCP] Warning: Unknown discovery plugin ${name}`);
126
- }
127
- }
128
- const orchestrator = new Orchestrator({
129
- graph: db,
130
- plugins: plugins,
131
- });
132
- const manifest = await orchestrator.discover(projectPath);
133
- log(`[Grafema MCP] Discovery complete: found ${manifest.services?.length || 0} services`);
134
- return manifest.services || [];
201
+ log(`[Grafema MCP] Service discovery is handled by grafema-orchestrator. Project: ${projectPath}`);
202
+ return [];
135
203
  }
136
204
  //# sourceMappingURL=analysis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * MCP Server Configuration
3
+ *
4
+ * Loads grafema config via the shared loader from @grafema/util.
5
+ * Plugin instantiation is no longer needed — grafema-orchestrator handles analysis.
3
6
  */
4
- import { type GrafemaConfig } from '@grafema/core';
7
+ import { type GrafemaConfig } from '@grafema/util';
5
8
  /**
6
9
  * MCP-specific configuration extends GrafemaConfig with additional fields.
7
10
  */
@@ -16,18 +19,9 @@ export interface MCPConfig extends GrafemaConfig {
16
19
  backend?: 'local' | 'rfdb';
17
20
  rfdb_socket?: string;
18
21
  }
19
- type PluginFactory = () => unknown;
20
- export declare const BUILTIN_PLUGINS: Record<string, PluginFactory>;
21
22
  /**
22
23
  * Load MCP configuration (extends base GrafemaConfig).
23
- * Uses shared ConfigLoader but adds MCP-specific defaults.
24
+ * Uses shared loader but adds MCP-specific defaults.
24
25
  */
25
26
  export declare function loadConfig(projectPath: string): MCPConfig;
26
- export interface CustomPluginResult {
27
- plugins: unknown[];
28
- pluginMap: Record<string, new () => unknown>;
29
- }
30
- export declare function loadCustomPlugins(projectPath: string): Promise<CustomPluginResult>;
31
- export declare function createPlugins(config: GrafemaConfig['plugins'], customPluginMap?: Record<string, new () => unknown>): unknown[];
32
- export {};
33
27
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAmDrF;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAUD,KAAK,aAAa,GAAG,MAAM,OAAO,CAAC;AAEnC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAgDzD,CAAC;AAGF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAWzD;AAGD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,OAAO,CAAC,CAAC;CAC9C;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0CxF;AAGD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,EAChC,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,UAAU,OAAO,CAAM,GACtD,OAAO,EAAE,CA8BX"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGrF;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAUD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAWzD"}