langflow-mcp-server 3.1.0 → 4.11.0
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 +228 -79
- package/dist/__tests__/fixtures/vertices.d.ts +1 -2
- package/dist/__tests__/fixtures/vertices.d.ts.map +1 -1
- package/dist/__tests__/fixtures/vertices.js +1 -5
- package/dist/__tests__/fixtures/vertices.js.map +1 -1
- package/dist/mcp/server-consolidated.d.ts +13 -0
- package/dist/mcp/server-consolidated.d.ts.map +1 -1
- package/dist/mcp/server-consolidated.js +713 -44
- package/dist/mcp/server-consolidated.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +749 -50
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools-consolidated.d.ts.map +1 -1
- package/dist/mcp/tools-consolidated.js +722 -43
- package/dist/mcp/tools-consolidated.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1701 -66
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/validation-consolidated.d.ts +681 -9
- package/dist/mcp/validation-consolidated.d.ts.map +1 -1
- package/dist/mcp/validation-consolidated.js +635 -15
- package/dist/mcp/validation-consolidated.js.map +1 -1
- package/dist/mcp/validation.d.ts +769 -11
- package/dist/mcp/validation.d.ts.map +1 -1
- package/dist/mcp/validation.js +600 -11
- package/dist/mcp/validation.js.map +1 -1
- package/dist/services/langflow-client.d.ts +133 -51
- package/dist/services/langflow-client.d.ts.map +1 -1
- package/dist/services/langflow-client.js +1102 -154
- package/dist/services/langflow-client.js.map +1 -1
- package/dist/types/index.d.ts +395 -4
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +16 -13
|
@@ -16,35 +16,37 @@ class LangflowMCPServerConsolidated {
|
|
|
16
16
|
this.client = null;
|
|
17
17
|
const baseUrl = process.env.LANGFLOW_BASE_URL;
|
|
18
18
|
const apiKey = process.env.LANGFLOW_API_KEY;
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
throw new Error(`Invalid protocol: ${url.protocol}. Only http: and https: are allowed.`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
if (error instanceof TypeError) {
|
|
30
|
-
throw new Error(`Invalid LANGFLOW_BASE_URL format: ${baseUrl}`);
|
|
19
|
+
if (baseUrl && apiKey) {
|
|
20
|
+
try {
|
|
21
|
+
const url = new URL(baseUrl);
|
|
22
|
+
if (!['http:', 'https:'].includes(url.protocol)) {
|
|
23
|
+
throw new Error(`Invalid protocol: ${url.protocol}. Only http: and https: are allowed.`);
|
|
24
|
+
}
|
|
31
25
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error instanceof TypeError) {
|
|
28
|
+
throw new Error(`Invalid LANGFLOW_BASE_URL format: ${baseUrl}`);
|
|
29
|
+
}
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
if (apiKey.length < 10) {
|
|
33
|
+
throw new Error('LANGFLOW_API_KEY appears to be invalid (too short)');
|
|
34
|
+
}
|
|
35
|
+
const DEFAULT_TIMEOUT = 30000;
|
|
36
|
+
const MIN_TIMEOUT = 1000;
|
|
37
|
+
const MAX_TIMEOUT = 300000;
|
|
38
|
+
const timeoutStr = process.env.LANGFLOW_TIMEOUT || String(DEFAULT_TIMEOUT);
|
|
39
|
+
let timeout = parseInt(timeoutStr, 10);
|
|
40
|
+
if (isNaN(timeout) || timeout < MIN_TIMEOUT || timeout > MAX_TIMEOUT) {
|
|
41
|
+
logger_1.logger.warn(`Invalid LANGFLOW_TIMEOUT: ${timeoutStr}, using default: ${DEFAULT_TIMEOUT}`);
|
|
42
|
+
timeout = DEFAULT_TIMEOUT;
|
|
43
|
+
}
|
|
44
|
+
const config = { baseUrl, apiKey, timeout };
|
|
45
|
+
this.client = new langflow_client_1.LangflowClient(config);
|
|
36
46
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const MAX_TIMEOUT = 300000;
|
|
40
|
-
const timeoutStr = process.env.LANGFLOW_TIMEOUT || String(DEFAULT_TIMEOUT);
|
|
41
|
-
let timeout = parseInt(timeoutStr, 10);
|
|
42
|
-
if (isNaN(timeout) || timeout < MIN_TIMEOUT || timeout > MAX_TIMEOUT) {
|
|
43
|
-
logger_1.logger.warn(`Invalid LANGFLOW_TIMEOUT: ${timeoutStr}, using default: ${DEFAULT_TIMEOUT}`);
|
|
44
|
-
timeout = DEFAULT_TIMEOUT;
|
|
47
|
+
else {
|
|
48
|
+
logger_1.logger.warn('LANGFLOW_BASE_URL or LANGFLOW_API_KEY not set. Server will start but tools will return errors until configured.');
|
|
45
49
|
}
|
|
46
|
-
const config = { baseUrl, apiKey, timeout };
|
|
47
|
-
this.client = new langflow_client_1.LangflowClient(config);
|
|
48
50
|
logger_1.logger.info('Initializing Langflow MCP server (consolidated tools)');
|
|
49
51
|
let serverVersion = 'dev';
|
|
50
52
|
try {
|
|
@@ -150,6 +152,10 @@ class LangflowMCPServerConsolidated {
|
|
|
150
152
|
if (!base64Regex.test(fileContent)) {
|
|
151
153
|
throw new Error('Invalid base64 format');
|
|
152
154
|
}
|
|
155
|
+
if (fileContent.length % 4 !== 0 ||
|
|
156
|
+
Buffer.from(fileContent, 'base64').toString('base64') !== fileContent) {
|
|
157
|
+
throw new Error('Invalid base64 format');
|
|
158
|
+
}
|
|
153
159
|
const estimatedSize = (fileContent.length * 3) / 4;
|
|
154
160
|
if (estimatedSize > maxSizeBytes) {
|
|
155
161
|
throw new Error(`File size exceeds maximum allowed size of ${maxSizeBytes} bytes (10MB)`);
|
|
@@ -206,7 +212,7 @@ class LangflowMCPServerConsolidated {
|
|
|
206
212
|
});
|
|
207
213
|
this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
208
214
|
if (!this.client) {
|
|
209
|
-
throw new Error('Langflow client not initialized');
|
|
215
|
+
throw new Error('Langflow client not initialized. Set LANGFLOW_BASE_URL and LANGFLOW_API_KEY environment variables.');
|
|
210
216
|
}
|
|
211
217
|
const { name, arguments: rawArgs } = request.params;
|
|
212
218
|
if (rawArgs !== undefined && rawArgs !== null) {
|
|
@@ -247,6 +253,32 @@ class LangflowMCPServerConsolidated {
|
|
|
247
253
|
return await this.handleValidationTool(args);
|
|
248
254
|
case 'system':
|
|
249
255
|
return await this.handleSystemTool(args);
|
|
256
|
+
case 'flow_version':
|
|
257
|
+
return await this.handleFlowVersionTool(args);
|
|
258
|
+
case 'file_v2':
|
|
259
|
+
return await this.handleFileV2Tool(args);
|
|
260
|
+
case 'model':
|
|
261
|
+
return await this.handleModelTool(args);
|
|
262
|
+
case 'agentic':
|
|
263
|
+
return await this.handleAgenticTool(args);
|
|
264
|
+
case 'workflow':
|
|
265
|
+
return await this.handleWorkflowTool(args);
|
|
266
|
+
case 'a2a':
|
|
267
|
+
return await this.handleA2aTool(args);
|
|
268
|
+
case 'mcp_server':
|
|
269
|
+
return await this.handleMcpServerTool(args);
|
|
270
|
+
case 'mcp_project':
|
|
271
|
+
return await this.handleMcpProjectTool(args);
|
|
272
|
+
case 'trace':
|
|
273
|
+
return await this.handleTraceTool(args);
|
|
274
|
+
case 'response':
|
|
275
|
+
return await this.handleResponseTool(args);
|
|
276
|
+
case 'authz':
|
|
277
|
+
return await this.handleAuthzTool(args);
|
|
278
|
+
case 'memory':
|
|
279
|
+
return await this.handleMemoryTool(args);
|
|
280
|
+
case 'extension':
|
|
281
|
+
return await this.handleExtensionTool(args);
|
|
250
282
|
default:
|
|
251
283
|
throw new Error(`Unknown tool: ${name}`);
|
|
252
284
|
}
|
|
@@ -310,14 +342,27 @@ class LangflowMCPServerConsolidated {
|
|
|
310
342
|
const starters = await this.client.listStarterProjects();
|
|
311
343
|
return this.formatSuccessResponse(starters);
|
|
312
344
|
}
|
|
345
|
+
case 'replace': {
|
|
346
|
+
const { action: _, flow_id, ...body } = validated;
|
|
347
|
+
const result = await this.client.replaceFlow(flow_id, body);
|
|
348
|
+
return this.formatSuccessResponse(result);
|
|
349
|
+
}
|
|
350
|
+
case 'expand': {
|
|
351
|
+
const result = await this.client.expandFlows(validated.body);
|
|
352
|
+
return this.formatSuccessResponse(result);
|
|
353
|
+
}
|
|
354
|
+
case 'note_translations': {
|
|
355
|
+
const result = await this.client.getFlowNoteTranslations(validated.flow_id);
|
|
356
|
+
return this.formatSuccessResponse(result);
|
|
357
|
+
}
|
|
313
358
|
}
|
|
314
359
|
}
|
|
315
360
|
async handleFlowExecutionTool(args) {
|
|
316
361
|
const validated = validation_consolidated_1.FlowExecutionToolSchema.parse(args);
|
|
317
362
|
switch (validated.action) {
|
|
318
363
|
case 'run': {
|
|
319
|
-
const { action: _, flow_id_or_name, stream, ...inputRequest } = validated;
|
|
320
|
-
const result = await this.client.runFlow(flow_id_or_name, inputRequest, stream);
|
|
364
|
+
const { action: _, flow_id_or_name, stream, context, ...inputRequest } = validated;
|
|
365
|
+
const result = await this.client.runFlow(flow_id_or_name, inputRequest, stream, context);
|
|
321
366
|
return this.formatSuccessResponse(result);
|
|
322
367
|
}
|
|
323
368
|
case 'run_advanced': {
|
|
@@ -368,10 +413,6 @@ class LangflowMCPServerConsolidated {
|
|
|
368
413
|
const result = await this.client.buildVertices(flow_id, request);
|
|
369
414
|
return this.formatSuccessResponse(result);
|
|
370
415
|
}
|
|
371
|
-
case 'get_vertex': {
|
|
372
|
-
const result = await this.client.getVertex({ flow_id: validated.flow_id, vertex_id: validated.vertex_id });
|
|
373
|
-
return this.formatSuccessResponse(result);
|
|
374
|
-
}
|
|
375
416
|
case 'stream_vertex': {
|
|
376
417
|
const result = await this.client.streamVertexBuild({ flow_id: validated.flow_id, vertex_id: validated.vertex_id });
|
|
377
418
|
return this.formatSuccessResponse(result);
|
|
@@ -479,6 +520,10 @@ class LangflowMCPServerConsolidated {
|
|
|
479
520
|
await this.client.deleteVariable(validated.variable_id);
|
|
480
521
|
return this.formatSuccessResponse({ success: true, message: 'Variable deleted successfully' });
|
|
481
522
|
}
|
|
523
|
+
case 'detect': {
|
|
524
|
+
const result = await this.client.detectVariables({ flow_version_ids: validated.flow_version_ids });
|
|
525
|
+
return this.formatSuccessResponse(result);
|
|
526
|
+
}
|
|
482
527
|
}
|
|
483
528
|
}
|
|
484
529
|
async handleKnowledgeBaseTool(args) {
|
|
@@ -505,6 +550,66 @@ class LangflowMCPServerConsolidated {
|
|
|
505
550
|
const result = await this.client.uploadKnowledgeBase(validated.kb_name, fileBuffer, validated.file_name);
|
|
506
551
|
return this.formatSuccessResponse(result);
|
|
507
552
|
}
|
|
553
|
+
case 'create': {
|
|
554
|
+
const { action: _, ...body } = validated;
|
|
555
|
+
const result = await this.client.createKnowledgeBase(body);
|
|
556
|
+
return this.formatSuccessResponse(result);
|
|
557
|
+
}
|
|
558
|
+
case 'list_detailed': {
|
|
559
|
+
const result = await this.client.listKnowledgeBasesDetailed();
|
|
560
|
+
return this.formatSuccessResponse(result);
|
|
561
|
+
}
|
|
562
|
+
case 'list_chunks': {
|
|
563
|
+
const { action: _, kb_name, ...params } = validated;
|
|
564
|
+
const result = await this.client.listKnowledgeBaseChunks(kb_name, params);
|
|
565
|
+
return this.formatSuccessResponse(result);
|
|
566
|
+
}
|
|
567
|
+
case 'ingest': {
|
|
568
|
+
const fileBuffer = this.validateFileSize(validated.file_content);
|
|
569
|
+
const result = await this.client.ingestKnowledgeBase(validated.kb_name, [{ buffer: fileBuffer, filename: validated.file_name }], validated.params);
|
|
570
|
+
return this.formatSuccessResponse(result);
|
|
571
|
+
}
|
|
572
|
+
case 'preview_chunks': {
|
|
573
|
+
const fileBuffer = this.validateFileSize(validated.file_content);
|
|
574
|
+
const result = await this.client.previewKnowledgeBaseChunks([{ buffer: fileBuffer, filename: validated.file_name }], validated.params);
|
|
575
|
+
return this.formatSuccessResponse(result);
|
|
576
|
+
}
|
|
577
|
+
case 'cancel_ingest': {
|
|
578
|
+
const result = await this.client.cancelKnowledgeBaseIngest(validated.kb_name);
|
|
579
|
+
return this.formatSuccessResponse(result);
|
|
580
|
+
}
|
|
581
|
+
case 'test_connection': {
|
|
582
|
+
const { action: _, ...body } = validated;
|
|
583
|
+
const result = await this.client.testKnowledgeBaseConnection(body);
|
|
584
|
+
return this.formatSuccessResponse(result);
|
|
585
|
+
}
|
|
586
|
+
case 'list_connectors': {
|
|
587
|
+
const result = await this.client.listKnowledgeBaseConnectors();
|
|
588
|
+
return this.formatSuccessResponse(result);
|
|
589
|
+
}
|
|
590
|
+
case 'ingest_folder': {
|
|
591
|
+
const { action: _, kb_name, ...body } = validated;
|
|
592
|
+
const result = await this.client.ingestKnowledgeBaseFolder(kb_name, body);
|
|
593
|
+
return this.formatSuccessResponse(result);
|
|
594
|
+
}
|
|
595
|
+
case 'ingest_connector': {
|
|
596
|
+
const { action: _, kb_name, ...body } = validated;
|
|
597
|
+
const result = await this.client.ingestKnowledgeBaseConnector(kb_name, body);
|
|
598
|
+
return this.formatSuccessResponse(result);
|
|
599
|
+
}
|
|
600
|
+
case 'metadata_keys': {
|
|
601
|
+
const result = await this.client.getKnowledgeBaseMetadataKeys(validated.kb_name);
|
|
602
|
+
return this.formatSuccessResponse(result);
|
|
603
|
+
}
|
|
604
|
+
case 'list_runs': {
|
|
605
|
+
const { action: _, kb_name, ...params } = validated;
|
|
606
|
+
const result = await this.client.listKnowledgeBaseRuns(kb_name, params);
|
|
607
|
+
return this.formatSuccessResponse(result);
|
|
608
|
+
}
|
|
609
|
+
case 'get_run': {
|
|
610
|
+
const result = await this.client.getKnowledgeBaseRun(validated.kb_name, validated.run_id);
|
|
611
|
+
return this.formatSuccessResponse(result);
|
|
612
|
+
}
|
|
508
613
|
}
|
|
509
614
|
}
|
|
510
615
|
async handleFileTool(args) {
|
|
@@ -528,7 +633,7 @@ class LangflowMCPServerConsolidated {
|
|
|
528
633
|
flow_id: validated.flow_id,
|
|
529
634
|
file_name: validated.file_name
|
|
530
635
|
});
|
|
531
|
-
if (!fileData)
|
|
636
|
+
if (!fileData || (fileData.byteLength ?? fileData.length) === 0)
|
|
532
637
|
throw new Error('No file data received from server');
|
|
533
638
|
const base64Data = Buffer.from(fileData).toString('base64');
|
|
534
639
|
return this.formatSuccessResponse({ file_name: validated.file_name, content: base64Data });
|
|
@@ -545,7 +650,7 @@ class LangflowMCPServerConsolidated {
|
|
|
545
650
|
flow_id: validated.flow_id,
|
|
546
651
|
file_name: validated.file_name
|
|
547
652
|
});
|
|
548
|
-
if (!imageData)
|
|
653
|
+
if (!imageData || (imageData.byteLength ?? imageData.length) === 0)
|
|
549
654
|
throw new Error('No image data received from server');
|
|
550
655
|
const base64Data = Buffer.from(imageData).toString('base64');
|
|
551
656
|
return this.formatSuccessResponse({ file_name: validated.file_name, content: base64Data });
|
|
@@ -597,6 +702,48 @@ class LangflowMCPServerConsolidated {
|
|
|
597
702
|
const result = await this.client.getMonitorTransactions({ flow_id: flow_id, ...params });
|
|
598
703
|
return this.formatSuccessResponse(result);
|
|
599
704
|
}
|
|
705
|
+
case 'update_message': {
|
|
706
|
+
const { action: _, message_id, ...body } = validated;
|
|
707
|
+
const result = await this.client.updateMonitorMessage(message_id, body);
|
|
708
|
+
return this.formatSuccessResponse(result);
|
|
709
|
+
}
|
|
710
|
+
case 'delete_session_messages': {
|
|
711
|
+
const result = await this.client.deleteMonitorSessionMessages(validated.session_id);
|
|
712
|
+
return this.formatSuccessResponse(result);
|
|
713
|
+
}
|
|
714
|
+
case 'delete_sessions': {
|
|
715
|
+
const result = await this.client.deleteMonitorSessions(validated.session_ids);
|
|
716
|
+
return this.formatSuccessResponse(result);
|
|
717
|
+
}
|
|
718
|
+
case 'get_shared': {
|
|
719
|
+
const { action: _, ...params } = validated;
|
|
720
|
+
const result = await this.client.getSharedMessages(params);
|
|
721
|
+
return this.formatSuccessResponse(result);
|
|
722
|
+
}
|
|
723
|
+
case 'get_shared_sessions': {
|
|
724
|
+
const result = await this.client.getSharedSessions(validated.source_flow_id);
|
|
725
|
+
return this.formatSuccessResponse(result);
|
|
726
|
+
}
|
|
727
|
+
case 'update_shared': {
|
|
728
|
+
const { action: _, message_id, source_flow_id, ...body } = validated;
|
|
729
|
+
const result = await this.client.updateSharedMessage(message_id, source_flow_id, body);
|
|
730
|
+
return this.formatSuccessResponse(result);
|
|
731
|
+
}
|
|
732
|
+
case 'migrate_shared_session': {
|
|
733
|
+
const result = await this.client.migrateSharedSession(validated.session_id, {
|
|
734
|
+
new_session_id: validated.new_session_id,
|
|
735
|
+
source_flow_id: validated.source_flow_id
|
|
736
|
+
});
|
|
737
|
+
return this.formatSuccessResponse(result);
|
|
738
|
+
}
|
|
739
|
+
case 'delete_shared_session': {
|
|
740
|
+
const result = await this.client.deleteSharedSession(validated.session_id, validated.source_flow_id);
|
|
741
|
+
return this.formatSuccessResponse(result);
|
|
742
|
+
}
|
|
743
|
+
case 'job_queue': {
|
|
744
|
+
const result = await this.client.getJobQueueMetrics();
|
|
745
|
+
return this.formatSuccessResponse(result);
|
|
746
|
+
}
|
|
600
747
|
}
|
|
601
748
|
}
|
|
602
749
|
async handleUserTool(args) {
|
|
@@ -609,10 +756,6 @@ class LangflowMCPServerConsolidated {
|
|
|
609
756
|
const result = await this.client.listUsers(params);
|
|
610
757
|
return this.formatSuccessResponse(result);
|
|
611
758
|
}
|
|
612
|
-
case 'get': {
|
|
613
|
-
const result = await this.client.getUser(validated.user_id);
|
|
614
|
-
return this.formatSuccessResponse(result);
|
|
615
|
-
}
|
|
616
759
|
case 'get_current': {
|
|
617
760
|
const result = await this.client.getCurrentUser();
|
|
618
761
|
return this.formatSuccessResponse(result);
|
|
@@ -626,6 +769,11 @@ class LangflowMCPServerConsolidated {
|
|
|
626
769
|
const result = await this.client.resetUserPassword(validated.user_id, validated.new_password);
|
|
627
770
|
return this.formatSuccessResponse(result);
|
|
628
771
|
}
|
|
772
|
+
case 'create': {
|
|
773
|
+
const { action: _, ...body } = validated;
|
|
774
|
+
const result = await this.client.createUser(body);
|
|
775
|
+
return this.formatSuccessResponse(result);
|
|
776
|
+
}
|
|
629
777
|
}
|
|
630
778
|
}
|
|
631
779
|
async handleAuthTool(args) {
|
|
@@ -662,6 +810,10 @@ class LangflowMCPServerConsolidated {
|
|
|
662
810
|
await this.client.deleteApiKey(validated.api_key_id);
|
|
663
811
|
return this.formatSuccessResponse({ success: true, message: 'API key deleted successfully' });
|
|
664
812
|
}
|
|
813
|
+
case 'save_store_key': {
|
|
814
|
+
const result = await this.client.saveStoreApiKey(validated.api_key);
|
|
815
|
+
return this.formatSuccessResponse(result);
|
|
816
|
+
}
|
|
665
817
|
}
|
|
666
818
|
}
|
|
667
819
|
async handleStoreTool(args) {
|
|
@@ -671,10 +823,6 @@ class LangflowMCPServerConsolidated {
|
|
|
671
823
|
const components = await this.client.listComponents();
|
|
672
824
|
return this.formatSuccessResponse(components);
|
|
673
825
|
}
|
|
674
|
-
case 'list_custom': {
|
|
675
|
-
const result = await this.client.listCustomComponents();
|
|
676
|
-
return this.formatSuccessResponse(result);
|
|
677
|
-
}
|
|
678
826
|
case 'create_custom': {
|
|
679
827
|
const result = await this.client.createCustomComponent({ name: validated.name, code: validated.code });
|
|
680
828
|
return this.formatSuccessResponse(result);
|
|
@@ -704,6 +852,25 @@ class LangflowMCPServerConsolidated {
|
|
|
704
852
|
const likes = await this.client.getUserLikes();
|
|
705
853
|
return this.formatSuccessResponse(likes);
|
|
706
854
|
}
|
|
855
|
+
case 'create_store': {
|
|
856
|
+
const { action: _, ...body } = validated;
|
|
857
|
+
const result = await this.client.createStoreComponent({
|
|
858
|
+
description: null,
|
|
859
|
+
tags: null,
|
|
860
|
+
is_component: null,
|
|
861
|
+
...body
|
|
862
|
+
});
|
|
863
|
+
return this.formatSuccessResponse(result);
|
|
864
|
+
}
|
|
865
|
+
case 'like': {
|
|
866
|
+
const result = await this.client.likeStoreComponent(validated.component_id);
|
|
867
|
+
return this.formatSuccessResponse(result);
|
|
868
|
+
}
|
|
869
|
+
case 'update_custom': {
|
|
870
|
+
const { action: _, ...body } = validated;
|
|
871
|
+
const result = await this.client.updateCustomComponentCode(body);
|
|
872
|
+
return this.formatSuccessResponse(result);
|
|
873
|
+
}
|
|
707
874
|
}
|
|
708
875
|
}
|
|
709
876
|
async handleRegistrationTool(args) {
|
|
@@ -753,7 +920,7 @@ class LangflowMCPServerConsolidated {
|
|
|
753
920
|
}
|
|
754
921
|
case 'get_picture': {
|
|
755
922
|
const pictureData = await this.client.getProfilePicture(validated.folder_name, validated.file_name);
|
|
756
|
-
if (!pictureData)
|
|
923
|
+
if (!pictureData || (pictureData.byteLength ?? pictureData.length) === 0)
|
|
757
924
|
throw new Error('No picture data received from server');
|
|
758
925
|
const base64Data = Buffer.from(pictureData).toString('base64');
|
|
759
926
|
return this.formatSuccessResponse({ file_name: validated.file_name, content: base64Data });
|
|
@@ -762,6 +929,508 @@ class LangflowMCPServerConsolidated {
|
|
|
762
929
|
const voices = await this.client.listElevenLabsVoices();
|
|
763
930
|
return this.formatSuccessResponse(voices);
|
|
764
931
|
}
|
|
932
|
+
case 'session': {
|
|
933
|
+
const result = await this.client.getSession();
|
|
934
|
+
return this.formatSuccessResponse(result);
|
|
935
|
+
}
|
|
936
|
+
case 'webhook_events': {
|
|
937
|
+
const result = await this.client.getWebhookEvents(validated.flow_id_or_name, validated.user_id ? { user_id: validated.user_id } : undefined);
|
|
938
|
+
return this.formatSuccessResponse(result);
|
|
939
|
+
}
|
|
940
|
+
case 'health_check': {
|
|
941
|
+
const result = await this.client.getHealthCheck();
|
|
942
|
+
return this.formatSuccessResponse(result);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
async handleFlowVersionTool(args) {
|
|
947
|
+
const validated = validation_consolidated_1.FlowVersionToolSchema.parse(args);
|
|
948
|
+
switch (validated.action) {
|
|
949
|
+
case 'list': {
|
|
950
|
+
const { action: _, flow_id, ...params } = validated;
|
|
951
|
+
const result = await this.client.listFlowVersions(flow_id, params);
|
|
952
|
+
return this.formatSuccessResponse(result);
|
|
953
|
+
}
|
|
954
|
+
case 'create': {
|
|
955
|
+
const result = await this.client.createFlowVersion(validated.flow_id, validated.body);
|
|
956
|
+
return this.formatSuccessResponse(result);
|
|
957
|
+
}
|
|
958
|
+
case 'get': {
|
|
959
|
+
const result = await this.client.getFlowVersion(validated.flow_id, validated.version_id);
|
|
960
|
+
return this.formatSuccessResponse(result);
|
|
961
|
+
}
|
|
962
|
+
case 'delete': {
|
|
963
|
+
await this.client.deleteFlowVersion(validated.flow_id, validated.version_id);
|
|
964
|
+
return this.formatSuccessResponse({ success: true, message: 'Flow version deleted successfully' });
|
|
965
|
+
}
|
|
966
|
+
case 'activate': {
|
|
967
|
+
const result = await this.client.activateFlowVersion(validated.flow_id, validated.version_id, validated.save_draft !== undefined ? { save_draft: validated.save_draft } : undefined);
|
|
968
|
+
return this.formatSuccessResponse(result);
|
|
969
|
+
}
|
|
970
|
+
case 'get_events': {
|
|
971
|
+
const result = await this.client.getFlowEvents(validated.flow_id, validated.since !== undefined ? { since: validated.since } : undefined);
|
|
972
|
+
return this.formatSuccessResponse(result);
|
|
973
|
+
}
|
|
974
|
+
case 'create_event': {
|
|
975
|
+
const { action: _, flow_id, ...body } = validated;
|
|
976
|
+
const result = await this.client.createFlowEvent(flow_id, body);
|
|
977
|
+
return this.formatSuccessResponse(result);
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
async handleFileV2Tool(args) {
|
|
982
|
+
const validated = validation_consolidated_1.FileV2ToolSchema.parse(args);
|
|
983
|
+
switch (validated.action) {
|
|
984
|
+
case 'list': {
|
|
985
|
+
const result = await this.client.listFilesV2();
|
|
986
|
+
return this.formatSuccessResponse(result);
|
|
987
|
+
}
|
|
988
|
+
case 'upload': {
|
|
989
|
+
const fileBuffer = this.validateFileSize(validated.file_content);
|
|
990
|
+
const params = {};
|
|
991
|
+
if (validated.append !== undefined)
|
|
992
|
+
params.append = validated.append;
|
|
993
|
+
if (validated.ephemeral !== undefined)
|
|
994
|
+
params.ephemeral = validated.ephemeral;
|
|
995
|
+
const result = await this.client.uploadFileV2(fileBuffer, validated.file_name, params);
|
|
996
|
+
return this.formatSuccessResponse(result);
|
|
997
|
+
}
|
|
998
|
+
case 'get': {
|
|
999
|
+
const result = await this.client.getFileV2(validated.file_id, validated.return_content !== undefined ? { return_content: validated.return_content } : undefined);
|
|
1000
|
+
return this.formatSuccessResponse(result);
|
|
1001
|
+
}
|
|
1002
|
+
case 'rename': {
|
|
1003
|
+
const result = await this.client.renameFileV2(validated.file_id, validated.name);
|
|
1004
|
+
return this.formatSuccessResponse(result);
|
|
1005
|
+
}
|
|
1006
|
+
case 'delete': {
|
|
1007
|
+
const result = await this.client.deleteFileV2(validated.file_id);
|
|
1008
|
+
return this.formatSuccessResponse(result);
|
|
1009
|
+
}
|
|
1010
|
+
case 'delete_all': {
|
|
1011
|
+
const result = await this.client.deleteAllFilesV2();
|
|
1012
|
+
return this.formatSuccessResponse(result);
|
|
1013
|
+
}
|
|
1014
|
+
case 'batch_download': {
|
|
1015
|
+
const result = await this.client.batchDownloadFilesV2(validated.file_ids);
|
|
1016
|
+
return this.formatSuccessResponse(result);
|
|
1017
|
+
}
|
|
1018
|
+
case 'batch_delete': {
|
|
1019
|
+
const result = await this.client.batchDeleteFilesV2(validated.file_ids);
|
|
1020
|
+
return this.formatSuccessResponse(result);
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
async handleModelTool(args) {
|
|
1025
|
+
const validated = validation_consolidated_1.ModelToolSchema.parse(args);
|
|
1026
|
+
switch (validated.action) {
|
|
1027
|
+
case 'list': {
|
|
1028
|
+
const { action: _, ...params } = validated;
|
|
1029
|
+
const result = await this.client.listModels(params);
|
|
1030
|
+
return this.formatSuccessResponse(result);
|
|
1031
|
+
}
|
|
1032
|
+
case 'providers': {
|
|
1033
|
+
const result = await this.client.listModelProviders();
|
|
1034
|
+
return this.formatSuccessResponse(result);
|
|
1035
|
+
}
|
|
1036
|
+
case 'enabled_providers': {
|
|
1037
|
+
const result = await this.client.listEnabledProviders(validated.providers ? { providers: validated.providers } : undefined);
|
|
1038
|
+
return this.formatSuccessResponse(result);
|
|
1039
|
+
}
|
|
1040
|
+
case 'enabled_models': {
|
|
1041
|
+
const result = await this.client.listEnabledModels(validated.model_names ? { model_names: validated.model_names } : undefined);
|
|
1042
|
+
return this.formatSuccessResponse(result);
|
|
1043
|
+
}
|
|
1044
|
+
case 'set_enabled': {
|
|
1045
|
+
const result = await this.client.setEnabledModels(validated.models);
|
|
1046
|
+
return this.formatSuccessResponse(result);
|
|
1047
|
+
}
|
|
1048
|
+
case 'get_default': {
|
|
1049
|
+
const result = await this.client.getDefaultModel({ model_type: validated.model_type });
|
|
1050
|
+
return this.formatSuccessResponse(result);
|
|
1051
|
+
}
|
|
1052
|
+
case 'set_default': {
|
|
1053
|
+
const result = await this.client.setDefaultModel({
|
|
1054
|
+
provider: validated.provider,
|
|
1055
|
+
model_name: validated.model_name,
|
|
1056
|
+
model_type: validated.model_type
|
|
1057
|
+
});
|
|
1058
|
+
return this.formatSuccessResponse(result);
|
|
1059
|
+
}
|
|
1060
|
+
case 'delete_default': {
|
|
1061
|
+
const result = await this.client.deleteDefaultModel({ model_type: validated.model_type });
|
|
1062
|
+
return this.formatSuccessResponse(result);
|
|
1063
|
+
}
|
|
1064
|
+
case 'provider_mapping': {
|
|
1065
|
+
const result = await this.client.getProviderVariableMapping();
|
|
1066
|
+
return this.formatSuccessResponse(result);
|
|
1067
|
+
}
|
|
1068
|
+
case 'validate_provider': {
|
|
1069
|
+
const result = await this.client.validateModelProvider({
|
|
1070
|
+
provider: validated.provider,
|
|
1071
|
+
variables: validated.variables
|
|
1072
|
+
});
|
|
1073
|
+
return this.formatSuccessResponse(result);
|
|
1074
|
+
}
|
|
1075
|
+
case 'options_language': {
|
|
1076
|
+
const result = await this.client.getLanguageModelOptions();
|
|
1077
|
+
return this.formatSuccessResponse(result);
|
|
1078
|
+
}
|
|
1079
|
+
case 'options_embedding': {
|
|
1080
|
+
const result = await this.client.getEmbeddingModelOptions();
|
|
1081
|
+
return this.formatSuccessResponse(result);
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
async handleAgenticTool(args) {
|
|
1086
|
+
const validated = validation_consolidated_1.AgenticToolSchema.parse(args);
|
|
1087
|
+
switch (validated.action) {
|
|
1088
|
+
case 'assist': {
|
|
1089
|
+
const { action: _, ...body } = validated;
|
|
1090
|
+
const result = await this.client.agenticAssist(body);
|
|
1091
|
+
return this.formatSuccessResponse(result);
|
|
1092
|
+
}
|
|
1093
|
+
case 'check_config': {
|
|
1094
|
+
const result = await this.client.agenticCheckConfig();
|
|
1095
|
+
return this.formatSuccessResponse(result);
|
|
1096
|
+
}
|
|
1097
|
+
case 'execute': {
|
|
1098
|
+
const { action: _, flow_name, ...body } = validated;
|
|
1099
|
+
const result = await this.client.agenticExecute(flow_name, body);
|
|
1100
|
+
return this.formatSuccessResponse(result);
|
|
1101
|
+
}
|
|
1102
|
+
case 'get_file': {
|
|
1103
|
+
const result = await this.client.getAgenticFile({
|
|
1104
|
+
path: validated.path,
|
|
1105
|
+
download: validated.download
|
|
1106
|
+
});
|
|
1107
|
+
return this.formatSuccessResponse(result);
|
|
1108
|
+
}
|
|
1109
|
+
case 'reset_session': {
|
|
1110
|
+
const result = await this.client.resetAgenticSession(validated.session_id !== undefined ? { session_id: validated.session_id } : undefined);
|
|
1111
|
+
return this.formatSuccessResponse(result);
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
async handleWorkflowTool(args) {
|
|
1116
|
+
const validated = validation_consolidated_1.WorkflowToolSchema.parse(args);
|
|
1117
|
+
switch (validated.action) {
|
|
1118
|
+
case 'run': {
|
|
1119
|
+
const { action: _, ...body } = validated;
|
|
1120
|
+
const result = await this.client.runWorkflow(body);
|
|
1121
|
+
return this.formatSuccessResponse(result);
|
|
1122
|
+
}
|
|
1123
|
+
case 'get_result': {
|
|
1124
|
+
const result = await this.client.getWorkflowResult(validated.job_id ? { job_id: validated.job_id } : undefined);
|
|
1125
|
+
return this.formatSuccessResponse(result);
|
|
1126
|
+
}
|
|
1127
|
+
case 'stop': {
|
|
1128
|
+
const result = await this.client.stopWorkflow(validated.job_id);
|
|
1129
|
+
return this.formatSuccessResponse(result);
|
|
1130
|
+
}
|
|
1131
|
+
case 'pending': {
|
|
1132
|
+
const result = await this.client.listPendingWorkflows(validated.flow_id ? { flow_id: validated.flow_id } : undefined);
|
|
1133
|
+
return this.formatSuccessResponse(result);
|
|
1134
|
+
}
|
|
1135
|
+
case 'events': {
|
|
1136
|
+
const result = await this.client.getWorkflowEvents(validated.job_id);
|
|
1137
|
+
return this.formatSuccessResponse(result);
|
|
1138
|
+
}
|
|
1139
|
+
case 'resume': {
|
|
1140
|
+
const { action: _, job_id, ...body } = validated;
|
|
1141
|
+
const result = await this.client.resumeWorkflow(job_id, body);
|
|
1142
|
+
return this.formatSuccessResponse(result);
|
|
1143
|
+
}
|
|
1144
|
+
case 'run_public': {
|
|
1145
|
+
const { action: _, ...body } = validated;
|
|
1146
|
+
const result = await this.client.runPublicWorkflow(body);
|
|
1147
|
+
return this.formatSuccessResponse(result);
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
async handleA2aTool(args) {
|
|
1152
|
+
const validated = validation_consolidated_1.A2aToolSchema.parse(args);
|
|
1153
|
+
switch (validated.action) {
|
|
1154
|
+
case 'list_agents': {
|
|
1155
|
+
const result = await this.client.listA2aAgents();
|
|
1156
|
+
return this.formatSuccessResponse(result);
|
|
1157
|
+
}
|
|
1158
|
+
case 'agent_card': {
|
|
1159
|
+
const result = await this.client.getA2aAgentCard(validated.flow_id);
|
|
1160
|
+
return this.formatSuccessResponse(result);
|
|
1161
|
+
}
|
|
1162
|
+
case 'jsonrpc': {
|
|
1163
|
+
const { action: _, flow_id, ...body } = validated;
|
|
1164
|
+
const result = await this.client.invokeA2aJsonrpc(flow_id, body);
|
|
1165
|
+
return this.formatSuccessResponse(result);
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
async handleMcpServerTool(args) {
|
|
1170
|
+
const validated = validation_consolidated_1.McpServerToolSchema.parse(args);
|
|
1171
|
+
switch (validated.action) {
|
|
1172
|
+
case 'list': {
|
|
1173
|
+
const result = await this.client.listMcpServers(validated.action_count !== undefined ? { action_count: validated.action_count } : undefined);
|
|
1174
|
+
return this.formatSuccessResponse(result);
|
|
1175
|
+
}
|
|
1176
|
+
case 'get': {
|
|
1177
|
+
const result = await this.client.getMcpServer(validated.server_name);
|
|
1178
|
+
return this.formatSuccessResponse(result);
|
|
1179
|
+
}
|
|
1180
|
+
case 'create': {
|
|
1181
|
+
const result = await this.client.createMcpServer(validated.server_name, validated.config);
|
|
1182
|
+
return this.formatSuccessResponse(result);
|
|
1183
|
+
}
|
|
1184
|
+
case 'update': {
|
|
1185
|
+
const result = await this.client.updateMcpServer(validated.server_name, validated.config);
|
|
1186
|
+
return this.formatSuccessResponse(result);
|
|
1187
|
+
}
|
|
1188
|
+
case 'delete': {
|
|
1189
|
+
const result = await this.client.deleteMcpServer(validated.server_name);
|
|
1190
|
+
return this.formatSuccessResponse(result);
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
async handleMcpProjectTool(args) {
|
|
1195
|
+
const validated = validation_consolidated_1.McpProjectToolSchema.parse(args);
|
|
1196
|
+
switch (validated.action) {
|
|
1197
|
+
case 'get_config': {
|
|
1198
|
+
const result = await this.client.getMcpProjectConfig(validated.project_id, validated.mcp_enabled !== undefined ? { mcp_enabled: validated.mcp_enabled } : undefined);
|
|
1199
|
+
return this.formatSuccessResponse(result);
|
|
1200
|
+
}
|
|
1201
|
+
case 'update_config': {
|
|
1202
|
+
const result = await this.client.updateMcpProjectConfig(validated.project_id, {
|
|
1203
|
+
settings: validated.settings,
|
|
1204
|
+
auth_settings: validated.auth_settings
|
|
1205
|
+
});
|
|
1206
|
+
return this.formatSuccessResponse(result);
|
|
1207
|
+
}
|
|
1208
|
+
case 'get_installed': {
|
|
1209
|
+
const result = await this.client.getMcpProjectInstalled(validated.project_id);
|
|
1210
|
+
return this.formatSuccessResponse(result);
|
|
1211
|
+
}
|
|
1212
|
+
case 'install': {
|
|
1213
|
+
const result = await this.client.installMcpProject(validated.project_id, {
|
|
1214
|
+
client: validated.client,
|
|
1215
|
+
transport: validated.transport
|
|
1216
|
+
});
|
|
1217
|
+
return this.formatSuccessResponse(result);
|
|
1218
|
+
}
|
|
1219
|
+
case 'get_composer_url': {
|
|
1220
|
+
const result = await this.client.getMcpProjectComposerUrl(validated.project_id);
|
|
1221
|
+
return this.formatSuccessResponse(result);
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
async handleTraceTool(args) {
|
|
1226
|
+
const validated = validation_consolidated_1.TraceToolSchema.parse(args);
|
|
1227
|
+
switch (validated.action) {
|
|
1228
|
+
case 'list': {
|
|
1229
|
+
const { action: _, ...params } = validated;
|
|
1230
|
+
const result = await this.client.listTraces(params);
|
|
1231
|
+
return this.formatSuccessResponse(result);
|
|
1232
|
+
}
|
|
1233
|
+
case 'get': {
|
|
1234
|
+
const result = await this.client.getTrace(validated.trace_id);
|
|
1235
|
+
return this.formatSuccessResponse(result);
|
|
1236
|
+
}
|
|
1237
|
+
case 'delete': {
|
|
1238
|
+
await this.client.deleteTrace(validated.trace_id);
|
|
1239
|
+
return this.formatSuccessResponse({ success: true, message: 'Trace deleted successfully' });
|
|
1240
|
+
}
|
|
1241
|
+
case 'delete_by_flow': {
|
|
1242
|
+
const result = await this.client.deleteTraces(validated.flow_id);
|
|
1243
|
+
return this.formatSuccessResponse(result);
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
async handleResponseTool(args) {
|
|
1248
|
+
const validated = validation_consolidated_1.ResponseToolSchema.parse(args);
|
|
1249
|
+
switch (validated.action) {
|
|
1250
|
+
case 'create': {
|
|
1251
|
+
const { action: _, ...body } = validated;
|
|
1252
|
+
const result = await this.client.createResponse(body);
|
|
1253
|
+
return this.formatSuccessResponse(result);
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
async handleAuthzTool(args) {
|
|
1258
|
+
const validated = validation_consolidated_1.AuthzToolSchema.parse(args);
|
|
1259
|
+
switch (validated.action) {
|
|
1260
|
+
case 'list_roles': {
|
|
1261
|
+
const { action: _, ...params } = validated;
|
|
1262
|
+
const result = await this.client.listAuthzRoles(params);
|
|
1263
|
+
return this.formatSuccessResponse(result);
|
|
1264
|
+
}
|
|
1265
|
+
case 'get_role': {
|
|
1266
|
+
const result = await this.client.getAuthzRole(validated.role_id);
|
|
1267
|
+
return this.formatSuccessResponse(result);
|
|
1268
|
+
}
|
|
1269
|
+
case 'create_role': {
|
|
1270
|
+
const { action: _, ...body } = validated;
|
|
1271
|
+
const result = await this.client.createAuthzRole(body);
|
|
1272
|
+
return this.formatSuccessResponse(result);
|
|
1273
|
+
}
|
|
1274
|
+
case 'update_role': {
|
|
1275
|
+
const { action: _, role_id, ...body } = validated;
|
|
1276
|
+
const result = await this.client.updateAuthzRole(role_id, body);
|
|
1277
|
+
return this.formatSuccessResponse(result);
|
|
1278
|
+
}
|
|
1279
|
+
case 'delete_role': {
|
|
1280
|
+
await this.client.deleteAuthzRole(validated.role_id);
|
|
1281
|
+
return this.formatSuccessResponse({ success: true, message: 'Role deleted successfully' });
|
|
1282
|
+
}
|
|
1283
|
+
case 'list_role_assignments': {
|
|
1284
|
+
const { action: _, ...params } = validated;
|
|
1285
|
+
const result = await this.client.listAuthzRoleAssignments(params);
|
|
1286
|
+
return this.formatSuccessResponse(result);
|
|
1287
|
+
}
|
|
1288
|
+
case 'create_role_assignment': {
|
|
1289
|
+
const { action: _, ...body } = validated;
|
|
1290
|
+
const result = await this.client.createAuthzRoleAssignment(body);
|
|
1291
|
+
return this.formatSuccessResponse(result);
|
|
1292
|
+
}
|
|
1293
|
+
case 'delete_role_assignment': {
|
|
1294
|
+
await this.client.deleteAuthzRoleAssignment(validated.assignment_id);
|
|
1295
|
+
return this.formatSuccessResponse({ success: true, message: 'Role assignment deleted successfully' });
|
|
1296
|
+
}
|
|
1297
|
+
case 'list_teams': {
|
|
1298
|
+
const { action: _, ...params } = validated;
|
|
1299
|
+
const result = await this.client.listAuthzTeams(params);
|
|
1300
|
+
return this.formatSuccessResponse(result);
|
|
1301
|
+
}
|
|
1302
|
+
case 'get_team': {
|
|
1303
|
+
const result = await this.client.getAuthzTeam(validated.team_id);
|
|
1304
|
+
return this.formatSuccessResponse(result);
|
|
1305
|
+
}
|
|
1306
|
+
case 'create_team': {
|
|
1307
|
+
const { action: _, ...body } = validated;
|
|
1308
|
+
const result = await this.client.createAuthzTeam(body);
|
|
1309
|
+
return this.formatSuccessResponse(result);
|
|
1310
|
+
}
|
|
1311
|
+
case 'update_team': {
|
|
1312
|
+
const { action: _, team_id, ...body } = validated;
|
|
1313
|
+
const result = await this.client.updateAuthzTeam(team_id, body);
|
|
1314
|
+
return this.formatSuccessResponse(result);
|
|
1315
|
+
}
|
|
1316
|
+
case 'delete_team': {
|
|
1317
|
+
await this.client.deleteAuthzTeam(validated.team_id);
|
|
1318
|
+
return this.formatSuccessResponse({ success: true, message: 'Team deleted successfully' });
|
|
1319
|
+
}
|
|
1320
|
+
case 'list_team_members': {
|
|
1321
|
+
const { action: _, team_id, ...params } = validated;
|
|
1322
|
+
const result = await this.client.listAuthzTeamMembers(team_id, params);
|
|
1323
|
+
return this.formatSuccessResponse(result);
|
|
1324
|
+
}
|
|
1325
|
+
case 'add_team_member': {
|
|
1326
|
+
const { action: _, team_id, ...body } = validated;
|
|
1327
|
+
const result = await this.client.addAuthzTeamMember(team_id, body);
|
|
1328
|
+
return this.formatSuccessResponse(result);
|
|
1329
|
+
}
|
|
1330
|
+
case 'remove_team_member': {
|
|
1331
|
+
await this.client.removeAuthzTeamMember(validated.team_id, validated.user_id);
|
|
1332
|
+
return this.formatSuccessResponse({ success: true, message: 'Team member removed successfully' });
|
|
1333
|
+
}
|
|
1334
|
+
case 'list_shares': {
|
|
1335
|
+
const { action: _, ...params } = validated;
|
|
1336
|
+
const result = await this.client.listAuthzShares(params);
|
|
1337
|
+
return this.formatSuccessResponse(result);
|
|
1338
|
+
}
|
|
1339
|
+
case 'get_share': {
|
|
1340
|
+
const result = await this.client.getAuthzShare(validated.share_id);
|
|
1341
|
+
return this.formatSuccessResponse(result);
|
|
1342
|
+
}
|
|
1343
|
+
case 'create_share': {
|
|
1344
|
+
const { action: _, ...body } = validated;
|
|
1345
|
+
const result = await this.client.createAuthzShare(body);
|
|
1346
|
+
return this.formatSuccessResponse(result);
|
|
1347
|
+
}
|
|
1348
|
+
case 'update_share': {
|
|
1349
|
+
const result = await this.client.updateAuthzShare(validated.share_id, {
|
|
1350
|
+
permission_level: validated.permission_level
|
|
1351
|
+
});
|
|
1352
|
+
return this.formatSuccessResponse(result);
|
|
1353
|
+
}
|
|
1354
|
+
case 'delete_share': {
|
|
1355
|
+
await this.client.deleteAuthzShare(validated.share_id);
|
|
1356
|
+
return this.formatSuccessResponse({ success: true, message: 'Share deleted successfully' });
|
|
1357
|
+
}
|
|
1358
|
+
case 'audit': {
|
|
1359
|
+
const { action: _, audit_action, ...rest } = validated;
|
|
1360
|
+
const params = { ...rest, ...(audit_action !== undefined ? { action: audit_action } : {}) };
|
|
1361
|
+
const result = await this.client.getAuthzAudit(params);
|
|
1362
|
+
return this.formatSuccessResponse(result);
|
|
1363
|
+
}
|
|
1364
|
+
case 'my_permissions': {
|
|
1365
|
+
const { action: _, ...body } = validated;
|
|
1366
|
+
const result = await this.client.getMyPermissions(body);
|
|
1367
|
+
return this.formatSuccessResponse(result);
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
async handleMemoryTool(args) {
|
|
1372
|
+
const validated = validation_consolidated_1.MemoryToolSchema.parse(args);
|
|
1373
|
+
switch (validated.action) {
|
|
1374
|
+
case 'create': {
|
|
1375
|
+
const { action: _, ...body } = validated;
|
|
1376
|
+
const result = await this.client.createMemoryBase(body);
|
|
1377
|
+
return this.formatSuccessResponse(result);
|
|
1378
|
+
}
|
|
1379
|
+
case 'list': {
|
|
1380
|
+
const { action: _, ...params } = validated;
|
|
1381
|
+
const result = await this.client.listMemoryBases(params);
|
|
1382
|
+
return this.formatSuccessResponse(result);
|
|
1383
|
+
}
|
|
1384
|
+
case 'get': {
|
|
1385
|
+
const result = await this.client.getMemoryBase(validated.memory_base_id);
|
|
1386
|
+
return this.formatSuccessResponse(result);
|
|
1387
|
+
}
|
|
1388
|
+
case 'list_sessions': {
|
|
1389
|
+
const { action: _, memory_base_id, ...params } = validated;
|
|
1390
|
+
const result = await this.client.listMemoryBaseSessions(memory_base_id, params);
|
|
1391
|
+
return this.formatSuccessResponse(result);
|
|
1392
|
+
}
|
|
1393
|
+
case 'list_messages': {
|
|
1394
|
+
const { action: _, memory_base_id, ...params } = validated;
|
|
1395
|
+
const result = await this.client.listMemoryBaseMessages(memory_base_id, params);
|
|
1396
|
+
return this.formatSuccessResponse(result);
|
|
1397
|
+
}
|
|
1398
|
+
case 'update': {
|
|
1399
|
+
const { action: _, memory_base_id, ...body } = validated;
|
|
1400
|
+
const result = await this.client.updateMemoryBase(memory_base_id, body);
|
|
1401
|
+
return this.formatSuccessResponse(result);
|
|
1402
|
+
}
|
|
1403
|
+
case 'delete': {
|
|
1404
|
+
await this.client.deleteMemoryBase(validated.memory_base_id);
|
|
1405
|
+
return this.formatSuccessResponse({ success: true, message: 'Memory base deleted successfully' });
|
|
1406
|
+
}
|
|
1407
|
+
case 'flush': {
|
|
1408
|
+
const result = await this.client.flushMemoryBase(validated.memory_base_id, {
|
|
1409
|
+
session_id: validated.session_id
|
|
1410
|
+
});
|
|
1411
|
+
return this.formatSuccessResponse(result);
|
|
1412
|
+
}
|
|
1413
|
+
case 'mismatch': {
|
|
1414
|
+
const result = await this.client.checkMemoryBaseMismatch(validated.memory_base_id);
|
|
1415
|
+
return this.formatSuccessResponse(result);
|
|
1416
|
+
}
|
|
1417
|
+
case 'regenerate': {
|
|
1418
|
+
const result = await this.client.regenerateMemoryBase(validated.memory_base_id);
|
|
1419
|
+
return this.formatSuccessResponse(result);
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
async handleExtensionTool(args) {
|
|
1424
|
+
const validated = validation_consolidated_1.ExtensionToolSchema.parse(args);
|
|
1425
|
+
switch (validated.action) {
|
|
1426
|
+
case 'reload': {
|
|
1427
|
+
const result = await this.client.reloadExtensionBundle(validated.extension_id, validated.bundle_name);
|
|
1428
|
+
return this.formatSuccessResponse(result);
|
|
1429
|
+
}
|
|
1430
|
+
case 'events': {
|
|
1431
|
+
const result = await this.client.getExtensionEvents(validated.since !== undefined ? { since: validated.since } : undefined);
|
|
1432
|
+
return this.formatSuccessResponse(result);
|
|
1433
|
+
}
|
|
765
1434
|
}
|
|
766
1435
|
}
|
|
767
1436
|
async run() {
|