@flutchai/flutch-sdk 0.1.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 (191) hide show
  1. package/README.md +287 -0
  2. package/dist/api/callback-token.guard.d.ts +17 -0
  3. package/dist/api/callback-token.guard.js +80 -0
  4. package/dist/api/callback-token.guard.js.map +1 -0
  5. package/dist/api/callback.controller.d.ts +7 -0
  6. package/dist/api/callback.controller.js +44 -0
  7. package/dist/api/callback.controller.js.map +1 -0
  8. package/dist/api/graph.controller.d.ts +32 -0
  9. package/dist/api/graph.controller.js +187 -0
  10. package/dist/api/graph.controller.js.map +1 -0
  11. package/dist/api/ui-dispatch.controller.d.ts +34 -0
  12. package/dist/api/ui-dispatch.controller.js +178 -0
  13. package/dist/api/ui-dispatch.controller.js.map +1 -0
  14. package/dist/bootstrap.d.ts +4 -0
  15. package/dist/bootstrap.js +177 -0
  16. package/dist/bootstrap.js.map +1 -0
  17. package/dist/callbacks/callback-acl.service.d.ts +24 -0
  18. package/dist/callbacks/callback-acl.service.js +144 -0
  19. package/dist/callbacks/callback-acl.service.js.map +1 -0
  20. package/dist/callbacks/callback-auditor.service.d.ts +47 -0
  21. package/dist/callbacks/callback-auditor.service.js +286 -0
  22. package/dist/callbacks/callback-auditor.service.js.map +1 -0
  23. package/dist/callbacks/callback-metrics.service.d.ts +34 -0
  24. package/dist/callbacks/callback-metrics.service.js +216 -0
  25. package/dist/callbacks/callback-metrics.service.js.map +1 -0
  26. package/dist/callbacks/callback-patch.service.d.ts +13 -0
  27. package/dist/callbacks/callback-patch.service.js +51 -0
  28. package/dist/callbacks/callback-patch.service.js.map +1 -0
  29. package/dist/callbacks/callback-rate-limiter.d.ts +27 -0
  30. package/dist/callbacks/callback-rate-limiter.js +129 -0
  31. package/dist/callbacks/callback-rate-limiter.js.map +1 -0
  32. package/dist/callbacks/callback-registry.d.ts +7 -0
  33. package/dist/callbacks/callback-registry.js +29 -0
  34. package/dist/callbacks/callback-registry.js.map +1 -0
  35. package/dist/callbacks/callback-store.d.ts +19 -0
  36. package/dist/callbacks/callback-store.js +145 -0
  37. package/dist/callbacks/callback-store.js.map +1 -0
  38. package/dist/callbacks/example.callback.d.ts +2 -0
  39. package/dist/callbacks/example.callback.js +10 -0
  40. package/dist/callbacks/example.callback.js.map +1 -0
  41. package/dist/callbacks/idempotency-manager.d.ts +54 -0
  42. package/dist/callbacks/idempotency-manager.js +230 -0
  43. package/dist/callbacks/idempotency-manager.js.map +1 -0
  44. package/dist/callbacks/index.d.ts +13 -0
  45. package/dist/callbacks/index.js +30 -0
  46. package/dist/callbacks/index.js.map +1 -0
  47. package/dist/callbacks/smart-callback.router.d.ts +52 -0
  48. package/dist/callbacks/smart-callback.router.js +213 -0
  49. package/dist/callbacks/smart-callback.router.js.map +1 -0
  50. package/dist/callbacks/telegram-patch.handler.d.ts +6 -0
  51. package/dist/callbacks/telegram-patch.handler.js +24 -0
  52. package/dist/callbacks/telegram-patch.handler.js.map +1 -0
  53. package/dist/callbacks/universal-callback.service.d.ts +14 -0
  54. package/dist/callbacks/universal-callback.service.js +20 -0
  55. package/dist/callbacks/universal-callback.service.js.map +1 -0
  56. package/dist/callbacks/web-patch.handler.d.ts +6 -0
  57. package/dist/callbacks/web-patch.handler.js +24 -0
  58. package/dist/callbacks/web-patch.handler.js.map +1 -0
  59. package/dist/core/abstract-graph.builder.d.ts +128 -0
  60. package/dist/core/abstract-graph.builder.js +488 -0
  61. package/dist/core/abstract-graph.builder.js.map +1 -0
  62. package/dist/core/builder-registry.service.d.ts +6 -0
  63. package/dist/core/builder-registry.service.js +29 -0
  64. package/dist/core/builder-registry.service.js.map +1 -0
  65. package/dist/core/universal-graph.module.d.ts +10 -0
  66. package/dist/core/universal-graph.module.js +294 -0
  67. package/dist/core/universal-graph.module.js.map +1 -0
  68. package/dist/decorators/callback.decorators.d.ts +21 -0
  69. package/dist/decorators/callback.decorators.js +73 -0
  70. package/dist/decorators/callback.decorators.js.map +1 -0
  71. package/dist/endpoint-registry/endpoint.decorators.d.ts +35 -0
  72. package/dist/endpoint-registry/endpoint.decorators.js +115 -0
  73. package/dist/endpoint-registry/endpoint.decorators.js.map +1 -0
  74. package/dist/endpoint-registry/endpoint.registry.d.ts +44 -0
  75. package/dist/endpoint-registry/endpoint.registry.js +90 -0
  76. package/dist/endpoint-registry/endpoint.registry.js.map +1 -0
  77. package/dist/endpoint-registry/index.d.ts +3 -0
  78. package/dist/endpoint-registry/index.js +20 -0
  79. package/dist/endpoint-registry/index.js.map +1 -0
  80. package/dist/endpoint-registry/ui-endpoints.discovery.d.ts +11 -0
  81. package/dist/endpoint-registry/ui-endpoints.discovery.js +72 -0
  82. package/dist/endpoint-registry/ui-endpoints.discovery.js.map +1 -0
  83. package/dist/engine/api-call-tracer.utils.d.ts +8 -0
  84. package/dist/engine/api-call-tracer.utils.js +184 -0
  85. package/dist/engine/api-call-tracer.utils.js.map +1 -0
  86. package/dist/engine/event-processor.utils.d.ts +49 -0
  87. package/dist/engine/event-processor.utils.js +314 -0
  88. package/dist/engine/event-processor.utils.js.map +1 -0
  89. package/dist/engine/graph-engine.factory.d.ts +12 -0
  90. package/dist/engine/graph-engine.factory.js +43 -0
  91. package/dist/engine/graph-engine.factory.js.map +1 -0
  92. package/dist/engine/langgraph-engine.d.ts +14 -0
  93. package/dist/engine/langgraph-engine.js +261 -0
  94. package/dist/engine/langgraph-engine.js.map +1 -0
  95. package/dist/index.d.ts +27 -0
  96. package/dist/index.js +48 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/interfaces/callback.interface.d.ts +46 -0
  99. package/dist/interfaces/callback.interface.js +3 -0
  100. package/dist/interfaces/callback.interface.js.map +1 -0
  101. package/dist/interfaces/graph-registry.interface.d.ts +8 -0
  102. package/dist/interfaces/graph-registry.interface.js +3 -0
  103. package/dist/interfaces/graph-registry.interface.js.map +1 -0
  104. package/dist/interfaces/graph-service.interface.d.ts +43 -0
  105. package/dist/interfaces/graph-service.interface.js +9 -0
  106. package/dist/interfaces/graph-service.interface.js.map +1 -0
  107. package/dist/interfaces/index.d.ts +3 -0
  108. package/dist/interfaces/index.js +20 -0
  109. package/dist/interfaces/index.js.map +1 -0
  110. package/dist/llm/index.d.ts +6 -0
  111. package/dist/llm/index.js +23 -0
  112. package/dist/llm/index.js.map +1 -0
  113. package/dist/llm/llm.initializer.d.ts +14 -0
  114. package/dist/llm/llm.initializer.js +167 -0
  115. package/dist/llm/llm.initializer.js.map +1 -0
  116. package/dist/llm/llm.interface.d.ts +6 -0
  117. package/dist/llm/llm.interface.js +3 -0
  118. package/dist/llm/llm.interface.js.map +1 -0
  119. package/dist/llm/llm.types.d.ts +32 -0
  120. package/dist/llm/llm.types.js +3 -0
  121. package/dist/llm/llm.types.js.map +1 -0
  122. package/dist/llm/model.initializer.d.ts +45 -0
  123. package/dist/llm/model.initializer.js +630 -0
  124. package/dist/llm/model.initializer.js.map +1 -0
  125. package/dist/llm/model.interface.d.ts +38 -0
  126. package/dist/llm/model.interface.js +4 -0
  127. package/dist/llm/model.interface.js.map +1 -0
  128. package/dist/llm/rerankers/voyageai-rerank.d.ts +17 -0
  129. package/dist/llm/rerankers/voyageai-rerank.js +56 -0
  130. package/dist/llm/rerankers/voyageai-rerank.js.map +1 -0
  131. package/dist/retriever/database-factory.d.ts +15 -0
  132. package/dist/retriever/database-factory.js +83 -0
  133. package/dist/retriever/database-factory.js.map +1 -0
  134. package/dist/retriever/index.d.ts +2 -0
  135. package/dist/retriever/index.js +19 -0
  136. package/dist/retriever/index.js.map +1 -0
  137. package/dist/retriever/retriever.client.d.ts +28 -0
  138. package/dist/retriever/retriever.client.js +97 -0
  139. package/dist/retriever/retriever.client.js.map +1 -0
  140. package/dist/retriever/retriever.service.d.ts +25 -0
  141. package/dist/retriever/retriever.service.js +265 -0
  142. package/dist/retriever/retriever.service.js.map +1 -0
  143. package/dist/retriever/types.d.ts +22 -0
  144. package/dist/retriever/types.js +3 -0
  145. package/dist/retriever/types.js.map +1 -0
  146. package/dist/schemas/graph-manifest.schema.d.ts +134 -0
  147. package/dist/schemas/graph-manifest.schema.js +180 -0
  148. package/dist/schemas/graph-manifest.schema.js.map +1 -0
  149. package/dist/schemas/index.d.ts +1 -0
  150. package/dist/schemas/index.js +18 -0
  151. package/dist/schemas/index.js.map +1 -0
  152. package/dist/shared-types/index.d.ts +199 -0
  153. package/dist/shared-types/index.js +58 -0
  154. package/dist/shared-types/index.js.map +1 -0
  155. package/dist/tools/index.d.ts +3 -0
  156. package/dist/tools/index.js +20 -0
  157. package/dist/tools/index.js.map +1 -0
  158. package/dist/tools/mcp-converter.d.ts +15 -0
  159. package/dist/tools/mcp-converter.js +133 -0
  160. package/dist/tools/mcp-converter.js.map +1 -0
  161. package/dist/tools/mcp-tool-filter.d.ts +11 -0
  162. package/dist/tools/mcp-tool-filter.js +123 -0
  163. package/dist/tools/mcp-tool-filter.js.map +1 -0
  164. package/dist/tools/mcp.interfaces.d.ts +19 -0
  165. package/dist/tools/mcp.interfaces.js +3 -0
  166. package/dist/tools/mcp.interfaces.js.map +1 -0
  167. package/dist/types/graph-types.d.ts +82 -0
  168. package/dist/types/graph-types.js +6 -0
  169. package/dist/types/graph-types.js.map +1 -0
  170. package/dist/utils/error.utils.d.ts +18 -0
  171. package/dist/utils/error.utils.js +78 -0
  172. package/dist/utils/error.utils.js.map +1 -0
  173. package/dist/utils/graph-type.utils.d.ts +14 -0
  174. package/dist/utils/graph-type.utils.js +71 -0
  175. package/dist/utils/graph-type.utils.js.map +1 -0
  176. package/dist/utils/index.d.ts +1 -0
  177. package/dist/utils/index.js +18 -0
  178. package/dist/utils/index.js.map +1 -0
  179. package/dist/utils/usage-recorder.d.ts +23 -0
  180. package/dist/utils/usage-recorder.js +29 -0
  181. package/dist/utils/usage-recorder.js.map +1 -0
  182. package/dist/versioning/index.d.ts +2 -0
  183. package/dist/versioning/index.js +19 -0
  184. package/dist/versioning/index.js.map +1 -0
  185. package/dist/versioning/versioned-graph.service.d.ts +16 -0
  186. package/dist/versioning/versioned-graph.service.js +132 -0
  187. package/dist/versioning/versioned-graph.service.js.map +1 -0
  188. package/dist/versioning/versioning.types.d.ts +21 -0
  189. package/dist/versioning/versioning.types.js +3 -0
  190. package/dist/versioning/versioning.types.js.map +1 -0
  191. package/package.json +70 -0
@@ -0,0 +1,199 @@
1
+ export interface IDeletionInfo {
2
+ deletedAt: Date;
3
+ deletedBy: string;
4
+ reason?: string;
5
+ }
6
+ export interface IBaseEntity {
7
+ id: string;
8
+ version: number;
9
+ createdAt?: Date;
10
+ updatedAt?: Date;
11
+ deletion?: IDeletionInfo;
12
+ }
13
+ export declare enum ModelProvider {
14
+ FLUTCH = "flutch",
15
+ FLUTCH_MISTRAL = "flutch-mistral",
16
+ FLUTCH_OPENAI = "flutch-openai",
17
+ FLUTCH_ANTHROPIC = "flutch-anthropic",
18
+ MISTRAL = "mistral",
19
+ OPENAI = "openai",
20
+ ANTHROPIC = "anthropic",
21
+ AWS = "aws",
22
+ COHERE = "cohere",
23
+ VOYAGEAI = "voyageai"
24
+ }
25
+ export declare enum ModelType {
26
+ CHAT = "chat",
27
+ RERANK = "rerank",
28
+ EMBEDDING = "embedding",
29
+ IMAGE = "image",
30
+ SPEECH = "speech"
31
+ }
32
+ export declare enum ChatFeature {
33
+ STREAMING = "streaming",
34
+ TOOLS = "tools",
35
+ VISION = "vision",
36
+ FUNCTION_CALLING = "function_calling",
37
+ JSON_MODE = "json_mode"
38
+ }
39
+ export interface IToolCatalog extends IBaseEntity {
40
+ toolName: string;
41
+ title: string;
42
+ description?: string;
43
+ category?: string;
44
+ isActive: boolean;
45
+ toolVersion?: string;
46
+ configSchema?: IToolConfigOption[];
47
+ }
48
+ export interface IToolConfigOption {
49
+ key: string;
50
+ name: string;
51
+ description?: string;
52
+ type: "string" | "number" | "boolean" | "select" | "kbselect" | "modelSelector" | "text" | "textarea";
53
+ required?: boolean;
54
+ defaultValue?: any;
55
+ options?: Array<{
56
+ value: string;
57
+ label: string;
58
+ }>;
59
+ params?: {
60
+ isMulti?: boolean;
61
+ minimum?: number;
62
+ maximum?: number;
63
+ placeholder?: string;
64
+ maxLength?: number;
65
+ modelType?: ModelType;
66
+ provider?: ModelProvider;
67
+ isActive?: boolean;
68
+ };
69
+ }
70
+ export interface IAgentToolConfig {
71
+ toolName: string;
72
+ enabled: boolean;
73
+ config?: Record<string, any>;
74
+ }
75
+ export interface IAgentToolConfiguration {
76
+ toolName: string;
77
+ enabled: boolean;
78
+ config?: Record<string, any>;
79
+ credentials?: Record<string, string>;
80
+ useGlobalCredentials?: boolean;
81
+ }
82
+ export interface ISystemToolCredentials {
83
+ toolName: string;
84
+ credentials: Record<string, string>;
85
+ createdBy: string;
86
+ createdAt: Date;
87
+ updatedAt: Date;
88
+ }
89
+ export interface IToolExecutionContext {
90
+ toolName: string;
91
+ config: Record<string, any>;
92
+ credentials: Record<string, string>;
93
+ agentId: string;
94
+ userId: string;
95
+ }
96
+ export declare enum RetrieverSearchType {
97
+ Search = "search",
98
+ MMR = "mmr",
99
+ Similarity = "similarity"
100
+ }
101
+ export declare enum AttachmentType {
102
+ IMAGE = "image",
103
+ VOICE = "voice",
104
+ FILE = "file",
105
+ BUTTON = "button",
106
+ CITATION = "citation",
107
+ SUGGESTION = "suggestion",
108
+ WEBAPP = "webapp",
109
+ SOURCE = "source",
110
+ CARD = "card",
111
+ CHART = "chart"
112
+ }
113
+ export interface IReasoningStep {
114
+ index: number;
115
+ type: "text" | "tool_call" | "tool_result" | "thinking" | "tool_use";
116
+ text?: string;
117
+ metadata?: Record<string, any>;
118
+ }
119
+ export interface IReasoningChain {
120
+ steps: IReasoningStep[];
121
+ isComplete: boolean;
122
+ }
123
+ export interface IToolCall {
124
+ name: string;
125
+ id?: string;
126
+ input?: any;
127
+ }
128
+ export interface ITracingEvent {
129
+ timestamp: string;
130
+ type: string;
131
+ data?: Record<string, any>;
132
+ }
133
+ export interface IAttachment {
134
+ type: AttachmentType;
135
+ value: any;
136
+ metadata?: Record<string, any>;
137
+ }
138
+ export interface IUsageMetrics {
139
+ promptTokens?: number;
140
+ completionTokens?: number;
141
+ totalTokens?: number;
142
+ [key: string]: any;
143
+ }
144
+ export interface IStoredMessageContent {
145
+ text?: string;
146
+ attachments?: IAttachment[];
147
+ metadata?: Record<string, any>;
148
+ tracingEvents?: ITracingEvent[];
149
+ reasoningChains?: IReasoningChain[];
150
+ hasReasoningProcess?: boolean;
151
+ currentToolCall?: IToolCall | null;
152
+ }
153
+ export declare enum StreamChannel {
154
+ TEXT = "text",
155
+ PROCESSING = "processing",
156
+ TOOLS = "tools"
157
+ }
158
+ export interface IGraphTraceEvent {
159
+ type: string;
160
+ name?: string;
161
+ channel?: string;
162
+ nodeName?: string;
163
+ timestamp: number;
164
+ metadata?: Record<string, unknown>;
165
+ data?: Record<string, unknown>;
166
+ }
167
+ export type CitationValue = {
168
+ source: {
169
+ url: string;
170
+ title: string;
171
+ type: "webpage" | "pdf" | "article";
172
+ articleId?: string;
173
+ knowledgeBaseId?: string;
174
+ };
175
+ };
176
+ export type ChartType = "line" | "bar" | "pie" | "area";
177
+ export interface IChartDataPoint {
178
+ label: string;
179
+ value: number;
180
+ color?: string;
181
+ }
182
+ export interface IChartDataset {
183
+ label: string;
184
+ data: IChartDataPoint[];
185
+ color?: string;
186
+ }
187
+ export interface IChartValue {
188
+ type: ChartType;
189
+ title: string;
190
+ description?: string;
191
+ datasets: IChartDataset[];
192
+ options?: {
193
+ showLegend?: boolean;
194
+ showGrid?: boolean;
195
+ currency?: boolean;
196
+ percentage?: boolean;
197
+ [key: string]: any;
198
+ };
199
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamChannel = exports.AttachmentType = exports.RetrieverSearchType = exports.ChatFeature = exports.ModelType = exports.ModelProvider = void 0;
4
+ var ModelProvider;
5
+ (function (ModelProvider) {
6
+ ModelProvider["FLUTCH"] = "flutch";
7
+ ModelProvider["FLUTCH_MISTRAL"] = "flutch-mistral";
8
+ ModelProvider["FLUTCH_OPENAI"] = "flutch-openai";
9
+ ModelProvider["FLUTCH_ANTHROPIC"] = "flutch-anthropic";
10
+ ModelProvider["MISTRAL"] = "mistral";
11
+ ModelProvider["OPENAI"] = "openai";
12
+ ModelProvider["ANTHROPIC"] = "anthropic";
13
+ ModelProvider["AWS"] = "aws";
14
+ ModelProvider["COHERE"] = "cohere";
15
+ ModelProvider["VOYAGEAI"] = "voyageai";
16
+ })(ModelProvider || (exports.ModelProvider = ModelProvider = {}));
17
+ var ModelType;
18
+ (function (ModelType) {
19
+ ModelType["CHAT"] = "chat";
20
+ ModelType["RERANK"] = "rerank";
21
+ ModelType["EMBEDDING"] = "embedding";
22
+ ModelType["IMAGE"] = "image";
23
+ ModelType["SPEECH"] = "speech";
24
+ })(ModelType || (exports.ModelType = ModelType = {}));
25
+ var ChatFeature;
26
+ (function (ChatFeature) {
27
+ ChatFeature["STREAMING"] = "streaming";
28
+ ChatFeature["TOOLS"] = "tools";
29
+ ChatFeature["VISION"] = "vision";
30
+ ChatFeature["FUNCTION_CALLING"] = "function_calling";
31
+ ChatFeature["JSON_MODE"] = "json_mode";
32
+ })(ChatFeature || (exports.ChatFeature = ChatFeature = {}));
33
+ var RetrieverSearchType;
34
+ (function (RetrieverSearchType) {
35
+ RetrieverSearchType["Search"] = "search";
36
+ RetrieverSearchType["MMR"] = "mmr";
37
+ RetrieverSearchType["Similarity"] = "similarity";
38
+ })(RetrieverSearchType || (exports.RetrieverSearchType = RetrieverSearchType = {}));
39
+ var AttachmentType;
40
+ (function (AttachmentType) {
41
+ AttachmentType["IMAGE"] = "image";
42
+ AttachmentType["VOICE"] = "voice";
43
+ AttachmentType["FILE"] = "file";
44
+ AttachmentType["BUTTON"] = "button";
45
+ AttachmentType["CITATION"] = "citation";
46
+ AttachmentType["SUGGESTION"] = "suggestion";
47
+ AttachmentType["WEBAPP"] = "webapp";
48
+ AttachmentType["SOURCE"] = "source";
49
+ AttachmentType["CARD"] = "card";
50
+ AttachmentType["CHART"] = "chart";
51
+ })(AttachmentType || (exports.AttachmentType = AttachmentType = {}));
52
+ var StreamChannel;
53
+ (function (StreamChannel) {
54
+ StreamChannel["TEXT"] = "text";
55
+ StreamChannel["PROCESSING"] = "processing";
56
+ StreamChannel["TOOLS"] = "tools";
57
+ })(StreamChannel || (exports.StreamChannel = StreamChannel = {}));
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared-types/index.ts"],"names":[],"mappings":";;;AA0BA,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,gDAA+B,CAAA;IAC/B,sDAAqC,CAAA;IACrC,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;IACvB,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACvB,CAAC,EAXW,aAAa,6BAAb,aAAa,QAWxB;AAED,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,8BAAiB,CAAA;IACjB,oCAAuB,CAAA;IACvB,4BAAe,CAAA;IACf,8BAAiB,CAAA;AACnB,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB;AAED,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,sCAAuB,CAAA;IACvB,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,oDAAqC,CAAA;IACrC,sCAAuB,CAAA;AACzB,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AAyHD,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,kCAAW,CAAA;IACX,gDAAyB,CAAA;AAC3B,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAMD,IAAY,cAWX;AAXD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;IACb,iCAAe,CAAA;AACjB,CAAC,EAXW,cAAc,8BAAd,cAAc,QAWzB;AAgED,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,gCAAe,CAAA;AACjB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB"}
@@ -0,0 +1,3 @@
1
+ export * from "./mcp.interfaces";
2
+ export * from "./mcp-converter";
3
+ export * from "./mcp-tool-filter";
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mcp.interfaces"), exports);
18
+ __exportStar(require("./mcp-converter"), exports);
19
+ __exportStar(require("./mcp-tool-filter"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,mDAAiC;AAGjC,kDAAgC;AAChC,oDAAkC"}
@@ -0,0 +1,15 @@
1
+ import { StructuredTool } from "@langchain/core/tools";
2
+ import { McpTool } from "./mcp.interfaces";
3
+ type LangChainStructuredTool = StructuredTool<any, any, any, string>;
4
+ export declare class McpConverter {
5
+ private readonly logger;
6
+ private readonly mcpRuntimeUrl;
7
+ constructor(mcpRuntimeUrl?: string);
8
+ private jsonSchemaToZod;
9
+ private mapPrimitiveSchema;
10
+ convertTool(mcpTool: McpTool): LangChainStructuredTool;
11
+ convertTools(mcpTools: McpTool[]): Promise<LangChainStructuredTool[]>;
12
+ fetchAndConvertTools(filter?: string): Promise<LangChainStructuredTool[]>;
13
+ healthCheck(): Promise<boolean>;
14
+ }
15
+ export {};
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.McpConverter = void 0;
7
+ const tools_1 = require("@langchain/core/tools");
8
+ const zod_1 = require("zod");
9
+ const axios_1 = __importDefault(require("axios"));
10
+ const common_1 = require("@nestjs/common");
11
+ class McpConverter {
12
+ constructor(mcpRuntimeUrl = "http://localhost:3004") {
13
+ this.logger = new common_1.Logger(McpConverter.name);
14
+ this.mcpRuntimeUrl = mcpRuntimeUrl;
15
+ }
16
+ jsonSchemaToZod(jsonSchema) {
17
+ var _a;
18
+ if (!jsonSchema || typeof jsonSchema !== "object") {
19
+ return zod_1.z.any();
20
+ }
21
+ if (jsonSchema.type !== "object") {
22
+ return this.mapPrimitiveSchema(jsonSchema.type, true);
23
+ }
24
+ const properties = jsonSchema.properties || {};
25
+ const required = Array.isArray(jsonSchema.required)
26
+ ? jsonSchema.required
27
+ : [];
28
+ const zodShape = {};
29
+ for (const [key, prop] of Object.entries(properties)) {
30
+ const propDef = prop;
31
+ const isRequired = required.includes(key);
32
+ const schemaType = (_a = propDef === null || propDef === void 0 ? void 0 : propDef.type) !== null && _a !== void 0 ? _a : "any";
33
+ const mappedType = this.mapPrimitiveSchema(schemaType, isRequired);
34
+ zodShape[key] = mappedType;
35
+ }
36
+ const baseObject = zod_1.z.object(zodShape);
37
+ const configuredObject = jsonSchema.additionalProperties === false
38
+ ? baseObject.strict()
39
+ : baseObject.passthrough();
40
+ return configuredObject;
41
+ }
42
+ mapPrimitiveSchema(type, required) {
43
+ const optionalize = (schema) => (required ? schema : schema.optional());
44
+ switch (type) {
45
+ case "string":
46
+ return optionalize(zod_1.z.string());
47
+ case "number":
48
+ case "integer":
49
+ return optionalize(zod_1.z.number());
50
+ case "boolean":
51
+ return optionalize(zod_1.z.boolean());
52
+ case "array":
53
+ return optionalize(zod_1.z.array(zod_1.z.any()));
54
+ case "object":
55
+ return optionalize(zod_1.z.record(zod_1.z.any()));
56
+ default:
57
+ return optionalize(zod_1.z.any());
58
+ }
59
+ }
60
+ convertTool(mcpTool) {
61
+ var _a, _b;
62
+ const logger = this.logger;
63
+ const mcpRuntimeUrl = this.mcpRuntimeUrl;
64
+ const schema = this.jsonSchemaToZod(mcpTool.inputSchema);
65
+ logger.debug(`🔧 [${mcpTool.name}] Original schema:`, JSON.stringify(mcpTool.inputSchema, null, 2));
66
+ logger.debug(`🔧 [${mcpTool.name}] Using schema type: ${(_b = (_a = schema === null || schema === void 0 ? void 0 : schema._def) === null || _a === void 0 ? void 0 : _a.typeName) !== null && _b !== void 0 ? _b : "unknown"}`);
67
+ return new tools_1.DynamicStructuredTool({
68
+ name: mcpTool.name,
69
+ description: mcpTool.description,
70
+ schema,
71
+ func: async (input) => {
72
+ logger.log(`🔧 [${mcpTool.name}] LLM INPUT: ${JSON.stringify(input)}`);
73
+ try {
74
+ const request = {
75
+ name: mcpTool.name,
76
+ arguments: input !== null && input !== void 0 ? input : {},
77
+ };
78
+ logger.log(`🔧 [${mcpTool.name}] Calling MCP Runtime...`);
79
+ const response = await axios_1.default.post(`${mcpRuntimeUrl}/tools/execute`, request, { timeout: 30000 });
80
+ const result = response.data;
81
+ logger.log(`🔧 [${mcpTool.name}] MCP Runtime response: success=${result.success}`);
82
+ if (!result.success) {
83
+ const errorMessage = result.error || "Tool execution failed";
84
+ logger.error(`🔧 [${mcpTool.name}] MCP Runtime error: ${errorMessage}`);
85
+ throw new Error(errorMessage);
86
+ }
87
+ const output = typeof result.result === "string"
88
+ ? result.result
89
+ : JSON.stringify(result.result, null, 2);
90
+ logger.log(`🔧 [${mcpTool.name}] TOOL OUTPUT: ${output.length > 200 ? output.substring(0, 200) + "..." : output}`);
91
+ return output;
92
+ }
93
+ catch (error) {
94
+ logger.error(`🔧 [${mcpTool.name}] Exception during execution`, error);
95
+ if (axios_1.default.isAxiosError(error)) {
96
+ throw new Error(`MCP Runtime error: ${error.message}`);
97
+ }
98
+ throw error instanceof Error ? error : new Error(String(error));
99
+ }
100
+ },
101
+ });
102
+ }
103
+ async convertTools(mcpTools) {
104
+ return mcpTools.map(tool => this.convertTool(tool));
105
+ }
106
+ async fetchAndConvertTools(filter) {
107
+ try {
108
+ const params = filter ? { filter } : {};
109
+ const response = await axios_1.default.get(`${this.mcpRuntimeUrl}/tools/list`, {
110
+ params,
111
+ timeout: 5000,
112
+ });
113
+ const mcpTools = response.data;
114
+ this.logger.log(`Fetched ${mcpTools.length} tools from MCP Runtime`);
115
+ return this.convertTools(mcpTools);
116
+ }
117
+ catch (error) {
118
+ this.logger.error("Failed to fetch MCP tools:", error);
119
+ throw new Error(`Cannot connect to MCP Runtime at ${this.mcpRuntimeUrl}`);
120
+ }
121
+ }
122
+ async healthCheck() {
123
+ try {
124
+ const response = await axios_1.default.get(`${this.mcpRuntimeUrl}/tools/health/check`, { timeout: 5000 });
125
+ return response.data.status === "ok";
126
+ }
127
+ catch (_a) {
128
+ return false;
129
+ }
130
+ }
131
+ }
132
+ exports.McpConverter = McpConverter;
133
+ //# sourceMappingURL=mcp-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-converter.js","sourceRoot":"","sources":["../../src/tools/mcp-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { StructuredTool } from "@langchain/core/tools";
2
+ export declare class McpToolFilter {
3
+ private readonly mcpRuntimeUrl;
4
+ private readonly logger;
5
+ private readonly mcpConverter;
6
+ constructor(mcpRuntimeUrl?: string);
7
+ getFilteredTools(enabledTools?: string[]): Promise<StructuredTool[]>;
8
+ getAllTools(): Promise<StructuredTool[]>;
9
+ isHealthy(): Promise<boolean>;
10
+ getAvailableToolNames(): Promise<string[]>;
11
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.McpToolFilter = void 0;
7
+ const common_1 = require("@nestjs/common");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ const mcp_converter_1 = require("./mcp-converter");
10
+ class McpToolFilter {
11
+ constructor(mcpRuntimeUrl = process.env.MCP_RUNTIME_URL ||
12
+ "http://localhost:3004") {
13
+ this.mcpRuntimeUrl = mcpRuntimeUrl;
14
+ this.logger = new common_1.Logger(McpToolFilter.name);
15
+ this.mcpConverter = new mcp_converter_1.McpConverter(this.mcpRuntimeUrl);
16
+ }
17
+ async getFilteredTools(enabledTools = []) {
18
+ this.logger.debug(`[DEBUG] Getting filtered tools. Enabled: ${enabledTools.join(", ")}`);
19
+ this.logger.debug(`[DEBUG] MCP Runtime URL: ${this.mcpRuntimeUrl}`);
20
+ if (enabledTools.length === 0) {
21
+ this.logger.debug("No tools enabled, returning empty array");
22
+ return [];
23
+ }
24
+ try {
25
+ const filterParam = enabledTools.join(",");
26
+ this.logger.debug(`[DEBUG] Making HTTP request to: ${this.mcpRuntimeUrl}/tools/list with filter: ${filterParam}`);
27
+ const response = await axios_1.default.get(`${this.mcpRuntimeUrl}/tools/list`, {
28
+ params: { filter: filterParam },
29
+ timeout: 5000,
30
+ });
31
+ this.logger.debug(`[DEBUG] HTTP response status: ${response.status}, data length: ${Array.isArray(response.data) ? response.data.length : "not array"}`);
32
+ const filteredTools = Array.isArray(response.data)
33
+ ? response.data
34
+ : [];
35
+ this.logger.debug(`Retrieved ${filteredTools.length} filtered MCP tools for: ${enabledTools.join(", ")}`);
36
+ const mcpClient = {
37
+ getTools: async () => filteredTools,
38
+ executeTool: async (name, args) => {
39
+ this.logger.debug(`[DEBUG] Executing tool ${name} with args:`, args);
40
+ const response = await axios_1.default.post(`${this.mcpRuntimeUrl}/tools/execute`, {
41
+ name,
42
+ arguments: args || {},
43
+ });
44
+ return response.data;
45
+ },
46
+ isHealthy: async () => true,
47
+ };
48
+ this.logger.log(`🚀 [McpToolFilter] Converting ${filteredTools.length} tools using new McpConverter`);
49
+ const tools = await this.mcpConverter.convertTools(filteredTools);
50
+ this.logger.log(`🚀 [McpToolFilter] Converted tools: ${tools.map(t => t.name).join(", ")}`);
51
+ this.logger.log(`Configured ${tools.length} tools from MCP runtime: ${filteredTools.map(t => t.name).join(", ")}`);
52
+ return tools;
53
+ }
54
+ catch (error) {
55
+ const errorMessage = error instanceof Error ? error.message : String(error);
56
+ this.logger.warn(`[DEBUG] Failed to fetch tools from MCP runtime (${this.mcpRuntimeUrl}): ${errorMessage}`);
57
+ this.logger.warn(`[DEBUG] Error details:`, {
58
+ error,
59
+ stack: error instanceof Error ? error.stack : "no stack",
60
+ });
61
+ return [];
62
+ }
63
+ }
64
+ async getAllTools() {
65
+ try {
66
+ const response = await axios_1.default.get(`${this.mcpRuntimeUrl}/tools/list`, {
67
+ timeout: 5000,
68
+ });
69
+ const allTools = Array.isArray(response.data)
70
+ ? response.data
71
+ : [];
72
+ this.logger.debug(`Retrieved ${allTools.length} total MCP tools`);
73
+ const mcpClient = {
74
+ getTools: async () => allTools,
75
+ executeTool: async (name, args) => {
76
+ const response = await axios_1.default.post(`${this.mcpRuntimeUrl}/tools/execute`, {
77
+ name,
78
+ arguments: args || {},
79
+ });
80
+ return response.data;
81
+ },
82
+ isHealthy: async () => true,
83
+ };
84
+ const tools = await this.mcpConverter.convertTools(allTools);
85
+ this.logger.log(`Configured ${tools.length} tools from MCP runtime`);
86
+ return tools;
87
+ }
88
+ catch (error) {
89
+ const errorMessage = error instanceof Error ? error.message : String(error);
90
+ this.logger.warn(`Failed to fetch all tools from MCP runtime (${this.mcpRuntimeUrl}): ${errorMessage}`);
91
+ return [];
92
+ }
93
+ }
94
+ async isHealthy() {
95
+ try {
96
+ const response = await axios_1.default.get(`${this.mcpRuntimeUrl}/tools/health/check`, {
97
+ timeout: 3000,
98
+ });
99
+ return response.data.status === "ok";
100
+ }
101
+ catch (error) {
102
+ this.logger.warn(`MCP runtime health check failed: ${error instanceof Error ? error.message : String(error)}`);
103
+ return false;
104
+ }
105
+ }
106
+ async getAvailableToolNames() {
107
+ try {
108
+ const response = await axios_1.default.get(`${this.mcpRuntimeUrl}/tools/list`, {
109
+ timeout: 5000,
110
+ });
111
+ const tools = Array.isArray(response.data)
112
+ ? response.data
113
+ : [];
114
+ return tools.map(tool => tool.name);
115
+ }
116
+ catch (error) {
117
+ this.logger.warn(`Failed to fetch tool names: ${error instanceof Error ? error.message : String(error)}`);
118
+ return [];
119
+ }
120
+ }
121
+ }
122
+ exports.McpToolFilter = McpToolFilter;
123
+ //# sourceMappingURL=mcp-tool-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool-filter.js","sourceRoot":"","sources":["../../src/tools/mcp-tool-filter.ts"],"names":[],"mappings":";;;;;;AACA,2CAAwC;AACxC,kDAA0B;AAC1B,mDAA+C;AAO/C,MAAa,aAAa;IAIxB,YACmB,gBAAwB,OAAO,CAAC,GAAG,CAAC,eAAe;QAClE,uBAAuB;QADR,kBAAa,GAAb,aAAa,CACL;QALV,WAAM,GAAG,IAAI,eAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,iBAAY,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAKlE,CAAC;IAOJ,KAAK,CAAC,gBAAgB,CACpB,eAAyB,EAAE;QAE3B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4CAA4C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAEpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YAEH,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,mCAAmC,IAAI,CAAC,aAAa,4BAA4B,WAAW,EAAE,CAC/F,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,aAAa,EAAE;gBACnE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;gBAC/B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,iCAAiC,QAAQ,CAAC,MAAM,kBAAkB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CACtI,CAAC;YAEF,MAAM,aAAa,GAAc,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC3D,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,aAAa,aAAa,CAAC,MAAM,4BAA4B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;YAGF,MAAM,SAAS,GAAqB;gBAClC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,aAAa;gBACnC,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,IAAS,EAAE,EAAE;oBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,aAAa,EAAE,IAAI,CAAC,CAAC;oBACrE,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,IAAI,CAAC,aAAa,gBAAgB,EACrC;wBACE,IAAI;wBACJ,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CACF,CAAC;oBACF,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACvB,CAAC;gBACD,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;aAC5B,CAAC;YAGF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,iCAAiC,aAAa,CAAC,MAAM,+BAA+B,CACrF,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,uCAAuC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,cAAc,KAAK,CAAC,MAAM,4BAA4B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mDAAmD,IAAI,CAAC,aAAa,MAAM,YAAY,EAAE,CAC1F,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBACzC,KAAK;gBACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;aACzD,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAMD,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,aAAa,EAAE;gBACnE,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAc,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtD,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAElE,MAAM,SAAS,GAAqB;gBAClC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBAC9B,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,IAAS,EAAE,EAAE;oBAC7C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,IAAI,CAAC,aAAa,gBAAgB,EACrC;wBACE,IAAI;wBACJ,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CACF,CAAC;oBACF,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACvB,CAAC;gBACD,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;aAC5B,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,yBAAyB,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,+CAA+C,IAAI,CAAC,aAAa,MAAM,YAAY,EAAE,CACtF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAMD,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,GAAG,IAAI,CAAC,aAAa,qBAAqB,EAC1C;gBACE,OAAO,EAAE,IAAI;aACd,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7F,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAMD,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,aAAa,EAAE;gBACnE,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,KAAK,GAAc,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnD,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAnLD,sCAmLC"}
@@ -0,0 +1,19 @@
1
+ export interface McpTool {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: "object";
6
+ properties: Record<string, any>;
7
+ required?: string[];
8
+ };
9
+ }
10
+ export interface ToolExecutionResult {
11
+ success: boolean;
12
+ result?: any;
13
+ error?: string;
14
+ }
15
+ export interface McpRuntimeClient {
16
+ getTools(): Promise<McpTool[]>;
17
+ executeTool(name: string, args: any): Promise<ToolExecutionResult>;
18
+ isHealthy(): Promise<boolean>;
19
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mcp.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.interfaces.js","sourceRoot":"","sources":["../../src/tools/mcp.interfaces.ts"],"names":[],"mappings":""}