mcpgraph 0.1.10 → 0.1.11
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/dist/api.d.ts +6 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +12 -3
- package/dist/api.js.map +1 -1
- package/dist/main.js +2 -1
- package/dist/main.js.map +1 -1
- package/docs/introspection-debugging.md +37 -27
- package/examples/api-usage.ts +10 -2
- package/package.json +1 -1
package/dist/api.d.ts
CHANGED
|
@@ -51,10 +51,15 @@ export declare class McpGraphApi {
|
|
|
51
51
|
getTool(toolName: string): ToolInfo | undefined;
|
|
52
52
|
/**
|
|
53
53
|
* Execute a tool with the given arguments
|
|
54
|
+
* Returns both the execution promise and the controller (if hooks/breakpoints are provided)
|
|
54
55
|
*/
|
|
55
|
-
executeTool(toolName: string, toolArguments?: Record<string, unknown>, options?: ExecutionOptions):
|
|
56
|
+
executeTool(toolName: string, toolArguments?: Record<string, unknown>, options?: ExecutionOptions): {
|
|
57
|
+
promise: Promise<ExecutionResult>;
|
|
58
|
+
controller: ExecutionController | null;
|
|
59
|
+
};
|
|
56
60
|
/**
|
|
57
61
|
* Get the execution controller (available during execution with hooks/breakpoints)
|
|
62
|
+
* @deprecated Use the controller returned from executeTool() instead
|
|
58
63
|
*/
|
|
59
64
|
getController(): ExecutionController | null;
|
|
60
65
|
/**
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,IAAI,mBAAmB,EACtC,mBAAmB,EACnB,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC9C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,aAAa,CAAmB;IAExC;;;;OAIG;gBACS,UAAU,EAAE,MAAM;IAmB9B;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAQvE;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE;IASvB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAc/C
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,IAAI,mBAAmB,EACtC,mBAAmB,EACnB,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC9C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,aAAa,CAAmB;IAExC;;;;OAIG;gBACS,UAAU,EAAE,MAAM;IAmB9B;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAQvE;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE;IASvB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAc/C;;;OAGG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAC3C,OAAO,CAAC,EAAE,gBAAgB,GACzB;QAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;KAAE;IAmBhF;;;OAGG;IACH,aAAa,IAAI,mBAAmB,GAAG,IAAI;IAI3C;;OAEG;IACH,QAAQ;IAIR;;OAEG;IACH,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAY1C;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE;IAK5D;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG;QAChD,MAAM,EAAE,cAAc,CAAC;QACvB,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B;IAMD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/api.js
CHANGED
|
@@ -72,18 +72,27 @@ export class McpGraphApi {
|
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
74
|
* Execute a tool with the given arguments
|
|
75
|
+
* Returns both the execution promise and the controller (if hooks/breakpoints are provided)
|
|
75
76
|
*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
executeTool(toolName, toolArguments = {}, options) {
|
|
78
|
+
// Start execution and get controller immediately
|
|
79
|
+
const executionPromise = this.executor.executeTool(toolName, toolArguments, options);
|
|
80
|
+
const controller = this.executor.getController();
|
|
81
|
+
// Wrap the execution result
|
|
82
|
+
const wrappedPromise = executionPromise.then(executionResult => ({
|
|
79
83
|
result: executionResult.result,
|
|
80
84
|
structuredContent: executionResult.result,
|
|
81
85
|
executionHistory: executionResult.executionHistory,
|
|
82
86
|
telemetry: executionResult.telemetry,
|
|
87
|
+
}));
|
|
88
|
+
return {
|
|
89
|
+
promise: wrappedPromise,
|
|
90
|
+
controller,
|
|
83
91
|
};
|
|
84
92
|
}
|
|
85
93
|
/**
|
|
86
94
|
* Get the execution controller (available during execution with hooks/breakpoints)
|
|
95
|
+
* @deprecated Use the controller returned from executeTool() instead
|
|
87
96
|
*/
|
|
88
97
|
getController() {
|
|
89
98
|
return this.executor.getController();
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAmC3D,MAAM,OAAO,WAAW;IACd,MAAM,CAAiB;IACvB,QAAQ,CAAgB;IACxB,aAAa,CAAmB;IAExC;;;;OAIG;IACH,YAAY,UAAkB;QAC5B,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE9D,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;YAC7B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YACnC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAiD;YACnE,YAAY,EAAE,IAAI,CAAC,YAAkD;SACtE,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAiD;YACnE,YAAY,EAAE,IAAI,CAAC,YAAkD;SACtE,CAAC;IACJ,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -43,7 +43,8 @@ async function main() {
|
|
|
43
43
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
44
44
|
const toolName = request.params.name;
|
|
45
45
|
logger.info(`Tool called: ${toolName}`);
|
|
46
|
-
const
|
|
46
|
+
const { promise } = api.executeTool(toolName, request.params.arguments || {});
|
|
47
|
+
const executionResult = await promise;
|
|
47
48
|
return {
|
|
48
49
|
content: [
|
|
49
50
|
{
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE;QACP,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,aAAa;SACvB;KACF;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC;QAElD,mDAAmD;QACnD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QAEvC,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;YACE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,iBAAiB;QACjB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5D,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAErC,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;YACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,8 @@ import { McpGraphApi, type ExecutionHooks } from 'mcpgraph';
|
|
|
22
22
|
|
|
23
23
|
const api = new McpGraphApi('config.yaml');
|
|
24
24
|
|
|
25
|
-
// Execute with debugging enabled
|
|
26
|
-
const
|
|
25
|
+
// Execute with debugging enabled - controller is available immediately
|
|
26
|
+
const { promise, controller } = api.executeTool('count_files', {
|
|
27
27
|
directory: './tests/files'
|
|
28
28
|
}, {
|
|
29
29
|
hooks: {
|
|
@@ -37,6 +37,14 @@ const result = await api.executeTool('count_files', {
|
|
|
37
37
|
enableTelemetry: true
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
+
// Controller is available immediately (no polling needed)
|
|
41
|
+
if (controller) {
|
|
42
|
+
console.log('Controller available for pause/resume/stop');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Wait for execution to complete
|
|
46
|
+
const result = await promise;
|
|
47
|
+
|
|
40
48
|
// Access execution history and telemetry
|
|
41
49
|
console.log('History:', result.executionHistory);
|
|
42
50
|
console.log('Telemetry:', result.telemetry);
|
|
@@ -141,14 +149,13 @@ The execution controller provides programmatic control over execution flow. It's
|
|
|
141
149
|
### Getting the Controller
|
|
142
150
|
|
|
143
151
|
```typescript
|
|
144
|
-
// Start execution with hooks/breakpoints
|
|
145
|
-
const executionPromise = api.executeTool('my_tool', {}, {
|
|
152
|
+
// Start execution with hooks/breakpoints - controller is available immediately
|
|
153
|
+
const { promise: executionPromise, controller } = api.executeTool('my_tool', {}, {
|
|
146
154
|
hooks: { /* ... */ },
|
|
147
155
|
breakpoints: ['node_1', 'node_2']
|
|
148
156
|
});
|
|
149
157
|
|
|
150
|
-
//
|
|
151
|
-
const controller = api.getController();
|
|
158
|
+
// Controller is available immediately (no polling needed)
|
|
152
159
|
if (controller) {
|
|
153
160
|
// Use controller methods
|
|
154
161
|
controller.pause();
|
|
@@ -218,36 +225,32 @@ const hooks: ExecutionHooks = {
|
|
|
218
225
|
}
|
|
219
226
|
};
|
|
220
227
|
|
|
221
|
-
// Start execution
|
|
222
|
-
const executionPromise = api.executeTool('my_tool', {}, {
|
|
228
|
+
// Start execution - controller is available immediately
|
|
229
|
+
const { promise: executionPromise, controller } = api.executeTool('my_tool', {}, {
|
|
223
230
|
hooks,
|
|
224
231
|
breakpoints: ['entry_node'] // Start paused
|
|
225
232
|
});
|
|
226
233
|
|
|
227
|
-
// In your UI event handlers:
|
|
234
|
+
// In your UI event handlers (controller is available immediately):
|
|
228
235
|
function handleStep() {
|
|
229
|
-
const controller = api.getController();
|
|
230
236
|
if (controller) {
|
|
231
237
|
await controller.step();
|
|
232
238
|
}
|
|
233
239
|
}
|
|
234
240
|
|
|
235
241
|
function handlePause() {
|
|
236
|
-
const controller = api.getController();
|
|
237
242
|
if (controller) {
|
|
238
243
|
controller.pause();
|
|
239
244
|
}
|
|
240
245
|
}
|
|
241
246
|
|
|
242
247
|
function handleResume() {
|
|
243
|
-
const controller = api.getController();
|
|
244
248
|
if (controller) {
|
|
245
249
|
controller.resume();
|
|
246
250
|
}
|
|
247
251
|
}
|
|
248
252
|
|
|
249
253
|
function handleStop() {
|
|
250
|
-
const controller = api.getController();
|
|
251
254
|
if (controller) {
|
|
252
255
|
controller.stop();
|
|
253
256
|
}
|
|
@@ -269,7 +272,11 @@ await api.executeTool('my_tool', {}, {
|
|
|
269
272
|
### 2. Via Execution Controller
|
|
270
273
|
|
|
271
274
|
```typescript
|
|
272
|
-
|
|
275
|
+
// Get controller from executeTool return value
|
|
276
|
+
const { controller } = api.executeTool('my_tool', {}, {
|
|
277
|
+
hooks: { /* ... */ }
|
|
278
|
+
});
|
|
279
|
+
|
|
273
280
|
if (controller) {
|
|
274
281
|
// Set breakpoints dynamically
|
|
275
282
|
controller.setBreakpoints(['node_1', 'node_2']);
|
|
@@ -314,8 +321,11 @@ if (state) {
|
|
|
314
321
|
console.log('Context:', state.context.getData());
|
|
315
322
|
}
|
|
316
323
|
|
|
317
|
-
// Or via controller
|
|
318
|
-
const controller = api.
|
|
324
|
+
// Or via controller (from executeTool return value)
|
|
325
|
+
const { controller } = api.executeTool('my_tool', {}, {
|
|
326
|
+
hooks: { /* ... */ }
|
|
327
|
+
});
|
|
328
|
+
|
|
319
329
|
if (controller) {
|
|
320
330
|
const state = controller.getState();
|
|
321
331
|
// Same state object
|
|
@@ -506,16 +516,14 @@ class GraphVisualizer {
|
|
|
506
516
|
}
|
|
507
517
|
|
|
508
518
|
pause() {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
controller.pause();
|
|
519
|
+
if (this.controller) {
|
|
520
|
+
this.controller.pause();
|
|
512
521
|
}
|
|
513
522
|
}
|
|
514
523
|
|
|
515
524
|
resume() {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
controller.resume();
|
|
525
|
+
if (this.controller) {
|
|
526
|
+
this.controller.resume();
|
|
519
527
|
}
|
|
520
528
|
}
|
|
521
529
|
|
|
@@ -527,9 +535,8 @@ class GraphVisualizer {
|
|
|
527
535
|
}
|
|
528
536
|
|
|
529
537
|
stop() {
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
controller.stop();
|
|
538
|
+
if (this.controller) {
|
|
539
|
+
this.controller.stop();
|
|
533
540
|
}
|
|
534
541
|
}
|
|
535
542
|
|
|
@@ -566,15 +573,18 @@ class GraphVisualizer {
|
|
|
566
573
|
class McpGraphApi {
|
|
567
574
|
/**
|
|
568
575
|
* Execute a tool with optional debugging options
|
|
576
|
+
* Returns both the execution promise and controller (if hooks/breakpoints are provided)
|
|
577
|
+
* Controller is available immediately - no polling needed
|
|
569
578
|
*/
|
|
570
|
-
|
|
579
|
+
executeTool(
|
|
571
580
|
toolName: string,
|
|
572
581
|
toolArguments: Record<string, unknown>,
|
|
573
582
|
options?: ExecutionOptions
|
|
574
|
-
): Promise<ExecutionResult>;
|
|
583
|
+
): { promise: Promise<ExecutionResult>; controller: ExecutionController | null };
|
|
575
584
|
|
|
576
585
|
/**
|
|
577
586
|
* Get the execution controller (available during execution)
|
|
587
|
+
* @deprecated Use the controller returned from executeTool() instead
|
|
578
588
|
*/
|
|
579
589
|
getController(): ExecutionController | null;
|
|
580
590
|
|
package/examples/api-usage.ts
CHANGED
|
@@ -27,9 +27,10 @@ async function example() {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// Execute a tool
|
|
30
|
-
const
|
|
30
|
+
const { promise } = api.executeTool('count_files', {
|
|
31
31
|
directory: './tests/files',
|
|
32
32
|
});
|
|
33
|
+
const result = await promise;
|
|
33
34
|
|
|
34
35
|
console.log('Execution result:', result.result);
|
|
35
36
|
console.log('Structured content:', result.structuredContent);
|
|
@@ -43,7 +44,7 @@ async function introspectionExample() {
|
|
|
43
44
|
const api = new McpGraphApi('examples/count_files.yaml');
|
|
44
45
|
|
|
45
46
|
// Execute with hooks and telemetry
|
|
46
|
-
const
|
|
47
|
+
const { promise, controller } = api.executeTool('count_files', {
|
|
47
48
|
directory: './tests/files',
|
|
48
49
|
}, {
|
|
49
50
|
hooks: {
|
|
@@ -57,6 +58,13 @@ async function introspectionExample() {
|
|
|
57
58
|
},
|
|
58
59
|
enableTelemetry: true,
|
|
59
60
|
});
|
|
61
|
+
|
|
62
|
+
// Controller is available immediately (no polling needed)
|
|
63
|
+
if (controller) {
|
|
64
|
+
console.log('Controller available for pause/resume/stop');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const result = await promise;
|
|
60
68
|
|
|
61
69
|
// Access execution history
|
|
62
70
|
if (result.executionHistory) {
|