@claude-flow/plugin-quantum-optimizer 3.0.0-alpha.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/README.md +300 -0
- package/dist/bridges/dag-bridge.d.ts +95 -0
- package/dist/bridges/dag-bridge.d.ts.map +1 -0
- package/dist/bridges/dag-bridge.js +461 -0
- package/dist/bridges/dag-bridge.js.map +1 -0
- package/dist/bridges/exotic-bridge.d.ts +64 -0
- package/dist/bridges/exotic-bridge.d.ts.map +1 -0
- package/dist/bridges/exotic-bridge.js +434 -0
- package/dist/bridges/exotic-bridge.js.map +1 -0
- package/dist/bridges/index.d.ts +10 -0
- package/dist/bridges/index.d.ts.map +1 -0
- package/dist/bridges/index.js +8 -0
- package/dist/bridges/index.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-tools.d.ts +34 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +525 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/types.d.ts +789 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +154 -0
- package/dist/types.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quantum Optimizer MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tool definitions for quantum-inspired optimization including:
|
|
5
|
+
* - quantum/annealing-solve: Simulated quantum annealing
|
|
6
|
+
* - quantum/qaoa-optimize: QAOA circuit optimization
|
|
7
|
+
* - quantum/grover-search: Grover-inspired search
|
|
8
|
+
* - quantum/dependency-resolve: Package dependency resolution
|
|
9
|
+
* - quantum/schedule-optimize: Task scheduling optimization
|
|
10
|
+
*/
|
|
11
|
+
import type { MCPTool, MCPToolResult, ToolContext } from './types.js';
|
|
12
|
+
export declare const annealingSolveTool: MCPTool;
|
|
13
|
+
export declare const qaoaOptimizeTool: MCPTool;
|
|
14
|
+
export declare const groverSearchTool: MCPTool;
|
|
15
|
+
export declare const dependencyResolveTool: MCPTool;
|
|
16
|
+
export declare const scheduleOptimizeTool: MCPTool;
|
|
17
|
+
/**
|
|
18
|
+
* All Quantum Optimizer MCP Tools
|
|
19
|
+
*/
|
|
20
|
+
export declare const quantumOptimizerTools: MCPTool[];
|
|
21
|
+
/**
|
|
22
|
+
* Tool name to handler map
|
|
23
|
+
*/
|
|
24
|
+
export declare const toolHandlers: Map<string, (input: Record<string, unknown>, context?: ToolContext) => Promise<MCPToolResult>>;
|
|
25
|
+
/**
|
|
26
|
+
* Get a tool by name
|
|
27
|
+
*/
|
|
28
|
+
export declare function getTool(name: string): MCPTool | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Get all tool names
|
|
31
|
+
*/
|
|
32
|
+
export declare function getToolNames(): string[];
|
|
33
|
+
export default quantumOptimizerTools;
|
|
34
|
+
//# sourceMappingURL=mcp-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,WAAW,EASZ,MAAM,YAAY,CAAC;AAiJpB,eAAO,MAAM,kBAAkB,EAAE,OAkChC,CAAC;AAoEF,eAAO,MAAM,gBAAgB,EAAE,OAqC9B,CAAC;AA2DF,eAAO,MAAM,gBAAgB,EAAE,OA+B9B,CAAC;AAkDF,eAAO,MAAM,qBAAqB,EAAE,OAsCnC,CAAC;AA+CF,eAAO,MAAM,oBAAoB,EAAE,OAwClC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,EAM1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,gGAMvB,CAAC;AAEH;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quantum Optimizer MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tool definitions for quantum-inspired optimization including:
|
|
5
|
+
* - quantum/annealing-solve: Simulated quantum annealing
|
|
6
|
+
* - quantum/qaoa-optimize: QAOA circuit optimization
|
|
7
|
+
* - quantum/grover-search: Grover-inspired search
|
|
8
|
+
* - quantum/dependency-resolve: Package dependency resolution
|
|
9
|
+
* - quantum/schedule-optimize: Task scheduling optimization
|
|
10
|
+
*/
|
|
11
|
+
import { AnnealingSolveInputSchema, QAOAOptimizeInputSchema, GroverSearchInputSchema, DependencyResolveInputSchema, ScheduleOptimizeInputSchema, successResult, errorResult, RESOURCE_LIMITS, } from './types.js';
|
|
12
|
+
import { ExoticBridge } from './bridges/exotic-bridge.js';
|
|
13
|
+
import { DagBridge } from './bridges/dag-bridge.js';
|
|
14
|
+
// Default logger
|
|
15
|
+
const defaultLogger = {
|
|
16
|
+
debug: (msg, meta) => console.debug(`[quantum-optimizer] ${msg}`, meta),
|
|
17
|
+
info: (msg, meta) => console.info(`[quantum-optimizer] ${msg}`, meta),
|
|
18
|
+
warn: (msg, meta) => console.warn(`[quantum-optimizer] ${msg}`, meta),
|
|
19
|
+
error: (msg, meta) => console.error(`[quantum-optimizer] ${msg}`, meta),
|
|
20
|
+
};
|
|
21
|
+
// Shared bridge instances
|
|
22
|
+
let exoticBridge = null;
|
|
23
|
+
let dagBridge = null;
|
|
24
|
+
async function getExoticBridge() {
|
|
25
|
+
if (!exoticBridge) {
|
|
26
|
+
exoticBridge = new ExoticBridge();
|
|
27
|
+
await exoticBridge.initialize();
|
|
28
|
+
}
|
|
29
|
+
return exoticBridge;
|
|
30
|
+
}
|
|
31
|
+
async function getDagBridge() {
|
|
32
|
+
if (!dagBridge) {
|
|
33
|
+
dagBridge = new DagBridge();
|
|
34
|
+
await dagBridge.initialize();
|
|
35
|
+
}
|
|
36
|
+
return dagBridge;
|
|
37
|
+
}
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Tool 1: quantum/annealing-solve
|
|
40
|
+
// ============================================================================
|
|
41
|
+
async function annealingSolveHandler(input, context) {
|
|
42
|
+
const logger = context?.logger ?? defaultLogger;
|
|
43
|
+
const startTime = performance.now();
|
|
44
|
+
try {
|
|
45
|
+
const validationResult = AnnealingSolveInputSchema.safeParse(input);
|
|
46
|
+
if (!validationResult.success) {
|
|
47
|
+
return errorResult(`Invalid input: ${validationResult.error.message}`);
|
|
48
|
+
}
|
|
49
|
+
const data = validationResult.data;
|
|
50
|
+
logger.debug('Annealing solve', { variables: data.problem.variables, type: data.problem.type });
|
|
51
|
+
// Validate resource limits
|
|
52
|
+
if (data.problem.variables > RESOURCE_LIMITS.MAX_VARIABLES) {
|
|
53
|
+
return errorResult(`Too many variables: ${data.problem.variables} > ${RESOURCE_LIMITS.MAX_VARIABLES}`);
|
|
54
|
+
}
|
|
55
|
+
// Build QUBO problem
|
|
56
|
+
const linear = new Float32Array(data.problem.variables);
|
|
57
|
+
const quadratic = new Float32Array((data.problem.variables * (data.problem.variables - 1)) / 2);
|
|
58
|
+
// Parse objective into linear/quadratic terms
|
|
59
|
+
if (data.problem.objective) {
|
|
60
|
+
for (const [key, value] of Object.entries(data.problem.objective)) {
|
|
61
|
+
if (key.includes(',')) {
|
|
62
|
+
// Quadratic term
|
|
63
|
+
const [i, j] = key.split(',').map(Number);
|
|
64
|
+
if (i !== undefined && j !== undefined && i < j) {
|
|
65
|
+
const idx = i * data.problem.variables - (i * (i + 1)) / 2 + j - i - 1;
|
|
66
|
+
quadratic[idx] = value;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// Linear term
|
|
71
|
+
const i = parseInt(key, 10);
|
|
72
|
+
if (!isNaN(i) && i < data.problem.variables) {
|
|
73
|
+
linear[i] = value;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (data.problem.linear) {
|
|
79
|
+
for (let i = 0; i < Math.min(data.problem.linear.length, data.problem.variables); i++) {
|
|
80
|
+
linear[i] = data.problem.linear[i];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const quboProblem = {
|
|
84
|
+
type: data.problem.type,
|
|
85
|
+
variables: data.problem.variables,
|
|
86
|
+
linear,
|
|
87
|
+
quadratic,
|
|
88
|
+
};
|
|
89
|
+
const bridge = await getExoticBridge();
|
|
90
|
+
const result = await bridge.solveQubo(quboProblem, {
|
|
91
|
+
numReads: data.parameters?.numReads ?? 1000,
|
|
92
|
+
annealingTime: data.parameters?.annealingTime ?? 20,
|
|
93
|
+
chainStrength: data.parameters?.chainStrength ?? 1.0,
|
|
94
|
+
temperature: data.parameters?.temperature ?? {
|
|
95
|
+
initial: 100,
|
|
96
|
+
final: 0.01,
|
|
97
|
+
type: 'exponential',
|
|
98
|
+
},
|
|
99
|
+
embedding: data.embedding,
|
|
100
|
+
});
|
|
101
|
+
const duration = performance.now() - startTime;
|
|
102
|
+
logger.info('Annealing completed', {
|
|
103
|
+
energy: result.solution.energy,
|
|
104
|
+
samples: result.samples.length,
|
|
105
|
+
durationMs: duration.toFixed(2),
|
|
106
|
+
});
|
|
107
|
+
return successResult({
|
|
108
|
+
solution: {
|
|
109
|
+
assignment: Array.from(result.solution.assignment),
|
|
110
|
+
energy: result.solution.energy,
|
|
111
|
+
optimal: result.solution.optimal,
|
|
112
|
+
iterations: result.solution.iterations,
|
|
113
|
+
confidence: result.solution.confidence,
|
|
114
|
+
},
|
|
115
|
+
samples: result.samples.slice(0, 10).map(s => ({
|
|
116
|
+
assignment: Array.from(s.assignment),
|
|
117
|
+
energy: s.energy,
|
|
118
|
+
})),
|
|
119
|
+
timing: result.timing,
|
|
120
|
+
energyHistogram: Object.fromEntries(result.energyHistogram),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
logger.error('Annealing failed', { error: error instanceof Error ? error.message : String(error) });
|
|
125
|
+
return errorResult(error instanceof Error ? error : new Error(String(error)));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export const annealingSolveTool = {
|
|
129
|
+
name: 'quantum_annealing_solve',
|
|
130
|
+
description: 'Solve combinatorial optimization using quantum annealing simulation. Supports QUBO, Ising, SAT, Max-Cut, TSP, and dependency problems.',
|
|
131
|
+
category: 'quantum',
|
|
132
|
+
version: '0.1.0',
|
|
133
|
+
tags: ['quantum', 'annealing', 'optimization', 'qubo', 'combinatorial'],
|
|
134
|
+
cacheable: false,
|
|
135
|
+
inputSchema: {
|
|
136
|
+
type: 'object',
|
|
137
|
+
properties: {
|
|
138
|
+
problem: {
|
|
139
|
+
type: 'object',
|
|
140
|
+
description: 'Optimization problem definition',
|
|
141
|
+
properties: {
|
|
142
|
+
type: { type: 'string', enum: ['qubo', 'ising', 'sat', 'max_cut', 'tsp', 'dependency'] },
|
|
143
|
+
variables: { type: 'number', description: 'Number of binary variables' },
|
|
144
|
+
constraints: { type: 'array', description: 'Problem constraints' },
|
|
145
|
+
objective: { type: 'object', description: 'Objective coefficients as {index: weight} or {i,j: weight}' },
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
parameters: {
|
|
149
|
+
type: 'object',
|
|
150
|
+
properties: {
|
|
151
|
+
numReads: { type: 'number', default: 1000 },
|
|
152
|
+
annealingTime: { type: 'number', default: 20 },
|
|
153
|
+
chainStrength: { type: 'number', default: 1.0 },
|
|
154
|
+
temperature: { type: 'object' },
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
embedding: { type: 'string', enum: ['auto', 'minor', 'pegasus', 'chimera'] },
|
|
158
|
+
},
|
|
159
|
+
required: ['problem'],
|
|
160
|
+
},
|
|
161
|
+
handler: annealingSolveHandler,
|
|
162
|
+
};
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// Tool 2: quantum/qaoa-optimize
|
|
165
|
+
// ============================================================================
|
|
166
|
+
async function qaoaOptimizeHandler(input, context) {
|
|
167
|
+
const logger = context?.logger ?? defaultLogger;
|
|
168
|
+
const startTime = performance.now();
|
|
169
|
+
try {
|
|
170
|
+
const validationResult = QAOAOptimizeInputSchema.safeParse(input);
|
|
171
|
+
if (!validationResult.success) {
|
|
172
|
+
return errorResult(`Invalid input: ${validationResult.error.message}`);
|
|
173
|
+
}
|
|
174
|
+
const data = validationResult.data;
|
|
175
|
+
logger.debug('QAOA optimize', { nodes: data.problem.graph.nodes, depth: data.circuit?.depth });
|
|
176
|
+
// Validate graph size
|
|
177
|
+
if (data.problem.graph.nodes > 1000) {
|
|
178
|
+
return errorResult(`Too many nodes: ${data.problem.graph.nodes} > 1000`);
|
|
179
|
+
}
|
|
180
|
+
const problemGraph = {
|
|
181
|
+
nodes: data.problem.graph.nodes,
|
|
182
|
+
edges: data.problem.graph.edges,
|
|
183
|
+
weights: data.problem.graph.weights ? new Float32Array(data.problem.graph.weights) : undefined,
|
|
184
|
+
};
|
|
185
|
+
const bridge = await getExoticBridge();
|
|
186
|
+
const result = await bridge.runQaoa(problemGraph, {
|
|
187
|
+
depth: data.circuit?.depth ?? 3,
|
|
188
|
+
optimizer: data.circuit?.optimizer ?? 'cobyla',
|
|
189
|
+
initialParams: data.circuit?.initialParams ?? 'heuristic',
|
|
190
|
+
shots: data.shots,
|
|
191
|
+
});
|
|
192
|
+
const duration = performance.now() - startTime;
|
|
193
|
+
logger.info('QAOA completed', {
|
|
194
|
+
energy: result.solution.energy,
|
|
195
|
+
approximationRatio: result.approximationRatio,
|
|
196
|
+
durationMs: duration.toFixed(2),
|
|
197
|
+
});
|
|
198
|
+
return successResult({
|
|
199
|
+
solution: {
|
|
200
|
+
assignment: Array.from(result.solution.assignment),
|
|
201
|
+
energy: result.solution.energy,
|
|
202
|
+
optimal: result.solution.optimal,
|
|
203
|
+
confidence: result.solution.confidence,
|
|
204
|
+
},
|
|
205
|
+
parameters: {
|
|
206
|
+
gamma: Array.from(result.parameters.gamma),
|
|
207
|
+
beta: Array.from(result.parameters.beta),
|
|
208
|
+
},
|
|
209
|
+
approximationRatio: result.approximationRatio,
|
|
210
|
+
convergence: Array.from(result.convergence),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
logger.error('QAOA failed', { error: error instanceof Error ? error.message : String(error) });
|
|
215
|
+
return errorResult(error instanceof Error ? error : new Error(String(error)));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
export const qaoaOptimizeTool = {
|
|
219
|
+
name: 'quantum_qaoa_optimize',
|
|
220
|
+
description: 'Optimize using Quantum Approximate Optimization Algorithm. Best for Max-Cut, portfolio optimization, scheduling, and routing problems.',
|
|
221
|
+
category: 'quantum',
|
|
222
|
+
version: '0.1.0',
|
|
223
|
+
tags: ['quantum', 'qaoa', 'variational', 'max-cut', 'optimization'],
|
|
224
|
+
cacheable: false,
|
|
225
|
+
inputSchema: {
|
|
226
|
+
type: 'object',
|
|
227
|
+
properties: {
|
|
228
|
+
problem: {
|
|
229
|
+
type: 'object',
|
|
230
|
+
properties: {
|
|
231
|
+
type: { type: 'string', enum: ['max_cut', 'portfolio', 'scheduling', 'routing'] },
|
|
232
|
+
graph: {
|
|
233
|
+
type: 'object',
|
|
234
|
+
properties: {
|
|
235
|
+
nodes: { type: 'number' },
|
|
236
|
+
edges: { type: 'array', items: { type: 'array' } },
|
|
237
|
+
weights: { type: 'array' },
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
circuit: {
|
|
243
|
+
type: 'object',
|
|
244
|
+
properties: {
|
|
245
|
+
depth: { type: 'number', default: 3 },
|
|
246
|
+
optimizer: { type: 'string', enum: ['cobyla', 'bfgs', 'adam', 'nelder-mead'] },
|
|
247
|
+
initialParams: { type: 'string', enum: ['random', 'heuristic', 'transfer', 'fourier'] },
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
shots: { type: 'number', default: 1024 },
|
|
251
|
+
},
|
|
252
|
+
required: ['problem'],
|
|
253
|
+
},
|
|
254
|
+
handler: qaoaOptimizeHandler,
|
|
255
|
+
};
|
|
256
|
+
// ============================================================================
|
|
257
|
+
// Tool 3: quantum/grover-search
|
|
258
|
+
// ============================================================================
|
|
259
|
+
async function groverSearchHandler(input, context) {
|
|
260
|
+
const logger = context?.logger ?? defaultLogger;
|
|
261
|
+
const startTime = performance.now();
|
|
262
|
+
try {
|
|
263
|
+
const validationResult = GroverSearchInputSchema.safeParse(input);
|
|
264
|
+
if (!validationResult.success) {
|
|
265
|
+
return errorResult(`Invalid input: ${validationResult.error.message}`);
|
|
266
|
+
}
|
|
267
|
+
const data = validationResult.data;
|
|
268
|
+
logger.debug('Grover search', { size: data.searchSpace.size, structure: data.searchSpace.structure });
|
|
269
|
+
// Validate search space
|
|
270
|
+
if (data.searchSpace.size > RESOURCE_LIMITS.MAX_ITERATIONS) {
|
|
271
|
+
return errorResult(`Search space too large: ${data.searchSpace.size} > ${RESOURCE_LIMITS.MAX_ITERATIONS}`);
|
|
272
|
+
}
|
|
273
|
+
const searchSpace = {
|
|
274
|
+
size: data.searchSpace.size,
|
|
275
|
+
oracle: data.searchSpace.oracle,
|
|
276
|
+
structure: data.searchSpace.structure,
|
|
277
|
+
};
|
|
278
|
+
const bridge = await getExoticBridge();
|
|
279
|
+
const result = await bridge.groverSearch(searchSpace, {
|
|
280
|
+
method: data.amplification?.method ?? 'standard',
|
|
281
|
+
boostFactor: data.amplification?.boostFactor,
|
|
282
|
+
});
|
|
283
|
+
const duration = performance.now() - startTime;
|
|
284
|
+
logger.info('Grover search completed', {
|
|
285
|
+
found: result.solutions.length,
|
|
286
|
+
queries: result.queries,
|
|
287
|
+
durationMs: duration.toFixed(2),
|
|
288
|
+
});
|
|
289
|
+
return successResult({
|
|
290
|
+
solutions: result.solutions.map(s => Array.from(s)),
|
|
291
|
+
queries: result.queries,
|
|
292
|
+
optimalQueries: result.optimalQueries,
|
|
293
|
+
successProbability: result.successProbability,
|
|
294
|
+
speedup: result.optimalQueries / (result.queries || 1),
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
logger.error('Grover search failed', { error: error instanceof Error ? error.message : String(error) });
|
|
299
|
+
return errorResult(error instanceof Error ? error : new Error(String(error)));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
export const groverSearchTool = {
|
|
303
|
+
name: 'quantum_grover_search',
|
|
304
|
+
description: 'Grover-inspired search with quadratic speedup for unstructured search problems. Provides O(sqrt(N)) query complexity.',
|
|
305
|
+
category: 'quantum',
|
|
306
|
+
version: '0.1.0',
|
|
307
|
+
tags: ['quantum', 'grover', 'search', 'speedup', 'oracle'],
|
|
308
|
+
cacheable: false,
|
|
309
|
+
inputSchema: {
|
|
310
|
+
type: 'object',
|
|
311
|
+
properties: {
|
|
312
|
+
searchSpace: {
|
|
313
|
+
type: 'object',
|
|
314
|
+
properties: {
|
|
315
|
+
size: { type: 'number', description: 'N elements in search space' },
|
|
316
|
+
oracle: { type: 'string', description: 'Predicate function (e.g., "sum == 5")' },
|
|
317
|
+
structure: { type: 'string', enum: ['unstructured', 'database', 'tree', 'graph'] },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
targets: { type: 'number', default: 1 },
|
|
321
|
+
iterations: { type: 'string', enum: ['optimal', 'fixed', 'adaptive'] },
|
|
322
|
+
amplification: {
|
|
323
|
+
type: 'object',
|
|
324
|
+
properties: {
|
|
325
|
+
method: { type: 'string', enum: ['standard', 'fixed_point', 'robust'] },
|
|
326
|
+
boostFactor: { type: 'number' },
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
required: ['searchSpace'],
|
|
331
|
+
},
|
|
332
|
+
handler: groverSearchHandler,
|
|
333
|
+
};
|
|
334
|
+
// ============================================================================
|
|
335
|
+
// Tool 4: quantum/dependency-resolve
|
|
336
|
+
// ============================================================================
|
|
337
|
+
async function dependencyResolveHandler(input, context) {
|
|
338
|
+
const logger = context?.logger ?? defaultLogger;
|
|
339
|
+
const startTime = performance.now();
|
|
340
|
+
try {
|
|
341
|
+
const validationResult = DependencyResolveInputSchema.safeParse(input);
|
|
342
|
+
if (!validationResult.success) {
|
|
343
|
+
return errorResult(`Invalid input: ${validationResult.error.message}`);
|
|
344
|
+
}
|
|
345
|
+
const data = validationResult.data;
|
|
346
|
+
logger.debug('Dependency resolve', { packages: data.packages.length, solver: data.solver });
|
|
347
|
+
const bridge = await getDagBridge();
|
|
348
|
+
const result = await bridge.resolveDependencies(data.packages, {
|
|
349
|
+
minimize: data.constraints?.minimize ?? 'versions',
|
|
350
|
+
lockfile: data.constraints?.lockfile,
|
|
351
|
+
includePeer: data.constraints?.includePeer ?? true,
|
|
352
|
+
timeout: data.constraints?.timeout ?? 30000,
|
|
353
|
+
});
|
|
354
|
+
const duration = performance.now() - startTime;
|
|
355
|
+
logger.info('Dependency resolution completed', {
|
|
356
|
+
resolved: Object.keys(result.resolved).length,
|
|
357
|
+
conflicts: result.resolvedConflicts.length,
|
|
358
|
+
durationMs: duration.toFixed(2),
|
|
359
|
+
});
|
|
360
|
+
return successResult({
|
|
361
|
+
resolved: result.resolved,
|
|
362
|
+
installOrder: result.order,
|
|
363
|
+
resolvedConflicts: result.resolvedConflicts,
|
|
364
|
+
totalSize: result.totalSize,
|
|
365
|
+
vulnerabilities: result.vulnerabilities,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
logger.error('Dependency resolution failed', { error: error instanceof Error ? error.message : String(error) });
|
|
370
|
+
return errorResult(error instanceof Error ? error : new Error(String(error)));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
export const dependencyResolveTool = {
|
|
374
|
+
name: 'quantum_dependency_resolve',
|
|
375
|
+
description: 'Resolve complex dependency graphs using quantum-inspired optimization. Handles version conflicts, minimizes package size or vulnerabilities.',
|
|
376
|
+
category: 'quantum',
|
|
377
|
+
version: '0.1.0',
|
|
378
|
+
tags: ['quantum', 'dependency', 'package', 'resolution', 'conflict'],
|
|
379
|
+
cacheable: false,
|
|
380
|
+
inputSchema: {
|
|
381
|
+
type: 'object',
|
|
382
|
+
properties: {
|
|
383
|
+
packages: {
|
|
384
|
+
type: 'array',
|
|
385
|
+
items: {
|
|
386
|
+
type: 'object',
|
|
387
|
+
properties: {
|
|
388
|
+
name: { type: 'string' },
|
|
389
|
+
version: { type: 'string' },
|
|
390
|
+
dependencies: { type: 'object' },
|
|
391
|
+
conflicts: { type: 'array' },
|
|
392
|
+
size: { type: 'number' },
|
|
393
|
+
vulnerabilities: { type: 'array' },
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
constraints: {
|
|
398
|
+
type: 'object',
|
|
399
|
+
properties: {
|
|
400
|
+
minimize: { type: 'string', enum: ['versions', 'size', 'vulnerabilities', 'depth'] },
|
|
401
|
+
lockfile: { type: 'object' },
|
|
402
|
+
includePeer: { type: 'boolean' },
|
|
403
|
+
timeout: { type: 'number' },
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
solver: { type: 'string', enum: ['quantum_annealing', 'qaoa', 'hybrid'] },
|
|
407
|
+
},
|
|
408
|
+
required: ['packages'],
|
|
409
|
+
},
|
|
410
|
+
handler: dependencyResolveHandler,
|
|
411
|
+
};
|
|
412
|
+
// ============================================================================
|
|
413
|
+
// Tool 5: quantum/schedule-optimize
|
|
414
|
+
// ============================================================================
|
|
415
|
+
async function scheduleOptimizeHandler(input, context) {
|
|
416
|
+
const logger = context?.logger ?? defaultLogger;
|
|
417
|
+
const startTime = performance.now();
|
|
418
|
+
try {
|
|
419
|
+
const validationResult = ScheduleOptimizeInputSchema.safeParse(input);
|
|
420
|
+
if (!validationResult.success) {
|
|
421
|
+
return errorResult(`Invalid input: ${validationResult.error.message}`);
|
|
422
|
+
}
|
|
423
|
+
const data = validationResult.data;
|
|
424
|
+
logger.debug('Schedule optimize', { tasks: data.tasks.length, resources: data.resources.length });
|
|
425
|
+
const bridge = await getDagBridge();
|
|
426
|
+
const result = await bridge.optimizeSchedule(data.tasks, data.resources, data.objective);
|
|
427
|
+
const duration = performance.now() - startTime;
|
|
428
|
+
logger.info('Schedule optimization completed', {
|
|
429
|
+
makespan: result.makespan,
|
|
430
|
+
cost: result.cost,
|
|
431
|
+
score: result.score,
|
|
432
|
+
durationMs: duration.toFixed(2),
|
|
433
|
+
});
|
|
434
|
+
return successResult({
|
|
435
|
+
schedule: result.schedule,
|
|
436
|
+
makespan: result.makespan,
|
|
437
|
+
cost: result.cost,
|
|
438
|
+
utilization: result.utilization,
|
|
439
|
+
criticalPath: result.criticalPath,
|
|
440
|
+
score: result.score,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
logger.error('Schedule optimization failed', { error: error instanceof Error ? error.message : String(error) });
|
|
445
|
+
return errorResult(error instanceof Error ? error : new Error(String(error)));
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
export const scheduleOptimizeTool = {
|
|
449
|
+
name: 'quantum_schedule_optimize',
|
|
450
|
+
description: 'Optimize task scheduling using quantum algorithms. Minimizes makespan, cost, or maximizes resource utilization with dependency constraints.',
|
|
451
|
+
category: 'quantum',
|
|
452
|
+
version: '0.1.0',
|
|
453
|
+
tags: ['quantum', 'scheduling', 'optimization', 'resources', 'critical-path'],
|
|
454
|
+
cacheable: false,
|
|
455
|
+
inputSchema: {
|
|
456
|
+
type: 'object',
|
|
457
|
+
properties: {
|
|
458
|
+
tasks: {
|
|
459
|
+
type: 'array',
|
|
460
|
+
items: {
|
|
461
|
+
type: 'object',
|
|
462
|
+
properties: {
|
|
463
|
+
id: { type: 'string' },
|
|
464
|
+
duration: { type: 'number' },
|
|
465
|
+
dependencies: { type: 'array' },
|
|
466
|
+
resources: { type: 'array' },
|
|
467
|
+
deadline: { type: 'number' },
|
|
468
|
+
priority: { type: 'number' },
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
},
|
|
472
|
+
resources: {
|
|
473
|
+
type: 'array',
|
|
474
|
+
items: {
|
|
475
|
+
type: 'object',
|
|
476
|
+
properties: {
|
|
477
|
+
id: { type: 'string' },
|
|
478
|
+
capacity: { type: 'number' },
|
|
479
|
+
cost: { type: 'number' },
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
objective: { type: 'string', enum: ['makespan', 'cost', 'utilization', 'weighted'] },
|
|
484
|
+
},
|
|
485
|
+
required: ['tasks', 'resources'],
|
|
486
|
+
},
|
|
487
|
+
handler: scheduleOptimizeHandler,
|
|
488
|
+
};
|
|
489
|
+
// ============================================================================
|
|
490
|
+
// Tool Exports
|
|
491
|
+
// ============================================================================
|
|
492
|
+
/**
|
|
493
|
+
* All Quantum Optimizer MCP Tools
|
|
494
|
+
*/
|
|
495
|
+
export const quantumOptimizerTools = [
|
|
496
|
+
annealingSolveTool,
|
|
497
|
+
qaoaOptimizeTool,
|
|
498
|
+
groverSearchTool,
|
|
499
|
+
dependencyResolveTool,
|
|
500
|
+
scheduleOptimizeTool,
|
|
501
|
+
];
|
|
502
|
+
/**
|
|
503
|
+
* Tool name to handler map
|
|
504
|
+
*/
|
|
505
|
+
export const toolHandlers = new Map([
|
|
506
|
+
['quantum_annealing_solve', annealingSolveHandler],
|
|
507
|
+
['quantum_qaoa_optimize', qaoaOptimizeHandler],
|
|
508
|
+
['quantum_grover_search', groverSearchHandler],
|
|
509
|
+
['quantum_dependency_resolve', dependencyResolveHandler],
|
|
510
|
+
['quantum_schedule_optimize', scheduleOptimizeHandler],
|
|
511
|
+
]);
|
|
512
|
+
/**
|
|
513
|
+
* Get a tool by name
|
|
514
|
+
*/
|
|
515
|
+
export function getTool(name) {
|
|
516
|
+
return quantumOptimizerTools.find(t => t.name === name);
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Get all tool names
|
|
520
|
+
*/
|
|
521
|
+
export function getToolNames() {
|
|
522
|
+
return quantumOptimizerTools.map(t => t.name);
|
|
523
|
+
}
|
|
524
|
+
export default quantumOptimizerTools;
|
|
525
|
+
//# sourceMappingURL=mcp-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"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"}
|