langflow-mcp-server 1.0.1 → 1.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.
- package/README.md +114 -5
- package/dist/__tests__/fixtures/build.d.ts +12 -0
- package/dist/__tests__/fixtures/build.d.ts.map +1 -0
- package/dist/__tests__/fixtures/build.js +61 -0
- package/dist/__tests__/fixtures/build.js.map +1 -0
- package/dist/__tests__/fixtures/folders.d.ts +6 -0
- package/dist/__tests__/fixtures/folders.d.ts.map +1 -0
- package/dist/__tests__/fixtures/folders.js +30 -0
- package/dist/__tests__/fixtures/folders.js.map +1 -0
- package/dist/__tests__/fixtures/knowledge-bases.d.ts +22 -0
- package/dist/__tests__/fixtures/knowledge-bases.d.ts.map +1 -0
- package/dist/__tests__/fixtures/knowledge-bases.js +51 -0
- package/dist/__tests__/fixtures/knowledge-bases.js.map +1 -0
- package/dist/__tests__/fixtures/projects.d.ts +6 -0
- package/dist/__tests__/fixtures/projects.d.ts.map +1 -0
- package/dist/__tests__/fixtures/projects.js +27 -0
- package/dist/__tests__/fixtures/projects.js.map +1 -0
- package/dist/__tests__/fixtures/run.d.ts +26 -0
- package/dist/__tests__/fixtures/run.d.ts.map +1 -0
- package/dist/__tests__/fixtures/run.js +67 -0
- package/dist/__tests__/fixtures/run.js.map +1 -0
- package/dist/__tests__/fixtures/variables.d.ts +6 -0
- package/dist/__tests__/fixtures/variables.d.ts.map +1 -0
- package/dist/__tests__/fixtures/variables.js +33 -0
- package/dist/__tests__/fixtures/variables.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +181 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +546 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/validation.d.ts +158 -0
- package/dist/mcp/validation.d.ts.map +1 -1
- package/dist/mcp/validation.js +123 -1
- package/dist/mcp/validation.js.map +1 -1
- package/dist/services/langflow-client.d.ts +29 -1
- package/dist/services/langflow-client.d.ts.map +1 -1
- package/dist/services/langflow-client.js +253 -0
- package/dist/services/langflow-client.js.map +1 -1
- package/dist/types/index.d.ts +112 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +7 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -11,9 +11,14 @@ A Model Context Protocol (MCP) server that provides AI assistants with comprehen
|
|
|
11
11
|
|
|
12
12
|
langflow-mcp-server serves as a bridge between Langflow's workflow automation platform and AI models, enabling them to understand and work with Langflow flows effectively. It provides structured access to:
|
|
13
13
|
|
|
14
|
-
- **Flow Management** - Create, read, update, and
|
|
14
|
+
- **Flow Management** - Create, read, update, delete, and execute Langflow flows
|
|
15
|
+
- **Flow Execution** - Run flows with inputs and trigger webhooks
|
|
16
|
+
- **Build Operations** - Compile, validate, and monitor flow builds
|
|
17
|
+
- **Import/Export** - Upload and download flows and projects
|
|
18
|
+
- **Organization** - Manage folders and projects
|
|
19
|
+
- **Configuration** - Manage global variables
|
|
20
|
+
- **Knowledge Bases** - Manage RAG document collections
|
|
15
21
|
- **Component Discovery** - List all available Langflow components
|
|
16
|
-
- **Workflow Automation** - Integrate Langflow with AI assistants like Claude
|
|
17
22
|
|
|
18
23
|
## Quick Start
|
|
19
24
|
|
|
@@ -102,9 +107,9 @@ Restart Claude Desktop after updating configuration.
|
|
|
102
107
|
|
|
103
108
|
## Available MCP Tools
|
|
104
109
|
|
|
105
|
-
Once connected, Claude can use these tools:
|
|
110
|
+
Once connected, Claude can use these 35 tools:
|
|
106
111
|
|
|
107
|
-
### Flow Management
|
|
112
|
+
### Flow Management (6 tools)
|
|
108
113
|
- **`create_flow`** - Create a new Langflow flow
|
|
109
114
|
- **`list_flows`** - List all flows with pagination and filtering
|
|
110
115
|
- **`get_flow`** - Get details of a specific flow by ID
|
|
@@ -112,7 +117,49 @@ Once connected, Claude can use these tools:
|
|
|
112
117
|
- **`delete_flow`** - Delete a single flow
|
|
113
118
|
- **`delete_flows`** - Delete multiple flows at once
|
|
114
119
|
|
|
115
|
-
###
|
|
120
|
+
### Flow Execution (2 tools)
|
|
121
|
+
- **`run_flow`** - Execute a flow with input configuration (supports streaming)
|
|
122
|
+
- **`trigger_webhook`** - Trigger a flow via webhook endpoint
|
|
123
|
+
|
|
124
|
+
### Import/Export (3 tools)
|
|
125
|
+
- **`upload_flow`** - Upload a flow from JSON data
|
|
126
|
+
- **`download_flows`** - Download multiple flows as JSON export
|
|
127
|
+
- **`get_basic_examples`** - Get pre-built example flows
|
|
128
|
+
|
|
129
|
+
### Folder Management (5 tools)
|
|
130
|
+
- **`list_folders`** - List all folders with pagination
|
|
131
|
+
- **`create_folder`** - Create a new folder
|
|
132
|
+
- **`get_folder`** - Get folder details by ID
|
|
133
|
+
- **`update_folder`** - Update folder name, description, or parent
|
|
134
|
+
- **`delete_folder`** - Delete a folder
|
|
135
|
+
|
|
136
|
+
### Project Management (7 tools)
|
|
137
|
+
- **`list_projects`** - List all projects with pagination
|
|
138
|
+
- **`create_project`** - Create a new project
|
|
139
|
+
- **`get_project`** - Get project details by ID
|
|
140
|
+
- **`update_project`** - Update project name or description
|
|
141
|
+
- **`delete_project`** - Delete a project
|
|
142
|
+
- **`upload_project`** - Upload a project from JSON data
|
|
143
|
+
- **`download_project`** - Download a project as JSON export
|
|
144
|
+
|
|
145
|
+
### Variable Management (4 tools)
|
|
146
|
+
- **`list_variables`** - List all global variables
|
|
147
|
+
- **`create_variable`** - Create a new variable
|
|
148
|
+
- **`update_variable`** - Update variable properties
|
|
149
|
+
- **`delete_variable`** - Delete a variable
|
|
150
|
+
|
|
151
|
+
### Build Operations (3 tools)
|
|
152
|
+
- **`build_flow`** - Build/compile a flow and return job_id for async execution
|
|
153
|
+
- **`get_build_status`** - Poll build status and events for a specific job
|
|
154
|
+
- **`cancel_build`** - Cancel a running build job
|
|
155
|
+
|
|
156
|
+
### Knowledge Base Management (4 tools)
|
|
157
|
+
- **`list_knowledge_bases`** - List all available knowledge bases
|
|
158
|
+
- **`get_knowledge_base`** - Get detailed information about a specific knowledge base
|
|
159
|
+
- **`delete_knowledge_base`** - Delete a specific knowledge base
|
|
160
|
+
- **`bulk_delete_knowledge_bases`** - Delete multiple knowledge bases at once
|
|
161
|
+
|
|
162
|
+
### Component Discovery (1 tool)
|
|
116
163
|
- **`list_components`** - List all available Langflow components
|
|
117
164
|
|
|
118
165
|
## Example Usage
|
|
@@ -141,6 +188,68 @@ update_flow({
|
|
|
141
188
|
name: "Updated Flow Name"
|
|
142
189
|
})
|
|
143
190
|
|
|
191
|
+
// Execute a flow
|
|
192
|
+
run_flow({
|
|
193
|
+
flow_id_or_name: "my-flow-name",
|
|
194
|
+
input_request: {
|
|
195
|
+
input_value: "Hello World",
|
|
196
|
+
output_type: "chat",
|
|
197
|
+
input_type: "chat"
|
|
198
|
+
},
|
|
199
|
+
stream: false
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
// Trigger via webhook
|
|
203
|
+
trigger_webhook({
|
|
204
|
+
flow_id_or_name: "my-flow",
|
|
205
|
+
input_request: {
|
|
206
|
+
input_value: "Process this data"
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
// Build a flow (compile/validate)
|
|
211
|
+
build_flow({
|
|
212
|
+
flow_id: "flow-uuid-here",
|
|
213
|
+
log_builds: true,
|
|
214
|
+
event_delivery: "polling"
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
// Check build status
|
|
218
|
+
get_build_status({
|
|
219
|
+
job_id: "job-uuid-from-build",
|
|
220
|
+
event_delivery: "polling"
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
// List knowledge bases (RAG)
|
|
224
|
+
list_knowledge_bases()
|
|
225
|
+
|
|
226
|
+
// Get knowledge base details
|
|
227
|
+
get_knowledge_base({
|
|
228
|
+
kb_name: "my-documents"
|
|
229
|
+
})
|
|
230
|
+
|
|
231
|
+
// Create a folder
|
|
232
|
+
create_folder({
|
|
233
|
+
name: "My Flows",
|
|
234
|
+
description: "Organized flows"
|
|
235
|
+
})
|
|
236
|
+
|
|
237
|
+
// Create a project
|
|
238
|
+
create_project({
|
|
239
|
+
name: "My Project",
|
|
240
|
+
description: "Project description"
|
|
241
|
+
})
|
|
242
|
+
|
|
243
|
+
// Manage variables
|
|
244
|
+
create_variable({
|
|
245
|
+
name: "API_KEY",
|
|
246
|
+
value: "secret-key",
|
|
247
|
+
type: "string"
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
// Get basic examples
|
|
251
|
+
get_basic_examples()
|
|
252
|
+
|
|
144
253
|
// List all components
|
|
145
254
|
list_components()
|
|
146
255
|
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BuildFlowRequest, BuildFlowParams, BuildFlowResponse, BuildStatusResponse, CancelBuildResponse } from '../../types';
|
|
2
|
+
export declare const mockBuildFlowRequest: BuildFlowRequest;
|
|
3
|
+
export declare const mockBuildFlowParams: BuildFlowParams;
|
|
4
|
+
export declare const mockMinimalBuildRequest: BuildFlowRequest;
|
|
5
|
+
export declare const mockMinimalBuildParams: BuildFlowParams;
|
|
6
|
+
export declare const mockBuildFlowResponse: BuildFlowResponse;
|
|
7
|
+
export declare const mockBuildStatusResponse: BuildStatusResponse;
|
|
8
|
+
export declare const mockCompletedBuildStatus: BuildStatusResponse;
|
|
9
|
+
export declare const mockFailedBuildStatus: BuildStatusResponse;
|
|
10
|
+
export declare const mockCancelBuildResponse: CancelBuildResponse;
|
|
11
|
+
export declare const mockCancelBuildAlreadyCompleted: CancelBuildResponse;
|
|
12
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7H,eAAO,MAAM,oBAAoB,EAAE,gBAUlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAMjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAAqB,CAAC;AAE5D,eAAO,MAAM,sBAAsB,EAAE,eAAoB,CAAC;AAE1D,eAAO,MAAM,qBAAqB,EAAE,iBAEnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,mBAMrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,mBAOtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,mBAQnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,mBAIrC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,mBAI7C,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockCancelBuildAlreadyCompleted = exports.mockCancelBuildResponse = exports.mockFailedBuildStatus = exports.mockCompletedBuildStatus = exports.mockBuildStatusResponse = exports.mockBuildFlowResponse = exports.mockMinimalBuildParams = exports.mockMinimalBuildRequest = exports.mockBuildFlowParams = exports.mockBuildFlowRequest = void 0;
|
|
4
|
+
exports.mockBuildFlowRequest = {
|
|
5
|
+
inputs: {
|
|
6
|
+
input1: 'test value',
|
|
7
|
+
input2: 123
|
|
8
|
+
},
|
|
9
|
+
data: {
|
|
10
|
+
nodes: [],
|
|
11
|
+
edges: []
|
|
12
|
+
},
|
|
13
|
+
files: ['file1.txt', 'file2.json']
|
|
14
|
+
};
|
|
15
|
+
exports.mockBuildFlowParams = {
|
|
16
|
+
stop_component_id: '123e4567-e89b-12d3-a456-426614174010',
|
|
17
|
+
start_component_id: '123e4567-e89b-12d3-a456-426614174011',
|
|
18
|
+
log_builds: true,
|
|
19
|
+
flow_name: 'Test Build Flow',
|
|
20
|
+
event_delivery: 'polling'
|
|
21
|
+
};
|
|
22
|
+
exports.mockMinimalBuildRequest = {};
|
|
23
|
+
exports.mockMinimalBuildParams = {};
|
|
24
|
+
exports.mockBuildFlowResponse = {
|
|
25
|
+
job_id: 'job-123e4567-e89b-12d3-a456-426614174020'
|
|
26
|
+
};
|
|
27
|
+
exports.mockBuildStatusResponse = {
|
|
28
|
+
status: 'running',
|
|
29
|
+
progress: 50,
|
|
30
|
+
message: 'Building flow components',
|
|
31
|
+
job_id: 'job-123e4567-e89b-12d3-a456-426614174020',
|
|
32
|
+
started_at: '2024-01-01T10:00:00Z'
|
|
33
|
+
};
|
|
34
|
+
exports.mockCompletedBuildStatus = {
|
|
35
|
+
status: 'completed',
|
|
36
|
+
progress: 100,
|
|
37
|
+
message: 'Build completed successfully',
|
|
38
|
+
job_id: 'job-123e4567-e89b-12d3-a456-426614174020',
|
|
39
|
+
started_at: '2024-01-01T10:00:00Z',
|
|
40
|
+
completed_at: '2024-01-01T10:05:00Z'
|
|
41
|
+
};
|
|
42
|
+
exports.mockFailedBuildStatus = {
|
|
43
|
+
status: 'failed',
|
|
44
|
+
progress: 75,
|
|
45
|
+
message: 'Build failed due to validation error',
|
|
46
|
+
job_id: 'job-123e4567-e89b-12d3-a456-426614174020',
|
|
47
|
+
started_at: '2024-01-01T10:00:00Z',
|
|
48
|
+
failed_at: '2024-01-01T10:03:00Z',
|
|
49
|
+
error: 'Component validation failed'
|
|
50
|
+
};
|
|
51
|
+
exports.mockCancelBuildResponse = {
|
|
52
|
+
success: true,
|
|
53
|
+
message: 'Build job cancelled successfully',
|
|
54
|
+
cancelled: true
|
|
55
|
+
};
|
|
56
|
+
exports.mockCancelBuildAlreadyCompleted = {
|
|
57
|
+
success: false,
|
|
58
|
+
message: 'Cannot cancel completed build job',
|
|
59
|
+
cancelled: false
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/build.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAqB;IACpD,MAAM,EAAE;QACN,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,GAAG;KACZ;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV;IACD,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;CACnC,CAAC;AAEW,QAAA,mBAAmB,GAAoB;IAClD,iBAAiB,EAAE,sCAAsC;IACzD,kBAAkB,EAAE,sCAAsC;IAC1D,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,iBAAiB;IAC5B,cAAc,EAAE,SAAS;CAC1B,CAAC;AAEW,QAAA,uBAAuB,GAAqB,EAAE,CAAC;AAE/C,QAAA,sBAAsB,GAAoB,EAAE,CAAC;AAE7C,QAAA,qBAAqB,GAAsB;IACtD,MAAM,EAAE,0CAA0C;CACnD,CAAC;AAEW,QAAA,uBAAuB,GAAwB;IAC1D,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,0BAA0B;IACnC,MAAM,EAAE,0CAA0C;IAClD,UAAU,EAAE,sBAAsB;CACnC,CAAC;AAEW,QAAA,wBAAwB,GAAwB;IAC3D,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,8BAA8B;IACvC,MAAM,EAAE,0CAA0C;IAClD,UAAU,EAAE,sBAAsB;IAClC,YAAY,EAAE,sBAAsB;CACrC,CAAC;AAEW,QAAA,qBAAqB,GAAwB;IACxD,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,sCAAsC;IAC/C,MAAM,EAAE,0CAA0C;IAClD,UAAU,EAAE,sBAAsB;IAClC,SAAS,EAAE,sBAAsB;IACjC,KAAK,EAAE,6BAA6B;CACrC,CAAC;AAEW,QAAA,uBAAuB,GAAwB;IAC1D,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,kCAAkC;IAC3C,SAAS,EAAE,IAAI;CAChB,CAAC;AAEW,QAAA,+BAA+B,GAAwB;IAClE,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,mCAAmC;IAC5C,SAAS,EAAE,KAAK;CACjB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FolderRead, FolderCreate, FolderUpdate } from '../../types';
|
|
2
|
+
export declare const mockFolderCreate: FolderCreate;
|
|
3
|
+
export declare const mockFolderRead: FolderRead;
|
|
4
|
+
export declare const mockFolderUpdate: FolderUpdate;
|
|
5
|
+
export declare const mockFoldersList: FolderRead[];
|
|
6
|
+
//# sourceMappingURL=folders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/folders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,gBAAgB,EAAE,YAI9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAO5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAG9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAAU,EAQvC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockFoldersList = exports.mockFolderUpdate = exports.mockFolderRead = exports.mockFolderCreate = void 0;
|
|
4
|
+
exports.mockFolderCreate = {
|
|
5
|
+
name: 'Test Folder',
|
|
6
|
+
description: 'A test folder for unit testing',
|
|
7
|
+
parent_id: '123e4567-e89b-12d3-a456-426614174000'
|
|
8
|
+
};
|
|
9
|
+
exports.mockFolderRead = {
|
|
10
|
+
id: '123e4567-e89b-12d3-a456-426614174001',
|
|
11
|
+
name: 'Test Folder',
|
|
12
|
+
description: 'A test folder for unit testing',
|
|
13
|
+
parent_id: '123e4567-e89b-12d3-a456-426614174000',
|
|
14
|
+
created_at: '2024-01-01T00:00:00Z',
|
|
15
|
+
updated_at: '2024-01-01T00:00:00Z'
|
|
16
|
+
};
|
|
17
|
+
exports.mockFolderUpdate = {
|
|
18
|
+
name: 'Updated Folder',
|
|
19
|
+
description: 'Updated description'
|
|
20
|
+
};
|
|
21
|
+
exports.mockFoldersList = [
|
|
22
|
+
exports.mockFolderRead,
|
|
23
|
+
{
|
|
24
|
+
...exports.mockFolderRead,
|
|
25
|
+
id: '123e4567-e89b-12d3-a456-426614174002',
|
|
26
|
+
name: 'Test Folder 2',
|
|
27
|
+
parent_id: undefined
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
//# sourceMappingURL=folders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folders.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/folders.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,gCAAgC;IAC7C,SAAS,EAAE,sCAAsC;CAClD,CAAC;AAEW,QAAA,cAAc,GAAe;IACxC,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,gCAAgC;IAC7C,SAAS,EAAE,sCAAsC;IACjD,UAAU,EAAE,sBAAsB;IAClC,UAAU,EAAE,sBAAsB;CACnC,CAAC;AAEW,QAAA,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,qBAAqB;CACnC,CAAC;AAEW,QAAA,eAAe,GAAiB;IAC3C,sBAAc;IACd;QACE,GAAG,sBAAc;QACjB,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,SAAS;KACrB;CACF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { KnowledgeBaseInfo } from '../../types';
|
|
2
|
+
export declare const mockKnowledgeBaseInfo: KnowledgeBaseInfo;
|
|
3
|
+
export declare const mockKnowledgeBasesList: KnowledgeBaseInfo[];
|
|
4
|
+
export declare const mockEmptyKnowledgeBasesList: KnowledgeBaseInfo[];
|
|
5
|
+
export declare const mockBulkDeleteResponse: {
|
|
6
|
+
deleted: number;
|
|
7
|
+
failed: number;
|
|
8
|
+
errors: never[];
|
|
9
|
+
};
|
|
10
|
+
export declare const mockPartialBulkDeleteResponse: {
|
|
11
|
+
deleted: number;
|
|
12
|
+
failed: number;
|
|
13
|
+
errors: {
|
|
14
|
+
kb_name: string;
|
|
15
|
+
error: string;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
export declare const mockDeleteResponse: {
|
|
19
|
+
success: boolean;
|
|
20
|
+
message: string;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=knowledge-bases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-bases.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/knowledge-bases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,qBAAqB,EAAE,iBAOnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,EAkBrD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,iBAAiB,EAAO,CAAC;AAEnE,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;CASzC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockDeleteResponse = exports.mockPartialBulkDeleteResponse = exports.mockBulkDeleteResponse = exports.mockEmptyKnowledgeBasesList = exports.mockKnowledgeBasesList = exports.mockKnowledgeBaseInfo = void 0;
|
|
4
|
+
exports.mockKnowledgeBaseInfo = {
|
|
5
|
+
name: 'test-kb',
|
|
6
|
+
description: 'Test Knowledge Base',
|
|
7
|
+
created_at: '2024-01-01T00:00:00Z',
|
|
8
|
+
updated_at: '2024-01-01T00:00:00Z',
|
|
9
|
+
documents_count: 10,
|
|
10
|
+
size_bytes: 1024000
|
|
11
|
+
};
|
|
12
|
+
exports.mockKnowledgeBasesList = [
|
|
13
|
+
exports.mockKnowledgeBaseInfo,
|
|
14
|
+
{
|
|
15
|
+
name: 'production-kb',
|
|
16
|
+
description: 'Production Knowledge Base',
|
|
17
|
+
created_at: '2024-01-02T00:00:00Z',
|
|
18
|
+
updated_at: '2024-01-02T00:00:00Z',
|
|
19
|
+
documents_count: 50,
|
|
20
|
+
size_bytes: 5120000
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'dev-kb',
|
|
24
|
+
description: 'Development Knowledge Base',
|
|
25
|
+
created_at: '2024-01-03T00:00:00Z',
|
|
26
|
+
updated_at: '2024-01-03T00:00:00Z',
|
|
27
|
+
documents_count: 5,
|
|
28
|
+
size_bytes: 512000
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
exports.mockEmptyKnowledgeBasesList = [];
|
|
32
|
+
exports.mockBulkDeleteResponse = {
|
|
33
|
+
deleted: 2,
|
|
34
|
+
failed: 0,
|
|
35
|
+
errors: []
|
|
36
|
+
};
|
|
37
|
+
exports.mockPartialBulkDeleteResponse = {
|
|
38
|
+
deleted: 1,
|
|
39
|
+
failed: 1,
|
|
40
|
+
errors: [
|
|
41
|
+
{
|
|
42
|
+
kb_name: 'non-existent-kb',
|
|
43
|
+
error: 'Knowledge base not found'
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
};
|
|
47
|
+
exports.mockDeleteResponse = {
|
|
48
|
+
success: true,
|
|
49
|
+
message: 'Knowledge base deleted successfully'
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=knowledge-bases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/knowledge-bases.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAsB;IACtD,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,qBAAqB;IAClC,UAAU,EAAE,sBAAsB;IAClC,UAAU,EAAE,sBAAsB;IAClC,eAAe,EAAE,EAAE;IACnB,UAAU,EAAE,OAAO;CACpB,CAAC;AAEW,QAAA,sBAAsB,GAAwB;IACzD,6BAAqB;IACrB;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,2BAA2B;QACxC,UAAU,EAAE,sBAAsB;QAClC,UAAU,EAAE,sBAAsB;QAClC,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,OAAO;KACpB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4BAA4B;QACzC,UAAU,EAAE,sBAAsB;QAClC,UAAU,EAAE,sBAAsB;QAClC,eAAe,EAAE,CAAC;QAClB,UAAU,EAAE,MAAM;KACnB;CACF,CAAC;AAEW,QAAA,2BAA2B,GAAwB,EAAE,CAAC;AAEtD,QAAA,sBAAsB,GAAG;IACpC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,EAAE;CACX,CAAC;AAEW,QAAA,6BAA6B,GAAG;IAC3C,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,MAAM,EAAE;QACN;YACE,OAAO,EAAE,iBAAiB;YAC1B,KAAK,EAAE,0BAA0B;SAClC;KACF;CACF,CAAC;AAEW,QAAA,kBAAkB,GAAG;IAChC,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,qCAAqC;CAC/C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ProjectRead, ProjectCreate, ProjectUpdate } from '../../types';
|
|
2
|
+
export declare const mockProjectCreate: ProjectCreate;
|
|
3
|
+
export declare const mockProjectRead: ProjectRead;
|
|
4
|
+
export declare const mockProjectUpdate: ProjectUpdate;
|
|
5
|
+
export declare const mockProjectsList: ProjectRead[];
|
|
6
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAOzC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockProjectsList = exports.mockProjectUpdate = exports.mockProjectRead = exports.mockProjectCreate = void 0;
|
|
4
|
+
exports.mockProjectCreate = {
|
|
5
|
+
name: 'Test Project',
|
|
6
|
+
description: 'A test project for unit testing'
|
|
7
|
+
};
|
|
8
|
+
exports.mockProjectRead = {
|
|
9
|
+
id: '123e4567-e89b-12d3-a456-426614174001',
|
|
10
|
+
name: 'Test Project',
|
|
11
|
+
description: 'A test project for unit testing',
|
|
12
|
+
created_at: '2024-01-01T00:00:00Z',
|
|
13
|
+
updated_at: '2024-01-01T00:00:00Z'
|
|
14
|
+
};
|
|
15
|
+
exports.mockProjectUpdate = {
|
|
16
|
+
name: 'Updated Project',
|
|
17
|
+
description: 'Updated description'
|
|
18
|
+
};
|
|
19
|
+
exports.mockProjectsList = [
|
|
20
|
+
exports.mockProjectRead,
|
|
21
|
+
{
|
|
22
|
+
...exports.mockProjectRead,
|
|
23
|
+
id: '123e4567-e89b-12d3-a456-426614174002',
|
|
24
|
+
name: 'Test Project 2'
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/projects.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAkB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,iCAAiC;CAC/C,CAAC;AAEW,QAAA,eAAe,GAAgB;IAC1C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,iCAAiC;IAC9C,UAAU,EAAE,sBAAsB;IAClC,UAAU,EAAE,sBAAsB;CACnC,CAAC;AAEW,QAAA,iBAAiB,GAAkB;IAC9C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,qBAAqB;CACnC,CAAC;AAEW,QAAA,gBAAgB,GAAkB;IAC7C,uBAAe;IACf;QACE,GAAG,uBAAe;QAClB,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE,gBAAgB;KACvB;CACF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RunFlowRequest, RunResponse, SimplifiedAPIRequest } from '../../types';
|
|
2
|
+
export declare const mockRunFlowRequest: RunFlowRequest;
|
|
3
|
+
export declare const mockRunResponse: RunResponse;
|
|
4
|
+
export declare const mockWebhookRequest: SimplifiedAPIRequest;
|
|
5
|
+
export declare const mockWebhookResponse: {
|
|
6
|
+
result: string;
|
|
7
|
+
data: {
|
|
8
|
+
message: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare const mockUploadFile: {
|
|
12
|
+
name: string;
|
|
13
|
+
content: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const mockDownloadResponse: {
|
|
16
|
+
flows: {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
data: {
|
|
20
|
+
nodes: never[];
|
|
21
|
+
edges: never[];
|
|
22
|
+
};
|
|
23
|
+
}[];
|
|
24
|
+
format: string;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhF,eAAO,MAAM,kBAAkB,EAAE,cAShC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,WAoB7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,oBAOhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,cAAc;;;CAO1B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;CAShC,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockDownloadResponse = exports.mockUploadFile = exports.mockWebhookResponse = exports.mockWebhookRequest = exports.mockRunResponse = exports.mockRunFlowRequest = void 0;
|
|
4
|
+
exports.mockRunFlowRequest = {
|
|
5
|
+
input_value: 'test input',
|
|
6
|
+
output_type: 'chat',
|
|
7
|
+
input_type: 'text',
|
|
8
|
+
tweaks: {
|
|
9
|
+
'component-1': {
|
|
10
|
+
parameter: 'value'
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.mockRunResponse = {
|
|
15
|
+
session_id: 'session-123',
|
|
16
|
+
outputs: [
|
|
17
|
+
{
|
|
18
|
+
inputs: { input: 'test input' },
|
|
19
|
+
outputs: [
|
|
20
|
+
{
|
|
21
|
+
results: {
|
|
22
|
+
message: {
|
|
23
|
+
text: 'test output'
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
artifacts: {},
|
|
27
|
+
messages: [],
|
|
28
|
+
component_display_name: 'ChatOutput',
|
|
29
|
+
component_id: 'ChatOutput-123'
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
};
|
|
35
|
+
exports.mockWebhookRequest = {
|
|
36
|
+
input_value: 'webhook test input',
|
|
37
|
+
tweaks: {
|
|
38
|
+
'component-1': {
|
|
39
|
+
parameter: 'value'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.mockWebhookResponse = {
|
|
44
|
+
result: 'success',
|
|
45
|
+
data: {
|
|
46
|
+
message: 'Webhook triggered successfully'
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.mockUploadFile = {
|
|
50
|
+
name: 'test-flow.json',
|
|
51
|
+
content: JSON.stringify({
|
|
52
|
+
name: 'Uploaded Flow',
|
|
53
|
+
description: 'Flow from upload',
|
|
54
|
+
data: { nodes: [], edges: [] }
|
|
55
|
+
})
|
|
56
|
+
};
|
|
57
|
+
exports.mockDownloadResponse = {
|
|
58
|
+
flows: [
|
|
59
|
+
{
|
|
60
|
+
id: '123e4567-e89b-12d3-a456-426614174001',
|
|
61
|
+
name: 'Flow 1',
|
|
62
|
+
data: { nodes: [], edges: [] }
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
format: 'json'
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/run.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAmB;IAChD,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,aAAa,EAAE;YACb,SAAS,EAAE,OAAO;SACnB;KACF;CACF,CAAC;AAEW,QAAA,eAAe,GAAgB;IAC1C,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE;QACP;YACE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YAC/B,OAAO,EAAE;gBACP;oBACE,OAAO,EAAE;wBACP,OAAO,EAAE;4BACP,IAAI,EAAE,aAAa;yBACpB;qBACF;oBACD,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE;oBACZ,sBAAsB,EAAE,YAAY;oBACpC,YAAY,EAAE,gBAAgB;iBAC/B;aACF;SACF;KACF;CACF,CAAC;AAEW,QAAA,kBAAkB,GAAyB;IACtD,WAAW,EAAE,oBAAoB;IACjC,MAAM,EAAE;QACN,aAAa,EAAE;YACb,SAAS,EAAE,OAAO;SACnB;KACF;CACF,CAAC;AAEW,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE;QACJ,OAAO,EAAE,gCAAgC;KAC1C;CACF,CAAC;AAEW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;QACtB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KAC/B,CAAC;CACH,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,KAAK,EAAE;QACL;YACE,EAAE,EAAE,sCAAsC;YAC1C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SAC/B;KACF;IACD,MAAM,EAAE,MAAM;CACf,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { VariableRead, VariableCreate, VariableUpdate } from '../../types';
|
|
2
|
+
export declare const mockVariableCreate: VariableCreate;
|
|
3
|
+
export declare const mockVariableRead: VariableRead;
|
|
4
|
+
export declare const mockVariableUpdate: VariableUpdate;
|
|
5
|
+
export declare const mockVariablesList: VariableRead[];
|
|
6
|
+
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/__tests__/fixtures/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3E,eAAO,MAAM,kBAAkB,EAAE,cAKhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAQ9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAIhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAQ3C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockVariablesList = exports.mockVariableUpdate = exports.mockVariableRead = exports.mockVariableCreate = void 0;
|
|
4
|
+
exports.mockVariableCreate = {
|
|
5
|
+
name: 'TEST_VAR',
|
|
6
|
+
value: 'test_value',
|
|
7
|
+
type: 'string',
|
|
8
|
+
default_fields: ['field1', 'field2']
|
|
9
|
+
};
|
|
10
|
+
exports.mockVariableRead = {
|
|
11
|
+
id: '123e4567-e89b-12d3-a456-426614174001',
|
|
12
|
+
name: 'TEST_VAR',
|
|
13
|
+
value: 'test_value',
|
|
14
|
+
type: 'string',
|
|
15
|
+
default_fields: ['field1', 'field2'],
|
|
16
|
+
created_at: '2024-01-01T00:00:00Z',
|
|
17
|
+
updated_at: '2024-01-01T00:00:00Z'
|
|
18
|
+
};
|
|
19
|
+
exports.mockVariableUpdate = {
|
|
20
|
+
name: 'UPDATED_VAR',
|
|
21
|
+
value: 'updated_value',
|
|
22
|
+
type: 'string'
|
|
23
|
+
};
|
|
24
|
+
exports.mockVariablesList = [
|
|
25
|
+
exports.mockVariableRead,
|
|
26
|
+
{
|
|
27
|
+
...exports.mockVariableRead,
|
|
28
|
+
id: '123e4567-e89b-12d3-a456-426614174002',
|
|
29
|
+
name: 'TEST_VAR_2',
|
|
30
|
+
value: 'test_value_2'
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/variables.ts"],"names":[],"mappings":";;;AAEa,QAAA,kBAAkB,GAAmB;IAChD,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;CACrC,CAAC;AAEW,QAAA,gBAAgB,GAAiB;IAC5C,EAAE,EAAE,sCAAsC;IAC1C,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpC,UAAU,EAAE,sBAAsB;IAClC,UAAU,EAAE,sBAAsB;CACnC,CAAC;AAEW,QAAA,kBAAkB,GAAmB;IAChD,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,QAAQ;CACf,CAAC;AAEW,QAAA,iBAAiB,GAAmB;IAC/C,wBAAgB;IAChB;QACE,GAAG,wBAAgB;QACnB,EAAE,EAAE,sCAAsC;QAC1C,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,cAAc;KACtB;CACF,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAmDA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAA+B;;IAwD7C,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,mBAAmB;IA0C3B,OAAO,CAAC,aAAa;IAkRf,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
|