@sonisoft/now-sdk-ext-mcp 2.0.0 → 2.2.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 CHANGED
@@ -8,8 +8,8 @@ Built on [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/t
8
8
 
9
9
  ### Prerequisites
10
10
 
11
- - **Node.js** >= 18
12
- - **ServiceNow CLI credentials** configured via `snc configure`
11
+ - **Node.js** >= 22
12
+ - **ServiceNow CLI credentials** configured via `now-sdk auth --add`
13
13
 
14
14
  ### Install and Build
15
15
 
@@ -22,7 +22,7 @@ npm run build
22
22
 
23
23
  ### Configure Credentials
24
24
 
25
- This server uses the same credential store as the ServiceNow CLI (`snc`). If you haven't already, configure your instance credentials:
25
+ This server uses the same credential store as the ServiceNow CLI. If you haven't already, configure your instance credentials:
26
26
 
27
27
  ```bash
28
28
  now-sdk auth --add <instance_alias>
@@ -30,6 +30,25 @@ now-sdk auth --add <instance_alias>
30
30
 
31
31
  This stores credentials locally so the MCP server can authenticate without prompting.
32
32
 
33
+ > **Breaking Change in v2.0.0 (ServiceNow SDK 4.3.0)**
34
+ >
35
+ > v2.0.0 upgrades the underlying ServiceNow SDK from 4.2.x to 4.3.0, which **changed how credential aliases are stored** (replacing the previous `keytar`-based credential store with a new implementation).
36
+ >
37
+ > If you are upgrading from v1.x:
38
+ > - Credential aliases created with ServiceNow SDK 4.2.x **cannot be read** by SDK 4.3.x
39
+ > - You **must re-create all instance aliases** after upgrading
40
+ >
41
+ > ```bash
42
+ > # 1. Update the global CLI
43
+ > npm install -g @servicenow/sdk@4.3.0
44
+ >
45
+ > # 2. Re-add each instance alias
46
+ > now-sdk auth --add <your-alias>
47
+ >
48
+ > # 3. Verify your aliases work
49
+ > now-sdk auth --list
50
+ > ```
51
+
33
52
  ### Run the Server
34
53
 
35
54
  ```bash
package/dist/index.js CHANGED
@@ -24,6 +24,10 @@ import { registerCheckInstanceHealthTool } from "./tools/health.js";
24
24
  import { registerGetCmdbRelationshipsTool, registerTraverseCmdbGraphTool, } from "./tools/cmdb.js";
25
25
  import { registerListInstanceTablesTool, registerListPluginsTool, } from "./tools/discovery.js";
26
26
  import { registerQueryUpdateRecordsTool, registerQueryDeleteRecordsTool, } from "./tools/query-batch.js";
27
+ import { registerExportRecordXmlTool, registerImportRecordsXmlTool, } from "./tools/xml-record.js";
28
+ import { registerListKnowledgeBasesTool, registerGetKnowledgeBaseTool, registerListKbCategoriesTool, registerCreateKbCategoryTool, registerListKbArticlesTool, registerGetKbArticleTool, registerCreateKbArticleTool, registerUpdateKbArticleTool, registerPublishKbArticleTool, } from "./tools/knowledge.js";
29
+ import { registerListCatalogItemsTool, registerGetCatalogItemTool, registerListCatalogCategoriesTool, registerGetCatalogCategoryTool, registerListCatalogItemVariablesTool, registerSubmitCatalogRequestTool, } from "./tools/catalog.js";
30
+ import { registerExecuteFlowTool, registerExecuteSubflowTool, registerExecuteActionTool, registerGetFlowContextStatusTool, registerGetFlowOutputsTool, registerGetFlowErrorTool, registerCancelFlowTool, } from "./tools/flow.js";
27
31
  const server = new McpServer({
28
32
  name: "now-sdk-ext-mcp",
29
33
  version: "1.0.0-alpha.0",
@@ -87,6 +91,30 @@ registerQueryDeleteRecordsTool(server);
87
91
  registerCloneUpdateSetTool(server);
88
92
  registerMoveUpdateSetRecordsTool(server);
89
93
  registerUploadAttachmentTool(server);
94
+ registerExportRecordXmlTool(server);
95
+ registerImportRecordsXmlTool(server);
96
+ registerListKnowledgeBasesTool(server);
97
+ registerGetKnowledgeBaseTool(server);
98
+ registerListKbCategoriesTool(server);
99
+ registerCreateKbCategoryTool(server);
100
+ registerListKbArticlesTool(server);
101
+ registerGetKbArticleTool(server);
102
+ registerCreateKbArticleTool(server);
103
+ registerUpdateKbArticleTool(server);
104
+ registerPublishKbArticleTool(server);
105
+ registerListCatalogItemsTool(server);
106
+ registerGetCatalogItemTool(server);
107
+ registerListCatalogCategoriesTool(server);
108
+ registerGetCatalogCategoryTool(server);
109
+ registerListCatalogItemVariablesTool(server);
110
+ registerSubmitCatalogRequestTool(server);
111
+ registerExecuteFlowTool(server);
112
+ registerExecuteSubflowTool(server);
113
+ registerExecuteActionTool(server);
114
+ registerGetFlowContextStatusTool(server);
115
+ registerGetFlowOutputsTool(server);
116
+ registerGetFlowErrorTool(server);
117
+ registerCancelFlowTool(server);
90
118
  // Prevent the process from crashing silently on unexpected errors.
91
119
  // Log to stderr (stdout is reserved for JSON-RPC).
92
120
  process.on("uncaughtException", (error) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListCatalogItemsTool(server: McpServer): void;
3
+ export declare function registerGetCatalogItemTool(server: McpServer): void;
4
+ export declare function registerListCatalogCategoriesTool(server: McpServer): void;
5
+ export declare function registerGetCatalogCategoryTool(server: McpServer): void;
6
+ export declare function registerListCatalogItemVariablesTool(server: McpServer): void;
7
+ export declare function registerSubmitCatalogRequestTool(server: McpServer): void;
8
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyEpE;AAMD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2DlE;AAMD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqEzE;AAMD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyCtE;AAMD,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmE5E;AAMD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+DxE"}
@@ -0,0 +1,352 @@
1
+ import { z } from "zod";
2
+ import { CatalogManager } from "@sonisoft/now-sdk-ext-core";
3
+ import { withConnectionRetry } from "../common/connection.js";
4
+ /**
5
+ * Instance parameter description shared across catalog tools.
6
+ */
7
+ const INSTANCE_DESC = "The ServiceNow instance auth alias to use. " +
8
+ 'This is the alias configured via `now-sdk auth --add` (e.g., "dev224436", "prod", "test"). ' +
9
+ 'The user will typically refer to this by name when saying things like "on my dev224436 instance". ' +
10
+ "If not provided, falls back to the SN_AUTH_ALIAS environment variable.";
11
+ // ============================================================
12
+ // 1. list_catalog_items
13
+ // ============================================================
14
+ export function registerListCatalogItemsTool(server) {
15
+ server.registerTool("list_catalog_items", {
16
+ title: "List Catalog Items",
17
+ description: "List service catalog items from the sc_cat_item table. Supports text search " +
18
+ "on item name and description, filtering by category, catalog, and active status.\n\n" +
19
+ "Use this to browse or search for available catalog offerings before getting " +
20
+ "item details or submitting a request.",
21
+ inputSchema: {
22
+ instance: z.string().optional().describe(INSTANCE_DESC),
23
+ text_search: z
24
+ .string()
25
+ .optional()
26
+ .describe("Search catalog items by name or short description (contains match)."),
27
+ category_sys_id: z
28
+ .string()
29
+ .optional()
30
+ .describe("Filter items by category sys_id."),
31
+ catalog_sys_id: z
32
+ .string()
33
+ .optional()
34
+ .describe("Filter items by catalog sys_id (sc_catalogs field)."),
35
+ active: z.boolean().optional().describe("Filter by active status. Omit to return all."),
36
+ query: z.string().optional().describe("Optional encoded query for additional filtering."),
37
+ limit: z.number().int().min(1).default(20).describe("Maximum number of records to return (default 20)."),
38
+ offset: z.number().int().min(0).default(0).describe("Number of records to skip for pagination (default 0)."),
39
+ },
40
+ }, async ({ instance, text_search, category_sys_id, catalog_sys_id, active, query, limit, offset }) => {
41
+ try {
42
+ const results = await withConnectionRetry(instance, async (snInstance) => {
43
+ const mgr = new CatalogManager(snInstance);
44
+ return await mgr.listCatalogItems({
45
+ textSearch: text_search,
46
+ categorySysId: category_sys_id,
47
+ catalogSysId: catalog_sys_id,
48
+ active,
49
+ query,
50
+ limit,
51
+ offset,
52
+ });
53
+ });
54
+ if (results.length === 0) {
55
+ return {
56
+ content: [{ type: "text", text: "No catalog items found." }],
57
+ };
58
+ }
59
+ const lines = results.map((item) => `- ${item.name}: ${item.short_description || "(no description)"} ` +
60
+ `(sys_id: ${item.sys_id}, active: ${item.active})`);
61
+ return {
62
+ content: [
63
+ {
64
+ type: "text",
65
+ text: `Found ${results.length} catalog item(s):\n\n${lines.join("\n")}`,
66
+ },
67
+ ],
68
+ };
69
+ }
70
+ catch (error) {
71
+ const message = error instanceof Error ? error.message : String(error);
72
+ return {
73
+ content: [{ type: "text", text: `Error listing catalog items: ${message}` }],
74
+ isError: true,
75
+ };
76
+ }
77
+ });
78
+ }
79
+ // ============================================================
80
+ // 2. get_catalog_item
81
+ // ============================================================
82
+ export function registerGetCatalogItemTool(server) {
83
+ server.registerTool("get_catalog_item", {
84
+ title: "Get Catalog Item Details",
85
+ description: "Get details of a specific service catalog item by sys_id, optionally including " +
86
+ "its variables (form fields). Use this to understand what a catalog item offers " +
87
+ "and what information is needed before submitting a request.\n\n" +
88
+ "Set include_variables to true (default) to also retrieve the item's form fields.",
89
+ inputSchema: {
90
+ instance: z.string().optional().describe(INSTANCE_DESC),
91
+ sys_id: z.string().describe("The sys_id of the catalog item."),
92
+ include_variables: z
93
+ .boolean()
94
+ .default(true)
95
+ .describe("Whether to include the item's variables/form fields (default true)."),
96
+ },
97
+ }, async ({ instance, sys_id, include_variables }) => {
98
+ try {
99
+ const result = await withConnectionRetry(instance, async (snInstance) => {
100
+ const mgr = new CatalogManager(snInstance);
101
+ return await mgr.getCatalogItem(sys_id, include_variables);
102
+ });
103
+ const item = result.item;
104
+ let text = `Catalog Item: ${item.name}\n` +
105
+ `sys_id: ${item.sys_id}\n` +
106
+ `Short Description: ${item.short_description || "N/A"}\n` +
107
+ `Category: ${item.category || "N/A"}\n` +
108
+ `Active: ${item.active}\n` +
109
+ `Price: ${item.price || "N/A"}`;
110
+ if (result.variables && result.variables.length > 0) {
111
+ text += `\n\nVariables (${result.variables.length}):\n`;
112
+ text += result.variables
113
+ .map((v) => ` - ${v.name}: ${v.question_text || "(no label)"} ` +
114
+ `[type: ${v.friendly_type || v.type}, mandatory: ${v.mandatory || "false"}]` +
115
+ (v.default_value ? `, default: ${v.default_value}` : ""))
116
+ .join("\n");
117
+ }
118
+ return {
119
+ content: [{ type: "text", text }],
120
+ };
121
+ }
122
+ catch (error) {
123
+ const message = error instanceof Error ? error.message : String(error);
124
+ return {
125
+ content: [{ type: "text", text: `Error getting catalog item: ${message}` }],
126
+ isError: true,
127
+ };
128
+ }
129
+ });
130
+ }
131
+ // ============================================================
132
+ // 3. list_catalog_categories
133
+ // ============================================================
134
+ export function registerListCatalogCategoriesTool(server) {
135
+ server.registerTool("list_catalog_categories", {
136
+ title: "List Catalog Categories",
137
+ description: "List service catalog categories from the sc_category table. Filter by parent " +
138
+ "category, catalog, active status, or title. Use this to browse the catalog's " +
139
+ "organizational structure.",
140
+ inputSchema: {
141
+ instance: z.string().optional().describe(INSTANCE_DESC),
142
+ parent_sys_id: z
143
+ .string()
144
+ .optional()
145
+ .describe("Filter by parent category sys_id to get subcategories."),
146
+ catalog_sys_id: z
147
+ .string()
148
+ .optional()
149
+ .describe("Filter categories by catalog sys_id."),
150
+ active: z.boolean().optional().describe("Filter by active status. Omit to return all."),
151
+ title: z.string().optional().describe("Filter by exact category title."),
152
+ query: z.string().optional().describe("Optional encoded query for additional filtering."),
153
+ limit: z.number().int().min(1).default(20).describe("Maximum number of records to return (default 20)."),
154
+ offset: z.number().int().min(0).default(0).describe("Number of records to skip for pagination (default 0)."),
155
+ },
156
+ }, async ({ instance, parent_sys_id, catalog_sys_id, active, title, query, limit, offset }) => {
157
+ try {
158
+ const results = await withConnectionRetry(instance, async (snInstance) => {
159
+ const mgr = new CatalogManager(snInstance);
160
+ return await mgr.listCatalogCategories({
161
+ parentSysId: parent_sys_id,
162
+ catalogSysId: catalog_sys_id,
163
+ active,
164
+ title,
165
+ query,
166
+ limit,
167
+ offset,
168
+ });
169
+ });
170
+ if (results.length === 0) {
171
+ return {
172
+ content: [{ type: "text", text: "No catalog categories found." }],
173
+ };
174
+ }
175
+ const lines = results.map((cat) => `- ${cat.title}: ${cat.description || "(no description)"} ` +
176
+ `(sys_id: ${cat.sys_id}, active: ${cat.active})`);
177
+ return {
178
+ content: [
179
+ {
180
+ type: "text",
181
+ text: `Found ${results.length} catalog category(ies):\n\n${lines.join("\n")}`,
182
+ },
183
+ ],
184
+ };
185
+ }
186
+ catch (error) {
187
+ const message = error instanceof Error ? error.message : String(error);
188
+ return {
189
+ content: [{ type: "text", text: `Error listing catalog categories: ${message}` }],
190
+ isError: true,
191
+ };
192
+ }
193
+ });
194
+ }
195
+ // ============================================================
196
+ // 4. get_catalog_category
197
+ // ============================================================
198
+ export function registerGetCatalogCategoryTool(server) {
199
+ server.registerTool("get_catalog_category", {
200
+ title: "Get Catalog Category Details",
201
+ description: "Get details of a specific service catalog category by sys_id, including the " +
202
+ "count of items in that category.",
203
+ inputSchema: {
204
+ instance: z.string().optional().describe(INSTANCE_DESC),
205
+ sys_id: z.string().describe("The sys_id of the catalog category."),
206
+ },
207
+ }, async ({ instance, sys_id }) => {
208
+ try {
209
+ const result = await withConnectionRetry(instance, async (snInstance) => {
210
+ const mgr = new CatalogManager(snInstance);
211
+ return await mgr.getCatalogCategory(sys_id);
212
+ });
213
+ const cat = result.category;
214
+ const text = `Category: ${cat.title}\n` +
215
+ `sys_id: ${cat.sys_id}\n` +
216
+ `Description: ${cat.description || "N/A"}\n` +
217
+ `Active: ${cat.active}\n` +
218
+ `Parent: ${cat.parent || "N/A"}\n` +
219
+ `Items in Category: ${result.itemCount}`;
220
+ return {
221
+ content: [{ type: "text", text }],
222
+ };
223
+ }
224
+ catch (error) {
225
+ const message = error instanceof Error ? error.message : String(error);
226
+ return {
227
+ content: [{ type: "text", text: `Error getting catalog category: ${message}` }],
228
+ isError: true,
229
+ };
230
+ }
231
+ });
232
+ }
233
+ // ============================================================
234
+ // 5. list_catalog_item_variables
235
+ // ============================================================
236
+ export function registerListCatalogItemVariablesTool(server) {
237
+ server.registerTool("list_catalog_item_variables", {
238
+ title: "List Catalog Item Variables",
239
+ description: "List the variables (form fields) for a specific catalog item. Returns variable " +
240
+ "names, types, whether they are mandatory, default values, and help text. " +
241
+ "Includes variables from associated variable sets by default.\n\n" +
242
+ "Essential for understanding what data to provide when using submit_catalog_request. " +
243
+ "Variable types include: Single Line Text, Multi Line Text, Select Box, Reference, " +
244
+ "CheckBox, Date, Yes/No, and more.",
245
+ inputSchema: {
246
+ instance: z.string().optional().describe(INSTANCE_DESC),
247
+ catalog_item_sys_id: z
248
+ .string()
249
+ .describe("The sys_id of the catalog item to list variables for."),
250
+ include_variable_sets: z
251
+ .boolean()
252
+ .default(true)
253
+ .describe("Whether to include variables from associated variable sets (default true). " +
254
+ "Set to false to only get directly-assigned variables."),
255
+ },
256
+ }, async ({ instance, catalog_item_sys_id, include_variable_sets }) => {
257
+ try {
258
+ const results = await withConnectionRetry(instance, async (snInstance) => {
259
+ const mgr = new CatalogManager(snInstance);
260
+ return await mgr.listCatalogItemVariables({
261
+ catalogItemSysId: catalog_item_sys_id,
262
+ includeVariableSets: include_variable_sets,
263
+ });
264
+ });
265
+ if (results.length === 0) {
266
+ return {
267
+ content: [{ type: "text", text: "No variables found for this catalog item." }],
268
+ };
269
+ }
270
+ const lines = results.map((v) => `- ${v.name}: ${v.question_text || "(no label)"}\n` +
271
+ ` Type: ${v.friendly_type || v.type}, Mandatory: ${v.mandatory || "false"}` +
272
+ (v.default_value ? `, Default: ${v.default_value}` : "") +
273
+ (v.help_text ? `\n Help: ${v.help_text}` : "") +
274
+ (v.reference ? `\n Reference: ${v.reference}` : ""));
275
+ return {
276
+ content: [
277
+ {
278
+ type: "text",
279
+ text: `Found ${results.length} variable(s):\n\n${lines.join("\n")}`,
280
+ },
281
+ ],
282
+ };
283
+ }
284
+ catch (error) {
285
+ const message = error instanceof Error ? error.message : String(error);
286
+ return {
287
+ content: [{ type: "text", text: `Error listing catalog item variables: ${message}` }],
288
+ isError: true,
289
+ };
290
+ }
291
+ });
292
+ }
293
+ // ============================================================
294
+ // 6. submit_catalog_request
295
+ // ============================================================
296
+ export function registerSubmitCatalogRequestTool(server) {
297
+ server.registerTool("submit_catalog_request", {
298
+ title: "Submit Catalog Request",
299
+ description: "Submit a service catalog request using the ServiceNow order_now API. Returns " +
300
+ "the request (REQ) and request item (RITM) numbers.\n\n" +
301
+ "IMPORTANT: This creates a real service request on the instance. Use " +
302
+ "list_catalog_item_variables first to understand what variables are required. " +
303
+ "Variable values should be passed as a key-value object where keys are the " +
304
+ "variable names and values are strings. For reference-type variables, pass " +
305
+ "the sys_id of the referenced record.",
306
+ inputSchema: {
307
+ instance: z.string().optional().describe(INSTANCE_DESC),
308
+ catalog_item_sys_id: z
309
+ .string()
310
+ .describe("The sys_id of the catalog item to order."),
311
+ quantity: z
312
+ .number()
313
+ .int()
314
+ .min(1)
315
+ .default(1)
316
+ .describe("Number of items to request (default 1)."),
317
+ variables: z
318
+ .record(z.string())
319
+ .optional()
320
+ .describe("Variable values for the catalog item form as key-value pairs. " +
321
+ "Keys are variable names, values are strings. For reference fields, " +
322
+ "use the sys_id of the referenced record."),
323
+ },
324
+ }, async ({ instance, catalog_item_sys_id, quantity, variables }) => {
325
+ try {
326
+ const result = await withConnectionRetry(instance, async (snInstance) => {
327
+ const mgr = new CatalogManager(snInstance);
328
+ return await mgr.submitCatalogRequest({
329
+ catalogItemSysId: catalog_item_sys_id,
330
+ quantity,
331
+ variables,
332
+ });
333
+ });
334
+ let text = `Catalog request submitted successfully.\n`;
335
+ text += `Request: ${result.requestNumber} (sys_id: ${result.requestSysId})`;
336
+ if (result.requestItemNumber) {
337
+ text += `\nRequest Item: ${result.requestItemNumber} (sys_id: ${result.requestItemSysId})`;
338
+ }
339
+ return {
340
+ content: [{ type: "text", text }],
341
+ };
342
+ }
343
+ catch (error) {
344
+ const message = error instanceof Error ? error.message : String(error);
345
+ return {
346
+ content: [{ type: "text", text: `Error submitting catalog request: ${message}` }],
347
+ isError: true,
348
+ };
349
+ }
350
+ });
351
+ }
352
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;GAEG;AACH,MAAM,aAAa,GACjB,6CAA6C;IAC7C,6FAA6F;IAC7F,oGAAoG;IACpG,wEAAwE,CAAC;AAE3E,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAE/D,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,8EAA8E;YAC9E,sFAAsF;YACtF,8EAA8E;YAC9E,uCAAuC;QACzC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qEAAqE,CAAC;YAClF,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;YAClE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACvF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACzF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SAC7G;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACjG,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,MAAM,GAAG,CAAC,gBAAgB,CAAC;oBAChC,UAAU,EAAE,WAAW;oBACvB,aAAa,EAAE,eAAe;oBAC9B,YAAY,EAAE,cAAc;oBAC5B,MAAM;oBACN,KAAK;oBACL,KAAK;oBACL,MAAM;iBACP,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;iBACtE,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CACvB,CAAC,IAAI,EAAE,EAAE,CACP,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,IAAI,kBAAkB,GAAG;gBAClE,YAAY,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,GAAG,CACrD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACxE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gCAAgC,OAAO,EAAE,EAAE,CAAC;gBACrF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAE/D,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,iFAAiF;YACjF,iFAAiF;YACjF,iEAAiE;YACjE,kFAAkF;QACpF,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC9D,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,qEAAqE,CAAC;SACnF;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACtE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,IAAI,IAAI,GACN,iBAAiB,IAAI,CAAC,IAAI,IAAI;gBAC9B,WAAW,IAAI,CAAC,MAAM,IAAI;gBAC1B,sBAAsB,IAAI,CAAC,iBAAiB,IAAI,KAAK,IAAI;gBACzD,aAAa,IAAI,CAAC,QAAQ,IAAI,KAAK,IAAI;gBACvC,WAAW,IAAI,CAAC,MAAM,IAAI;gBAC1B,UAAU,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;YAElC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,IAAI,IAAI,kBAAkB,MAAM,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC;gBACxD,IAAI,IAAI,MAAM,CAAC,SAAS;qBACrB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,IAAI,YAAY,GAAG;oBACpD,UAAU,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,SAAS,IAAI,OAAO,GAAG;oBAC5E,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3D;qBACA,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;aAC3C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,+BAA+B,OAAO,EAAE,EAAE,CAAC;gBACpF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,6BAA6B;AAC7B,+DAA+D;AAE/D,MAAM,UAAU,iCAAiC,CAAC,MAAiB;IACjE,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,+EAA+E;YAC/E,+EAA+E;YAC/E,2BAA2B;QAC7B,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvD,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;YACrE,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sCAAsC,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACvF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACzF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SAC7G;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,MAAM,GAAG,CAAC,qBAAqB,CAAC;oBACrC,WAAW,EAAE,aAAa;oBAC1B,YAAY,EAAE,cAAc;oBAC5B,MAAM;oBACN,KAAK;oBACL,KAAK;oBACL,KAAK;oBACL,MAAM;iBACP,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;iBAC3E,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CACvB,CAAC,GAAG,EAAE,EAAE,CACN,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,IAAI,kBAAkB,GAAG;gBAC3D,YAAY,GAAG,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,CACnD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,8BAA8B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC9E;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qCAAqC,OAAO,EAAE,EAAE,CAAC;gBAC1F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,0BAA0B;AAC1B,+DAA+D;AAE/D,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,8EAA8E;YAC9E,kCAAkC;QACpC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SACnE;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACtE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,MAAM,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC5B,MAAM,IAAI,GACR,aAAa,GAAG,CAAC,KAAK,IAAI;gBAC1B,WAAW,GAAG,CAAC,MAAM,IAAI;gBACzB,gBAAgB,GAAG,CAAC,WAAW,IAAI,KAAK,IAAI;gBAC5C,WAAW,GAAG,CAAC,MAAM,IAAI;gBACzB,WAAW,GAAG,CAAC,MAAM,IAAI,KAAK,IAAI;gBAClC,sBAAsB,MAAM,CAAC,SAAS,EAAE,CAAC;YAE3C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;aAC3C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mCAAmC,OAAO,EAAE,EAAE,CAAC;gBACxF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;AAE/D,MAAM,UAAU,oCAAoC,CAAC,MAAiB;IACpE,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,iFAAiF;YACjF,2EAA2E;YAC3E,kEAAkE;YAClE,sFAAsF;YACtF,oFAAoF;YACpF,mCAAmC;QACrC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvD,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,QAAQ,CAAC,uDAAuD,CAAC;YACpE,qBAAqB,EAAE,CAAC;iBACrB,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,6EAA6E;gBAC7E,uDAAuD,CACxD;SACJ;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,MAAM,GAAG,CAAC,wBAAwB,CAAC;oBACxC,gBAAgB,EAAE,mBAAmB;oBACrC,mBAAmB,EAAE,qBAAqB;iBAC3C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC;iBACxF,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CACvB,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,aAAa,IAAI,YAAY,IAAI;gBACnD,aAAa,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,SAAS,IAAI,OAAO,EAAE;gBAC9E,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACzD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACpE;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yCAAyC,OAAO,EAAE,EAAE,CAAC;gBAC9F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,4BAA4B;AAC5B,+DAA+D;AAE/D,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,+EAA+E;YAC/E,wDAAwD;YACxD,sEAAsE;YACtE,+EAA+E;YAC/E,4EAA4E;YAC5E,4EAA4E;YAC5E,sCAAsC;QACxC,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvD,mBAAmB,EAAE,CAAC;iBACnB,MAAM,EAAE;iBACR,QAAQ,CAAC,0CAA0C,CAAC;YACvD,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,SAAS,EAAE,CAAC;iBACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CACP,gEAAgE;gBAChE,qEAAqE;gBACrE,0CAA0C,CAC3C;SACJ;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACtE,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO,MAAM,GAAG,CAAC,oBAAoB,CAAC;oBACpC,gBAAgB,EAAE,mBAAmB;oBACrC,QAAQ;oBACR,SAAS;iBACV,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,GAAG,2CAA2C,CAAC;YACvD,IAAI,IAAI,YAAY,MAAM,CAAC,aAAa,aAAa,MAAM,CAAC,YAAY,GAAG,CAAC;YAC5E,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,IAAI,IAAI,mBAAmB,MAAM,CAAC,iBAAiB,aAAa,MAAM,CAAC,gBAAgB,GAAG,CAAC;YAC7F,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;aAC3C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qCAAqC,OAAO,EAAE,EAAE,CAAC;gBAC1F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerExecuteFlowTool(server: McpServer): void;
3
+ export declare function registerExecuteSubflowTool(server: McpServer): void;
4
+ export declare function registerExecuteActionTool(server: McpServer): void;
5
+ export declare function registerGetFlowContextStatusTool(server: McpServer): void;
6
+ export declare function registerGetFlowOutputsTool(server: McpServer): void;
7
+ export declare function registerGetFlowErrorTool(server: McpServer): void;
8
+ export declare function registerCancelFlowTool(server: McpServer): void;
9
+ //# sourceMappingURL=flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/tools/flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgHpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiD/D;AAMD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDlE;AAMD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmDjE;AAMD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiExE;AAMD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8DlE;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8DhE;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8D9D"}