@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.
- package/README.md +949 -476
- package/dist/core/adk-helpers.d.ts +94 -0
- package/dist/core/adk-helpers.d.ts.map +1 -0
- package/dist/core/adk-helpers.js +134 -0
- package/dist/core/adk-helpers.js.map +1 -0
- package/dist/core/adk-node-builder.d.ts +128 -0
- package/dist/core/adk-node-builder.d.ts.map +1 -0
- package/dist/core/adk-node-builder.js +175 -0
- package/dist/core/adk-node-builder.js.map +1 -0
- package/dist/core/adk-workflow-builder.d.ts +74 -0
- package/dist/core/adk-workflow-builder.d.ts.map +1 -0
- package/dist/core/adk-workflow-builder.js +138 -0
- package/dist/core/adk-workflow-builder.js.map +1 -0
- package/dist/core/base-builder.d.ts +80 -0
- package/dist/core/base-builder.d.ts.map +1 -0
- package/dist/core/base-builder.js +63 -0
- package/dist/core/base-builder.js.map +1 -0
- package/dist/core/builder.d.ts +35 -67
- package/dist/core/builder.d.ts.map +1 -1
- package/dist/core/builder.js +45 -144
- package/dist/core/builder.js.map +1 -1
- package/dist/core/node-builder.d.ts +15 -59
- package/dist/core/node-builder.d.ts.map +1 -1
- package/dist/core/node-builder.js +36 -106
- package/dist/core/node-builder.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +50 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validation/adk-validation.d.ts +10 -0
- package/dist/validation/adk-validation.d.ts.map +1 -0
- package/dist/validation/adk-validation.js +362 -0
- package/dist/validation/adk-validation.js.map +1 -0
- package/dist/validation/index.d.ts +34 -9
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +40 -131
- package/dist/validation/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/core/tool-builder.d.ts +0 -130
- package/dist/core/tool-builder.d.ts.map +0 -1
- package/dist/core/tool-builder.js +0 -343
- package/dist/core/tool-builder.js.map +0 -1
- package/dist/node-builder.d.ts +0 -64
- package/dist/node-builder.d.ts.map +0 -1
- package/dist/node-builder.js +0 -261
- 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":"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"}
|
|
@@ -1,6 +1,32 @@
|
|
|
1
|
-
import { WorkflowGraph } from "@graph-compose/core";
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
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
|
-
|
|
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):
|
|
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):
|
|
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):
|
|
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,
|
|
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"}
|