claude-flow 2.5.0-alpha.138 → 2.5.0-alpha.139

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 (49) hide show
  1. package/bin/claude-flow +1 -1
  2. package/dist/src/cli/commands/checkpoint.js +156 -0
  3. package/dist/src/cli/commands/checkpoint.js.map +1 -0
  4. package/dist/src/cli/commands/hive-mind/pause.js +9 -2
  5. package/dist/src/cli/commands/hive-mind/pause.js.map +1 -1
  6. package/dist/src/cli/commands/index.js +114 -1
  7. package/dist/src/cli/commands/index.js.map +1 -1
  8. package/dist/src/cli/commands/swarm-spawn.js +33 -5
  9. package/dist/src/cli/commands/swarm-spawn.js.map +1 -1
  10. package/dist/src/cli/help-formatter.js +3 -0
  11. package/dist/src/cli/help-formatter.js.map +1 -1
  12. package/dist/src/cli/help-text.js +2 -16
  13. package/dist/src/cli/help-text.js.map +1 -1
  14. package/dist/src/cli/validation-helper.js.map +1 -1
  15. package/dist/src/hooks/index.js +3 -0
  16. package/dist/src/hooks/index.js.map +1 -1
  17. package/dist/src/mcp/claude-flow-tools.js +150 -205
  18. package/dist/src/mcp/claude-flow-tools.js.map +1 -1
  19. package/dist/src/mcp/mcp-server.js +0 -125
  20. package/dist/src/mcp/mcp-server.js.map +1 -1
  21. package/dist/src/sdk/checkpoint-manager.js +237 -0
  22. package/dist/src/sdk/checkpoint-manager.js.map +1 -0
  23. package/dist/src/sdk/claude-flow-mcp-integration.js +221 -0
  24. package/dist/src/sdk/claude-flow-mcp-integration.js.map +1 -0
  25. package/dist/src/sdk/in-process-mcp.js +374 -0
  26. package/dist/src/sdk/in-process-mcp.js.map +1 -0
  27. package/dist/src/sdk/query-control.js +139 -293
  28. package/dist/src/sdk/query-control.js.map +1 -1
  29. package/dist/src/sdk/session-forking.js +129 -206
  30. package/dist/src/sdk/session-forking.js.map +1 -1
  31. package/dist/src/sdk/validation-demo.js +369 -0
  32. package/dist/src/sdk/validation-demo.js.map +1 -0
  33. package/package.json +1 -1
  34. package/scripts/validate-sdk-integration.ts +188 -0
  35. package/src/cli/commands/checkpoint.ts +220 -0
  36. package/src/cli/commands/hive-mind/pause.ts +15 -2
  37. package/src/cli/commands/index.ts +84 -1
  38. package/src/cli/commands/swarm-spawn.ts +47 -3
  39. package/src/cli/help-text.js +2 -16
  40. package/src/cli/simple-cli.ts +1 -0
  41. package/src/hooks/index.ts +5 -0
  42. package/src/mcp/claude-flow-tools.ts +120 -203
  43. package/src/mcp/mcp-server.js +0 -86
  44. package/src/sdk/checkpoint-manager.ts +403 -0
  45. package/src/sdk/claude-flow-mcp-integration.ts +387 -0
  46. package/src/sdk/in-process-mcp.ts +489 -0
  47. package/src/sdk/query-control.ts +223 -377
  48. package/src/sdk/session-forking.ts +207 -312
  49. package/src/sdk/validation-demo.ts +544 -0
@@ -0,0 +1,374 @@
1
+ import { createSdkMcpServer, tool } from '@anthropic-ai/claude-code';
2
+ import { z } from 'zod';
3
+ export function createMathMcpServer() {
4
+ return createSdkMcpServer({
5
+ name: 'math-operations',
6
+ version: '1.0.0',
7
+ tools: [
8
+ tool({
9
+ name: 'add',
10
+ description: 'Add two numbers together',
11
+ parameters: z.object({
12
+ a: z.number().describe('First number'),
13
+ b: z.number().describe('Second number')
14
+ }),
15
+ execute: async ({ a, b })=>{
16
+ return {
17
+ result: a + b
18
+ };
19
+ }
20
+ }),
21
+ tool({
22
+ name: 'multiply',
23
+ description: 'Multiply two numbers',
24
+ parameters: z.object({
25
+ a: z.number().describe('First number'),
26
+ b: z.number().describe('Second number')
27
+ }),
28
+ execute: async ({ a, b })=>{
29
+ return {
30
+ result: a * b
31
+ };
32
+ }
33
+ }),
34
+ tool({
35
+ name: 'factorial',
36
+ description: 'Calculate factorial of a number',
37
+ parameters: z.object({
38
+ n: z.number().int().min(0).describe('Number to calculate factorial of')
39
+ }),
40
+ execute: async ({ n })=>{
41
+ let result = 1;
42
+ for(let i = 2; i <= n; i++){
43
+ result *= i;
44
+ }
45
+ return {
46
+ result
47
+ };
48
+ }
49
+ })
50
+ ]
51
+ });
52
+ }
53
+ export function createSessionMcpServer() {
54
+ const sessions = new Map();
55
+ return createSdkMcpServer({
56
+ name: 'session-manager',
57
+ version: '1.0.0',
58
+ tools: [
59
+ tool({
60
+ name: 'session_create',
61
+ description: 'Create a new session with initial data',
62
+ parameters: z.object({
63
+ sessionId: z.string().describe('Session identifier'),
64
+ data: z.record(z.any()).optional().describe('Initial session data')
65
+ }),
66
+ execute: async ({ sessionId, data = {} })=>{
67
+ if (sessions.has(sessionId)) {
68
+ return {
69
+ error: 'Session already exists'
70
+ };
71
+ }
72
+ sessions.set(sessionId, {
73
+ data,
74
+ created: Date.now()
75
+ });
76
+ return {
77
+ success: true,
78
+ sessionId,
79
+ created: sessions.get(sessionId).created
80
+ };
81
+ }
82
+ }),
83
+ tool({
84
+ name: 'session_get',
85
+ description: 'Get session data by ID',
86
+ parameters: z.object({
87
+ sessionId: z.string().describe('Session identifier')
88
+ }),
89
+ execute: async ({ sessionId })=>{
90
+ const session = sessions.get(sessionId);
91
+ if (!session) {
92
+ return {
93
+ error: 'Session not found'
94
+ };
95
+ }
96
+ return {
97
+ sessionId,
98
+ data: session.data,
99
+ created: session.created
100
+ };
101
+ }
102
+ }),
103
+ tool({
104
+ name: 'session_update',
105
+ description: 'Update session data (merges with existing)',
106
+ parameters: z.object({
107
+ sessionId: z.string().describe('Session identifier'),
108
+ data: z.record(z.any()).describe('Data to merge')
109
+ }),
110
+ execute: async ({ sessionId, data })=>{
111
+ const session = sessions.get(sessionId);
112
+ if (!session) {
113
+ return {
114
+ error: 'Session not found'
115
+ };
116
+ }
117
+ session.data = {
118
+ ...session.data,
119
+ ...data
120
+ };
121
+ return {
122
+ success: true,
123
+ sessionId,
124
+ data: session.data
125
+ };
126
+ }
127
+ }),
128
+ tool({
129
+ name: 'session_delete',
130
+ description: 'Delete a session',
131
+ parameters: z.object({
132
+ sessionId: z.string().describe('Session identifier')
133
+ }),
134
+ execute: async ({ sessionId })=>{
135
+ const existed = sessions.delete(sessionId);
136
+ return {
137
+ success: existed,
138
+ sessionId
139
+ };
140
+ }
141
+ }),
142
+ tool({
143
+ name: 'session_list',
144
+ description: 'List all active sessions',
145
+ parameters: z.object({}),
146
+ execute: async ()=>{
147
+ const sessionList = Array.from(sessions.entries()).map(([id, session])=>({
148
+ sessionId: id,
149
+ created: session.created,
150
+ dataKeys: Object.keys(session.data)
151
+ }));
152
+ return {
153
+ sessions: sessionList,
154
+ count: sessionList.length
155
+ };
156
+ }
157
+ })
158
+ ]
159
+ });
160
+ }
161
+ export function createCheckpointMcpServer() {
162
+ const { checkpointManager } = require('./checkpoint-manager');
163
+ return createSdkMcpServer({
164
+ name: 'checkpoint-manager',
165
+ version: '1.0.0',
166
+ tools: [
167
+ tool({
168
+ name: 'checkpoint_create',
169
+ description: 'Create a checkpoint for a session',
170
+ parameters: z.object({
171
+ sessionId: z.string().describe('Session identifier'),
172
+ description: z.string().describe("Checkpoint description")
173
+ }),
174
+ execute: async ({ sessionId, description })=>{
175
+ try {
176
+ const checkpointId = await checkpointManager.createCheckpoint(sessionId, description);
177
+ return {
178
+ success: true,
179
+ checkpointId,
180
+ description
181
+ };
182
+ } catch (error) {
183
+ return {
184
+ success: false,
185
+ error: error instanceof Error ? error.message : String(error)
186
+ };
187
+ }
188
+ }
189
+ }),
190
+ tool({
191
+ name: 'checkpoint_list',
192
+ description: 'List all checkpoints for a session',
193
+ parameters: z.object({
194
+ sessionId: z.string().describe('Session identifier')
195
+ }),
196
+ execute: async ({ sessionId })=>{
197
+ const checkpoints = checkpointManager.listCheckpoints(sessionId);
198
+ return {
199
+ sessionId,
200
+ checkpoints: checkpoints.map((c)=>({
201
+ id: c.id,
202
+ description: c.description,
203
+ timestamp: c.timestamp,
204
+ messageCount: c.messageCount,
205
+ totalTokens: c.totalTokens,
206
+ filesModified: c.filesModified
207
+ })),
208
+ count: checkpoints.length
209
+ };
210
+ }
211
+ }),
212
+ tool({
213
+ name: 'checkpoint_get',
214
+ description: 'Get checkpoint details',
215
+ parameters: z.object({
216
+ checkpointId: z.string().describe('Checkpoint identifier')
217
+ }),
218
+ execute: async ({ checkpointId })=>{
219
+ const checkpoint = checkpointManager.getCheckpoint(checkpointId);
220
+ if (!checkpoint) {
221
+ return {
222
+ error: 'Checkpoint not found'
223
+ };
224
+ }
225
+ return {
226
+ checkpoint: {
227
+ id: checkpoint.id,
228
+ sessionId: checkpoint.sessionId,
229
+ description: checkpoint.description,
230
+ timestamp: checkpoint.timestamp,
231
+ messageCount: checkpoint.messageCount,
232
+ totalTokens: checkpoint.totalTokens,
233
+ filesModified: checkpoint.filesModified
234
+ }
235
+ };
236
+ }
237
+ }),
238
+ tool({
239
+ name: 'checkpoint_delete',
240
+ description: 'Delete a checkpoint',
241
+ parameters: z.object({
242
+ checkpointId: z.string().describe('Checkpoint identifier')
243
+ }),
244
+ execute: async ({ checkpointId })=>{
245
+ try {
246
+ await checkpointManager.deleteCheckpoint(checkpointId);
247
+ return {
248
+ success: true,
249
+ checkpointId
250
+ };
251
+ } catch (error) {
252
+ return {
253
+ success: false,
254
+ error: error instanceof Error ? error.message : String(error)
255
+ };
256
+ }
257
+ }
258
+ }),
259
+ tool({
260
+ name: 'checkpoint_diff',
261
+ description: 'Compare two checkpoints',
262
+ parameters: z.object({
263
+ fromId: z.string().describe('From checkpoint ID'),
264
+ toId: z.string().describe('To checkpoint ID')
265
+ }),
266
+ execute: async ({ fromId, toId })=>{
267
+ try {
268
+ const diff = checkpointManager.getCheckpointDiff(fromId, toId);
269
+ return {
270
+ success: true,
271
+ diff
272
+ };
273
+ } catch (error) {
274
+ return {
275
+ success: false,
276
+ error: error instanceof Error ? error.message : String(error)
277
+ };
278
+ }
279
+ }
280
+ })
281
+ ]
282
+ });
283
+ }
284
+ export function createQueryControlMcpServer() {
285
+ const { queryController } = require('./query-control');
286
+ return createSdkMcpServer({
287
+ name: 'query-control',
288
+ version: '1.0.0',
289
+ tools: [
290
+ tool({
291
+ name: 'query_pause_request',
292
+ description: 'Request a query to pause at next safe point',
293
+ parameters: z.object({
294
+ sessionId: z.string().describe('Session identifier')
295
+ }),
296
+ execute: async ({ sessionId })=>{
297
+ queryController.requestPause(sessionId);
298
+ return {
299
+ success: true,
300
+ sessionId,
301
+ status: 'pause_requested'
302
+ };
303
+ }
304
+ }),
305
+ tool({
306
+ name: 'query_pause_cancel',
307
+ description: 'Cancel a pause request',
308
+ parameters: z.object({
309
+ sessionId: z.string().describe('Session identifier')
310
+ }),
311
+ execute: async ({ sessionId })=>{
312
+ queryController.cancelPauseRequest(sessionId);
313
+ return {
314
+ success: true,
315
+ sessionId,
316
+ status: 'pause_cancelled'
317
+ };
318
+ }
319
+ }),
320
+ tool({
321
+ name: 'query_paused_list',
322
+ description: 'List all paused queries',
323
+ parameters: z.object({}),
324
+ execute: async ()=>{
325
+ const paused = queryController.listPausedQueries();
326
+ return {
327
+ paused,
328
+ count: paused.length
329
+ };
330
+ }
331
+ }),
332
+ tool({
333
+ name: 'query_paused_get',
334
+ description: 'Get paused query state',
335
+ parameters: z.object({
336
+ sessionId: z.string().describe('Session identifier')
337
+ }),
338
+ execute: async ({ sessionId })=>{
339
+ const state = queryController.getPausedState(sessionId);
340
+ if (!state) {
341
+ return {
342
+ error: 'Paused query not found'
343
+ };
344
+ }
345
+ return {
346
+ sessionId,
347
+ pausePointMessageId: state.pausePointMessageId,
348
+ pausedAt: state.pausedAt,
349
+ messageCount: state.messages.length
350
+ };
351
+ }
352
+ }),
353
+ tool({
354
+ name: 'query_metrics',
355
+ description: 'Get query control metrics',
356
+ parameters: z.object({}),
357
+ execute: async ()=>{
358
+ const metrics = queryController.getMetrics();
359
+ return {
360
+ metrics: {
361
+ totalPauses: metrics.totalPauses,
362
+ totalResumes: metrics.totalResumes,
363
+ averagePauseDuration: metrics.averagePauseDuration,
364
+ longestPause: metrics.longestPause
365
+ }
366
+ };
367
+ }
368
+ })
369
+ ]
370
+ });
371
+ }
372
+ export { createMathMcpServer, createSessionMcpServer, createCheckpointMcpServer, createQueryControlMcpServer };
373
+
374
+ //# sourceMappingURL=in-process-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/sdk/in-process-mcp.ts"],"sourcesContent":["/**\n * Real In-Process MCP - 100% SDK-Powered\n * Claude-Flow v2.5-alpha.130+\n *\n * Uses ONLY Claude Code SDK primitives - TRUE in-process MCP:\n * - createSdkMcpServer() (SDK creates in-process server)\n * - tool() (SDK defines tools with Zod schemas)\n * - No subprocess, stdio, or HTTP transport overhead\n *\n * VERIFIED: Real in-process MCP servers using actual SDK capabilities\n */\n\nimport {\n createSdkMcpServer,\n tool,\n type McpSdkServerConfigWithInstance,\n} from '@anthropic-ai/claude-code';\nimport { z } from 'zod';\n\n/**\n * Example 1: Math Operations MCP Server\n *\n * Simple in-process server with basic math operations\n */\nexport function createMathMcpServer(): McpSdkServerConfigWithInstance {\n return createSdkMcpServer({\n name: 'math-operations',\n version: '1.0.0',\n tools: [\n // Add two numbers\n tool({\n name: 'add',\n description: 'Add two numbers together',\n parameters: z.object({\n a: z.number().describe('First number'),\n b: z.number().describe('Second number'),\n }),\n execute: async ({ a, b }) => {\n return { result: a + b };\n },\n }),\n\n // Multiply two numbers\n tool({\n name: 'multiply',\n description: 'Multiply two numbers',\n parameters: z.object({\n a: z.number().describe('First number'),\n b: z.number().describe('Second number'),\n }),\n execute: async ({ a, b }) => {\n return { result: a * b };\n },\n }),\n\n // Calculate factorial\n tool({\n name: 'factorial',\n description: 'Calculate factorial of a number',\n parameters: z.object({\n n: z.number().int().min(0).describe('Number to calculate factorial of'),\n }),\n execute: async ({ n }) => {\n let result = 1;\n for (let i = 2; i <= n; i++) {\n result *= i;\n }\n return { result };\n },\n }),\n ],\n });\n}\n\n/**\n * Example 2: Session Management MCP Server\n *\n * In-process server for managing session state\n */\nexport function createSessionMcpServer(): McpSdkServerConfigWithInstance {\n // In-process state (no IPC overhead!)\n const sessions = new Map<string, { data: Record<string, any>; created: number }>();\n\n return createSdkMcpServer({\n name: 'session-manager',\n version: '1.0.0',\n tools: [\n // Create session\n tool({\n name: 'session_create',\n description: 'Create a new session with initial data',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n data: z.record(z.any()).optional().describe('Initial session data'),\n }),\n execute: async ({ sessionId, data = {} }) => {\n if (sessions.has(sessionId)) {\n return { error: 'Session already exists' };\n }\n\n sessions.set(sessionId, {\n data,\n created: Date.now(),\n });\n\n return {\n success: true,\n sessionId,\n created: sessions.get(sessionId)!.created,\n };\n },\n }),\n\n // Get session data\n tool({\n name: 'session_get',\n description: 'Get session data by ID',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n }),\n execute: async ({ sessionId }) => {\n const session = sessions.get(sessionId);\n\n if (!session) {\n return { error: 'Session not found' };\n }\n\n return {\n sessionId,\n data: session.data,\n created: session.created,\n };\n },\n }),\n\n // Update session data\n tool({\n name: 'session_update',\n description: 'Update session data (merges with existing)',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n data: z.record(z.any()).describe('Data to merge'),\n }),\n execute: async ({ sessionId, data }) => {\n const session = sessions.get(sessionId);\n\n if (!session) {\n return { error: 'Session not found' };\n }\n\n // Merge data\n session.data = { ...session.data, ...data };\n\n return {\n success: true,\n sessionId,\n data: session.data,\n };\n },\n }),\n\n // Delete session\n tool({\n name: 'session_delete',\n description: 'Delete a session',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n }),\n execute: async ({ sessionId }) => {\n const existed = sessions.delete(sessionId);\n\n return {\n success: existed,\n sessionId,\n };\n },\n }),\n\n // List all sessions\n tool({\n name: 'session_list',\n description: 'List all active sessions',\n parameters: z.object({}),\n execute: async () => {\n const sessionList = Array.from(sessions.entries()).map(([id, session]) => ({\n sessionId: id,\n created: session.created,\n dataKeys: Object.keys(session.data),\n }));\n\n return {\n sessions: sessionList,\n count: sessionList.length,\n };\n },\n }),\n ],\n });\n}\n\n/**\n * Example 3: Checkpoint Management MCP Server\n *\n * In-process server integrated with checkpoint manager\n */\nexport function createCheckpointMcpServer(): McpSdkServerConfigWithInstance {\n // Import checkpoint manager\n const { checkpointManager } = require('./checkpoint-manager');\n\n return createSdkMcpServer({\n name: 'checkpoint-manager',\n version: '1.0.0',\n tools: [\n // Create checkpoint\n tool({\n name: 'checkpoint_create',\n description: 'Create a checkpoint for a session',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n description: z.string().describe('Checkpoint description'),\n }),\n execute: async ({ sessionId, description }) => {\n try {\n const checkpointId = await checkpointManager.createCheckpoint(\n sessionId,\n description\n );\n\n return {\n success: true,\n checkpointId,\n description,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n },\n }),\n\n // List checkpoints\n tool({\n name: 'checkpoint_list',\n description: 'List all checkpoints for a session',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n }),\n execute: async ({ sessionId }) => {\n const checkpoints = checkpointManager.listCheckpoints(sessionId);\n\n return {\n sessionId,\n checkpoints: checkpoints.map(c => ({\n id: c.id,\n description: c.description,\n timestamp: c.timestamp,\n messageCount: c.messageCount,\n totalTokens: c.totalTokens,\n filesModified: c.filesModified,\n })),\n count: checkpoints.length,\n };\n },\n }),\n\n // Get checkpoint info\n tool({\n name: 'checkpoint_get',\n description: 'Get checkpoint details',\n parameters: z.object({\n checkpointId: z.string().describe('Checkpoint identifier'),\n }),\n execute: async ({ checkpointId }) => {\n const checkpoint = checkpointManager.getCheckpoint(checkpointId);\n\n if (!checkpoint) {\n return { error: 'Checkpoint not found' };\n }\n\n return {\n checkpoint: {\n id: checkpoint.id,\n sessionId: checkpoint.sessionId,\n description: checkpoint.description,\n timestamp: checkpoint.timestamp,\n messageCount: checkpoint.messageCount,\n totalTokens: checkpoint.totalTokens,\n filesModified: checkpoint.filesModified,\n },\n };\n },\n }),\n\n // Delete checkpoint\n tool({\n name: 'checkpoint_delete',\n description: 'Delete a checkpoint',\n parameters: z.object({\n checkpointId: z.string().describe('Checkpoint identifier'),\n }),\n execute: async ({ checkpointId }) => {\n try {\n await checkpointManager.deleteCheckpoint(checkpointId);\n\n return {\n success: true,\n checkpointId,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n },\n }),\n\n // Compare checkpoints\n tool({\n name: 'checkpoint_diff',\n description: 'Compare two checkpoints',\n parameters: z.object({\n fromId: z.string().describe('From checkpoint ID'),\n toId: z.string().describe('To checkpoint ID'),\n }),\n execute: async ({ fromId, toId }) => {\n try {\n const diff = checkpointManager.getCheckpointDiff(fromId, toId);\n\n return {\n success: true,\n diff,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n },\n }),\n ],\n });\n}\n\n/**\n * Example 4: Query Control MCP Server\n *\n * In-process server for pause/resume operations\n */\nexport function createQueryControlMcpServer(): McpSdkServerConfigWithInstance {\n const { queryController } = require('./query-control');\n\n return createSdkMcpServer({\n name: 'query-control',\n version: '1.0.0',\n tools: [\n // Request pause\n tool({\n name: 'query_pause_request',\n description: 'Request a query to pause at next safe point',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n }),\n execute: async ({ sessionId }) => {\n queryController.requestPause(sessionId);\n\n return {\n success: true,\n sessionId,\n status: 'pause_requested',\n };\n },\n }),\n\n // Cancel pause request\n tool({\n name: 'query_pause_cancel',\n description: 'Cancel a pause request',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n }),\n execute: async ({ sessionId }) => {\n queryController.cancelPauseRequest(sessionId);\n\n return {\n success: true,\n sessionId,\n status: 'pause_cancelled',\n };\n },\n }),\n\n // List paused queries\n tool({\n name: 'query_paused_list',\n description: 'List all paused queries',\n parameters: z.object({}),\n execute: async () => {\n const paused = queryController.listPausedQueries();\n\n return {\n paused,\n count: paused.length,\n };\n },\n }),\n\n // Get paused query state\n tool({\n name: 'query_paused_get',\n description: 'Get paused query state',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier'),\n }),\n execute: async ({ sessionId }) => {\n const state = queryController.getPausedState(sessionId);\n\n if (!state) {\n return { error: 'Paused query not found' };\n }\n\n return {\n sessionId,\n pausePointMessageId: state.pausePointMessageId,\n pausedAt: state.pausedAt,\n messageCount: state.messages.length,\n };\n },\n }),\n\n // Get metrics\n tool({\n name: 'query_metrics',\n description: 'Get query control metrics',\n parameters: z.object({}),\n execute: async () => {\n const metrics = queryController.getMetrics();\n\n return {\n metrics: {\n totalPauses: metrics.totalPauses,\n totalResumes: metrics.totalResumes,\n averagePauseDuration: metrics.averagePauseDuration,\n longestPause: metrics.longestPause,\n },\n };\n },\n }),\n ],\n });\n}\n\n/**\n * Example Usage:\n *\n * ```typescript\n * import { query } from '@anthropic-ai/claude-code';\n * import {\n * createMathMcpServer,\n * createSessionMcpServer,\n * createCheckpointMcpServer,\n * createQueryControlMcpServer,\n * } from './in-process-mcp';\n *\n * // Use in-process MCP servers (no IPC overhead!)\n * const result = await query({\n * prompt: 'Calculate 5! and store result in session',\n * options: {\n * mcpServers: {\n * math: createMathMcpServer(),\n * session: createSessionMcpServer(),\n * checkpoint: createCheckpointMcpServer(),\n * queryControl: createQueryControlMcpServer(),\n * },\n * },\n * });\n * ```\n */\n\n// Export all server factories\nexport {\n createMathMcpServer,\n createSessionMcpServer,\n createCheckpointMcpServer,\n createQueryControlMcpServer,\n};\n"],"names":["createSdkMcpServer","tool","z","createMathMcpServer","name","version","tools","description","parameters","object","a","number","describe","b","execute","result","n","int","min","i","createSessionMcpServer","sessions","Map","sessionId","string","data","record","any","optional","has","error","set","created","Date","now","success","get","session","existed","delete","sessionList","Array","from","entries","map","id","dataKeys","Object","keys","count","length","createCheckpointMcpServer","checkpointManager","require","checkpointId","createCheckpoint","Error","message","String","checkpoints","listCheckpoints","c","timestamp","messageCount","totalTokens","filesModified","checkpoint","getCheckpoint","deleteCheckpoint","fromId","toId","diff","getCheckpointDiff","createQueryControlMcpServer","queryController","requestPause","status","cancelPauseRequest","paused","listPausedQueries","state","getPausedState","pausePointMessageId","pausedAt","messages","metrics","getMetrics","totalPauses","totalResumes","averagePauseDuration","longestPause"],"mappings":"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"}