langflow-mcp-server 3.1.1 → 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.
Files changed (33) hide show
  1. package/README.md +228 -79
  2. package/dist/__tests__/fixtures/vertices.d.ts +1 -2
  3. package/dist/__tests__/fixtures/vertices.d.ts.map +1 -1
  4. package/dist/__tests__/fixtures/vertices.js +1 -5
  5. package/dist/__tests__/fixtures/vertices.js.map +1 -1
  6. package/dist/mcp/server-consolidated.d.ts +13 -0
  7. package/dist/mcp/server-consolidated.d.ts.map +1 -1
  8. package/dist/mcp/server-consolidated.js +684 -17
  9. package/dist/mcp/server-consolidated.js.map +1 -1
  10. package/dist/mcp/server.d.ts.map +1 -1
  11. package/dist/mcp/server.js +717 -20
  12. package/dist/mcp/server.js.map +1 -1
  13. package/dist/mcp/tools-consolidated.d.ts.map +1 -1
  14. package/dist/mcp/tools-consolidated.js +722 -43
  15. package/dist/mcp/tools-consolidated.js.map +1 -1
  16. package/dist/mcp/tools.d.ts.map +1 -1
  17. package/dist/mcp/tools.js +1701 -66
  18. package/dist/mcp/tools.js.map +1 -1
  19. package/dist/mcp/validation-consolidated.d.ts +681 -9
  20. package/dist/mcp/validation-consolidated.d.ts.map +1 -1
  21. package/dist/mcp/validation-consolidated.js +635 -15
  22. package/dist/mcp/validation-consolidated.js.map +1 -1
  23. package/dist/mcp/validation.d.ts +769 -11
  24. package/dist/mcp/validation.d.ts.map +1 -1
  25. package/dist/mcp/validation.js +600 -11
  26. package/dist/mcp/validation.js.map +1 -1
  27. package/dist/services/langflow-client.d.ts +133 -51
  28. package/dist/services/langflow-client.d.ts.map +1 -1
  29. package/dist/services/langflow-client.js +1102 -154
  30. package/dist/services/langflow-client.js.map +1 -1
  31. package/dist/types/index.d.ts +395 -4
  32. package/dist/types/index.d.ts.map +1 -1
  33. package/package.json +16 -13
@@ -152,6 +152,10 @@ class LangflowMCPServerConsolidated {
152
152
  if (!base64Regex.test(fileContent)) {
153
153
  throw new Error('Invalid base64 format');
154
154
  }
155
+ if (fileContent.length % 4 !== 0 ||
156
+ Buffer.from(fileContent, 'base64').toString('base64') !== fileContent) {
157
+ throw new Error('Invalid base64 format');
158
+ }
155
159
  const estimatedSize = (fileContent.length * 3) / 4;
156
160
  if (estimatedSize > maxSizeBytes) {
157
161
  throw new Error(`File size exceeds maximum allowed size of ${maxSizeBytes} bytes (10MB)`);
@@ -249,6 +253,32 @@ class LangflowMCPServerConsolidated {
249
253
  return await this.handleValidationTool(args);
250
254
  case 'system':
251
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);
252
282
  default:
253
283
  throw new Error(`Unknown tool: ${name}`);
254
284
  }
@@ -312,14 +342,27 @@ class LangflowMCPServerConsolidated {
312
342
  const starters = await this.client.listStarterProjects();
313
343
  return this.formatSuccessResponse(starters);
314
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
+ }
315
358
  }
316
359
  }
317
360
  async handleFlowExecutionTool(args) {
318
361
  const validated = validation_consolidated_1.FlowExecutionToolSchema.parse(args);
319
362
  switch (validated.action) {
320
363
  case 'run': {
321
- const { action: _, flow_id_or_name, stream, ...inputRequest } = validated;
322
- 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);
323
366
  return this.formatSuccessResponse(result);
324
367
  }
325
368
  case 'run_advanced': {
@@ -370,10 +413,6 @@ class LangflowMCPServerConsolidated {
370
413
  const result = await this.client.buildVertices(flow_id, request);
371
414
  return this.formatSuccessResponse(result);
372
415
  }
373
- case 'get_vertex': {
374
- const result = await this.client.getVertex({ flow_id: validated.flow_id, vertex_id: validated.vertex_id });
375
- return this.formatSuccessResponse(result);
376
- }
377
416
  case 'stream_vertex': {
378
417
  const result = await this.client.streamVertexBuild({ flow_id: validated.flow_id, vertex_id: validated.vertex_id });
379
418
  return this.formatSuccessResponse(result);
@@ -481,6 +520,10 @@ class LangflowMCPServerConsolidated {
481
520
  await this.client.deleteVariable(validated.variable_id);
482
521
  return this.formatSuccessResponse({ success: true, message: 'Variable deleted successfully' });
483
522
  }
523
+ case 'detect': {
524
+ const result = await this.client.detectVariables({ flow_version_ids: validated.flow_version_ids });
525
+ return this.formatSuccessResponse(result);
526
+ }
484
527
  }
485
528
  }
486
529
  async handleKnowledgeBaseTool(args) {
@@ -507,6 +550,66 @@ class LangflowMCPServerConsolidated {
507
550
  const result = await this.client.uploadKnowledgeBase(validated.kb_name, fileBuffer, validated.file_name);
508
551
  return this.formatSuccessResponse(result);
509
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
+ }
510
613
  }
511
614
  }
512
615
  async handleFileTool(args) {
@@ -530,7 +633,7 @@ class LangflowMCPServerConsolidated {
530
633
  flow_id: validated.flow_id,
531
634
  file_name: validated.file_name
532
635
  });
533
- if (!fileData)
636
+ if (!fileData || (fileData.byteLength ?? fileData.length) === 0)
534
637
  throw new Error('No file data received from server');
535
638
  const base64Data = Buffer.from(fileData).toString('base64');
536
639
  return this.formatSuccessResponse({ file_name: validated.file_name, content: base64Data });
@@ -547,7 +650,7 @@ class LangflowMCPServerConsolidated {
547
650
  flow_id: validated.flow_id,
548
651
  file_name: validated.file_name
549
652
  });
550
- if (!imageData)
653
+ if (!imageData || (imageData.byteLength ?? imageData.length) === 0)
551
654
  throw new Error('No image data received from server');
552
655
  const base64Data = Buffer.from(imageData).toString('base64');
553
656
  return this.formatSuccessResponse({ file_name: validated.file_name, content: base64Data });
@@ -599,6 +702,48 @@ class LangflowMCPServerConsolidated {
599
702
  const result = await this.client.getMonitorTransactions({ flow_id: flow_id, ...params });
600
703
  return this.formatSuccessResponse(result);
601
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
+ }
602
747
  }
603
748
  }
604
749
  async handleUserTool(args) {
@@ -611,10 +756,6 @@ class LangflowMCPServerConsolidated {
611
756
  const result = await this.client.listUsers(params);
612
757
  return this.formatSuccessResponse(result);
613
758
  }
614
- case 'get': {
615
- const result = await this.client.getUser(validated.user_id);
616
- return this.formatSuccessResponse(result);
617
- }
618
759
  case 'get_current': {
619
760
  const result = await this.client.getCurrentUser();
620
761
  return this.formatSuccessResponse(result);
@@ -628,6 +769,11 @@ class LangflowMCPServerConsolidated {
628
769
  const result = await this.client.resetUserPassword(validated.user_id, validated.new_password);
629
770
  return this.formatSuccessResponse(result);
630
771
  }
772
+ case 'create': {
773
+ const { action: _, ...body } = validated;
774
+ const result = await this.client.createUser(body);
775
+ return this.formatSuccessResponse(result);
776
+ }
631
777
  }
632
778
  }
633
779
  async handleAuthTool(args) {
@@ -664,6 +810,10 @@ class LangflowMCPServerConsolidated {
664
810
  await this.client.deleteApiKey(validated.api_key_id);
665
811
  return this.formatSuccessResponse({ success: true, message: 'API key deleted successfully' });
666
812
  }
813
+ case 'save_store_key': {
814
+ const result = await this.client.saveStoreApiKey(validated.api_key);
815
+ return this.formatSuccessResponse(result);
816
+ }
667
817
  }
668
818
  }
669
819
  async handleStoreTool(args) {
@@ -673,10 +823,6 @@ class LangflowMCPServerConsolidated {
673
823
  const components = await this.client.listComponents();
674
824
  return this.formatSuccessResponse(components);
675
825
  }
676
- case 'list_custom': {
677
- const result = await this.client.listCustomComponents();
678
- return this.formatSuccessResponse(result);
679
- }
680
826
  case 'create_custom': {
681
827
  const result = await this.client.createCustomComponent({ name: validated.name, code: validated.code });
682
828
  return this.formatSuccessResponse(result);
@@ -706,6 +852,25 @@ class LangflowMCPServerConsolidated {
706
852
  const likes = await this.client.getUserLikes();
707
853
  return this.formatSuccessResponse(likes);
708
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
+ }
709
874
  }
710
875
  }
711
876
  async handleRegistrationTool(args) {
@@ -755,7 +920,7 @@ class LangflowMCPServerConsolidated {
755
920
  }
756
921
  case 'get_picture': {
757
922
  const pictureData = await this.client.getProfilePicture(validated.folder_name, validated.file_name);
758
- if (!pictureData)
923
+ if (!pictureData || (pictureData.byteLength ?? pictureData.length) === 0)
759
924
  throw new Error('No picture data received from server');
760
925
  const base64Data = Buffer.from(pictureData).toString('base64');
761
926
  return this.formatSuccessResponse({ file_name: validated.file_name, content: base64Data });
@@ -764,6 +929,508 @@ class LangflowMCPServerConsolidated {
764
929
  const voices = await this.client.listElevenLabsVoices();
765
930
  return this.formatSuccessResponse(voices);
766
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
+ }
767
1434
  }
768
1435
  }
769
1436
  async run() {