@graph-compose/client 1.0.0 → 1.0.3

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 (49) hide show
  1. package/README.md +949 -476
  2. package/dist/core/adk-helpers.d.ts +94 -0
  3. package/dist/core/adk-helpers.d.ts.map +1 -0
  4. package/dist/core/adk-helpers.js +134 -0
  5. package/dist/core/adk-helpers.js.map +1 -0
  6. package/dist/core/adk-node-builder.d.ts +128 -0
  7. package/dist/core/adk-node-builder.d.ts.map +1 -0
  8. package/dist/core/adk-node-builder.js +175 -0
  9. package/dist/core/adk-node-builder.js.map +1 -0
  10. package/dist/core/adk-workflow-builder.d.ts +74 -0
  11. package/dist/core/adk-workflow-builder.d.ts.map +1 -0
  12. package/dist/core/adk-workflow-builder.js +138 -0
  13. package/dist/core/adk-workflow-builder.js.map +1 -0
  14. package/dist/core/base-builder.d.ts +80 -0
  15. package/dist/core/base-builder.d.ts.map +1 -0
  16. package/dist/core/base-builder.js +63 -0
  17. package/dist/core/base-builder.js.map +1 -0
  18. package/dist/core/builder.d.ts +35 -67
  19. package/dist/core/builder.d.ts.map +1 -1
  20. package/dist/core/builder.js +45 -144
  21. package/dist/core/builder.js.map +1 -1
  22. package/dist/core/node-builder.d.ts +15 -59
  23. package/dist/core/node-builder.d.ts.map +1 -1
  24. package/dist/core/node-builder.js +36 -106
  25. package/dist/core/node-builder.js.map +1 -1
  26. package/dist/index.d.ts +5 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +7 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/types.d.ts +50 -4
  31. package/dist/types.d.ts.map +1 -1
  32. package/dist/types.js.map +1 -1
  33. package/dist/validation/adk-validation.d.ts +10 -0
  34. package/dist/validation/adk-validation.d.ts.map +1 -0
  35. package/dist/validation/adk-validation.js +362 -0
  36. package/dist/validation/adk-validation.js.map +1 -0
  37. package/dist/validation/index.d.ts +34 -9
  38. package/dist/validation/index.d.ts.map +1 -1
  39. package/dist/validation/index.js +40 -131
  40. package/dist/validation/index.js.map +1 -1
  41. package/package.json +4 -2
  42. package/dist/core/tool-builder.d.ts +0 -130
  43. package/dist/core/tool-builder.d.ts.map +0 -1
  44. package/dist/core/tool-builder.js +0 -343
  45. package/dist/core/tool-builder.js.map +0 -1
  46. package/dist/node-builder.d.ts +0 -64
  47. package/dist/node-builder.d.ts.map +0 -1
  48. package/dist/node-builder.js +0 -261
  49. package/dist/node-builder.js.map +0 -1
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ /**
3
+ * ADK-specific validation for Agent Development Kit workflows
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateAdkNode = validateAdkNode;
7
+ const core_1 = require("@graph-compose/core");
8
+ const errors_1 = require("../errors");
9
+ /**
10
+ * Validates an ADK node's configuration
11
+ */
12
+ function validateAdkNode(node) {
13
+ const errors = [];
14
+ const config = node.config;
15
+ // First, validate against Zod schema for structural correctness
16
+ try {
17
+ core_1.ADKWorkflowDefinitionSchema.parse(config);
18
+ }
19
+ catch (error) {
20
+ if (error &&
21
+ typeof error === "object" &&
22
+ error.name === "ZodError" &&
23
+ Array.isArray(error.issues)) {
24
+ for (const issue of error.issues) {
25
+ const path = issue.path.join(".");
26
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" schema validation failed at "${path}": ${issue.message}`));
27
+ }
28
+ }
29
+ else {
30
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" schema validation failed: ${error instanceof Error ? error.message : "Unknown error"}`));
31
+ }
32
+ // If schema validation fails, return early as structure is invalid
33
+ return errors;
34
+ }
35
+ // Validate root agent is specified
36
+ if (!config.rootAgentId) {
37
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" must have a rootAgentId specified`));
38
+ return errors; // Can't continue without root agent
39
+ }
40
+ // Validate agents array exists and has at least one agent
41
+ if (!config.agents || config.agents.length === 0) {
42
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" must have at least one agent`));
43
+ return errors;
44
+ }
45
+ // Collect all agent IDs
46
+ const agentIds = new Set();
47
+ const duplicateAgentIds = new Set();
48
+ for (const agent of config.agents) {
49
+ if (agentIds.has(agent.id)) {
50
+ duplicateAgentIds.add(agent.id);
51
+ }
52
+ agentIds.add(agent.id);
53
+ }
54
+ // Check for duplicate agent IDs
55
+ if (duplicateAgentIds.size > 0) {
56
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" has duplicate agent IDs: ${Array.from(duplicateAgentIds).join(", ")}`));
57
+ }
58
+ // Validate root agent exists
59
+ if (!agentIds.has(config.rootAgentId)) {
60
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" root agent "${config.rootAgentId}" is not defined in agents array`));
61
+ }
62
+ // Collect all tool IDs
63
+ const toolIds = new Set();
64
+ const duplicateToolIds = new Set();
65
+ if (config.globalTools) {
66
+ for (const tool of config.globalTools) {
67
+ if (toolIds.has(tool.id)) {
68
+ duplicateToolIds.add(tool.id);
69
+ }
70
+ toolIds.add(tool.id);
71
+ }
72
+ }
73
+ // Check for duplicate tool IDs
74
+ if (duplicateToolIds.size > 0) {
75
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" has duplicate tool IDs: ${Array.from(duplicateToolIds).join(", ")}`));
76
+ }
77
+ // Validate each agent
78
+ for (const agent of config.agents) {
79
+ errors.push(...validateAgent(node.id, agent, agentIds, toolIds));
80
+ }
81
+ // Validate global tools
82
+ if (config.globalTools) {
83
+ for (const tool of config.globalTools) {
84
+ errors.push(...validateGlobalTool(node.id, tool, agentIds));
85
+ }
86
+ }
87
+ // Validate maxOrchestrationCycles
88
+ if (config.maxOrchestrationCycles !== undefined &&
89
+ (config.maxOrchestrationCycles <= 0 || !Number.isInteger(config.maxOrchestrationCycles))) {
90
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" maxOrchestrationCycles must be a positive integer, got: ${config.maxOrchestrationCycles}`));
91
+ }
92
+ // Check for circular agent references
93
+ const circularPath = detectCircularAgentReferences(config.agents, config.rootAgentId);
94
+ if (circularPath) {
95
+ errors.push(new errors_1.ValidationError(`ADK node "${node.id}" has circular agent reference: ${circularPath.join(" -> ")}`));
96
+ }
97
+ return errors;
98
+ }
99
+ /**
100
+ * Validates an individual agent configuration
101
+ */
102
+ function validateAgent(nodeId, agent, allAgentIds, allToolIds) {
103
+ const errors = [];
104
+ // Validate agent ID format
105
+ if (!/^[a-zA-Z0-9_]+$/.test(agent.id)) {
106
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" has invalid ID format (must be alphanumeric with underscores)`));
107
+ }
108
+ // Type-specific validation
109
+ if (agent.type === "LlmAgent") {
110
+ const llmAgent = agent; // Cast to access LlmAgent-specific properties
111
+ // Validate httpConfig (only required for LlmAgent)
112
+ if (!agent.httpConfig || !agent.httpConfig.url) {
113
+ errors.push(new errors_1.ValidationError(`LlmAgent "${agent.id}" in ADK node "${nodeId}" must have httpConfig.url`));
114
+ }
115
+ else {
116
+ // Validate URL format (allowing template expressions)
117
+ const url = agent.httpConfig.url;
118
+ if ((0, core_1.hasTemplateExpressions)(url)) {
119
+ // Validate template expressions
120
+ const templateErrors = (0, core_1.validateNestedExpressions)(url, [`agent.${agent.id}.httpConfig.url`]);
121
+ for (const err of templateErrors) {
122
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" has invalid JSONata expression in URL: ${err.error}`));
123
+ }
124
+ }
125
+ else {
126
+ // Validate as regular URL
127
+ try {
128
+ new URL(url);
129
+ }
130
+ catch {
131
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" has invalid URL: ${url}`));
132
+ }
133
+ }
134
+ // Validate other httpConfig fields for template expressions
135
+ const httpConfig = agent.httpConfig;
136
+ if (httpConfig.body) {
137
+ const bodyErrors = (0, core_1.validateNestedExpressions)(httpConfig.body, [
138
+ `agent.${agent.id}.httpConfig.body`,
139
+ ]);
140
+ for (const err of bodyErrors) {
141
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" has invalid JSONata expression in httpConfig.body at ${err.path.join(".")}: ${err.error}`));
142
+ }
143
+ }
144
+ if (httpConfig.headers) {
145
+ const headersErrors = (0, core_1.validateNestedExpressions)(httpConfig.headers, [
146
+ `agent.${agent.id}.httpConfig.headers`,
147
+ ]);
148
+ for (const err of headersErrors) {
149
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" has invalid JSONata expression in httpConfig.headers at ${err.path.join(".")}: ${err.error}`));
150
+ }
151
+ }
152
+ }
153
+ // Validate tools reference existing tool IDs
154
+ if (llmAgent.tools && llmAgent.tools.length > 0) {
155
+ const missingTools = llmAgent.tools.filter((toolId) => !allToolIds.has(toolId));
156
+ if (missingTools.length > 0) {
157
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" references non-existent tools: ${missingTools.join(", ")}`));
158
+ }
159
+ }
160
+ // Validate nested subAgents (agent handoff pattern)
161
+ if (llmAgent.subAgents && llmAgent.subAgents.length > 0) {
162
+ for (const subAgent of llmAgent.subAgents) {
163
+ // Nested subAgents are full agent configs, not references
164
+ if ("type" in subAgent && "id" in subAgent) {
165
+ errors.push(...validateAgent(nodeId, subAgent, allAgentIds, allToolIds));
166
+ }
167
+ }
168
+ }
169
+ }
170
+ else if (agent.type === "SequentialAgent" || agent.type === "ParallelAgent") {
171
+ // Validate subAgents array exists
172
+ if (!agent.subAgents || agent.subAgents.length === 0) {
173
+ errors.push(new errors_1.ValidationError(`${agent.type} "${agent.id}" in ADK node "${nodeId}" must have at least one subAgent`));
174
+ }
175
+ else {
176
+ // Validate subAgent references
177
+ for (const subAgent of agent.subAgents) {
178
+ if ("agentId" in subAgent) {
179
+ if (!allAgentIds.has(subAgent.agentId)) {
180
+ errors.push(new errors_1.ValidationError(`${agent.type} "${agent.id}" in ADK node "${nodeId}" references non-existent agent: ${subAgent.agentId}`));
181
+ }
182
+ }
183
+ }
184
+ }
185
+ // ParallelAgent should not have outputKey
186
+ if (agent.type === "ParallelAgent" && "outputKey" in agent && agent.outputKey) {
187
+ errors.push(new errors_1.ValidationError(`ParallelAgent "${agent.id}" in ADK node "${nodeId}" should not have outputKey (use outputKey on individual sub-agents instead)`));
188
+ }
189
+ }
190
+ else if (agent.type === "LoopAgent") {
191
+ // Validate subAgents array exists
192
+ if (!agent.subAgents || agent.subAgents.length === 0) {
193
+ errors.push(new errors_1.ValidationError(`LoopAgent "${agent.id}" in ADK node "${nodeId}" must have at least one subAgent`));
194
+ }
195
+ else {
196
+ // Validate subAgent references
197
+ for (const subAgent of agent.subAgents) {
198
+ if ("agentId" in subAgent) {
199
+ if (!allAgentIds.has(subAgent.agentId)) {
200
+ errors.push(new errors_1.ValidationError(`LoopAgent "${agent.id}" in ADK node "${nodeId}" references non-existent agent: ${subAgent.agentId}`));
201
+ }
202
+ }
203
+ }
204
+ }
205
+ // Validate maxAgentLoopIterations
206
+ if (!agent.maxAgentLoopIterations || agent.maxAgentLoopIterations <= 0) {
207
+ errors.push(new errors_1.ValidationError(`LoopAgent "${agent.id}" in ADK node "${nodeId}" must have maxAgentLoopIterations > 0`));
208
+ }
209
+ // Validate loopExitCondition if present
210
+ const loopAgent = agent;
211
+ if (loopAgent.loopExitCondition && typeof loopAgent.loopExitCondition === "string") {
212
+ if ((0, core_1.hasTemplateExpressions)(loopAgent.loopExitCondition)) {
213
+ const conditionErrors = (0, core_1.validateNestedExpressions)(loopAgent.loopExitCondition, [
214
+ `agent.${agent.id}.loopExitCondition`,
215
+ ]);
216
+ for (const err of conditionErrors) {
217
+ errors.push(new errors_1.ValidationError(`LoopAgent "${agent.id}" in ADK node "${nodeId}" has invalid JSONata expression in loopExitCondition: ${err.error}`));
218
+ }
219
+ }
220
+ }
221
+ }
222
+ // Validate activityConfig timeouts if present (use any cast for discriminated union)
223
+ const agentWithActivity = agent;
224
+ if (agentWithActivity.activityConfig) {
225
+ const timeoutFields = [
226
+ "startToCloseTimeout",
227
+ "scheduleToCloseTimeout",
228
+ "scheduleToStartTimeout",
229
+ ];
230
+ for (const field of timeoutFields) {
231
+ const value = agentWithActivity.activityConfig[field];
232
+ if (value && typeof value === "string") {
233
+ // Validate duration format (e.g., "30s", "1m", "1h")
234
+ if (!/^\d+[smh]$/.test(value)) {
235
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" has invalid ${field} format: ${value} (expected format: number + s/m/h)`));
236
+ }
237
+ }
238
+ }
239
+ // Validate retry policy
240
+ if (agentWithActivity.activityConfig.retryPolicy) {
241
+ const retry = agentWithActivity.activityConfig.retryPolicy;
242
+ if (retry.maximumAttempts !== undefined && retry.maximumAttempts < 1) {
243
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" retryPolicy.maximumAttempts must be >= 1`));
244
+ }
245
+ if (retry.backoffCoefficient !== undefined && retry.backoffCoefficient < 1) {
246
+ errors.push(new errors_1.ValidationError(`Agent "${agent.id}" in ADK node "${nodeId}" retryPolicy.backoffCoefficient must be >= 1`));
247
+ }
248
+ }
249
+ }
250
+ return errors;
251
+ }
252
+ /**
253
+ * Validates a global tool definition
254
+ */
255
+ function validateGlobalTool(nodeId, tool, allAgentIds) {
256
+ const errors = [];
257
+ // Validate tool ID format
258
+ if (!/^[a-zA-Z0-9_]+$/.test(tool.id)) {
259
+ errors.push(new errors_1.ValidationError(`Tool "${tool.id}" in ADK node "${nodeId}" has invalid ID format (must be alphanumeric with underscores)`));
260
+ }
261
+ if (tool.type === "HttpTool") {
262
+ // Validate httpConfig
263
+ if (!tool.httpConfig || !tool.httpConfig.url) {
264
+ errors.push(new errors_1.ValidationError(`HttpTool "${tool.id}" in ADK node "${nodeId}" must have httpConfig.url`));
265
+ }
266
+ else {
267
+ // Validate URL format (allowing template expressions)
268
+ const url = tool.httpConfig.url;
269
+ if ((0, core_1.hasTemplateExpressions)(url)) {
270
+ // Validate template expressions
271
+ const templateErrors = (0, core_1.validateNestedExpressions)(url, [`tool.${tool.id}.httpConfig.url`]);
272
+ for (const err of templateErrors) {
273
+ errors.push(new errors_1.ValidationError(`HttpTool "${tool.id}" in ADK node "${nodeId}" has invalid JSONata expression in URL: ${err.error}`));
274
+ }
275
+ }
276
+ else {
277
+ // Validate as regular URL
278
+ try {
279
+ new URL(url);
280
+ }
281
+ catch {
282
+ errors.push(new errors_1.ValidationError(`HttpTool "${tool.id}" in ADK node "${nodeId}" has invalid URL: ${url}`));
283
+ }
284
+ }
285
+ // Validate other httpConfig fields for template expressions
286
+ const httpConfig = tool.httpConfig;
287
+ if (httpConfig.body) {
288
+ const bodyErrors = (0, core_1.validateNestedExpressions)(httpConfig.body, [
289
+ `tool.${tool.id}.httpConfig.body`,
290
+ ]);
291
+ for (const err of bodyErrors) {
292
+ errors.push(new errors_1.ValidationError(`HttpTool "${tool.id}" in ADK node "${nodeId}" has invalid JSONata expression in httpConfig.body at ${err.path.join(".")}: ${err.error}`));
293
+ }
294
+ }
295
+ if (httpConfig.headers) {
296
+ const headersErrors = (0, core_1.validateNestedExpressions)(httpConfig.headers, [
297
+ `tool.${tool.id}.httpConfig.headers`,
298
+ ]);
299
+ for (const err of headersErrors) {
300
+ errors.push(new errors_1.ValidationError(`HttpTool "${tool.id}" in ADK node "${nodeId}" has invalid JSONata expression in httpConfig.headers at ${err.path.join(".")}: ${err.error}`));
301
+ }
302
+ }
303
+ }
304
+ }
305
+ else if (tool.type === "AgentTool") {
306
+ // Validate targetAgentId exists
307
+ if (!tool.targetAgentId) {
308
+ errors.push(new errors_1.ValidationError(`AgentTool "${tool.id}" in ADK node "${nodeId}" must have targetAgentId`));
309
+ }
310
+ else if (!allAgentIds.has(tool.targetAgentId)) {
311
+ errors.push(new errors_1.ValidationError(`AgentTool "${tool.id}" in ADK node "${nodeId}" references non-existent agent: ${tool.targetAgentId}`));
312
+ }
313
+ }
314
+ return errors;
315
+ }
316
+ /**
317
+ * Detects circular references in agent hierarchies
318
+ */
319
+ function detectCircularAgentReferences(agents, startAgentId) {
320
+ const agentMap = new Map();
321
+ for (const agent of agents) {
322
+ agentMap.set(agent.id, agent);
323
+ }
324
+ const visited = new Set();
325
+ const stack = new Set();
326
+ function dfs(agentId, path) {
327
+ if (stack.has(agentId)) {
328
+ // Found a cycle
329
+ const cycleStart = path.indexOf(agentId);
330
+ return path.slice(cycleStart);
331
+ }
332
+ if (visited.has(agentId)) {
333
+ return null;
334
+ }
335
+ visited.add(agentId);
336
+ stack.add(agentId);
337
+ const agent = agentMap.get(agentId);
338
+ const agentWithSubAgents = agent; // Cast to access subAgents
339
+ if (agent && agentWithSubAgents.subAgents) {
340
+ for (const subAgent of agentWithSubAgents.subAgents) {
341
+ let subAgentId;
342
+ // Handle both nested subAgents (full config) and referenced subAgents
343
+ if ("agentId" in subAgent) {
344
+ subAgentId = subAgent.agentId;
345
+ }
346
+ else if ("id" in subAgent) {
347
+ subAgentId = subAgent.id;
348
+ }
349
+ if (subAgentId) {
350
+ const cycle = dfs(subAgentId, [...path, agentId]);
351
+ if (cycle) {
352
+ return cycle;
353
+ }
354
+ }
355
+ }
356
+ }
357
+ stack.delete(agentId);
358
+ return null;
359
+ }
360
+ return dfs(startAgentId, []);
361
+ }
362
+ //# sourceMappingURL=adk-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adk-validation.js","sourceRoot":"","sources":["../../src/validation/adk-validation.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAaH,0CAmIC;AA7ID,8CAI6B;AAC7B,sCAA4C;AAE5C;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAa;IAC3C,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,gEAAgE;IAChE,IAAI,CAAC;QACH,kCAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;YACxB,KAAe,CAAC,IAAI,KAAK,UAAU;YACpC,KAAK,CAAC,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,EACpC,CAAC;YACD,KAAK,MAAM,KAAK,IAAK,KAAa,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,kCAAkC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAChF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC9G,CACF,CAAC;QACJ,CAAC;QACD,mEAAmE;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,aAAa,IAAI,CAAC,EAAE,qCAAqC,CAAC,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC,CAAC,oCAAoC;IACrD,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAe,CAAC,aAAa,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACvF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,gCAAgC;IAChC,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,8BAA8B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7F,CACF,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,iBAAiB,MAAM,CAAC,WAAW,kCAAkC,CAC1F,CACF,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,6BAA6B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3F,CACF,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IACE,MAAM,CAAC,sBAAsB,KAAK,SAAS;QAC3C,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EACxF,CAAC;QACD,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,6DAA6D,MAAM,CAAC,sBAAsB,EAAE,CACjH,CACF,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,6BAA6B,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACtF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,mCAAmC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACnF,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,MAAc,EACd,KAAkB,EAClB,WAAwB,EACxB,UAAuB;IAEvB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,2BAA2B;IAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,iEAAiE,CAC5G,CACF,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAY,CAAC,CAAC,8CAA8C;QAE7E,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CAAC,aAAa,KAAK,CAAC,EAAE,kBAAkB,MAAM,4BAA4B,CAAC,CAC/F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YACjC,IAAI,IAAA,6BAAsB,EAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,gCAAgC;gBAChC,MAAM,cAAc,GAAG,IAAA,gCAAyB,EAAC,GAAG,EAAE,CAAC,SAAS,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAC5F,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,4CAA4C,GAAG,CAAC,KAAK,EAAE,CAClG,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,IAAI,CAAC;oBACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,sBAAsB,GAAG,EAAE,CACtE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,4DAA4D;YAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACpC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,IAAA,gCAAyB,EAAC,UAAU,CAAC,IAAI,EAAE;oBAC5D,SAAS,KAAK,CAAC,EAAE,kBAAkB;iBACpC,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,0DAA0D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CACvI,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,IAAA,gCAAyB,EAAC,UAAU,CAAC,OAAO,EAAE;oBAClE,SAAS,KAAK,CAAC,EAAE,qBAAqB;iBACvC,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,6DAA6D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CAC1I,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACxF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,oCAAoC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxG,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC1C,0DAA0D;gBAC1D,IAAI,MAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,QAAuB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC9E,kCAAkC;QAClC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,kBAAkB,MAAM,mCAAmC,CACtF,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBACvC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,kBAAkB,MAAM,oCAAoC,QAAQ,CAAC,OAAO,EAAE,CACzG,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,kBAAkB,KAAK,CAAC,EAAE,kBAAkB,MAAM,8EAA8E,CACjI,CACF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtC,kCAAkC;QAClC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,cAAc,KAAK,CAAC,EAAE,kBAAkB,MAAM,mCAAmC,CAClF,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBACvC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,cAAc,KAAK,CAAC,EAAE,kBAAkB,MAAM,oCAAoC,QAAQ,CAAC,OAAO,EAAE,CACrG,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,cAAc,KAAK,CAAC,EAAE,kBAAkB,MAAM,wCAAwC,CACvF,CACF,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG,KAAY,CAAC;QAC/B,IAAI,SAAS,CAAC,iBAAiB,IAAI,OAAO,SAAS,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACnF,IAAI,IAAA,6BAAsB,EAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACxD,MAAM,eAAe,GAAG,IAAA,gCAAyB,EAAC,SAAS,CAAC,iBAAiB,EAAE;oBAC7E,SAAS,KAAK,CAAC,EAAE,oBAAoB;iBACtC,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,cAAc,KAAK,CAAC,EAAE,kBAAkB,MAAM,0DAA0D,GAAG,CAAC,KAAK,EAAE,CACpH,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,MAAM,iBAAiB,GAAG,KAAY,CAAC;IACvC,IAAI,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG;YACpB,qBAAqB;YACrB,wBAAwB;YACxB,wBAAwB;SACzB,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,KAAK,GAAI,iBAAiB,CAAC,cAAsB,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvC,qDAAqD;gBACrD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,iBAAiB,KAAK,YAAY,KAAK,oCAAoC,CACtH,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,iBAAiB,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC;YAC3D,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBACrE,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,4CAA4C,CACvF,CACF,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAC3E,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,UAAU,KAAK,CAAC,EAAE,kBAAkB,MAAM,+CAA+C,CAC1F,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,MAAc,EACd,IAAS,EACT,WAAwB;IAExB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,0BAA0B;IAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,SAAS,IAAI,CAAC,EAAE,kBAAkB,MAAM,iEAAiE,CAC1G,CACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,sBAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,kBAAkB,MAAM,4BAA4B,CACzE,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,IAAI,IAAA,6BAAsB,EAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,gCAAgC;gBAChC,MAAM,cAAc,GAAG,IAAA,gCAAyB,EAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAC1F,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,kBAAkB,MAAM,4CAA4C,GAAG,CAAC,KAAK,EAAE,CACpG,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,IAAI,CAAC;oBACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,kBAAkB,MAAM,sBAAsB,GAAG,EAAE,CACxE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,4DAA4D;YAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,IAAA,gCAAyB,EAAC,UAAU,CAAC,IAAI,EAAE;oBAC5D,QAAQ,IAAI,CAAC,EAAE,kBAAkB;iBAClC,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,kBAAkB,MAAM,0DAA0D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CACzI,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,IAAA,gCAAyB,EAAC,UAAU,CAAC,OAAO,EAAE;oBAClE,QAAQ,IAAI,CAAC,EAAE,qBAAqB;iBACrC,CAAC,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,aAAa,IAAI,CAAC,EAAE,kBAAkB,MAAM,6DAA6D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,CAC5I,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrC,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,cAAc,IAAI,CAAC,EAAE,kBAAkB,MAAM,2BAA2B,CACzE,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CACT,IAAI,wBAAe,CACjB,cAAc,IAAI,CAAC,EAAE,kBAAkB,MAAM,oCAAoC,IAAI,CAAC,aAAa,EAAE,CACtG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,6BAA6B,CACpC,MAAqB,EACrB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,SAAS,GAAG,CAAC,OAAe,EAAE,IAAc;QAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,gBAAgB;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,KAAY,CAAC,CAAC,2BAA2B;QACpE,IAAI,KAAK,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAC1C,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC;gBACpD,IAAI,UAA8B,CAAC;gBAEnC,sEAAsE;gBACtE,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC1B,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAChC,CAAC;qBAAM,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;gBAC3B,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBAClD,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC"}
@@ -1,6 +1,32 @@
1
- import { WorkflowGraph } from "@graph-compose/core";
2
- import { z } from "zod";
3
- export declare const ValidationResponseSchema: z.ZodObject<{
1
+ import { WorkflowGraph, z } from "@graph-compose/core";
2
+ import { validateAdkNode } from "./adk-validation";
3
+ export declare const ClientValidationResultSchema: z.ZodObject<{
4
+ isValid: z.ZodBoolean;
5
+ errors: z.ZodArray<z.ZodObject<{
6
+ name: z.ZodString;
7
+ message: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ message: string;
10
+ name: string;
11
+ }, {
12
+ message: string;
13
+ name: string;
14
+ }>, "many">;
15
+ }, "strip", z.ZodTypeAny, {
16
+ isValid: boolean;
17
+ errors: {
18
+ message: string;
19
+ name: string;
20
+ }[];
21
+ }, {
22
+ isValid: boolean;
23
+ errors: {
24
+ message: string;
25
+ name: string;
26
+ }[];
27
+ }>;
28
+ export type ClientValidationResult = z.infer<typeof ClientValidationResultSchema>;
29
+ declare const WorkflowValidationResponseSchema: z.ZodObject<{
4
30
  isValid: z.ZodBoolean;
5
31
  errors: z.ZodArray<z.ZodType<Error, z.ZodTypeDef, Error>, "many">;
6
32
  }, "strip", z.ZodTypeAny, {
@@ -10,25 +36,24 @@ export declare const ValidationResponseSchema: z.ZodObject<{
10
36
  isValid: boolean;
11
37
  errors: Error[];
12
38
  }>;
13
- export interface ValidationResult extends z.infer<typeof ValidationResponseSchema> {
14
- }
39
+ type WorkflowValidationResult = z.infer<typeof WorkflowValidationResponseSchema>;
15
40
  /**
16
41
  * Validates a workflow definition
17
42
  */
18
- export declare function validateWorkflow(workflow: WorkflowGraph): ValidationResult;
43
+ export declare function validateWorkflow(workflow: WorkflowGraph): WorkflowValidationResult;
19
44
  /**
20
45
  * Validates a JSONata expression within a node's configuration
21
46
  * @param expr - The JSONata expression to validate
22
47
  * @param nodeId - The ID of the node containing the expression
23
48
  * @returns A validation result indicating success or failure
24
49
  */
25
- declare function validateExpression(expr: string, nodeId: string): ValidationResult;
50
+ declare function validateExpression(expr: string, nodeId: string): WorkflowValidationResult;
26
51
  /**
27
52
  * Validates a template string containing JSONata expressions
28
53
  * @param template - The template string to validate
29
54
  * @param nodeId - The ID of the node containing the template
30
55
  * @returns A validation result indicating success or failure
31
56
  */
32
- declare function validateTemplate(template: string, nodeId: string): ValidationResult;
33
- export { validateExpression, validateTemplate };
57
+ declare function validateTemplate(template: string, nodeId: string): WorkflowValidationResult;
58
+ export { validateAdkNode, validateExpression, validateTemplate };
34
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAuB,MAAM,qBAAqB,CAAC;AAE9F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC;CAAG;AA+FrF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,gBAAgB,CA4J1E;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAyB1E;AAED;;;;;GAKG;AACH,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CA8C5E;AAGD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,EAEb,CAAC,EACF,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;EAgBrC,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAGlF,QAAA,MAAM,gCAAgC;;;;;;;;;EAGpC,CAAC;AAEH,KAAK,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAyBjF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,wBAAwB,CAqHlF;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAyBlF;AAED;;;;;GAKG;AACH,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,wBAAwB,CA6BpF;AAGD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC"}